First version of the cmake build system. Seems to be more portable and

easy to work with in non-POSIX enviroments than autotools. Still need to 
add installation support for the targets (so you can use "make install") 
and using sed to generate the config files. 
Usage:
- autogen/configure become: "cmake /path/to/pvpgnsource"; only tested in 
the current directory so far, so "cmake ."; out of source builds should 
work too in theory
- make becomes: make (suprise!)
Will update docs with more instructions if we will use it after all.
This commit is contained in:
dizzy 2007-08-19 11:51:53 +00:00
parent 9e93df6dda
commit 0d0b10c552
21 changed files with 601 additions and 0 deletions

14
pvpgn/CMakeLists.txt Normal file
View file

@ -0,0 +1,14 @@
project(pvpgn)
option(WITH_BNETD "compile the bnetd target" ON)
option(WITH_D2CS "compile the d2cs target" ON)
option(WITH_D2DBS "compile the d2dbs target" ON)
option(WITH_ANSI "enforce strict ISO C++ conforming" ON)
#storage backends flags
option(WITH_MYSQL "include MySQL user accounts support" OFF)
option(WITH_SQLITE3 "include SQLite3 user accounts support" OFF)
include(ConfigureChecks.cmake)
add_subdirectory(src)

142
pvpgn/ConfigureChecks.cmake Normal file
View file

