diff options
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 594 |
1 files changed, 0 insertions, 594 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt deleted file mode 100644 index 883920817..000000000 --- a/CMakeLists.txt +++ /dev/null @@ -1,594 +0,0 @@ -##################################################################### -# -# "Getting Started with CMake", a tutorial video by Eric Wing. -# Part 1 of 6: http://www.youtube.com/watch?v=CLvZTyji_Uw -# Part 2 of 6: http://www.youtube.com/watch?v=gUW-RrRQjEg -# Part 3 of 6: http://www.youtube.com/watch?v=sz6cPhbuTk4 -# Part 4 of 6: http://www.youtube.com/watch?v=JICZOkyNXbg -# Part 5 of 6: http://www.youtube.com/watch?v=lAiuLHy4dCk -# Part 6 of 6: http://www.youtube.com/watch?v=fAtJNzDZdH8 -# -# You can use notepad++ for syntax highlighting. -# Naming conventions: -# WITH_* : option to use an external package or not -# ENABLE_* : option to use an internal feature/code or not -# HAVE_* : internal variable indicating if we have and are using something -# -# Maintainer: Fl�vio J. Saraiva (feel free to send complaints or suggestions) -# flaviojs @ rAthena forum/irc -# flaviojs2005 \A-T/ gmail <D.o,T> com -# -##################################################################### - - -#cmake_minimum_required( VERSION 2.8.4 ) -# Functional changes from 2.8.3 to 2.8.4: -# string(SUBSTRING) works with length -1 as "rest of string" -# changes to some CPack generators -# CYGWIN no longer defines WIN32 -# CMP0017: Prefer files from the CMake module directory when including from there. -set( CMAKE_LEGACY_CYGWIN_WIN32 0 ) -cmake_minimum_required( VERSION 2.8.3 ) -project( rAthena C ) -if( CYGWIN ) - unset( WIN32 ) -endif() - - -# -# 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 delete CMakeCache.txt, create a separate folder and build there.\n" - "Example: (build in subdir 'build' and install to source dir)\n" - " rm -f CMakeCache.txt\n" - " mkdir build\n" - " cd build\n" - " cmake -G\"Unix Makefiles\" -DINSTALL_TO_SOURCE=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo ..\n" - " make install\n" - " cd ..\n" - " rm -rf build\n" - "To skip this check, set ALLOW_SAME_DIRECTORY to ON (-DALLOW_SAME_DIRECTORY=ON)" ) -endif() - - -# -# Global stuff -# -set( GLOBAL_LIBRARIES ${LINK_LIBRARIES} CACHE INTERNAL "" )# list (comma separated values) -set( GLOBAL_INCLUDE_DIRS ${INCLUDE_DIRECTORIES} CACHE INTERNAL "" )# list (comma separated values) -set( GLOBAL_DEFINITIONS ${COMPILE_DEFINITIONS} CACHE INTERNAL "" )# string (space separated values -DFOO=bar) -mark_as_advanced( GLOBAL_LIBRARIES GLOBAL_INCLUDE_DIRS GLOBAL_DEFINITIONS ) -if( WIN32 ) - set_property( CACHE GLOBAL_DEFINITIONS PROPERTY VALUE "${GLOBAL_DEFINITIONS} -DFD_SETSIZE=4096" ) -endif() -if( MSVC ) - set_property( CACHE GLOBAL_LIBRARIES PROPERTY VALUE ${GLOBAL_LIBRARIES} "oldnames.lib" "ws2_32.lib" ) - set_property( CACHE GLOBAL_DEFINITIONS PROPERTY VALUE "${GLOBAL_DEFINITIONS} -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE" ) -endif() - - -# -# 3rd party -# -set( CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/cmake CACHE INTERNAL "" ) -include( CheckCSourceCompiles ) -include( CheckCSourceRuns ) -include( CheckIncludeFile ) -include( CheckFunctionExists ) -include( FindFunctionLibrary ) -include( TestBigEndian ) - - -# -# Find svnversion -# -message( STATUS "Detecting svnversion" ) -find_program( SVNVERSION_EXECUTABLE svnversion ) -mark_as_advanced( SVNVERSION_EXECUTABLE ) -if( SVNVERSION_EXECUTABLE ) - message( STATUS "Found svnversion: ${SVNVERSION_EXECUTABLE}" ) -endif() -message( STATUS "Detecting svnversion - done" ) - - -# -# Find Subversion -# -message( STATUS "Detecting Subversion" ) -find_package( Subversion ) -message( STATUS "Detecting Subversion - done" ) - -# -# PACKETVER -# -set( PACKETVER CACHE STRING "Sets the PACKETVER define of the servers. (see src/common/mmo.h)" ) -if( PACKETVER ) - list( APPEND GLOBAL_DEFINITIONS PACKETVER=${PACKETVER} ) -endif() - - -# -# SVNVERSION -# -if( SVNVERSION_EXECUTABLE ) - message( STATUS "Getting svn version" ) - execute_process( COMMAND ${SVNVERSION_EXECUTABLE} ${PROJECT_SOURCE_DIR} - OUTPUT_VARIABLE SVNVERSION - OUTPUT_STRIP_TRAILING_WHITESPACE ) - if( SVNVERSION MATCHES "^Unversioned" ) - set( SVNVERSION ) - endif() - string( REGEX REPLACE "[^1234567890MSexported]" "_" SVNVERSION "${SVNVERSION}" ) - message( STATUS "Found version: ${SVNVERSION}" ) - message( STATUS "Getting svn version - done" ) -endif() -if( Subversion_FOUND AND SVNVERSION ) - message( STATUS "Getting svn branch" ) - Subversion_WC_INFO( ${PROJECT_SOURCE_DIR} rAthena ) - if( rAthena_WC_URL ) - string( REGEX MATCH "[^/]+$" BRANCH ${rAthena_WC_URL} ) - set( SVNVERSION "${BRANCH}-${SVNVERSION}" ) - message( STATUS "Found branch: ${BRANCH}" ) - endif() - message( STATUS "Getting svn branch - done" ) -endif() - - -# -# threads -# -message( STATUS "Detecting threads library" ) -set( CMAKE_THREAD_PREFER_PTHREAD 1 ) -find_package(Threads REQUIRED) -if( CMAKE_THREAD_LIBS_INIT ) - message( STATUS "Adding global library: ${FUNCTION_FLOOR_LIBRARIES}" ) - set_property( CACHE GLOBAL_LIBRARIES PROPERTY VALUE ${GLOBAL_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ) -endif() -message( STATUS "Detecting threads library - done" ) - - -# -# math library (FreeBSD/Linux/Solaris) -# -message( STATUS "Detecting math library (m)" ) -CHECK_INCLUDE_FILE( math.h HAVE_MATH_H ) -if( NOT HAVE_MATH_H ) - message( FATAL_ERROR "math.h not found" ) -endif() -set( CMAKE_REQUIRED_LIBRARIES ${GLOBAL_LIBRARIES} ) -find_function_library( floor FUNCTION_FLOOR_LIBRARIES m ) -if( FUNCTION_FLOOR_LIBRARIES ) - message( STATUS "Adding global library: ${FUNCTION_FLOOR_LIBRARIES}" ) - set_property( CACHE GLOBAL_LIBRARIES PROPERTY VALUE ${GLOBAL_LIBRARIES} ${FUNCTION_FLOOR_LIBRARIES} ) -endif() -message( STATUS "Detecting math library (m) - done" ) - - -# -# dynamic loading library (Linux) -# -if( NOT WIN32 ) -message( STATUS "Detecting dynamic loading library (dl)" ) -set( CMAKE_REQUIRED_LIBRARIES ${GLOBAL_LIBRARIES} ) -find_function_library( dlopen FUNCTION_DLOPEN_LIBRARIES dl ) -if( FUNCTION_DLOPEN_LIBRARIES ) - message( STATUS "Adding global library: ${FUNCTION_DLOPEN_LIBRARIES}" ) - set_property( CACHE GLOBAL_LIBRARIES PROPERTY VALUE ${GLOBAL_LIBRARIES} ${FUNCTION_DLOPEN_LIBRARIES} ) -endif() -message( STATUS "Detecting dynamic loading library (dl) - done" ) -endif() - - -# -# networking library (Solaris/MinGW) -# -if( NOT MSVC ) -message( STATUS "Detecting networking library (socket/nsl/ws2_32)" ) -set( CMAKE_REQUIRED_LIBRARIES ${GLOBAL_LIBRARIES} ) -find_function_library( bind FUNCTION_BIND_LIBRARIES socket ws2_32 ) -if( FUNCTION_BIND_LIBRARIES ) - message( STATUS "Adding global library: ${FUNCTION_BIND_LIBRARIES}" ) - set_property( CACHE GLOBAL_LIBRARIES PROPERTY VALUE ${GLOBAL_LIBRARIES} ${FUNCTION_BIND_LIBRARIES} ) -endif() -set( CMAKE_REQUIRED_LIBRARIES ${GLOBAL_LIBRARIES} ) -find_function_library( gethostbyname FUNCTION_GETHOSTBYNAME_LIBRARIES nsl ) -if( FUNCTION_GETHOSTBYNAME_LIBRARIES ) - message( STATUS "Adding global library: ${FUNCTION_GETHOSTBYNAME_LIBRARIES}" ) - set_property( CACHE GLOBAL_LIBRARIES PROPERTY VALUE ${GLOBAL_LIBRARIES} ${FUNCTION_GETHOSTBYNAME_LIBRARIES} ) -endif() -message( STATUS "Detecting networking library (socket/nsl/ws2_32) - done" ) -endif() - - -# -# Test for big endian -# -TEST_BIG_ENDIAN( BIG_ENDIAN ) -if( NOT DEFINED BIG_ENDIAN ) - message( WARNING "unable to determine endianess, only LITTLE ENDIAN is supported" ) -elseif( BIG_ENDIAN ) - message( FATAL_ERROR "bigendian is not supported" ) -endif() - - -# -# Test monotonic clock -# -# CLOCK_MONOTONIC clock for clock_gettime -# Normally defines _POSIX_TIMERS > 0 and _POSIX_MONOTONIC_CLOCK (for posix -# compliant systems) and __FreeBSD_cc_version >= 500005 (for FreeBSD -# >= 5.1.0, which does not have the posix defines (ref. r11983)) would be -# checked but some systems define them even when they do not support it -# (ref. bugreport:1003). -# -message( STATUS "Check for monotonic clock" ) -find_library( RT_LIBRARY rt )# (optional, rt on Debian) -mark_as_advanced( RT_LIBRARY ) -set( CMAKE_REQUIRED_LIBRARIES ${GLOBAL_LIBRARIES} ${RT_LIBRARY} ) -file( READ "${CMAKE_SOURCE_DIR}/3rdparty/cmake/tests/HAVE_MONOTONIC_CLOCK.c" _SOURCE ) -CHECK_C_SOURCE_RUNS( "${_SOURCE}" HAVE_MONOTONIC_CLOCK ) -if( HAVE_MONOTONIC_CLOCK ) - message( STATUS "Check for monotonic clock - yes" ) - set_property( CACHE GLOBAL_LIBRARIES PROPERTY VALUE ${GLOBAL_LIBRARIES} ${RT_LIBRARY} ) - set_property( CACHE GLOBAL_DEFINITIONS PROPERTY VALUE "${GLOBAL_DEFINITIONS} -DHAVE_MONOTONIC_CLOCK" ) -else() - message( STATUS "Check for monotonic clock - no" ) -endif() - - -# -# Test if function exists: -# setrlimit - used to set the socket limit -# strnlen - string length with upper scan bound -# getpid - process id -# gettid - thread id -# -CHECK_FUNCTION_EXISTS( setrlimit HAVE_SETRLIMIT ) -CHECK_FUNCTION_EXISTS( strnlen HAVE_STRNLEN ) -CHECK_FUNCTION_EXISTS( getpid HAVE_GETPID ) -CHECK_FUNCTION_EXISTS( gettid HAVE_GETTID ) -foreach( define HAVE_SETRLIMIT HAVE_STRNLEN HAVE_GETPID HAVE_GETTID ) - if( ${define} ) - set_property( CACHE GLOBAL_DEFINITIONS PROPERTY VALUE "${GLOBAL_DEFINITIONS} -D${define}" ) - endif() -endforeach() - - -# -# Use RDTSC instruction as a timing source (time stamp counter on x86 since Pentium) (default=OFF) -# -# Enable it when you've timing issues. (ex: in conjunction with XEN or Other Virtualization mechanisms) -# Please ensure that you've disabled dynamic CPU-Frequencys, such as power saving options. -# (On the most modern Dedicated Servers cpufreq is preconfigured, see your distribution's manual how to disable it) -# -option( ENABLE_RDTSC "use RDTSC instruction as a timing source (default=OFF)" OFF ) -if( ENABLE_RDTSC ) - set_property( CACHE GLOBAL_DEFINITIONS PROPERTY VALUE "${GLOBAL_DEFINITIONS} -DENABLE_RDTSC" ) - message( STATUS "Enabled RDTSC as a timing source" ) -endif() - - -# -# Enable extra debug code (default=OFF) -# -option( ENABLE_EXTRA_DEBUG_CODE "enable extra debug code (default=OFF)" OFF ) -if( ENABLE_EXTRA_DEBUG_CODE ) - set_property( CACHE GLOBAL_DEFINITIONS PROPERTY VALUE "${GLOBAL_DEFINITIONS} -DDEBUG" ) - message( STATUS "Enabled extra DEBUG code" ) -endif() - - -# -# Enable builtin memory manager (default=default) -# -set( MEMMGR_OPTIONS "default;yes;no" ) -set( ENABLE_MEMMGR "default" CACHE STRING "enable builtin memory manager: ${MEMMGR_OPTIONS} (default=default)" ) -set_property( CACHE ENABLE_MEMMGR PROPERTY STRINGS ${MEMMGR_OPTIONS} ) -if( ENABLE_MEMMGR STREQUAL "default" ) - # use source code default -elseif( ENABLE_MEMMGR STREQUAL "yes" ) - set_property( CACHE GLOBAL_DEFINITIONS PROPERTY VALUE "${GLOBAL_DEFINITIONS} -DUSE_MEMMGR" ) - message( STATUS "Enabled the builtin memory manager" ) -elseif( ENABLE_MEMMGR STREQUAL "no" ) - set_property( CACHE GLOBAL_DEFINITIONS PROPERTY VALUE "${GLOBAL_DEFINITIONS} -DNO_MEMMGR" ) - message( STATUS "Disabled the builtin memory manager" ) -else() - message( FATAL_ERROR "invalid option ENABLE_MEMMGR=${ENABLE_MEMMGR} (valid options: ${MEMMGR_OPTIONS})" ) -endif() - - -# -# Enable memory library (default=system) -# -set( MEMORY_OPTIONS "system;memwatch;dmalloc;gcollect" ) -set( ENABLE_MEMORY "system" CACHE STRING "enable memory library: ${MEMORY_OPTIONS} (default=system)" ) -set_property( CACHE ENABLE_MEMORY PROPERTY STRINGS ${MEMORY_OPTIONS} ) -if( ENABLE_MEMORY STREQUAL "system" ) - # use system functions - -elseif( ENABLE_MEMORY STREQUAL "memwatch" ) - CHECK_INCLUDE_FILE( memwatch.h HAVE_MEMWATCH_H ) - find_library( MEMWATCH_LIBRARY memwatch ) - mark_as_advanced( MEMWATCH_LIBRARY ) - if( HAVE_MEMWATCH_H AND MEMWATCH_LIBRARY ) - message( STATUS "Adding global library: ${MEMWATCH_LIBRARY}" ) - set_property( CACHE GLOBAL_LIBRARIES PROPERTY VALUE ${GLOBAL_LIBRARIES} ${MEMWATCH_LIBRARY} ) - set_property( CACHE GLOBAL_DEFINITIONS PROPERTY VALUE "${GLOBAL_DEFINITIONS} -DMEMWATCH" ) - message( STATUS "Enabled the memory library memwatch" ) - else() - message( FATAL_ERROR "Failed to enable the memory library memwatch" ) - endif() - -elseif( ENABLE_MEMORY STREQUAL "dmalloc" ) - CHECK_INCLUDE_FILE( dmalloc.h HAVE_DMALLOC_H ) - find_library( DMALLOC_LIBRARY dmalloc ) - mark_as_advanced( DMALLOC_LIBRARY ) - if( HAVE_DMALLOC_H AND DMALLOC_LIBRARY ) - message( STATUS "Adding global library: ${DMALLOC_LIBRARY}" ) - set_property( CACHE GLOBAL_LIBRARIES PROPERTY VALUE ${GLOBAL_LIBRARIES} ${DMALLOC_LIBRARY} ) - set_property( CACHE GLOBAL_DEFINITIONS PROPERTY VALUE "${GLOBAL_DEFINITIONS} -DDMALLOC -DDMALLOC_FUNC_CHECK" ) - message( STATUS "Enabled the memory library dmalloc" ) - else() - message( FATAL_ERROR "Failed to enable the memory library dmalloc" ) - endif() - -elseif( ENABLE_MEMORY STREQUAL "gcollect" ) - CHECK_INCLUDE_FILE( gc.h HAVE_GC_H ) - find_library( GC_LIBRARY gc ) - mark_as_advanced( GC_LIBRARY ) - if( HAVE_GC_H AND GC_LIBRARY ) - message( STATUS "Adding global library: ${GC_LIBRARY}" ) - set_property( CACHE GLOBAL_LIBRARIES PROPERTY VALUE ${GLOBAL_LIBRARIES} ${GC_LIBRARY} ) - set_property( CACHE GLOBAL_DEFINITIONS PROPERTY VALUE "${GLOBAL_DEFINITIONS} -DGCOLLECT" ) - message( STATUS "Enabled the memory library gcollect" ) - else() - message( FATAL_ERROR "Failed to enable the memory library gcollect" ) - endif() - -else() - message( FATAL_ERROR "invalid option ENABLE_MEMORY=${ENABLE_MEMORY} (valid options: ${MEMORY_OPTIONS})" ) -endif() - - -# -# Enable profiler (default=none) -# -set( PROFILER_OPTIONS "none;gprof" ) -set( ENABLE_PROFILER "none" CACHE STRING "enable profiler: ${PROFILER_OPTIONS} (default=none)" ) -set_property( CACHE ENABLE_PROFILER PROPERTY STRINGS ${PROFILER_OPTIONS} ) -if( ENABLE_PROFILER STREQUAL "none" ) - # no profiler - -elseif( ENABLE_PROFILER STREQUAL "gprof" ) - if( CMAKE_C_COMPILER_ID STREQUAL "GNU" ) - if( NOT HAVE_GPROF_FLAGS ) - set_property( CACHE CMAKE_C_FLAGS PROPERTY VALUE "${CMAKE_C_FLAGS} -pg" ) - set_property( CACHE CMAKE_EXE_LINKER_FLAGS PROPERTY VALUE "${CMAKE_EXE_LINKER_FLAGS} -pg" ) - set( HAVE_GPROF_FLAGS ON CACHE INTERNAL "" ) - endif() - message( STATUS "Enabled the profiler gprof" ) - else() - message( FATAL_ERROR "Failed to enable the profiler gprof - not GNU" ) - endif() - -else() - message( FATAL_ERROR "invalid option ENABLE_PROFILER=${ENABLE_PROFILER} (valid options: ${PROFILER_OPTIONS})" ) -endif() - - -# -# Enable extra buildbot code (default=OFF) -# -option( ENABLE_EXTRA_BUILDBOT_CODE "enable extra buildbot code (default=OFF)" OFF ) -if( ENABLE_EXTRA_BUILDBOT_CODE ) - set_property( CACHE GLOBAL_DEFINITIONS PROPERTY VALUE "${GLOBAL_DEFINITIONS} -DBUILDBOT" ) - message( STATUS "Enabled extra BUILDBOT code" ) -endif() - - -##################################################################### -# package stuff -# -set( CPACK_PACKAGE_NAME "Hercules" ) -set( CPACK_PACKAGE_DESCRIPTION_SUMMARY "MMORPG server package" ) -set( CPACK_PACKAGE_VERSION ${SVNVERSION} ) -set( CPACK_RESOURCE_FILE_LICENSE ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE ) -#set( CPACK_MONOLITHIC_INSTALL ON ) -include( CPACK OPTIONAL RESULT_VARIABLE HAVE_CPACK ) -if( HAVE_CPACK ) - option( WITH_CPACK "enable building packages with CPack ('package' target)" ON ) -endif() -if( NOT WITH_CPACK ) - # empty replacements - macro( cpack_add_component_group ) - endmacro() - macro( cpack_add_component ) - endmacro() - message( STATUS "Disabled package creation" ) -endif() - -set( Runtime "Runtime files" CACHE INTERNAL "" ) -set( Runtime_base "configurations, dbs, npcs, docs, ..." CACHE INTERNAL "" ) -set( Runtime_templates "conf/import and save (generated from conf/import-tmpl and save-tmpl)" CACHE INTERNAL "" ) -cpack_add_component_group( Runtime DESCRIPTION ${Runtime} DISPLAY_NAME "Runtime" ) -cpack_add_component( Runtime_base DESCRIPTION ${Runtime_base} DISPLAY_NAME "Base files" GROUP Runtime ) -cpack_add_component( Runtime_templates DESCRIPTION ${Runtime_templates} DISPLAY_NAME "Base templates" GROUP Runtime ) - -set( Development "Development files" CACHE INTERNAL "" ) -set( Development_base "projects, 3rdparty, sources, templates" CACHE INTERNAL "" ) -cpack_add_component_group( Development DESCRIPTION ${Development} DISPLAY_NAME "Development" ) -cpack_add_component( Development_base DESCRIPTION ${Development_base} DISPLAY_NAME "Base files" GROUP Development ) - - -# -# install stuff -# -option( INSTALL_COMPONENT_RUNTIME "install/package files needed to run the project" ON ) -option( INSTALL_COMPONENT_DEVELOPMENT "install/package files needed to build the project" OFF ) -option( INSTALL_TO_PATH "copy files to INSTALL_PATH" OFF ) -option( INSTALL_TO_SOURCE "copy files to source directory, skips what is already there (${CMAKE_CURRENT_SOURCE_DIR})" OFF ) -option( INSTALL_TO_SUBDIR "copy files to subdirectory (${CMAKE_CURRENT_BINARY_DIR}/install)" OFF ) -set( INSTALL_PATH "${CMAKE_INSTALL_PREFIX}" CACHE STRING "install path (only used when INSTALL_TO_PATH is set)" ) -mark_as_advanced( CMAKE_INSTALL_PREFIX ) -if( INSTALL_TO_PATH AND NOT ("${INSTALL_TO}" STREQUAL "path") )# changed to path - set_property( CACHE INSTALL_TO_SOURCE INSTALL_TO_SUBDIR PROPERTY VALUE OFF ) -elseif( INSTALL_TO_SOURCE AND NOT ("${INSTALL_TO}" STREQUAL "source") )# changed to source - set_property( CACHE INSTALL_TO_PATH INSTALL_TO_SUBDIR PROPERTY VALUE OFF ) -elseif( INSTALL_TO_SUBDIR AND NOT ("${INSTALL_TO}" STREQUAL "subdir") )# changed to subdir - set_property( CACHE INSTALL_TO_PATH INSTALL_TO_SOURCE PROPERTY VALUE OFF ) -elseif( NOT INSTALL_TO_PATH AND NOT INSTALL_TO_SOURCE AND NOT INSTALL_TO_SUBDIR )# default - set_property( CACHE INSTALL_TO_SUBDIR PROPERTY VALUE ON ) -endif() -if( INSTALL_TO_PATH ) - set( INSTALL_TO "path" CACHE INTERNAL "" ) - set_property( CACHE CMAKE_INSTALL_PREFIX PROPERTY VALUE "${INSTALL_PATH}" ) -elseif( INSTALL_TO_SOURCE ) - set( INSTALL_TO "source" CACHE INTERNAL "" ) - set_property( CACHE CMAKE_INSTALL_PREFIX PROPERTY VALUE "${CMAKE_CURRENT_SOURCE_DIR}" ) -elseif( INSTALL_TO_SUBDIR ) - set( INSTALL_TO "subdir" CACHE INTERNAL "" ) - set_property( CACHE CMAKE_INSTALL_PREFIX PROPERTY VALUE "${CMAKE_CURRENT_BINARY_DIR}/install" ) -endif() -set( SVN_FOLDER_PATTERN "[\\.]svn" CACHE STRING "pattern of svn folder that we exclude from instalations" ) -mark_as_advanced( SVN_FOLDER_PATTERN ) -set( DEVELOPMENT_FILES - "${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt" - "${CMAKE_CURRENT_SOURCE_DIR}/configure" - "${CMAKE_CURRENT_SOURCE_DIR}/configure.in" - "${CMAKE_CURRENT_SOURCE_DIR}/Hercules-9.sln" - "${CMAKE_CURRENT_SOURCE_DIR}/Hercules-10.sln" - ) -set( DEVELOPMENT_DIRECTORIES - "3rdparty" - "conf/import-tmpl" - "src" - "vcproj-9" - "vcproj-10" - ) -set( RUNTIME_FILES - "${CMAKE_CURRENT_SOURCE_DIR}/athena-start" - "${CMAKE_CURRENT_SOURCE_DIR}/char-server.sh" - "${CMAKE_CURRENT_SOURCE_DIR}/charserv-sql.bat" - "${CMAKE_CURRENT_SOURCE_DIR}/dbghelp.dll" - "${CMAKE_CURRENT_SOURCE_DIR}/libmysql.dll" - "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE" - "${CMAKE_CURRENT_SOURCE_DIR}/login-server.sh" - "${CMAKE_CURRENT_SOURCE_DIR}/logserv-sql.bat" - "${CMAKE_CURRENT_SOURCE_DIR}/map-server.sh" - "${CMAKE_CURRENT_SOURCE_DIR}/mapserv-sql.bat" - "${CMAKE_CURRENT_SOURCE_DIR}/pcre3.dll" - "${CMAKE_CURRENT_SOURCE_DIR}/README.txt" - "${CMAKE_CURRENT_SOURCE_DIR}/runserver-sql.bat" - "${CMAKE_CURRENT_SOURCE_DIR}/serv.bat" - "${CMAKE_CURRENT_SOURCE_DIR}/start" - "${CMAKE_CURRENT_SOURCE_DIR}/zlib1.dll" - ) -set( RUNTIME_DIRECTORIES - "conf" - "db" - "doc" - "log" - "npc" - "plugins" - "sql-files" - "tools" - ) -if( INSTALL_TO_SOURCE )# skip, already in the source dir -else() - if( INSTALL_COMPONENT_RUNTIME ) - install( FILES ${RUNTIME_FILES} - DESTINATION "." - COMPONENT Runtime_base ) - foreach( DIR IN ITEMS ${RUNTIME_DIRECTORIES} ) - if( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${DIR}/" ) - install( DIRECTORY "${DIR}/" - DESTINATION "${DIR}" - COMPONENT Runtime_base - PATTERN ${SVN_FOLDER_PATTERN} EXCLUDE - PATTERN "conf/import-tmpl" EXCLUDE ) - else() - # create empty directory - install( CODE "file(MAKE_DIRECTORY \"\${ENV}\${CMAKE_INSTALL_PREFIX}/${DIR}\")" - COMPONENT Runtime_base ) - endif() - endforeach() - endif( INSTALL_COMPONENT_RUNTIME ) - if( INSTALL_COMPONENT_DEVELOPMENT ) - install( FILES ${DEVELOPMENT_FILES} - DESTINATION "." - COMPONENT Development_base ) - foreach( DIR IN ITEMS ${DEVELOPMENT_DIRECTORIES} ) - install( DIRECTORY "${DIR}/" - DESTINATION "${DIR}" - COMPONENT Development_base - PATTERN ${SVN_FOLDER_PATTERN} EXCLUDE ) - endforeach() - endif( INSTALL_COMPONENT_DEVELOPMENT ) -endif() -if( INSTALL_COMPONENT_RUNTIME ) - # templates - set( _TEMPLATES - "conf/import-tmpl" "conf/import" - ) - set( INSTALL_TEMPLATES_FILE "${CMAKE_CURRENT_BINARY_DIR}/InstallTemplates.cmake" ) - file( WRITE "${INSTALL_TEMPLATES_FILE}" - "macro( INSTALL_TEMPLATE _SRC _DST )\n" - " set( SRC \"${CMAKE_CURRENT_SOURCE_DIR}/\${_SRC}\" )\n" - " set( DST \"\${CMAKE_INSTALL_PREFIX}/\${_DST}\" )\n" - " if( EXISTS \"\${DST}\" )\n" - " message( \"-- Already exists: \${DST}\" )\n" - " else()\n" - " message( \"-- Installing template: \${DST}\" )\n" - " execute_process( COMMAND \"${CMAKE_COMMAND}\" -E copy \"\${SRC}\" \"\${DST}\" )\n" - " endif()\n" - "endmacro()\n" - ) - while( _TEMPLATES ) - list( GET _TEMPLATES 0 _SRC ) - list( GET _TEMPLATES 1 _DST ) - list( REMOVE_AT _TEMPLATES 0 1 ) - if( IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${_SRC}" ) - file( GLOB _PATHS "${CMAKE_CURRENT_SOURCE_DIR}/${_SRC}/*" ) - foreach( _PATH IN ITEMS ${_PATHS} ) - string( REPLACE "${CMAKE_CURRENT_SOURCE_DIR}/${_SRC}/" "" _PATH "${_PATH}" ) - if( NOT "${_PATH}" MATCHES "${SVN_FOLDER_PATTERN}" ) - list( APPEND _TEMPLATES "${_SRC}/${_PATH}" "${_DST}/${_PATH}" ) - endif() - endforeach() - else() - file( APPEND "${INSTALL_TEMPLATES_FILE}" "INSTALL_TEMPLATE( \"${_SRC}\" \"${_DST}\" )\n" ) - endif() - endwhile() - install( SCRIPT "${INSTALL_TEMPLATES_FILE}" - COMPONENT Runtime_templates ) -endif( INSTALL_COMPONENT_RUNTIME ) - - -# -# sources -# -set( TARGET_LIST CACHE INTERNAL "" ) -add_subdirectory( 3rdparty ) -add_subdirectory( src ) - - -##################################################################### -# final checks and warnings -# -if( CMAKE_SIZEOF_VOID_P EQUAL 8 ) - message( WARNING "64bit should work, but is not recommended." ) -elseif( NOT CMAKE_SIZEOF_VOID_P EQUAL 4 ) - message( FATAL_ERROR "unexpected architecture (CMAKE_SIZEOF_VOID_P is ${CMAKE_SIZEOF_VOID_P})" ) -endif() -list( LENGTH TARGET_LIST _LEN ) -if( _LEN EQUAL 0 ) - message( FATAL_ERROR "no targets available" ) -endif() -message( STATUS "Available targets:" ) -foreach( _TARGET IN ITEMS ${TARGET_LIST} ) - message( STATUS "\t${_TARGET}" ) -endforeach() |