diff --git a/CMakeLists.txt b/CMakeLists.txt index b2f357a34..491c5358d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,7 +16,7 @@ ENDIF(NOT CMAKE_BUILD_TYPE) SET(CMAKE_PREFIX_PATH "${CMAKE_CURRENT_SOURCE_DIR}/dependencies" "${CMAKE_PREFIX_PATH}") -SET(CMAKE_CXX_STANDARD 11) +SET(CMAKE_CXX_STANDARD 14) SET(CMAKE_CXX_STANDARD_REQUIRED ON) SET(CMAKE_CXX_EXTENSIONS OFF) @@ -162,22 +162,10 @@ ENDIF(EQEMU_ENABLE_BOTS) #What to build 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_PERL "Build Perl parser." ON) -OPTION(EQEMU_BUILD_LUA "Build Lua parser." ON) OPTION(EQEMU_BUILD_CLIENT_FILES "Build Client Import/Export Data Programs." ON) -#Various definitions -IF(EQEMU_BUILD_PERL) - ADD_DEFINITIONS(-DEMBPERL) - ADD_DEFINITIONS(-DEMBPERL_PLUGIN) -ENDIF(EQEMU_BUILD_PERL) -IF(EQEMU_BUILD_LUA) - ADD_DEFINITIONS(-DLUA_EQEMU) -ENDIF(EQEMU_BUILD_LUA) - SET(EQEMU_MAP_DIR "./Maps" CACHE STRING "The dir that maps, water maps, and paths are located in.") ADD_DEFINITIONS(-DEQDEBUG=${EQEMU_DEBUG_LEVEL}) @@ -199,22 +187,42 @@ ADD_DEFINITIONS(-DGLM_ENABLE_EXPERIMENTAL) FIND_PACKAGE(ZLIB REQUIRED) FIND_PACKAGE(MySQL REQUIRED) FIND_PACKAGE(Boost REQUIRED) -FIND_PACKAGE(OpenSSL REQUIRED) -#FIND_PACKAGE(Sodium REQUIRED) +FIND_PACKAGE(OpenSSL) +FIND_PACKAGE(Lua51) +FIND_PACKAGE(PerlLibs) +FIND_PACKAGE(Sodium) -IF(EQEMU_BUILD_PERL) - FIND_PACKAGE(PerlLibs REQUIRED) - INCLUDE_DIRECTORIES(SYSTEM "${PERL_INCLUDE_PATH}") -ENDIF(EQEMU_BUILD_PERL) +MESSAGE(STATUS "**************************************************") +MESSAGE(STATUS "* Library Detection *") +MESSAGE(STATUS "**************************************************") -SET(SERVER_LIBS common debug ${MySQL_LIBRARY_DEBUG} optimized ${MySQL_LIBRARY_RELEASE} ${ZLIB_LIBRARY} ${Boost_LIBRARIES} ${OPENSSL_LIBRARIES} uv_a fmt RecastNavigation::Detour) +IF(OpenSSL_FOUND) + MESSAGE(STATUS "* OpenSSL: FOUND *") +ELSE() + MESSAGE(STATUS "* OpenSSL: MISSING *") +ENDIF() -#OPTION(EQEMU_ENABLE_SECURITY "Use Encryption For TCP Connections" ON) -#IF(EQEMU_ENABLE_SECURITY) -# INCLUDE_DIRECTORIES(SYSTEM "${SODIUM_INCLUDE_DIRS}") -# ADD_DEFINITIONS(-DENABLE_SECURITY) -# SET(SERVER_LIBS ${SERVER_LIBS} ${SODIUM_LIBRARIES}) -#ENDIF() +IF(Lua51_FOUND) + MESSAGE(STATUS "* Lua: FOUND *") +ELSE() + MESSAGE(STATUS "* Lua: MISSING *") +ENDIF() + +IF(PerlLibs_FOUND) + MESSAGE(STATUS "* Perl: FOUND *") +ELSE() + MESSAGE(STATUS "* Perl: MISSING *") +ENDIF() + +IF(SODIUM_FOUND) + MESSAGE(STATUS "* Sodium: FOUND *") +ELSE() + MESSAGE(STATUS "* Sodium: MISSING *") +ENDIF() + +MESSAGE(STATUS "**************************************************") + +SET(SERVER_LIBS common debug ${MySQL_LIBRARY_DEBUG} optimized ${MySQL_LIBRARY_RELEASE} ${ZLIB_LIBRARY} ${Boost_LIBRARIES} uv_a fmt RecastNavigation::Detour) IF(WIN32) SET(SERVER_LIBS ${SERVER_LIBS} "ws2_32" "psapi" "iphlpapi" "userenv") @@ -228,17 +236,45 @@ IF(UNIX) SET(SERVER_LIBS ${SERVER_LIBS} "uuid") ENDIF() -IF(EQEMU_BUILD_LUA) - FIND_PACKAGE(Lua51 REQUIRED) +IF(PerlLibs_FOUND) + OPTION(EQEMU_BUILD_PERL "Build Perl parser." ON) + IF(EQEMU_BUILD_PERL) + INCLUDE_DIRECTORIES(SYSTEM "${PERL_INCLUDE_PATH}") + SET(SERVER_LIBS ${SERVER_LIBS} "${PERL_LIBRARY}") + ADD_DEFINITIONS(-DEMBPERL) + ADD_DEFINITIONS(-DEMBPERL_PLUGIN) + ENDIF(EQEMU_BUILD_PERL) +ENDIF() - INCLUDE_DIRECTORIES(SYSTEM "${LUA_INCLUDE_DIR}") - INCLUDE_DIRECTORIES(SYSTEM "${CMAKE_CURRENT_SOURCE_DIR}/libs/luabind") +IF(Lua51_FOUND) + OPTION(EQEMU_BUILD_LUA "Build Lua parser." ON) + + IF(EQEMU_BUILD_LUA) + INCLUDE_DIRECTORIES(SYSTEM "${LUA_INCLUDE_DIR}") + INCLUDE_DIRECTORIES(SYSTEM "${CMAKE_CURRENT_SOURCE_DIR}/libs/luabind") + SET(SERVER_LIBS ${SERVER_LIBS} "${LUA_LIBRARY}" luabind) + ADD_DEFINITIONS(-DLUA_EQEMU) + + 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(EQEMU_SANITIZE_LUA_LIBS) + ENDIF(EQEMU_BUILD_LUA) +ENDIF() - 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(EQEMU_SANITIZE_LUA_LIBS) -ENDIF(EQEMU_BUILD_LUA) +IF(SODIUM_FOUND) + OPTION(EQEMU_ENABLE_SECURITY "Use LibSodium for stronger security" ON) + IF(EQEMU_ENABLE_SECURITY) + INCLUDE_DIRECTORIES(SYSTEM "${SODIUM_INCLUDE_DIRS}") + SET(SERVER_LIBS ${SERVER_LIBS} ${SODIUM_LIBRARIES}) + ADD_DEFINITIONS(-DENABLE_SECURITY) + ENDIF() +ENDIF() + +IF(OpenSSL_FOUND) + OPTION(EQEMU_BUILD_LOGIN "Build the login server." ON) + SET(SERVER_LIBS ${SERVER_LIBS} ${OPENSSL_LIBRARIES}) +ENDIF() INCLUDE_DIRECTORIES(SYSTEM "${ZLIB_INCLUDE_DIRS}") INCLUDE_DIRECTORIES(SYSTEM "${MySQL_INCLUDE_DIR}") diff --git a/world/CMakeLists.txt b/world/CMakeLists.txt index 76b92d4f2..1ad037768 100644 --- a/world/CMakeLists.txt +++ b/world/CMakeLists.txt @@ -65,8 +65,4 @@ ADD_DEFINITIONS(-DWORLD) TARGET_LINK_LIBRARIES(world ${SERVER_LIBS}) -IF(EQEMU_BUILD_PERL) - TARGET_LINK_LIBRARIES(world ${PERL_LIBRARY}) -ENDIF() - SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin) diff --git a/zone/CMakeLists.txt b/zone/CMakeLists.txt index 2c2eae7d5..e5f5cf274 100644 --- a/zone/CMakeLists.txt +++ b/zone/CMakeLists.txt @@ -262,12 +262,4 @@ ADD_DEFINITIONS(-DZONE) TARGET_LINK_LIBRARIES(zone ${SERVER_LIBS}) -IF(EQEMU_BUILD_PERL) - TARGET_LINK_LIBRARIES(zone ${PERL_LIBRARY}) -ENDIF() - -IF(EQEMU_BUILD_LUA) - TARGET_LINK_LIBRARIES(zone luabind ${LUA_LIBRARY}) -ENDIF(EQEMU_BUILD_LUA) - SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)