@ -0,0 +1,142 @@
set(CMAKE_MODULE_PATH
${CMAKE_SOURCE_DIR}/cmake/Modules
)
include(CheckIncludeFileCXX)
include(CheckIncludeFilesCXX)
include(CheckFunctionExists)
include(CheckLibraryExists)
include(CheckTypeSizeCXX)
include(CheckCXXCompilerFlag)
check_include_files_cxx("cassert;cctype;cerrno;cmath;climits;csignal;cstdarg;cstddef;cstdio;cstdlib;cstring;ctime;deque;exception;fstream;iomanip;iostream;limits;list;map;memory;sstream;stdexcept;string;utility;vector" HAVE_STD_HEADERS)
if(NOT HAVE_STD_HEADERS)
MESSAGE(FATAL_ERROR "Standard C90/C++98 header missing, you need a fully standard compliant compiler/enviroment.")
endif(NOT HAVE_STD_HEADERS)
check_include_file_cxx(fcntl.h HAVE_FCNTL_H)
check_include_file_cxx(sys/time.h HAVE_SYS_TIME_H)
check_include_file_cxx(sys/select.h HAVE_SYS_SELECT_H)
check_include_file_cxx(unistd.h HAVE_UNISTD_H)
check_include_file_cxx(sys/utsname.h HAVE_SYS_UTSNAME_H)
check_include_file_cxx(sys/timeb.h HAVE_SYS_TIMEB_H)
check_include_file_cxx(sys/socket.h HAVE_SYS_SOCKET_H)
check_include_file_cxx(sys/param.h HAVE_SYS_PARAM_H)
check_include_file_cxx(netinet/in.h HAVE_NETINET_IN_H)
check_include_file_cxx(arpa/inet.h HAVE_ARPA_INET_H)
check_include_file_cxx(netdb.h HAVE_NETDB_H)
check_include_file_cxx(termios.h HAVE_TERMIOS_H)
check_include_file_cxx(sys/types.h HAVE_SYS_TYPES_H)
check_include_file_cxx(sys/wait.h HAVE_SYS_WAIT_H)
check_include_file_cxx(sys/ioctl.h HAVE_SYS_IOCTL_H)
check_include_file_cxx(stdint.h HAVE_STDINT_H)
check_include_file_cxx(sys/file.h HAVE_SYS_FILE_H)
check_include_file_cxx(poll.h HAVE_POLL_H)
check_include_file_cxx(sys/poll.h HAVE_SYS_POLL_H)
check_include_file_cxx(sys/stropts.h HAVE_SYS_STROPTS_H)
check_include_file_cxx(sys/stat.h HAVE_SYS_STAT_H)
check_include_file_cxx(pwd.h HAVE_PWD_H)
check_include_file_cxx(grp.h HAVE_GRP_H)
check_include_file_cxx(dir.h HAVE_DIR_H)
check_include_file_cxx(dirent.h HAVE_DIRENT_H)
check_include_file_cxx(ndir.h HAVE_NDIR_H)
check_include_file_cxx(sys/ndir.h HAVE_SYS_NDIR_H)
check_include_file_cxx(sys/dir.h HAVE_SYS_DIR_H)
check_include_file_cxx(direct.h HAVE_DIRECT_H)
check_include_file_cxx(sys/mman.h HAVE_SYS_MMAN_H)
check_include_file_cxx(sys/event.h HAVE_SYS_EVENT_H)
check_include_file_cxx(sys/epoll.h HAVE_SYS_EPOLL_H)
check_include_file_cxx(sys/resource.h HAVE_SYS_RESOURCE_H)
check_include_file_cxx(sqlite3.h HAVE_SQLITE3_H)
check_include_file_cxx(pcap.h HAVE_PCAP_H)
check_type_size_cxx("unsigned char" SIZEOF_UNSIGNED_CHAR)
check_type_size_cxx("unsigned short" SIZEOF_UNSIGNED_SHORT)
check_type_size_cxx("unsigned int" SIZEOF_UNSIGNED_INT)
check_type_size_cxx("unsigned long" SIZEOF_UNSIGNED_LONG)
check_type_size_cxx("unsigned long long" SIZEOF_UNSIGNED_LONG_LONG)
check_type_size_cxx("signed char" SIZEOF_SIGNED_CHAR)
check_type_size_cxx("signed short" SIZEOF_SIGNED_SHORT)
check_type_size_cxx("signed int" SIZEOF_SIGNED_INT)
check_type_size_cxx("signed long" SIZEOF_SIGNED_LONG)
check_type_size_cxx("signed long long" SIZEOF_SIGNED_LONG_LONG)
check_function_exists(mmap HAVE_MMAP)
check_function_exists(gethostname HAVE_GETHOSTNAME)
check_function_exists(gettimeofday HAVE_GETTIMEOFDAY)
check_function_exists(select HAVE_SELECT)
check_function_exists(socket HAVE_SOCKET)
check_function_exists(strdup HAVE_STRDUP)
check_function_exists(strtoul HAVE_STRTOUL)
check_function_exists(inet_aton HAVE_INET_ATON)
check_function_exists(inet_ntoa HAVE_INET_NTOA)
check_function_exists(uname HAVE_UNAME)
check_function_exists(recv HAVE_RECV)
check_function_exists(send HAVE_SEND)
check_function_exists(recvfrom HAVE_RECVFROM)
check_function_exists(sendto HAVE_SENDTO)
check_function_exists(uname HAVE_UNAME)
check_function_exists(fork HAVE_FORK)
check_function_exists(getpid HAVE_GETPID)
check_function_exists(sigaction HAVE_SIGACTION)
check_function_exists(sigprocmask HAVE_SIGPROCMASK)
check_function_exists(sigaddset HAVE_SIGADDSET)
check_function_exists(setpgid HAVE_SETPGID)
check_function_exists(ftime HAVE_FTIME)
check_function_exists(strcasecmp HAVE_STRCASECMP)
check_function_exists(strncasecmp HAVE_STRNCASECMP)
check_function_exists(stricmp HAVE_STRICMP)
check_function_exists(strnicmp HAVE_STRNICMP)
check_function_exists(chdir HAVE_CHDIR)
check_function_exists(difftime HAVE_DIFFTIME)
check_function_exists(strchr HAVE_STRCHR)
check_function_exists(strrchr HAVE_STRRCHR)
check_function_exists(index HAVE_INDEX)
check_function_exists(rindex HAVE_RINDEX)
check_function_exists(wait HAVE_WAIT)
check_function_exists(waitpid HAVE_WAITPID)
check_function_exists(pipe HAVE_PIPE)
check_function_exists(getenv HAVE_GETENV)
check_function_exists(ioctl HAVE_IOCTL)
check_function_exists(setsid HAVE_SETSID)
check_function_exists(poll HAVE_POLL)
check_function_exists(gethostbyname HAVE_GETHOSTBYNAME)
check_function_exists(getservbyname HAVE_GETSERVBYNAME)
check_function_exists(getlogin HAVE_GETLOGIN)
check_function_exists(getpwnam HAVE_GETPWNAME)
check_function_exists(getgrnam HAVE_GETGRNAM)
check_function_exists(getuid HAVE_GETUID)
check_function_exists(getgid HAVE_GETGID)
check_function_exists(setuid HAVE_SETUID)
check_function_exists(mkdir HAVE_MKDIR)
check_function_exists(_mkdir HAVE__MKDIR)
check_function_exists(strsep HAVE_STRSEP)
check_function_exists(getopt HAVE_GETOPT)
check_function_exists(kqueue HAVE_KQUEUE)
check_function_exists(setitimer HAVE_SETITIMER)
check_function_exists(epoll_create HAVE_EPOLL_CREATE)
check_function_exists(getrlimit HAVE_GETRLIMIT)
check_function_exists(vsnprintf HAVE_VSNPRINTF)
check_function_exists(_vsnprintf HAVE__VSNPRINTF)
check_function_exists(snprintf HAVE_SNPRINTF)
check_function_exists(_snprintf HAVE__SNPRINTF)
check_function_exists(setpgrp HAVE_SETPGRP)
find_package(ZLIB REQUIRED)
check_library_exists(pcap pcap_open_offline "" HAVE_LIBPCAP)
#storage module checks
if(WITH_MYSQL)
find_package(MySQL REQUIRED)
endif(WITH_MYSQL)
if(WITH_SQLITE3)
find_package(SQLite3 REQUIRED)
endif(WITH_SQLITE3)
configure_file(config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
check_cxx_compiler_flag("-Wall" WITH_FLAG_WALL)
if(WITH_ANSI)
check_cxx_compiler_flag("-pedantic -ansi" WITH_FLAG_ANSIPEDANTIC)
endif(WITH_ANSI)

View file

@ -0,0 +1,59 @@
# - Check if the files can be included
#
# CHECK_INCLUDE_FILES_CXX(INCLUDE VARIABLE)
#
# INCLUDE - list of files to include
# VARIABLE - variable to return result
#
# The following variables may be set before calling this macro to
# modify the way the check is run:
#
# CMAKE_REQUIRED_FLAGS = string of compile command line flags
# CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
# CMAKE_REQUIRED_INCLUDES = list of include directories
MACRO(CHECK_INCLUDE_FILES_CXX INCLUDE VARIABLE)
IF("${VARIABLE}" MATCHES "^${VARIABLE}$")
SET(CMAKE_CONFIGURABLE_FILE_CONTENT "/* */\n")
IF(CMAKE_REQUIRED_INCLUDES)
SET(CHECK_INCLUDE_FILES_CXX_INCLUDE_DIRS "-DINCLUDE_DIRECTORIES=${CMAKE_REQUIRED_INCLUDES}")
ELSE(CMAKE_REQUIRED_INCLUDES)
SET(CHECK_INCLUDE_FILES_CXX_INCLUDE_DIRS)
ENDIF(CMAKE_REQUIRED_INCLUDES)
SET(CHECK_INCLUDE_FILES_CXX_CONTENT "/* */\n")
SET(MACRO_CHECK_INCLUDE_FILES_CXX_FLAGS ${CMAKE_REQUIRED_FLAGS})
FOREACH(FILE ${INCLUDE})
SET(CMAKE_CONFIGURABLE_FILE_CONTENT
"${CMAKE_CONFIGURABLE_FILE_CONTENT}#include <${FILE}>\n")
ENDFOREACH(FILE)
SET(CMAKE_CONFIGURABLE_FILE_CONTENT
"${CMAKE_CONFIGURABLE_FILE_CONTENT}\n\nint main(){return 0;}\n")
CONFIGURE_FILE("${CMAKE_ROOT}/Modules/CMakeConfigurableFile.in"
"${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckIncludeFiles.cxx" @ONLY IMMEDIATE)
MESSAGE(STATUS "Looking for include files ${VARIABLE}")
TRY_COMPILE(${VARIABLE}
${CMAKE_BINARY_DIR}
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckIncludeFiles.cxx
COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
CMAKE_FLAGS
-DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_INCLUDE_FILES_CXX_FLAGS}
"${CHECK_INCLUDE_FILES_CXX_INCLUDE_DIRS}"
OUTPUT_VARIABLE OUTPUT)
IF(${VARIABLE})
MESSAGE(STATUS "Looking for include files ${VARIABLE} - found")
SET(${VARIABLE} 1 CACHE INTERNAL "Have include ${VARIABLE}")
FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
"Determining if files ${INCLUDE} "
"exist passed with the following output:\n"
"${OUTPUT}\n\n")
ELSE(${VARIABLE})
MESSAGE(STATUS "Looking for include files ${VARIABLE} - not found.")
SET(${VARIABLE} "" CACHE INTERNAL "Have includes ${VARIABLE}")
FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
"Determining if files ${INCLUDE} "
"exist failed with the following output:\n"
"${OUTPUT}\nSource:\n${CMAKE_CONFIGURABLE_FILE_CONTENT}\n")
ENDIF(${VARIABLE})
ENDIF("${VARIABLE}" MATCHES "^${VARIABLE}$")
ENDMACRO(CHECK_INCLUDE_FILES_CXX)

