diff --git a/.gitmodules b/.gitmodules index c9c3988cb..e032eabac 100644 --- a/.gitmodules +++ b/.gitmodules @@ -16,3 +16,6 @@ [submodule "submodules/recastnavigation"] path = submodules/recastnavigation url = https://github.com/EQEmu/recastnavigation.git +[submodule "submodules/vcpkg"] + path = submodules/vcpkg + url = https://github.com/microsoft/vcpkg.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 59279caa8..13d5fae12 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,490 +1,22 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 3.12) +CMAKE_MINIMUM_REQUIRED(VERSION 3.17.0) -SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/" ${CMAKE_MODULE_PATH}) - -IF(POLICY CMP0074) - CMAKE_POLICY(SET CMP0074 NEW) +IF(DEFINED ENV{VCPKG_ROOT} AND NOT DEFINED CMAKE_TOOLCHAIN_FILE) + MESSAGE(STATUS "Using vcpkg env variable") + SET(CMAKE_TOOLCHAIN_FILE "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake" CACHE STRING "") +ELSEIF(NOT DEFINED CMAKE_TOOLCHAIN_FILE) + MESSAGE(STATUS "Using vcpkg submodule") + SET(CMAKE_TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/submodules/vcpkg/scripts/buildsystems/vcpkg.cmake" CACHE STRING "") ENDIF() +SET(CMAKE_CXX_STANDARD 20) +SET(CMAKE_CXX_STANDARD_REQUIRED ON) +SET(CMAKE_CXX_EXTENSIONS OFF) + PROJECT(EQEmu) IF(NOT CMAKE_BUILD_TYPE) SET(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Choose the type of build." FORCE) ENDIF(NOT CMAKE_BUILD_TYPE) -SET(CMAKE_CXX_STANDARD 20) -SET(CMAKE_CXX_STANDARD_REQUIRED ON) -SET(CMAKE_CXX_EXTENSIONS OFF) -OPTION(EQEMU_BUILD_STATIC "Build with static linking" OFF) -OPTION(EQEMU_BUILD_PCH "Build with precompiled headers (Windows)" ON) -IF (EQEMU_BUILD_STATIC) - SET(BUILD_SHARED_LIBS OFF) - SET(CMAKE_FIND_LIBRARY_SUFFIXES ".lib" ".a") - MESSAGE(STATUS "Building with static linking") - SET(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++") - IF (UNIX) - SET(PERL_LIBRARY "/opt/eqemu-perl/lib/5.32.1/x86_64-linux-thread-multi/CORE/libperl.so") - SET(PERL_INCLUDE_PATH "/opt/eqemu-perl/lib/5.32.1/x86_64-linux-thread-multi/CORE/") - SET(PERL_EXECUTABLE "/opt/eqemu-perl/bin/perl") - ENDIF () -ENDIF (EQEMU_BUILD_STATIC) - - -# Requires libgoogle-perftools-dev google-perftools packages for linux (debian) -IF(EQEMU_ADD_PROFILER) - SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--no-as-needed,-lprofiler,--as-needed") -ENDIF(EQEMU_ADD_PROFILER) - -IF(USE_MAP_MMFS) - ADD_DEFINITIONS(-DUSE_MAP_MMFS) -ENDIF (USE_MAP_MMFS) - -IF(MSVC) - add_compile_options(/bigobj) - ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS) - ADD_DEFINITIONS(-DNOMINMAX) - ADD_DEFINITIONS(-DCRASH_LOGGING) - ADD_DEFINITIONS(-D_HAS_AUTO_PTR_ETC) # for Luabind on C++17 - - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP") - - OPTION(EQEMU_DISABLE_MSVC_WARNINGS "Disable MSVC compile warnings." ON) - IF(EQEMU_DISABLE_MSVC_WARNINGS) - ADD_DEFINITIONS( "/W0 /D_CRT_SECURE_NO_WARNINGS /wd4005 /wd4996 /nologo /Os") - ENDIF(EQEMU_DISABLE_MSVC_WARNINGS) -ELSE(MSVC) - ADD_DEFINITIONS(-DHAS_UNION_SEMUN) -ENDIF(MSVC) - -#FreeBSD support -IF(UNIX) - IF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD") - ADD_DEFINITIONS(-DFREEBSD) - ADD_DEFINITIONS(-D_GLIBCXX_USE_C99) - SET(FREEBSD TRUE) - ENDIF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD") - IF(CMAKE_SYSTEM_NAME MATCHES "Darwin") - ADD_DEFINITIONS(-DDARWIN) - SET(DARWIN TRUE) - ENDIF(CMAKE_SYSTEM_NAME MATCHES "Darwin") -ENDIF(UNIX) - -ADD_DEFINITIONS(-DGLM_FORCE_RADIANS) -ADD_DEFINITIONS(-DGLM_FORCE_CTOR_INIT) -ADD_DEFINITIONS(-DGLM_ENABLE_EXPERIMENTAL) - -#MSVC can fetch dependencies automatically. -IF(MSVC) - INCLUDE("${CMAKE_SOURCE_DIR}/cmake/DependencyHelperMSVC.cmake") -ENDIF() - -#Find everything we need -FIND_PACKAGE(Boost REQUIRED) -FIND_PACKAGE(MySQL) -FIND_PACKAGE(MariaDB) -FIND_PACKAGE(ZLIB) -FIND_PACKAGE(OpenSSL) -FIND_PACKAGE(Lua51) -FIND_PACKAGE(LuaJit) -FIND_PACKAGE(PerlLibs) -FIND_PACKAGE(Sodium) -FIND_PACKAGE(mbedTLS) - -MESSAGE(STATUS "**************************************************") -MESSAGE(STATUS "* Library Detection *") -MESSAGE(STATUS "**************************************************") - -IF(MYSQL_FOUND) - MESSAGE(STATUS "* MySQL: FOUND *") -ELSE() - MESSAGE(STATUS "* MySQL: MISSING *") -ENDIF() - -IF(MARIADB_FOUND) - MESSAGE(STATUS "* MariaDB: FOUND *") -ELSE() - MESSAGE(STATUS "* MariaDB: MISSING *") -ENDIF() - -IF(ZLIB_FOUND) - MESSAGE(STATUS "* ZLIB: FOUND *") -ELSE() - MESSAGE(STATUS "* ZLIB: MISSING *") -ENDIF() - -IF(Lua51_FOUND) - MESSAGE(STATUS "* Lua: FOUND *") -ELSE() - MESSAGE(STATUS "* Lua: MISSING *") -ENDIF() - -IF(LuaJit_FOUND) - MESSAGE(STATUS "* LuaJIT: FOUND *") -ELSE() - MESSAGE(STATUS "* LuaJIT: MISSING *") -ENDIF() - -IF(PerlLibs_FOUND) - MESSAGE(STATUS "* Perl: FOUND *") -ELSE() - MESSAGE(STATUS "* Perl: MISSING *") -ENDIF() - -IF(SODIUM_FOUND) - MESSAGE(STATUS "* libsodium: FOUND *") -ELSE() - MESSAGE(STATUS "* libsodium: MISSING *") -ENDIF() - -IF(OpenSSL_FOUND) - MESSAGE(STATUS "* OpenSSL: FOUND *") -ELSE() - MESSAGE(STATUS "* OpenSSL: MISSING *") -ENDIF() - -IF(MBEDTLS_FOUND) - MESSAGE(STATUS "* mbedTLS: FOUND *") -ELSE() - MESSAGE(STATUS "* mbedTLS: MISSING *") -ENDIF() - -MESSAGE(STATUS "PERL_INCLUDE_PATH: ${PERL_INCLUDE_PATH}") -MESSAGE(STATUS "PERL_LIBRARY: ${PERL_LIBRARY}") -MESSAGE(STATUS "PERL_INCLUDE_DIR: ${PERL_INCLUDE_DIR}") -MESSAGE(STATUS "PERL_INCLUDE_DIRS: ${PERL_INCLUDE_DIRS}") -MESSAGE(STATUS "PERL_LIBRARIES: ${PERL_LIBRARIES}") -MESSAGE(STATUS "PERL_VERSION: ${PERL_VERSION}") - -MESSAGE(STATUS "**************************************************") - -#options -OPTION(EQEMU_COMMANDS_LOGGING "Enable GM Command logs" ON) -OPTION(EQEMU_BUILD_SERVER "Build the game server." ON) -OPTION(EQEMU_BUILD_LOGIN "Build the login server." ON) -OPTION(EQEMU_BUILD_HC "Build the headless client." OFF) -OPTION(EQEMU_BUILD_TESTS "Build utility tests." OFF) -OPTION(EQEMU_BUILD_CLIENT_FILES "Build Client Import/Export Data Programs." ON) -OPTION(EQEMU_PREFER_LUA "Build with normal Lua even if LuaJIT is found." OFF) - -#PRNG options -OPTION(EQEMU_ADDITIVE_LFIB_PRNG "Use Additive LFib for PRNG." OFF) -MARK_AS_ADVANCED(EQEMU_ADDITIVE_LFIB_PRNG) -OPTION(EQEMU_BIASED_INT_DIST "Use biased int dist instead of uniform." OFF) -MARK_AS_ADVANCED(EQEMU_BIASED_INT_DIST) -SET(EQEMU_CUSTOM_PRNG_ENGINE "" CACHE STRING "Custom random engine. (ex. std::default_random_engine)") -MARK_AS_ADVANCED(EQEMU_CUSTOM_PRNG_ENGINE) - -IF(CMAKE_COMPILER_IS_GNUCXX) - OPTION(EQEMU_SFMT19937 "Use GCC's extention for SIMD Fast MT19937." OFF) - MARK_AS_ADVANCED(EQEMU_SFMT19937) -ENDIF() - -IF(EQEMU_ADDITIVE_LFIB_PRNG) - ADD_DEFINITIONS(-DUSE_ADDITIVE_LFIB_PRNG) - IF(EQEMU_SFMT19937) - MESSAGE(STATUS "SFMT19937 and ADDITITVE_LFIB_PRNG both set, SFMT19937 ignored.") - SET(EQEMU_SFMT19937 OFF) - ENDIF() - IF(NOT EQEMU_CUSTOM_PRNG_ENGINE STREQUAL "") - MESSAGE(STATUS "CUSTOM_PRNG_ENGINE and ADDITITVE_LFIB_PRNG both set, CUSTOM_PRNG_ENGINE ignored.") - SET(EQEMU_CUSTOM_PRNG_ENGINE "") - ENDIF() -ENDIF() - -IF(EQEMU_SFMT19937) - ADD_DEFINITIONS(-DUSE_SFMT19937) - IF(NOT EQEMU_CUSTOM_PRNG_ENGINE STREQUAL "") - MESSAGE(STATUS "CUSTOM_PRNG_ENGINE and SFMT19937 both set, CUSTOM_PRNG_ENGINE ignored.") - SET(EQEMU_CUSTOM_PRNG_ENGINE "") - ENDIF() -ENDIF() - -IF(NOT EQEMU_CUSTOM_PRNG_ENGINE STREQUAL "") - ADD_DEFINITIONS(-DUSE_CUSTOM_PRNG_ENGINE=${EQEMU_CUSTOM_PRNG_ENGINE}) -ENDIF() - -IF(EQEMU_BIASED_INT_DIST) - ADD_DEFINITIONS(-DBIASED_INT_DIST) -ENDIF() - -IF(EQEMU_COMMANDS_LOGGING) - ADD_DEFINITIONS(-DCOMMANDS_LOGGING) -ENDIF(EQEMU_COMMANDS_LOGGING) - -#database -IF(MySQL_FOUND AND MariaDB_FOUND) - SET(DATABASE_LIBRARY_SELECTION MariaDB CACHE STRING "Database library to use: - MySQL - MariaDB" - ) - - IF(DATABASE_LIBRARY_SELECTION STREQUAL "MySQL") - SET(DATABASE_LIBRARY_TYPE " MySQL") - SET(DATABASE_LIBRARY_LIBS ${MySQL_LIBRARIES}) - SET(DATABASE_LIBRARY_INCLUDE ${MySQL_INCLUDE_DIR}) - ELSEIF(DATABASE_LIBRARY_SELECTION STREQUAL "MariaDB") - SET(DATABASE_LIBRARY_TYPE "MariaDB") - SET(DATABASE_LIBRARY_LIBS ${MariaDB_LIBRARIES}) - SET(DATABASE_LIBRARY_INCLUDE ${MariaDB_INCLUDE_DIR}) - ELSE() - MESSAGE(FATAL_ERROR "Unknown database library set, should be one of: MySQL, MariaDB") - ENDIF() -ELSEIF(MariaDB_FOUND) - SET(DATABASE_LIBRARY_TYPE "MariaDB") - SET(DATABASE_LIBRARY_LIBS ${MariaDB_LIBRARIES}) - SET(DATABASE_LIBRARY_INCLUDE ${MariaDB_INCLUDE_DIR}) -ELSEIF(MySQL_FOUND) - SET(DATABASE_LIBRARY_TYPE " MySQL") - SET(DATABASE_LIBRARY_LIBS ${MySQL_LIBRARIES}) - SET(DATABASE_LIBRARY_INCLUDE ${MySQL_INCLUDE_DIR}) -ELSE() - MESSAGE(FATAL_ERROR "One of MySQL or MariaDB is a required dependency.") -ENDIF() - -#security -#prefer openssl to mbedtls (arbitrary) -IF(OpenSSL_FOUND AND MBEDTLS_FOUND) - SET(TLS_LIBRARY_SELECTION OpenSSL CACHE STRING "TLS library to use: - OpenSSL - mbedTLS" - ) - - IF(TLS_LIBRARY_SELECTION STREQUAL "OpenSSL") - SET(TLS_LIBRARY_TYPE " OpenSSL") - SET(TLS_LIBRARY_ENABLED ON) - SET(TLS_LIBRARY_LIBS ${OPENSSL_LIBRARIES}) - SET(TLS_LIBRARY_INCLUDE ${OPENSSL_INCLUDE_DIR}) - ADD_DEFINITIONS(-DEQEMU_USE_OPENSSL) - IF(${OPENSSL_VERSION} VERSION_GREATER_EQUAL "1.1.1") - ADD_DEFINITIONS(-DCPPHTTPLIB_OPENSSL_SUPPORT) - ENDIF() - ELSEIF(TLS_LIBRARY_SELECTION STREQUAL "mbedTLS") - SET(TLS_LIBRARY_TYPE " mbedTLS") - SET(TLS_LIBRARY_ENABLED ON) - SET(TLS_LIBRARY_LIBS ${MBEDTLS_LIBRARY} ${MBEDX509_LIBRARY} ${MBEDCRYPTO_LIBRARY}) - SET(TLS_LIBRARY_INCLUDE ${MBEDTLS_INCLUDE_DIR}) - ADD_DEFINITIONS(-DEQEMU_USE_MBEDTLS) - ELSE() - MESSAGE(FATAL_ERROR "Unknown TLS library set, should be one of: OpenSSL, mbedTLS") - ENDIF() -ELSEIF(OpenSSL_FOUND) - SET(TLS_LIBRARY_TYPE " OpenSSL") - SET(TLS_LIBRARY_ENABLED ON) - SET(TLS_LIBRARY_LIBS ${OPENSSL_LIBRARIES}) - SET(TLS_LIBRARY_INCLUDE ${OPENSSL_INCLUDE_DIR}) - ADD_DEFINITIONS(-DEQEMU_USE_OPENSSL) - IF(${OPENSSL_VERSION} VERSION_GREATER_EQUAL "1.1.1") - ADD_DEFINITIONS(-DCPPHTTPLIB_OPENSSL_SUPPORT) - ENDIF() -ELSEIF(MBEDTLS_FOUND) - SET(TLS_LIBRARY_TYPE " mbedTLS") - SET(TLS_LIBRARY_ENABLED ON) - SET(TLS_LIBRARY_LIBS ${MBEDTLS_LIBRARY} ${MBEDX509_LIBRARY} ${MBEDCRYPTO_LIBRARY}) - SET(TLS_LIBRARY_INCLUDE ${MBEDTLS_INCLUDE_DIR}) - ADD_DEFINITIONS(-DEQEMU_USE_MBEDTLS) -ELSE() - SET(TLS_LIBRARY_TYPE "Disabled") - SET(TLS_LIBRARY_ENABLED OFF) -ENDIF() - -IF(SODIUM_FOUND) - SET(SODIUM_LIBRARY_TYPE "Libsodium") - SET(SODIUM_LIBRARY_ENABLED ON) - SET(SODIUM_LIBRARY_LIBS ${SODIUM_LIBRARIES}) - SET(SODIUM_LIBRARY_INCLUDE ${SODIUM_INCLUDE_DIRS}) - ADD_DEFINITIONS(-DENABLE_SECURITY) -ELSE() - SET(SODIUM_LIBRARY_TYPE " Disabled") - SET(SODIUM_LIBRARY_ENABLED OFF) -ENDIF() - -IF(LUAJIT_FOUND AND NOT (EQEMU_PREFER_LUA AND Lua51_FOUND)) - SET(LUA_LIBRARY_TYPE " LuaJIT") - SET(LUA_LIBRARY_ENABLED ON) - SET(LUA_LIBRARY_LIBS ${LUAJIT_LIBRARY} luabind) - SET(LUA_LIBRARY_INCLUDE ${LUAJIT_INCLUDE_DIR} "${CMAKE_CURRENT_SOURCE_DIR}/libs/luabind") -ELSEIF(Lua51_FOUND ) - SET(LUA_LIBRARY_TYPE " Lua 5.1") - SET(LUA_LIBRARY_ENABLED ON) - SET(LUA_LIBRARY_LIBS ${LUA_LIBRARY} luabind) - SET(LUA_LIBRARY_INCLUDE ${LUA_INCLUDE_DIR} "${CMAKE_CURRENT_SOURCE_DIR}/libs/luabind") -ELSE() - SET(LUA_LIBRARY_TYPE "Disabled") - SET(LUA_LIBRARY_ENABLED OFF) -ENDIF() - -IF(PerlLibs_FOUND) - SET(PERL_LIBRARY_TYPE " Perl") - SET(PERL_LIBRARY_ENABLED ON) - SET(PERL_LIBRARY_LIBS ${PERL_LIBRARY}) - SET(PERL_LIBRARY_INCLUDE ${PERL_INCLUDE_PATH}) -ELSE() - SET(PERL_LIBRARY_TYPE "Disabled") - SET(PERL_LIBRARY_ENABLED OFF) -ENDIF() - -#use zlib if exists -IF(ZLIB_FOUND) - OPTION(EQEMU_BUILD_ZLIB "Build internal version of zlib." ON) - IF(EQEMU_BUILD_ZLIB) - SET(ZLIB_LIBRARY_TYPE "zlib-ng") - SET(ZLIB_LIBRARY_LIBS "zlibstatic") - SET(ZLIB_LIBRARY_INCLUDE "${CMAKE_CURRENT_SOURCE_DIR}/libs/zlibng") - INCLUDE_DIRECTORIES(SYSTEM "${CMAKE_CURRENT_BINARY_DIR}/libs/zlibng") - ELSE() - SET(ZLIB_LIBRARY_TYPE " zlib") - SET(ZLIB_LIBRARY_LIBS ${ZLIB_LIBRARY}) - SET(ZLIB_LIBRARY_INCLUDE ${ZLIB_INCLUDE_DIRS}) - ENDIF() -ELSE() - SET(ZLIB_LIBRARY_TYPE "zlib-ng") - SET(ZLIB_LIBRARY_LIBS "zlibstatic") - SET(ZLIB_LIBRARY_INCLUDE "${CMAKE_CURRENT_SOURCE_DIR}/libs/zlibng") -ENDIF() - -IF (EQEMU_BUILD_STATIC) - SET(ZLIB_LIBRARY_LIBS libz.a) -ENDIF(EQEMU_BUILD_STATIC) - -MESSAGE(STATUS "") -MESSAGE(STATUS "**************************************************") -MESSAGE(STATUS "* Library Usage *") -MESSAGE(STATUS "**************************************************") -MESSAGE(STATUS "* Database: ${DATABASE_LIBRARY_TYPE} *") -MESSAGE(STATUS "* TLS: ${TLS_LIBRARY_TYPE} *") -MESSAGE(STATUS "* Sodium: ${SODIUM_LIBRARY_TYPE} *") -MESSAGE(STATUS "* Lua: ${LUA_LIBRARY_TYPE} *") -MESSAGE(STATUS "* Perl: ${PERL_LIBRARY_TYPE} *") -MESSAGE(STATUS "* zlib: ${ZLIB_LIBRARY_TYPE} *") -MESSAGE(STATUS "**************************************************") - -#setup server libs and headers -SET(SERVER_LIBS common ${DATABASE_LIBRARY_LIBS} ${ZLIB_LIBRARY_LIBS} ${Boost_LIBRARIES} uv_a fmt RecastNavigation::Detour) - -set(FMT_HEADER_ONLY OFF) - -INCLUDE_DIRECTORIES(SYSTEM "${DATABASE_LIBRARY_INCLUDE}") -INCLUDE_DIRECTORIES(SYSTEM "${ZLIB_LIBRARY_INCLUDE}") -INCLUDE_DIRECTORIES(SYSTEM "${Boost_INCLUDE_DIRS}") -INCLUDE_DIRECTORIES(SYSTEM "${CMAKE_CURRENT_SOURCE_DIR}/submodules/glm") -INCLUDE_DIRECTORIES(SYSTEM "${CMAKE_CURRENT_SOURCE_DIR}/submodules/cereal/include") -INCLUDE_DIRECTORIES(SYSTEM "${CMAKE_CURRENT_SOURCE_DIR}/submodules/fmt/include") -INCLUDE_DIRECTORIES(SYSTEM "${CMAKE_CURRENT_SOURCE_DIR}/submodules/libuv/include" ) -INCLUDE_DIRECTORIES(SYSTEM "${CMAKE_CURRENT_SOURCE_DIR}/submodules/recastnavigation/DebugUtils/Include") -INCLUDE_DIRECTORIES(SYSTEM "${CMAKE_CURRENT_SOURCE_DIR}/submodules/recastnavigation/Detour/Include") -INCLUDE_DIRECTORIES(SYSTEM "${CMAKE_CURRENT_SOURCE_DIR}/submodules/recastnavigation/DetourCrowd/Include") -INCLUDE_DIRECTORIES(SYSTEM "${CMAKE_CURRENT_SOURCE_DIR}/submodules/recastnavigation/DetourTileCache/Include") -INCLUDE_DIRECTORIES(SYSTEM "${CMAKE_CURRENT_SOURCE_DIR}/submodules/recastnavigation/Recast/Include") -INCLUDE_DIRECTORIES(SYSTEM "${CMAKE_CURRENT_SOURCE_DIR}/submodules/websocketpp") - -# silence obnoxious deprecation message -ADD_DEFINITIONS(-DBOOST_BIND_GLOBAL_PLACEHOLDERS) - -IF(TLS_LIBRARY_ENABLED) - SET(SERVER_LIBS ${SERVER_LIBS} ${TLS_LIBRARY_LIBS}) - INCLUDE_DIRECTORIES(SYSTEM "${TLS_LIBRARY_INCLUDE}") -ENDIF() - -IF(SODIUM_LIBRARY_ENABLED) - SET(SERVER_LIBS ${SERVER_LIBS} ${SODIUM_LIBRARY_LIBS}) - INCLUDE_DIRECTORIES(SYSTEM "${SODIUM_LIBRARY_INCLUDE}") -ENDIF() - -IF(LUA_LIBRARY_ENABLED) - OPTION(EQEMU_BUILD_LUA "Build Lua parser." ON) - - IF(EQEMU_BUILD_LUA) - ADD_DEFINITIONS(-DLUA_EQEMU) - SET(ZONE_LIBS ${LUA_LIBRARY_LIBS}) - INCLUDE_DIRECTORIES(SYSTEM "${LUA_LIBRARY_INCLUDE}") - - OPTION(EQEMU_SANITIZE_LUA_LIBS "Sanitize Lua Libraries (Remove OS and IO standard libraries from being able to run)." ON) - IF(EQEMU_SANITIZE_LUA_LIBS) - ADD_DEFINITIONS(-DSANITIZE_LUA_LIBS) - ENDIF() - ENDIF() -ENDIF() - -IF(PERL_LIBRARY_ENABLED) - OPTION(EQEMU_BUILD_PERL "Build Perl parser." ON) - IF(EQEMU_BUILD_PERL) - SET(SERVER_LIBS ${SERVER_LIBS} ${PERL_LIBRARY_LIBS} perlbind) - INCLUDE_DIRECTORIES(SYSTEM "${PERL_LIBRARY_INCLUDE}") - ADD_DEFINITIONS(-DEMBPERL) - ADD_DEFINITIONS(-DEMBPERL_PLUGIN) - ADD_DEFINITIONS(-DPERLBIND_NO_STRICT_SCALAR_TYPES) - IF (UNIX AND EQEMU_BUILD_STATIC) - SET(SERVER_LIBS ${SERVER_LIBS} libcrypt.a) - ENDIF () - ENDIF() -ENDIF() - -IF(WIN32) - SET(SERVER_LIBS ${SERVER_LIBS} "ws2_32" "psapi" "iphlpapi" "userenv") -ENDIF() - -IF(UNIX) - SET(SERVER_LIBS ${SERVER_LIBS} ${CMAKE_DL_LIBS} "z" "m" "pthread") - IF(NOT DARWIN) - SET(SERVER_LIBS ${SERVER_LIBS} "rt") - ENDIF() - # Freebsd provides uuids in the C library - IF(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD") - SET(SERVER_LIBS ${SERVER_LIBS} "uuid") - ENDIF() -ENDIF() - -SET(ZONE_LIBS ${ZONE_LIBS} ${SERVER_LIBS}) - -IF(EQEMU_BUILD_LOGIN AND NOT TLS_LIBRARY_ENABLED) - MESSAGE(FATAL_ERROR "Login server requires a TLS Library to build.") -ENDIF() - -IF(EQEMU_BUILD_HC AND NOT TLS_LIBRARY_ENABLED) - MESSAGE(FATAL_ERROR "Headless client requires a TLS Library to build.") -ENDIF() - -IF(EQEMU_BUILD_SERVER OR EQEMU_BUILD_LOGIN OR EQEMU_BUILD_TESTS OR EQEMU_BUILD_HC) - ADD_SUBDIRECTORY(common) - ADD_SUBDIRECTORY(libs) - ADD_SUBDIRECTORY(submodules/fmt) - ADD_SUBDIRECTORY(submodules/libuv) - - IF(EQEMU_BUILD_ZLIB) - SET(ZLIB_COMPAT ON CACHE BOOL "Compile with zlib compatible API") - SET(ZLIB_ENABLE_TESTS OFF CACHE BOOL "Build test binaries") - ADD_SUBDIRECTORY(libs/zlibng) - ENDIF() - - SET(RECASTNAVIGATION_DEMO OFF CACHE BOOL "Build demo") - SET(RECASTNAVIGATION_TESTS OFF CACHE BOOL "Build tests") - SET(RECASTNAVIGATION_EXAMPLES OFF CACHE BOOL "Build examples") - ADD_SUBDIRECTORY(submodules/recastnavigation) -ENDIF(EQEMU_BUILD_SERVER OR EQEMU_BUILD_LOGIN OR EQEMU_BUILD_TESTS OR EQEMU_BUILD_HC) - -IF(EQEMU_BUILD_SERVER) - ADD_SUBDIRECTORY(shared_memory) - ADD_SUBDIRECTORY(world) - ADD_SUBDIRECTORY(zone) - ADD_SUBDIRECTORY(ucs) - ADD_SUBDIRECTORY(queryserv) - ADD_SUBDIRECTORY(eqlaunch) -ENDIF(EQEMU_BUILD_SERVER) - -IF(EQEMU_BUILD_LOGIN) - ADD_SUBDIRECTORY(loginserver) -ENDIF(EQEMU_BUILD_LOGIN) - -IF(EQEMU_BUILD_HC) - ADD_SUBDIRECTORY(hc) -ENDIF(EQEMU_BUILD_HC) - -IF(EQEMU_BUILD_TESTS) - ADD_SUBDIRECTORY(tests) -ENDIF(EQEMU_BUILD_TESTS) - -IF(EQEMU_BUILD_CLIENT_FILES) - ADD_SUBDIRECTORY(client_files) -ENDIF(EQEMU_BUILD_CLIENT_FILES) diff --git a/submodules/vcpkg b/submodules/vcpkg new file mode 160000 index 000000000..163fe7bd3 --- /dev/null +++ b/submodules/vcpkg @@ -0,0 +1 @@ +Subproject commit 163fe7bd3d67c41200617caaa245b5ba2ba854e6