aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorclick <none@none>2010-08-11 20:55:14 +0200
committerclick <none@none>2010-08-11 20:55:14 +0200
commit780ed1b01c77ac142e1da5851ff7deb832413b11 (patch)
treefd455dc88cc1b61c01749100fc0d7a303cb6a703
parentf482bb1cd54cb562518a10dfd720c9e798b5b19f (diff)
Buildsystem: Clean up build-process on all platforms
- Windows: Use CMAKE_INSTALL_PREFIX as a 'final install' directory (thanks to paradox for the preload-handling) (New target INSTALL, -not- included as part of ALL_BUILD (must be specifically run for installation to start) - All: Build libmpq library (used for tools) - All: Build extractiontools with hardlinked mpq-library (no need to install it anymore) - All: Move jemalloc from being harddefined to using a CMake string (fixes issue 3378) (thanks to tru.bazoozoo for the idea, alternative added) --HG-- branch : trunk
-rw-r--r--CMakeLists.txt71
-rw-r--r--PreLoad.cmake6
-rw-r--r--externals/CMakeLists.txt6
-rw-r--r--externals/ace/CMakeLists.txt2
-rw-r--r--src/server/authserver/CMakeLists.txt3
-rw-r--r--src/server/worldserver/CMakeLists.txt7
-rw-r--r--src/tools/map_extractor/CMakeLists.txt11
-rw-r--r--src/tools/vmap3_assembler/CMakeLists.txt4
-rw-r--r--src/tools/vmap3_extractor/CMakeLists.txt12
9 files changed, 83 insertions, 39 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 86e51747b8e..5fa868e1792 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -101,9 +101,18 @@ endif()
#
if( PREFIX )
- set(CMAKE_INSTALL_PREFIX ${PREFIX})
+ set(CMAKE_INSTALL_PREFIX "${PREFIX}")
endif()
+IF(WIN32)
+ IF(NOT CYGWIN)
+ IF(NOT CMAKE_INSTALL_PREFIX)
+ SET(CMAKE_INSTALL_PREFIX
+ "${CMAKE_BINARY_DIR}/bin")
+ ENDIF(NOT CMAKE_INSTALL_PREFIX)
+ ENDIF(NOT CYGWIN)
+ENDIF(WIN32)
+
#
# Handle debugmode compiles (this will require further work for proper WIN32-setups)
#
@@ -117,24 +126,28 @@ endif()
#
if( MSVC )
- # Set up MSVC to dump binaries in the <builddir>/bin/<buildtype>/ folder
- set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
+ # Set up MSVC to dump files in the <builddir>/bin/<buildtype>/ folder for testing builds before install
+
+ # executable binaries (.exe-files)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
- set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
+
+ # dynamic linked libraries (.dll)
+ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
+
+ # statically linked libraries - commented out as it's not needed - shown here as an example only
+ #set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
endif()
#
# Set default configuration-directory (used on NIX-based platforms only)
#
-
if( NOT CONF_DIR )
set(CONF_DIR ${CMAKE_INSTALL_PREFIX}/etc)
endif()
set(LIBSDIR ${CMAKE_INSTALL_PREFIX}/lib)
-
#####
##### Build-preparation
#####
@@ -169,12 +182,12 @@ message("")
# Output information about installation-directories and locations
#
+message("* Install core to : ${CMAKE_INSTALL_PREFIX}")
if( UNIX )
- message("* Install core to : ${CMAKE_INSTALL_PREFIX}")
message("* Install libraries to : ${LIBSDIR}")
message("* Install configs to : ${CONF_DIR}")
- message("")
endif()
+message("")
#
# Show infomation about the options selected during configuration
@@ -186,11 +199,24 @@ else()
message("* Build servers : No")
endif()
+if( GAMEPCH )
+ message("* Build game w/PCH : Yes (default)")
+else()
+ message("* Build game w/PCH : No")
+endif()
+
if( SCRIPTS )
message("* Build with scripts : Yes (default)")
add_definitions(-DSCRIPTS)
else()
message("* Build with scripts : No")
+ set(SCRIPTPCH 0)
+endif()
+
+if( SCRIPTPCH )
+ message("* Build scripts w/PCH : Yes (default)")
+else()
+ message("* Build scripts w/PCH : No")
endif()
if( TOOLS )
@@ -209,18 +235,6 @@ else()
message("* Build in debug-mode : No (default)")
endif()
-if( GAMEPCH )
- message("* Build game w/PCH : Yes (default)")
-else()
- message("* Build game w/PCH : No")
-endif()
-
-if( SCRIPTPCH )
- message("* Build scripts w/PCH : Yes (default)")
-else()
- message("* Build scripts w/PCH : No")
-endif()
-
if( WARNINGS )
message("* Show all warnings : Yes")
if( UNIX )
@@ -294,15 +308,14 @@ set(CMAKE_INSTALL_RPATH_USE_LINK_PATH 1)
#
if( UNIX )
-configure_file(
- "${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in"
- "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
- IMMEDIATE @ONLY
-)
-
-add_custom_target(uninstall
- "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
-)
+ configure_file(
+ "${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
+ IMMEDIATE @ONLY
+ )
+ add_custom_target(uninstall
+ "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
+ )
endif()
#
diff --git a/PreLoad.cmake b/PreLoad.cmake
new file mode 100644
index 00000000000..bd6f0396584
--- /dev/null
+++ b/PreLoad.cmake
@@ -0,0 +1,6 @@
+IF(WIN32)
+ IF(NOT CYGWIN)
+ SET(CMAKE_INSTALL_PREFIX
+ "" CACHE PATH "Default install path")
+ ENDIF(NOT CYGWIN)
+ENDIF(WIN32)
diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt
index c0108e9c760..5d3a6684e03 100644
--- a/externals/CMakeLists.txt
+++ b/externals/CMakeLists.txt
@@ -10,6 +10,7 @@
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
add_subdirectory(jemalloc)
+ set(JEMALLOC_LIB "jemalloc")
endif()
if(CMAKE_SYSTEM_NAME MATCHES "Windows")
@@ -21,7 +22,4 @@ endif()
add_subdirectory(g3dlite)
add_subdirectory(sockets)
add_subdirectory(gsoap)
-
-# temporary disable libmpq building (through CMake at least) for now
-# - needs a proper CMakeLists.txt
-#add_subdirectory(libmpq)
+add_subdirectory(libmpq)
diff --git a/externals/ace/CMakeLists.txt b/externals/ace/CMakeLists.txt
index add6d387f53..ee77a6fe91c 100644
--- a/externals/ace/CMakeLists.txt
+++ b/externals/ace/CMakeLists.txt
@@ -335,3 +335,5 @@ add_library(ace SHARED ${ace_STAT_SRCS})
if(PCH)
add_native_precompiled_header(ace ${CMAKE_SOURCE_DIR}/externals/ace/PrecompiledHeaders/WinAcePCH)
endif()
+
+install(TARGETS ace DESTINATION "${CMAKE_INSTALL_PREFIX}")
diff --git a/src/server/authserver/CMakeLists.txt b/src/server/authserver/CMakeLists.txt
index 6dc0089dddc..f3bfcdb78a1 100644
--- a/src/server/authserver/CMakeLists.txt
+++ b/src/server/authserver/CMakeLists.txt
@@ -98,4 +98,7 @@ endif()
if( UNIX )
install(TARGETS authserver DESTINATION bin)
install(FILES authserver.conf.dist DESTINATION etc)
+elseif( WIN32 )
+ install(TARGETS authserver DESTINATION "${CMAKE_INSTALL_PREFIX}")
+ install(FILES authserver.conf.dist DESTINATION "${CMAKE_INSTALL_PREFIX}")
endif()
diff --git a/src/server/worldserver/CMakeLists.txt b/src/server/worldserver/CMakeLists.txt
index eed999ccba7..d30d28f5b6f 100644
--- a/src/server/worldserver/CMakeLists.txt
+++ b/src/server/worldserver/CMakeLists.txt
@@ -180,7 +180,7 @@ else()
collision
g3dlib
gsoap
- jemalloc
+ ${JEMALLOC_LIB}
${SCRIPT_LIB}
${READLINE_LIBRARY}
${TERMCAP_LIBRARY}
@@ -201,5 +201,8 @@ endif()
if( UNIX )
install(TARGETS worldserver DESTINATION bin)
- install(FILES worldserver.conf.dist DESTINATION etc)
+ install(FILES worldserver.conf.dist DESTINATION etc)
+elseif( WIN32 )
+ install(TARGETS worldserver DESTINATION "${CMAKE_INSTALL_PREFIX}")
+ install(FILES worldserver.conf.dist DESTINATION "${CMAKE_INSTALL_PREFIX}")
endif()
diff --git a/src/tools/map_extractor/CMakeLists.txt b/src/tools/map_extractor/CMakeLists.txt
index 0d35421b9ef..ef333e9b285 100644
--- a/src/tools/map_extractor/CMakeLists.txt
+++ b/src/tools/map_extractor/CMakeLists.txt
@@ -13,6 +13,7 @@ file(GLOB_RECURSE sources *.cpp *.h)
include_directories (
${CMAKE_SOURCE_DIR}/src/server/shared
+ ${CMAKE_SOURCE_DIR}/externals/libmpq
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/loadlib
)
@@ -23,16 +24,22 @@ add_executable(mapextractor
if(WIN32)
target_link_libraries(mapextractor
- mpq
bzip2
+ zlib
+ mpq
)
else()
target_link_libraries(mapextractor
- mpq
${BZIP2_LIBRARIES}
+ ${ZLIB_LIBRARIES}
+ mpq
)
endif()
+add_dependencies(mapextractor mpq)
+
if( UNIX )
install(TARGETS mapextractor DESTINATION bin)
+elseif( WIN32 )
+ install(TARGETS mapextractor DESTINATION "${CMAKE_INSTALL_PREFIX}")
endif()
diff --git a/src/tools/vmap3_assembler/CMakeLists.txt b/src/tools/vmap3_assembler/CMakeLists.txt
index c920571c439..6d0a0d985ff 100644
--- a/src/tools/vmap3_assembler/CMakeLists.txt
+++ b/src/tools/vmap3_assembler/CMakeLists.txt
@@ -23,6 +23,8 @@ add_definitions(-DNO_CORE_FUNCS)
add_executable(vmap3assembler VMapAssembler.cpp)
+add_dependencies(vmap3assembler mpq)
+
if(WIN32)
target_link_libraries(vmap3assembler
collision
@@ -39,4 +41,6 @@ endif()
if( UNIX )
install(TARGETS vmap3assembler DESTINATION bin)
+elseif( WIN32 )
+ install(TARGETS vmap3assembler DESTINATION "${CMAKE_INSTALL_PREFIX}")
endif()
diff --git a/src/tools/vmap3_extractor/CMakeLists.txt b/src/tools/vmap3_extractor/CMakeLists.txt
index b9604f4e165..1b58d46b988 100644
--- a/src/tools/vmap3_extractor/CMakeLists.txt
+++ b/src/tools/vmap3_extractor/CMakeLists.txt
@@ -20,22 +20,30 @@ add_definitions("-Wall")
add_definitions("-ggdb")
add_definitions("-O3")
+include_directories(
+ ${CMAKE_SOURCE_DIR}/externals/libmpq
+)
+
add_executable(vmap3extractor ${sources})
if(WIN32)
target_link_libraries(vmap3extractor
- mpq
bzip2
zlib
+ mpq
)
else()
target_link_libraries(vmap3extractor
- mpq
${BZIP2_LIBRARIES}
${ZLIB_LIBRARIES}
+ mpq
)
endif()
+add_dependencies(vmap3extractor mpq)
+
if( UNIX )
install(TARGETS vmap3extractor DESTINATION bin)
+elseif( WIN32 )
+ install(TARGETS vmap3extractor DESTINATION "${CMAKE_INSTALL_PREFIX}")
endif()