View file

@ -0,0 +1,58 @@
# - Check if the files can be included
#
# CHECK_MKDIR_ARGS(VARIABLE)
#
# VARIABLE - variable to return if mkdir/_mkdir need a single argument
#
# The following variables may be set before calling this macro to
# modify the way the check is run:
#
# CMAKE_REQUIRED_FLAGS = string of compile command line flags
# CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
# CMAKE_REQUIRED_INCLUDES = list of include directories
MACRO(CHECK_MKDIR_ARGS INCLUDE VARIABLE)
IF("${VARIABLE}" MATCHES "^${VARIABLE}$")
SET(CMAKE_CONFIGURABLE_FILE_CONTENT "/* */\n")
IF(CMAKE_REQUIRED_INCLUDES)
SET(CHECK_INCLUDE_FILES_CXX_INCLUDE_DIRS "-DINCLUDE_DIRECTORIES=${CMAKE_REQUIRED_INCLUDES}")
ELSE(CMAKE_REQUIRED_INCLUDES)
SET(CHECK_INCLUDE_FILES_CXX_INCLUDE_DIRS)
ENDIF(CMAKE_REQUIRED_INCLUDES)
SET(CHECK_INCLUDE_FILES_CXX_CONTENT "/* */\n")
SET(MACRO_CHECK_INCLUDE_FILES_CXX_FLAGS ${CMAKE_REQUIRED_FLAGS})
FOREACH(FILE ${INCLUDE})
SET(CMAKE_CONFIGURABLE_FILE_CONTENT
"${CMAKE_CONFIGURABLE_FILE_CONTENT}#include <${FILE}>\n")
ENDFOREACH(FILE)
SET(CMAKE_CONFIGURABLE_FILE_CONTENT
"${CMAKE_CONFIGURABLE_FILE_CONTENT}\n\nint main(){return 0;}\n")
CONFIGURE_FILE("${CMAKE_ROOT}/Modules/CMakeConfigurableFile.in"
"${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckIncludeFiles.cxx" @ONLY IMMEDIATE)
MESSAGE(STATUS "Looking for include files ${VARIABLE}")
TRY_COMPILE(${VARIABLE}
${CMAKE_BINARY_DIR}
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckIncludeFiles.cxx
COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
CMAKE_FLAGS
-DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_INCLUDE_FILES_CXX_FLAGS}
"${CHECK_INCLUDE_FILES_CXX_INCLUDE_DIRS}"
OUTPUT_VARIABLE OUTPUT)
IF(${VARIABLE})
MESSAGE(STATUS "Looking for include files ${VARIABLE} - found")
SET(${VARIABLE} 1 CACHE INTERNAL "Have include ${VARIABLE}")
FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
"Determining if files ${INCLUDE} "
"exist passed with the following output:\n"
"${OUTPUT}\n\n")
ELSE(${VARIABLE})
MESSAGE(STATUS "Looking for include files ${VARIABLE} - not found.")
SET(${VARIABLE} "" CACHE INTERNAL "Have includes ${VARIABLE}")
FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
"Determining if files ${INCLUDE} "
"exist failed with the following output:\n"
"${OUTPUT}\nSource:\n${CMAKE_CONFIGURABLE_FILE_CONTENT}\n")
ENDIF(${VARIABLE})
ENDIF("${VARIABLE}" MATCHES "^${VARIABLE}$")
ENDMACRO(CHECK_INCLUDE_FILES_CXX)

