From dd73c6ea546a8828653cdce38a52f575cbdd3b96 Mon Sep 17 00:00:00 2001 From: flaviojs Date: Wed, 29 Jun 2011 12:26:51 +0000 Subject: * Added experimental support for CMake. (for now: basic build, no extras, only tested with VS10 and cygwin) git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@14872 54d463be-8e91-2dee-dedb-b68131a5f0ec --- CMakeLists.txt | 274 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 274 insertions(+) create mode 100644 CMakeLists.txt (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 000000000..4f7c46987 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,274 @@ + +cmake_minimum_required( VERSION 2.8.4 ) +project( eAthena ) + + +# +# Prevent building in the source directory by default +# +if( ALLOW_SAME_DIRECTORY ) +elseif( "${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_BINARY_DIR}" ) + option( ALLOW_SAME_DIRECTORY "Allow CMake to build in the source directory." OFF ) + message( FATAL_ERROR "Do not use the source directory to build your files, instead create a separate folder and build there.\nExample:\n mkdir build\n cd build\n cmake -G\"Unix Makefiles\" ..\n make install\nTo skip this check, set ALLOW_SAME_DIRECTORY to 1 or ON" ) +endif() + + +# +# Debug stuff +# +if( NOT SKIP_DEBUG ) +message( STATUS "DEBUG: # Variables That Change Behavior" ) +message( STATUS "DEBUG: BUILD_SHARED_LIBS=${BUILD_SHARED_LIBS}" ) +message( STATUS "DEBUG: CMAKE_BACKWARDS_COMPATIBILITY=${CMAKE_BACKWARDS_COMPATIBILITY}" ) +message( STATUS "DEBUG: CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}" ) +message( STATUS "DEBUG: CMAKE_COLOR_MAKEFILE=${CMAKE_COLOR_MAKEFILE}" ) +message( STATUS "DEBUG: CMAKE_CONFIGURATION_TYPES=${CMAKE_CONFIGURATION_TYPES}" ) +message( STATUS "DEBUG: CMAKE_FIND_LIBRARY_PREFIXES=${CMAKE_FIND_LIBRARY_PREFIXES}" ) +message( STATUS "DEBUG: CMAKE_FIND_LIBRARY_SUFFIXES=${CMAKE_FIND_LIBRARY_SUFFIXES}" ) +message( STATUS "DEBUG: CMAKE_IGNORE_PATH=${CMAKE_IGNORE_PATH}" ) +message( STATUS "DEBUG: CMAKE_INCLUDE_PATH=${CMAKE_INCLUDE_PATH}" ) +message( STATUS "DEBUG: CMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}" ) +message( STATUS "DEBUG: CMAKE_LIBRARY_PATH=${CMAKE_LIBRARY_PATH}" ) +message( STATUS "DEBUG: CMAKE_MFC_FLAG=${CMAKE_MFC_FLAG}" ) +message( STATUS "DEBUG: CMAKE_MODULE_PATH=${CMAKE_MODULE_PATH}" ) +message( STATUS "DEBUG: CMAKE_NOT_USING_CONFIG_FLAGS=${CMAKE_NOT_USING_CONFIG_FLAGS}" ) +message( STATUS "DEBUG: CMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}" ) +message( STATUS "DEBUG: CMAKE_PROGRAM_PATH=${CMAKE_PROGRAM_PATH}" ) +message( STATUS "DEBUG: CMAKE_SKIP_INSTALL_ALL_DEPENDENCY=${CMAKE_SKIP_INSTALL_ALL_DEPENDENCY}" ) +message( STATUS "DEBUG: CMAKE_SYSTEM_IGNORE_PATH=${CMAKE_SYSTEM_IGNORE_PATH}" ) +message( STATUS "DEBUG: CMAKE_SYSTEM_INCLUDE_PATH=${CMAKE_SYSTEM_INCLUDE_PATH}" ) +message( STATUS "DEBUG: CMAKE_SYSTEM_LIBRARY_PATH=${CMAKE_SYSTEM_LIBRARY_PATH}" ) +message( STATUS "DEBUG: CMAKE_SYSTEM_PREFIX_PATH=${CMAKE_SYSTEM_PREFIX_PATH}" ) +message( STATUS "DEBUG: CMAKE_SYSTEM_PROGRAM_PATH=${CMAKE_SYSTEM_PROGRAM_PATH}" ) +message( STATUS "DEBUG: CMAKE_USER_MAKE_RULES_OVERRIDE=${CMAKE_USER_MAKE_RULES_OVERRIDE}" ) +message( STATUS "DEBUG: # Variables That Describe the System" ) +message( STATUS "DEBUG: APPLE=${APPLE}" ) +message( STATUS "DEBUG: BORLAND=${BORLAND}" ) +message( STATUS "DEBUG: CMAKE_CL_64=${CMAKE_CL_64}" ) +message( STATUS "DEBUG: CMAKE_COMPILER_2005=${CMAKE_COMPILER_2005}" ) +message( STATUS "DEBUG: CMAKE_HOST_APPLE=${CMAKE_HOST_APPLE}" ) +message( STATUS "DEBUG: CMAKE_HOST_SYSTEM=${CMAKE_HOST_SYSTEM}" ) +message( STATUS "DEBUG: CMAKE_HOST_SYSTEM_NAME=${CMAKE_HOST_SYSTEM_NAME}" ) +message( STATUS "DEBUG: CMAKE_HOST_SYSTEM_PROCESSOR=${CMAKE_HOST_SYSTEM_PROCESSOR}" ) +message( STATUS "DEBUG: CMAKE_HOST_SYSTEM_VERSION=${CMAKE_HOST_SYSTEM_VERSION}" ) +message( STATUS "DEBUG: CMAKE_HOST_UNIX=${CMAKE_HOST_UNIX}" ) +message( STATUS "DEBUG: CMAKE_HOST_WIN32=${CMAKE_HOST_WIN32}" ) +message( STATUS "DEBUG: CMAKE_OBJECT_PATH_MAX=${CMAKE_OBJECT_PATH_MAX}" ) +message( STATUS "DEBUG: CMAKE_SYSTEM=${CMAKE_SYSTEM}" ) +message( STATUS "DEBUG: CMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME}" ) +message( STATUS "DEBUG: CMAKE_SYSTEM_PROCESSOR=${CMAKE_SYSTEM_PROCESSOR}" ) +message( STATUS "DEBUG: CMAKE_SYSTEM_VERSION=${CMAKE_SYSTEM_VERSION}" ) +message( STATUS "DEBUG: CYGWIN=${CYGWIN}" ) +message( STATUS "DEBUG: MSVC=${MSVC}" ) +message( STATUS "DEBUG: MSVC80=${MSVC80}" ) +message( STATUS "DEBUG: MSVC_IDE=${MSVC_IDE}" ) +message( STATUS "DEBUG: MSVC_VERSION=${MSVC_VERSION}" ) +message( STATUS "DEBUG: UNIX=${UNIX}" ) +message( STATUS "DEBUG: WIN32=${WIN32}" ) +message( STATUS "DEBUG: XCODE_VERSION=${XCODE_VERSION}" ) +message( STATUS "DEBUG: # Variables that Control the Build" ) +message( STATUS "DEBUG: CMAKE_ARCHIVE_OUTPUT_DIRECTORY=${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}" ) +message( STATUS "DEBUG: CMAKE_BUILD_WITH_INSTALL_RPATH=${CMAKE_BUILD_WITH_INSTALL_RPATH}" ) +message( STATUS "DEBUG: CMAKE_DEBUG_POSTFIX=${CMAKE_DEBUG_POSTFIX}" ) +message( STATUS "DEBUG: CMAKE_EXE_LINKER_FLAGS=${CMAKE_EXE_LINKER_FLAGS}" ) +message( STATUS "DEBUG: CMAKE_INCLUDE_CURRENT_DIR=${CMAKE_INCLUDE_CURRENT_DIR}" ) +message( STATUS "DEBUG: CMAKE_INSTALL_NAME_DIR=${CMAKE_INSTALL_NAME_DIR}" ) +message( STATUS "DEBUG: CMAKE_INSTALL_RPATH=${CMAKE_INSTALL_RPATH}" ) +message( STATUS "DEBUG: CMAKE_INSTALL_RPATH_USE_LINK_PATH=${CMAKE_INSTALL_RPATH_USE_LINK_PATH}" ) +message( STATUS "DEBUG: CMAKE_LIBRARY_OUTPUT_DIRECTORY=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}" ) +message( STATUS "DEBUG: CMAKE_LIBRARY_PATH_FLAG=${CMAKE_LIBRARY_PATH_FLAG}" ) +message( STATUS "DEBUG: CMAKE_LINK_DEF_FILE_FLAG=${CMAKE_LINK_DEF_FILE_FLAG}" ) +message( STATUS "DEBUG: CMAKE_LINK_LIBRARY_FILE_FLAG=${CMAKE_LINK_LIBRARY_FILE_FLAG}" ) +message( STATUS "DEBUG: CMAKE_LINK_LIBRARY_FLAG=${CMAKE_LINK_LIBRARY_FLAG}" ) +message( STATUS "DEBUG: CMAKE_NO_BUILTIN_CHRPATH=${CMAKE_NO_BUILTIN_CHRPATH}" ) +message( STATUS "DEBUG: CMAKE_RUNTIME_OUTPUT_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" ) +message( STATUS "DEBUG: CMAKE_SKIP_BUILD_RPATH=${CMAKE_SKIP_BUILD_RPATH}" ) +message( STATUS "DEBUG: CMAKE_TRY_COMPILE_CONFIGURATION=${CMAKE_TRY_COMPILE_CONFIGURATION}" ) +message( STATUS "DEBUG: CMAKE_USE_RELATIVE_PATHS=${CMAKE_USE_RELATIVE_PATHS}" ) +message( STATUS "DEBUG: EXECUTABLE_OUTPUT_PATH=${EXECUTABLE_OUTPUT_PATH}" ) +message( STATUS "DEBUG: LIBRARY_OUTPUT_PATH=${LIBRARY_OUTPUT_PATH}" ) +message( STATUS "DEBUG: # Variables that Provide Information" ) +message( STATUS "DEBUG: CMAKE_AR=${CMAKE_AR}" ) +message( STATUS "DEBUG: CMAKE_BINARY_DIR=${CMAKE_BINARY_DIR}" ) +message( STATUS "DEBUG: CMAKE_BUILD_TOOL=${CMAKE_BUILD_TOOL}" ) +message( STATUS "DEBUG: CMAKE_CACHEFILE_DIR=${CMAKE_CACHEFILE_DIR}" ) +message( STATUS "DEBUG: CMAKE_CACHE_MAJOR_VERSION=${CMAKE_CACHE_MAJOR_VERSION}" ) +message( STATUS "DEBUG: CMAKE_CACHE_MINOR_VERSION=${CMAKE_CACHE_MINOR_VERSION}" ) +message( STATUS "DEBUG: CMAKE_CACHE_PATCH_VERSION=${CMAKE_CACHE_PATCH_VERSION}" ) +message( STATUS "DEBUG: CMAKE_CFG_INTDIR=${CMAKE_CFG_INTDIR}" ) +message( STATUS "DEBUG: CMAKE_COMMAND=${CMAKE_COMMAND}" ) +message( STATUS "DEBUG: CMAKE_CROSSCOMPILING=${CMAKE_CROSSCOMPILING}" ) +message( STATUS "DEBUG: CMAKE_CTEST_COMMAND=${CMAKE_CTEST_COMMAND}" ) +message( STATUS "DEBUG: CMAKE_CURRENT_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR}" ) +message( STATUS "DEBUG: CMAKE_CURRENT_LIST_DIR=${CMAKE_CURRENT_LIST_DIR}" ) +message( STATUS "DEBUG: CMAKE_CURRENT_LIST_FILE=${CMAKE_CURRENT_LIST_FILE}" ) +message( STATUS "DEBUG: CMAKE_CURRENT_LIST_LINE=${CMAKE_CURRENT_LIST_LINE}" ) +message( STATUS "DEBUG: CMAKE_CURRENT_SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}" ) +message( STATUS "DEBUG: CMAKE_DL_LIBS=${CMAKE_DL_LIBS}" ) +message( STATUS "DEBUG: CMAKE_EDIT_COMMAND=${CMAKE_EDIT_COMMAND}" ) +message( STATUS "DEBUG: CMAKE_EXECUTABLE_SUFFIX=${CMAKE_EXECUTABLE_SUFFIX}" ) +message( STATUS "DEBUG: CMAKE_EXTRA_GENERATOR=${CMAKE_EXTRA_GENERATOR}" ) +message( STATUS "DEBUG: CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES=${CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES}" ) +message( STATUS "DEBUG: CMAKE_GENERATOR=${CMAKE_GENERATOR}" ) +message( STATUS "DEBUG: CMAKE_HOME_DIRECTORY=${CMAKE_HOME_DIRECTORY}" ) +message( STATUS "DEBUG: CMAKE_IMPORT_LIBRARY_PREFIX=${CMAKE_IMPORT_LIBRARY_PREFIX}" ) +message( STATUS "DEBUG: CMAKE_IMPORT_LIBRARY_SUFFIX=${CMAKE_IMPORT_LIBRARY_SUFFIX}" ) +message( STATUS "DEBUG: CMAKE_LINK_LIBRARY_SUFFIX=${CMAKE_LINK_LIBRARY_SUFFIX}" ) +message( STATUS "DEBUG: CMAKE_MAJOR_VERSION=${CMAKE_MAJOR_VERSION}" ) +message( STATUS "DEBUG: CMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}" ) +message( STATUS "DEBUG: CMAKE_MINOR_VERSION=${CMAKE_MINOR_VERSION}" ) +message( STATUS "DEBUG: CMAKE_PARENT_LIST_FILE=${CMAKE_PARENT_LIST_FILE}" ) +message( STATUS "DEBUG: CMAKE_PATCH_VERSION=${CMAKE_PATCH_VERSION}" ) +message( STATUS "DEBUG: CMAKE_PROJECT_NAME=${CMAKE_PROJECT_NAME}" ) +message( STATUS "DEBUG: CMAKE_RANLIB=${CMAKE_RANLIB}" ) +message( STATUS "DEBUG: CMAKE_ROOT=${CMAKE_ROOT}" ) +message( STATUS "DEBUG: CMAKE_SHARED_LIBRARY_PREFIX=${CMAKE_SHARED_LIBRARY_PREFIX}" ) +message( STATUS "DEBUG: CMAKE_SHARED_LIBRARY_SUFFIX=${CMAKE_SHARED_LIBRARY_SUFFIX}" ) +message( STATUS "DEBUG: CMAKE_SHARED_MODULE_PREFIX=${CMAKE_SHARED_MODULE_PREFIX}" ) +message( STATUS "DEBUG: CMAKE_SHARED_MODULE_SUFFIX=${CMAKE_SHARED_MODULE_SUFFIX}" ) +message( STATUS "DEBUG: CMAKE_SIZEOF_VOID_P=${CMAKE_SIZEOF_VOID_P}" ) +message( STATUS "DEBUG: CMAKE_SKIP_RPATH=${CMAKE_SKIP_RPATH}" ) +message( STATUS "DEBUG: CMAKE_SOURCE_DIR=${CMAKE_SOURCE_DIR}" ) +message( STATUS "DEBUG: CMAKE_STANDARD_LIBRARIES=${CMAKE_STANDARD_LIBRARIES}" ) +message( STATUS "DEBUG: CMAKE_STATIC_LIBRARY_PREFIX=${CMAKE_STATIC_LIBRARY_PREFIX}" ) +message( STATUS "DEBUG: CMAKE_STATIC_LIBRARY_SUFFIX=${CMAKE_STATIC_LIBRARY_SUFFIX}" ) +message( STATUS "DEBUG: CMAKE_TWEAK_VERSION=${CMAKE_TWEAK_VERSION}" ) +message( STATUS "DEBUG: CMAKE_USING_VC_FREE_TOOLS=${CMAKE_USING_VC_FREE_TOOLS}" ) +message( STATUS "DEBUG: CMAKE_VERBOSE_MAKEFILE=${CMAKE_VERBOSE_MAKEFILE}" ) +message( STATUS "DEBUG: CMAKE_VERSION=${CMAKE_VERSION}" ) +message( STATUS "DEBUG: PROJECT_BINARY_DIR=${PROJECT_BINARY_DIR}" ) +message( STATUS "DEBUG: PROJECT_NAME=${PROJECT_NAME}" ) +message( STATUS "DEBUG: PROJECT_SOURCE_DIR=${PROJECT_SOURCE_DIR}" ) +set( CMAKE_INSTALL_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/install CACHE PATH "test install to dir" FORCE ) +#set( CMAKE_INSTALL_PREFIX ${CMAKE_CURRENT_SOURCE_DIR} CACHE PATH "test install to source dir" FORCE ) +endif( NOT SKIP_DEBUG ) + + +# +# Global stuff +# +set( GLOBAL_LIBRARIES "" CACHE INTERNAL "" ) +set( GLOBAL_INCLUDE_DIRS "" CACHE INTERNAL "" ) +set( GLOBAL_DEFINITIONS "" CACHE INTERNAL "" ) +mark_as_advanced( GLOBAL_LIBRARIES GLOBAL_INCLUDE_DIRS GLOBAL_DEFINITIONS ) +if( WIN32 ) + list( APPEND GLOBAL_DEFINITIONS FD_SETSIZE=4096 ) +endif() +if( MSVC ) + list( APPEND GLOBAL_DEFINITIONS _CRT_SECURE_NO_DEPRECATE _CRT_NONSTDC_NO_DEPRECATE DB_MANUAL_CAST_TO_UNION ) +endif() + + +# +# packetver +# +set( PACKETVER "" + CACHE STRING "Sets the PACKETVER define of the servers. (see src/common/mmo.h)" ) + +# +# install stuff +# +option( INSTALL_RUN_DATA "install files needed to run the project" ON ) +option( INSTALL_BUILD_DATA "install files needed to build the project" OFF ) +set( SVN_FOLDER_PATTERN "[\\.]svn" + CACHE PATH "pattern of svn folder that we exclude from instalations" ) +mark_as_advanced( SVN_FOLDER_PATTERN ) +if( "${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${CMAKE_INSTALL_PREFIX}" ) + set( INSTALLING_TO_SOURCE ON + CACHE INTERNAL "we are installing to the source folder, skip uneeded stuff" ) +else() + unset( INSTALLING_TO_SOURCE CACHE ) +endif() +set( LOCAL_BUILD_FILES + "CMakeLists.txt" + "configure" + "configure.in" + "eAthena-6.dsw" + "eAthena-7.1.sln" + "eAthena-8.sln" + "eAthena-9.sln" + "eAthena-10.sln" + ) +set( LOCAL_BUILD_DIRECTORIES + "3rdparty" + "src" + "vcproj-6" + "vcproj-7.1" + "vcproj-8" + "vcproj-9" + "vcproj-10" + ) +set( LOCAL_RUN_FILES + "athena-start" + "Changelog-Trunk.txt" + "char-server.sh" + "charserv-sql.bat" + "charserv.bat" + "dbghelp.dll" + "LICENSE" + "login-server.sh" + "logserv-sql.bat" + "logserv.bat" + "map-server.sh" + "mapserv-sql.bat" + "mapserv.bat" + "notice.txt" + "readme.html" + "runserver-sql.bat" + "runserver.bat" + "serv.bat" + "start" + ) +set( LOCAL_RUN_DIRECTORIES + "conf" + "db" + "doc" + "log" + "npc" + "plugins" + "readme" + "sql-files" + "tools" + ) +if( USE_LOCAL_MYSQL ) + list( APPEND LOCAL_RUN_FILES "libmysql.dll" ) +endif() +if( USE_LOCAL_PCRE ) + list( APPEND LOCAL_RUN_FILES "pcre3.dll" ) +endif() +if( USE_LOCAL_ZLIB ) + list( APPEND LOCAL_RUN_FILES "zlib1.dll" ) +endif() +function( INSTALL_DIRECTORY DIR DEST EXCLUDE_PATTERN ) + # warning: that slash(/) is important here, otherwise the whole directory (not its content) will be copied! + install( DIRECTORY ${DIR}/ + DESTINATION ${DEST} + PATTERN ${SVN_FOLDER_PATTERN} EXCLUDE + PATTERN "${EXCLUDE_PATTERN}" EXCLUDE ) +endfunction() +function( INSTALL_DIRECTORIES DIRS EXCLUDE_PATTERN ) + foreach( DIR IN ITEMS ${DIRS} ) + INSTALL_DIRECTORY( ${DIR} ${DIR} "${EXCLUDE_PATTERN}" ) + endforeach() +endfunction() +if( NOT INSTALLING_TO_SOURCE ) + if( INSTALL_RUN_DATA ) + install( FILES ${LOCAL_RUN_FILES} DESTINATION ${CMAKE_INSTALL_PREFIX} ) + INSTALL_DIRECTORIES( "${LOCAL_RUN_DIRECTORIES}" "conf/import-tmpl" ) + endif() + if( INSTALL_BUILD_DATA ) + install( FILES ${LOCAL_BUILD_FILES} DESTINATION ${CMAKE_INSTALL_PREFIX} ) + INSTALL_DIRECTORIES( "${LOCAL_BUILD_DIRECTORIES}" "" ) + endif() +endif() +if( INSTALL_RUN_DATA ) + INSTALL_DIRECTORY( "save-tmpl" "save" "" ) + INSTALL_DIRECTORY( "conf/import-tmpl" "conf/import" "" ) +endif() + + +# +# subdirectories +# +add_subdirectory( 3rdparty ) +add_subdirectory( src ) -- cgit v1.2.3-60-g2f50