diff --git a/CMakeLists.txt b/CMakeLists.txt index 268b7f9..0262f47 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,44 +5,51 @@ set(CMAKE_DISABLE_IN_SOURCE_BUILD ON) project(tfs) -list(INSERT CMAKE_MODULE_PATH 0 "${CMAKE_CURRENT_SOURCE_DIR}/cmake") +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") include(cotire) -add_compile_options(-Wall -pipe -fvisibility=hidden) -add_definitions(-DBOOST_ALL_NO_LIB) +add_compile_options(-Wall -Werror -pipe -fvisibility=hidden) +set(CMAKE_CXX_FLAGS_PERFORMANCE "${CMAKE_CXX_FLAGS_RELEASE} -march=native") if (CMAKE_COMPILER_IS_GNUCXX) add_compile_options(-fno-strict-aliasing) endif() include(FindCXX11) +include(FindLTO) # Find packages. +find_package(Crypto++ REQUIRED) find_package(GMP REQUIRED) find_package(PugiXML REQUIRED) -find_package(LuaJIT) find_package(MySQL) find_package(Threads) -option(USE_LUAJIT "Use LuaJIT" ${LUAJIT_FOUND}) +# Selects LuaJIT if user defines or auto-detected +if(DEFINED USE_LUAJIT AND NOT USE_LUAJIT) + set(FORCE_LUAJIT ${USE_LUAJIT}) +else() + find_package(LuaJIT) + set(FORCE_LUAJIT ${LuaJIT_FOUND}) +endif() +option(USE_LUAJIT "Use LuaJIT" ${FORCE_LUAJIT}) -if(USE_LUAJIT) - find_package(LuaJIT REQUIRED) +if(FORCE_LUAJIT) if(APPLE) set(CMAKE_EXE_LINKER_FLAGS "-pagezero_size 10000 -image_base 100000000") endif() else() - find_package(Lua) + find_package(Lua REQUIRED) endif() -find_package(Boost 1.53.0 COMPONENTS system filesystem REQUIRED) +find_package(Boost 1.53.0 COMPONENTS system filesystem iostreams REQUIRED) -include(src/CMakeLists.txt) +add_subdirectory(src) add_executable(tfs ${tfs_SRC}) -include_directories(${MYSQL_INCLUDE_DIR} ${LUA_INCLUDE_DIR} ${Boost_INCLUDE_DIRS} ${PUGIXML_INCLUDE_DIR} ${GMP_INCLUDE_DIR}) -target_link_libraries(tfs ${MYSQL_CLIENT_LIBS} ${LUA_LIBRARIES} ${Boost_LIBRARIES} ${Boost_FILESYSTEM_LIBRARIES} ${PUGIXML_LIBRARIES} ${GMP_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT}) +include_directories(${MYSQL_INCLUDE_DIR} ${LUA_INCLUDE_DIR} ${Boost_INCLUDE_DIRS} ${PUGIXML_INCLUDE_DIR} ${GMP_INCLUDE_DIR} ${Crypto++_INCLUDE_DIR}) +target_link_libraries(tfs ${MYSQL_CLIENT_LIBS} ${LUA_LIBRARIES} ${Boost_LIBRARIES} ${Boost_FILESYSTEM_LIBRARY} ${PUGIXML_LIBRARIES} ${GMP_LIBRARIES} ${Crypto++_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT}) set_target_properties(tfs PROPERTIES COTIRE_CXX_PREFIX_HEADER_INIT "src/otpch.h") set_target_properties(tfs PROPERTIES COTIRE_ADD_UNITY_BUILD FALSE) diff --git a/cmake/FindCrypto++.cmake b/cmake/FindCrypto++.cmake new file mode 100644 index 0000000..5f4cb92 --- /dev/null +++ b/cmake/FindCrypto++.cmake @@ -0,0 +1,13 @@ +# Locate Crypto++ library +# This module defines +# Crypto++_FOUND +# Crypto++_INCLUDE_DIR +# Crypto++_LIBRARIES + +find_path(Crypto++_INCLUDE_DIR NAMES cryptopp/cryptlib.h) +find_library(Crypto++_LIBRARIES NAMES cryptopp libcryptopp) + +include(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(Crypto++ DEFAULT_MSG Crypto++_INCLUDE_DIR Crypto++_LIBRARIES) + +mark_as_advanced(Crypto++_INCLUDE_DIR Crypto++_LIBRARIES) diff --git a/cmake/FindLTO.cmake b/cmake/FindLTO.cmake new file mode 100644 index 0000000..06906ef --- /dev/null +++ b/cmake/FindLTO.cmake @@ -0,0 +1,12 @@ +if(__FIND_LTO_CMAKE__) + return() +endif() +set(__FIND_LTO_CMAKE__ TRUE) + +include(CheckCXXCompilerFlag) +enable_language(CXX) + +check_cxx_compiler_flag("-flto" COMPILER_KNOWS_LTO) +if(COMPILER_KNOWS_LTO) + add_compile_options(-flto) +endif() diff --git a/cmake/FindLuaJIT.cmake b/cmake/FindLuaJIT.cmake index e626a5a..47d986c 100644 --- a/cmake/FindLuaJIT.cmake +++ b/cmake/FindLuaJIT.cmake @@ -10,7 +10,7 @@ find_path(LUA_INCLUDE_DIR luajit.h HINTS ENV LUA_DIR - PATH_SUFFIXES include/luajit-2.0 include + PATH_SUFFIXES include/luajit-2.0 include/luajit-2.1 include PATHS ~/Library/Frameworks /Library/Frameworks diff --git a/cmake/FindMySQL.cmake b/cmake/FindMySQL.cmake index 5e378d5..b3f1a0c 100644 --- a/cmake/FindMySQL.cmake +++ b/cmake/FindMySQL.cmake @@ -67,7 +67,7 @@ IF (WIN32) $ENV{ProgramFiles}/MySQL/*/lib/${libsuffixDist} $ENV{SystemDrive}/MySQL/*/lib/${libsuffixDist}) ELSE (WIN32) - FIND_LIBRARY(MYSQL_LIB NAMES mysqlclient + FIND_LIBRARY(MYSQL_LIB NAMES mysqlclient mariadbclient PATHS $ENV{MYSQL_DIR}/libmysql/.libs $ENV{MYSQL_DIR}/lib @@ -95,7 +95,7 @@ IF (MYSQL_INCLUDE_DIR AND MYSQL_LIB_DIR) FIND_LIBRARY(MYSQL_ZLIB zlib PATHS ${MYSQL_LIB_DIR}) FIND_LIBRARY(MYSQL_YASSL yassl PATHS ${MYSQL_LIB_DIR}) FIND_LIBRARY(MYSQL_TAOCRYPT taocrypt PATHS ${MYSQL_LIB_DIR}) - SET(MYSQL_CLIENT_LIBS mysqlclient) + SET(MYSQL_CLIENT_LIBS ${MYSQL_LIB}) IF (MYSQL_ZLIB) SET(MYSQL_CLIENT_LIBS ${MYSQL_CLIENT_LIBS} zlib) ENDIF (MYSQL_ZLIB) diff --git a/cmake/FindPugiXML.cmake b/cmake/FindPugiXML.cmake index 4f09e0b..2085b4e 100644 --- a/cmake/FindPugiXML.cmake +++ b/cmake/FindPugiXML.cmake @@ -1,7 +1,15 @@ -find_path(PUGIXML_INCLUDE_DIR NAMES pugixml.hpp) -find_library(PUGIXML_LIBRARIES NAMES pugixml) +if(APPLE) + find_package(PkgConfig REQUIRED) + pkg_check_modules(PC_PUGIXML QUIET pugixml) + set(PUGIXML_DEFINITIONS ${PC_PUGIXML_CFLAGS_OTHER}) + + find_path(PUGIXML_INCLUDE_DIR pugixml.hpp HINTS ${PC_PUGIXML_INCLUDEDIR} ${PC_PUGIXML_INCLUDE_DIRS}) + find_library(PUGIXML_LIBRARIES NAMES pugixml HINTS ${PC_PUGIXML_LIBDIR} ${PC_PUGIXML_LIBRARY_DIRS}) +else() + find_path(PUGIXML_INCLUDE_DIR NAMES pugixml.hpp) + find_library(PUGIXML_LIBRARIES NAMES pugixml) +endif() include(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(PugiXML REQUIRED_VARS PUGIXML_INCLUDE_DIR PUGIXML_LIBRARIES) - +find_package_handle_standard_args(PugiXML REQUIRED_VARS PUGIXML_INCLUDE_DIR PUGIXML_LIBRARIES) mark_as_advanced(PUGIXML_INCLUDE_DIR PUGIXML_LIBRARIES) diff --git a/sabrehaven.sql b/sabrehaven.sql index f995b15..6dd3015 100644 --- a/sabrehaven.sql +++ b/sabrehaven.sql @@ -1498,6 +1498,12 @@ ALTER TABLE `tile_store` -- AUTO_INCREMENT for dumped tables -- +-- +-- AUTO_INCREMENT for table `accounts` +-- +ALTER TABLE `accounts` + MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; + -- -- AUTO_INCREMENT for table `account_ban_history` -- diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 5beaa34..c95be84 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -68,5 +68,5 @@ set(tfs_SRC ${CMAKE_CURRENT_LIST_DIR}/waitlist.cpp ${CMAKE_CURRENT_LIST_DIR}/wildcardtree.cpp ${CMAKE_CURRENT_LIST_DIR}/xtea.cpp -) + PARENT_SCOPE)