View file

@ -0,0 +1,68 @@
# - Check sizeof a type
# CHECK_TYPE_SIZE_CXX(TYPE VARIABLE)
# Check if the type exists and determine size of type. if the type
# exists, the size will be stored to the variable.
# VARIABLE - variable to store size if the type exists.
# HAVE_${VARIABLE} - does the variable exists or not
# The following variables may be set before calling this macro to
# modify the way the check is run:
#
# CMAKE_REQUIRED_FLAGS = string of compile command line flags
# CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
# CMAKE_REQUIRED_INCLUDES = list of include directories
# CMAKE_REQUIRED_LIBRARIES = list of libraries to link
MACRO(CHECK_TYPE_SIZE_CXX TYPE VARIABLE)
SET(CMAKE_ALLOW_UNKNOWN_VARIABLE_READ_ACCESS 1)
IF("HAVE_${VARIABLE}" MATCHES "^HAVE_${VARIABLE}$")
SET(CHECK_TYPE_SIZE_CXX_TYPE "${TYPE}")
SET(MACRO_CHECK_TYPE_CXX_SIZE_FLAGS
"${CMAKE_REQUIRED_FLAGS}")
FOREACH(def HAVE_SYS_TYPES_H HAVE_STDINT_H HAVE_STDDEF_H)
IF("${def}")
SET(MACRO_CHECK_TYPE_SIZE_CXX_FLAGS
"${MACRO_CHECK_TYPE_SIZE_CXX_FLAGS} -D${def}")
ENDIF("${def}")
ENDFOREACH(def)
SET(CHECK_TYPE_SIZE_CXX_PREINCLUDE)
SET(CHECK_TYPE_SIZE_CXX_PREMAIN)
FOREACH(def ${CMAKE_EXTRA_INCLUDE_FILES})
SET(CHECK_TYPE_SIZE_CXX_PREMAIN "${CHECK_TYPE_SIZE_CXX_PREMAIN}#include \"${def}\"\n")
ENDFOREACH(def)
CONFIGURE_FILE("${CMAKE_MODULE_PATH}/CheckTypeSizeCXX.cxx.in"
"${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckTypeSizeCXX.cxx" IMMEDIATE @ONLY)
FILE(READ "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckTypeSizeCXX.cxx"
CHECK_TYPE_SIZE_CXX_FILE_CONTENT)
MESSAGE(STATUS "Check size of ${TYPE}")
IF(CMAKE_REQUIRED_LIBRARIES)
SET(CHECK_TYPE_SIZE_CXX_ADD_LIBRARIES
"-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
ELSE(CMAKE_REQUIRED_LIBRARIES)
SET(CHECK_TYPE_SIZE_CXX_ADD_LIBRARIES)
ENDIF(CMAKE_REQUIRED_LIBRARIES)
IF(CMAKE_REQUIRED_INCLUDES)
SET(CHECK_TYPE_SIZE_CXX_ADD_INCLUDES
"-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
ELSE(CMAKE_REQUIRED_INCLUDES)
SET(CHECK_TYPE_SIZE_CXX_ADD_INCLUDES)
ENDIF(CMAKE_REQUIRED_INCLUDES)
TRY_RUN(${VARIABLE} HAVE_${VARIABLE}
${CMAKE_BINARY_DIR}
"${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckTypeSizeCXX.cxx"
COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_TYPE_SIZE_CXX_FLAGS}
"${CHECK_TYPE_SIZE_CXX_ADD_LIBRARIES}"
"${CHECK_TYPE_SIZE_CXX_ADD_INCLUDES}"
OUTPUT_VARIABLE OUTPUT)
IF(HAVE_${VARIABLE})
MESSAGE(STATUS "Check size of ${TYPE} - done")
FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
"Determining size of ${TYPE} passed with the following output:\n${OUTPUT}\n\n")
ELSE(HAVE_${VARIABLE})
MESSAGE(STATUS "Check size of ${TYPE} - failed")
FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
"Determining size of ${TYPE} failed with the following output:\n${OUTPUT}\nCheckTypeSizeCXX.cxx:\n${CHECK_TYPE_SIZE_CXX_FILE_CONTENT}\n\n")
ENDIF(HAVE_${VARIABLE})
ENDIF("HAVE_${VARIABLE}" MATCHES "^HAVE_${VARIABLE}$")
SET(CMAKE_ALLOW_UNKNOWN_VARIABLE_READ_ACCESS )
ENDMACRO(CHECK_TYPE_SIZE_CXX)

View file

@ -0,0 +1,28 @@
#cmakedefine CHECK_TYPE_SIZE_CXX_TYPE @CHECK_TYPE_SIZE_CXX_TYPE@
#ifdef CHECK_TYPE_SIZE_CXX_TYPE
@CHECK_TYPE_SIZE_CXX_PREINCLUDE@
#ifdef HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif /* HAVE_SYS_TYPES_H */
#ifdef HAVE_STDINT_H
# include <stdint.h>
#endif /* HAVE_STDINT_H */
#ifdef HAVE_STDDEF_H
# include <stddef.h>
#endif /* HAVE_STDDEF_H */
@CHECK_TYPE_SIZE_CXX_PREMAIN@
int main(int ac, char*av[]){
if(ac > 1000){return *av[0];}
return sizeof(CHECK_TYPE_SIZE_CXX_TYPE);
}
#else /* CHECK_TYPE_SIZE_CXX_TYPE */
# error "CHECK_TYPE_SIZE_CXX_TYPE has to specify the type"
#endif /* CHECK_TYPE_SIZE_CXX_TYPE */

View file

@ -0,0 +1,50 @@
# - Find mysqlclient
# Find the native MySQL includes and library
#
# MYSQL_INCLUDE_DIR - where to find mysql.h, etc.
# MYSQL_LIBRARIES - List of libraries when using MySQL.
# MYSQL_FOUND - True if MySQL found.
IF (MYSQL_INCLUDE_DIR)
# Already in cache, be silent
SET(MYSQL_FIND_QUIETLY TRUE)
ENDIF (MYSQL_INCLUDE_DIR)
FIND_PATH(MYSQL_INCLUDE_DIR mysql.h
/usr/local/mysql/include
/usr/local/include/mysql
/usr/local/include
/usr/include/mysql
/usr/include
/usr/mysql/include
)
SET(MYSQL_NAMES mysqlclient mysqlclient_r)
FIND_LIBRARY(MYSQL_LIBRARY
NAMES ${MYSQL_NAMES}
PATHS /usr/local/mysql/lib /usr/local/lib /usr/lib
)
IF (MYSQL_INCLUDE_DIR AND MYSQL_LIBRARY)
SET(MYSQL_FOUND TRUE)
SET( MYSQL_LIBRARIES ${MYSQL_LIBRARY} )
ELSE (MYSQL_INCLUDE_DIR AND MYSQL_LIBRARY)
SET(MYSQL_FOUND FALSE)
SET( MYSQL_LIBRARIES )
ENDIF (MYSQL_INCLUDE_DIR AND MYSQL_LIBRARY)
IF (MYSQL_FOUND)
IF (NOT MYSQL_FIND_QUIETLY)
MESSAGE(STATUS "Found MySQL: ${MYSQL_LIBRARY}")
ENDIF (NOT MYSQL_FIND_QUIETLY)
ELSE (MYSQL_FOUND)
IF (MYSQL_FIND_REQUIRED)
MESSAGE(STATUS "Looked for MySQL libraries named ${MYSQL_NAMES}.")
MESSAGE(FATAL_ERROR "Could NOT find MySQL library")
ENDIF (MYSQL_FIND_REQUIRED)
ENDIF (MYSQL_FOUND)
MARK_AS_ADVANCED(
MYSQL_LIBRARY
MYSQL_INCLUDE_DIR
)

View file

@ -0,0 +1,48 @@
# - Find sqlite3
# Find the native SQLite3 includes and library
#
# SQLITE3_INCLUDE_DIR - where to find sqlite3.h
# SQLITE3_LIBRARIES - List of libraries when using SQLite3.
# SQLITE3_FOUND - True if SQLite3 found.
IF (SQLITE3_INCLUDE_DIR)
# Already in cache, be silent
SET(SQLITE3_FIND_QUIETLY TRUE)
ENDIF (SQLITE3_INCLUDE_DIR)
FIND_PATH(SQLITE3_INCLUDE_DIR sqlite3.h
/usr/local/include/sqlite3
/usr/local/include
/usr/include/sqlite3
/usr/include
)
SET(SQLITE3_NAMES sqlite3)
FIND_LIBRARY(SQLITE3_LIBRARY
NAMES ${SQLITE3_NAMES}
PATHS /usr/local/lib /usr/lib
)
IF (SQLITE3_INCLUDE_DIR AND SQLITE3_LIBRARY)
SET(SQLITE3_FOUND TRUE)
SET( SQLITE3_LIBRARIES ${SQLITE3_LIBRARY} )
ELSE (SQLITE3_INCLUDE_DIR AND SQLITE3_LIBRARY)
SET(SQLITE3_FOUND FALSE)
SET( SQLITE3_LIBRARIES )
ENDIF (SQLITE3_INCLUDE_DIR AND SQLITE3_LIBRARY)
IF (SQLITE3_FOUND)
IF (NOT SQLITE3_FIND_QUIETLY)
MESSAGE(STATUS "Found SQLite3: ${SQLITE3_LIBRARY}")
ENDIF (NOT SQLITE3_FIND_QUIETLY)
ELSE (SQLITE3_FOUND)
IF (SQLITE3_FIND_REQUIRED)
MESSAGE(STATUS "Looked for SQLite3 libraries named ${SQLITE3_NAMES}.")
MESSAGE(FATAL_ERROR "Could NOT find SQLite3 library")
ENDIF (SQLITE3_FIND_REQUIRED)
ENDIF (SQLITE3_FOUND)
MARK_AS_ADVANCED(
SQLITE3_LIBRARY
SQLITE3_INCLUDE_DIR
)

57
pvpgn/src/CMakeLists.txt Normal file
View file

@ -0,0 +1,57 @@
#first setup the includes and link paths
include_directories(${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/src)
if(MYSQL_INCLUDE_DIR)
include_directories(${MYSQL_INCLUDE_DIR})
endif(MYSQL_INCLUDE_DIR)
if(SQLITE3_INCLUDE_DIR)
include_directories(${SQLITE3_INCLUDE_DIR})
endif(SQLITE3_INCLUDE_DIR)
link_directories(${CMAKE_BINARY_DIR}/src/common
${CMAKE_BINARY_DIR}/src/compat
${CMAKE_BINARY_DIR}/src/tinycdb
${CMAKE_BINARY_DIR}/src/win32)
#this is needed to be compatible with existent code
add_definitions("-DHAVE_CONFIG_H")
if(WITH_FLAG_WALL)
add_definitions("-Wall")
endif(WITH_FLAG_WALL)
if(WITH_FLAG_ANSIPEDANTIC)
add_definitions("-pedantic -ansi")
endif(WITH_FLAG_ANSIPEDANTIC)
if(MYSQL_FOUND)
add_definitions("-DWITH_SQL_MYSQL")
endif(MYSQL_FOUND)
if(SQLITE3_FOUND)
add_definitions("-DWITH_SQL_SQLITE3")
endif(SQLITE3_FOUND)
add_subdirectory(compat)
add_subdirectory(common)
add_subdirectory(tinycdb)
add_subdirectory(win32)
add_subdirectory(bntrackd)
add_subdirectory(client)
add_subdirectory(bniutils)
add_subdirectory(bnpass)
if(WITH_BNETD)
add_subdirectory(bnetd)
endif(WITH_BNETD)
if(WITH_D2CS)
add_subdirectory(d2cs)
endif(WITH_D2CS)
if(WITH_D2DBS)
add_subdirectory(d2dbs)
endif(WITH_D2DBS)
if(HAVE_PCAP_H AND HAVE_LIBPCAP)
add_subdirectory(bnpcap)
endif(HAVE_PCAP_H AND HAVE_LIBPCAP)

View file

@ -0,0 +1,16 @@
add_executable(bnetd account.cpp account_wrap.cpp adbanner.cpp alias_command.cpp anongame.cpp
anongame_gameresult.cpp anongame_infos.cpp anongame_maplists.cpp attrgroup.cpp
attrlayer.cpp autoupdate.cpp channel.cpp channel_conv.cpp character.cpp clan.cpp
cmdline.cpp command.cpp command_groups.cpp connection.cpp file.cpp file_cdb.cpp
file_plain.cpp friends.cpp game.cpp game_conv.cpp handle_anongame.cpp
handle_bnet.cpp handle_bot.cpp handle_d2cs.cpp handle_file.cpp handle_init.cpp
handle_irc.cpp handle_telnet.cpp handle_udp.cpp helpfile.cpp ipban.cpp irc.cpp
ladder.cpp ladder_calc.cpp mail.cpp main.cpp message.cpp news.cpp
output.cpp prefs.cpp realm.cpp runprog.cpp server.cpp sql_dbcreator.cpp
sql_mysql.cpp sql_odbc.cpp sql_pgsql.cpp sql_sqlite3.cpp storage.cpp
storage_file.cpp storage_sql.cpp support.cpp team.cpp tick.cpp timer.cpp topic.cpp
tournament.cpp tracker.cpp udptest_send.cpp versioncheck.cpp watch.cpp
storage_sql2.cpp sql_common.cpp handle_wol.cpp handle_irc_common.cpp
handle_apireg.cpp)
target_link_libraries(bnetd compat common tinycdb
${ZLIB_LIBRARIES} ${MYSQL_LIBRARIES} ${SQLITE3_LIBRARIES})

View file

@ -0,0 +1,14 @@
add_executable(bnilist bnilist.cpp fileio.cpp tga.cpp)
target_link_libraries(bnilist common compat)
add_executable(bni2tga bni2tga.cpp fileio.cpp)
target_link_libraries(bni2tga common)
add_executable(bniextract bniextract.cpp fileio.cpp tga.cpp bni.cpp)
target_link_libraries(bniextract common compat)
add_executable(bnibuild bnibuild.cpp fileio.cpp bni.cpp tga.cpp)
target_link_libraries(bnibuild common compat)
add_executable(tgainfo tgainfo.cpp fileio.cpp tga.cpp)
target_link_libraries(tgainfo common compat)

View file

@ -0,0 +1,5 @@
add_executable(bnpass bnpass.cpp)
target_link_libraries(bnpass common compat)
add_executable(sha1hash sha1hash.cpp)
target_link_libraries(sha1hash common compat)

View file

@ -0,0 +1,2 @@
add_executable(bnpcap bnpcap.cpp)
target_link_libraries(bnpcap common pcap)

View file

@ -0,0 +1,2 @@
add_executable(bntrackd bntrackd.cpp)
target_link_libraries(bntrackd common compat)

View file

@ -0,0 +1,11 @@
add_executable(bnchat bnchat.cpp client.cpp client_connect.cpp udptest.cpp)
target_link_libraries(bnchat common compat)
add_executable(bnftp bnftp.cpp client.cpp)
target_link_libraries(bnftp common compat)
add_executable(bnbot bnbot.cpp client.cpp)
target_link_libraries(bnbot common compat)
add_executable(bnstat bnstat.cpp client.cpp client_connect.cpp udptest.cpp)
target_link_libraries(bnstat common compat)

View file

@ -0,0 +1,7 @@
add_library(common conf.cpp list.cpp eventlog.cpp hexdump.cpp bn_type.cpp
util.cpp addr.cpp d2char_checksum.cpp xalloc.cpp network.cpp packet.cpp
xstring.cpp asnprintf.cpp bnethash.cpp bnethashconv.cpp bnettime.cpp
fdwatch.cpp fdwatch_epoll.cpp fdwatch_kqueue.cpp fdwatch_poll.cpp
fdwatch_select.cpp give_up_root_privileges.cpp hashtable.cpp proginfo.cpp
queue.cpp rcm.cpp rlimit.cpp tag.cpp token.cpp trans.cpp fdwbackend.cpp
xstr.cpp systemerror.cpp wolhash.cpp)

View file

@ -0,0 +1,3 @@
add_library(compat psock.cpp strerror.cpp strsep.cpp pgetopt.cpp
gettimeofday.cpp inet_aton.cpp inet_ntoa.cpp mmap.cpp pdir.cpp snprintf.cpp
strcasecmp.cpp strdup.cpp strncasecmp.cpp strtoul.cpp uname.cpp vsnprintf.cpp)

View file

@ -0,0 +1,5 @@
add_executable(d2cs bnetd.cpp cmdline.cpp connection.cpp d2charfile.cpp
d2charlist.cpp d2gs.cpp d2ladder.cpp game.cpp gamequeue.cpp handle_bnetd.cpp
handle_d2cs.cpp handle_d2gs.cpp handle_init.cpp handle_signal.cpp main.cpp
net.cpp prefs.cpp s2s.cpp server.cpp serverqueue.cpp)
target_link_libraries(d2cs common compat win32)

View file

@ -0,0 +1,3 @@
add_executable(d2dbs charlock.cpp d2ladder.cpp dbserver.cpp dbspacket.cpp
cmdline.cpp prefs.cpp handle_signal.cpp dbsdupecheck.cpp main.cpp)
target_link_libraries(d2dbs common compat)

View file

@ -0,0 +1,8 @@
add_library(tinycdb cdb_find.cpp cdb_findnext.cpp cdb_hash.cpp cdb_init.cpp
cdb_make_add.cpp cdb_make.cpp cdb_make_find.cpp cdb_make_put.cpp cdb_seek.cpp
cdb_seq.cpp cdb_unpack.cpp)
add_executable(bncdb cdb.cpp)
target_link_libraries(bncdb tinycdb
${CMAKE_BINARY_DIR}/src/common/libcommon.a
${CMAKE_BINARY_DIR}/src/compat/libcompat.a )

View file

@ -0,0 +1 @@
add_library(win32 service.cpp)