From: Julian Ospald Date: Sun Jul 15 10:08:51 UTC 2012 Subject: build system a. add install rules and make paths modifiable b. add odamex.wad install destination to wad search path c. add various cmake options d. use CMAKE_BINDIR as default bin patch in odalauncher --- odamex-src-0.6.3/CMakeLists.txt +++ odamex-src-0.6.3/CMakeLists.txt @@ -2,6 +2,26 @@ project(Odamex) cmake_minimum_required(VERSION 2.8) +# cmake modules +include( CMakeDependentOption ) +include( GNUInstallDirs ) + +# options +option(BUILD_CLIENT "Build client target" 1) +option(BUILD_SERVER "Build server target" 1) +option(BUILD_MASTER "Build master server target" 1) +cmake_dependent_option( BUILD_ODALAUNCH "Build odalaunch target" 1 BUILD_CLIENT 0 ) +cmake_dependent_option( ENABLE_PORTMIDI "Enable portmidi support" 1 BUILD_CLIENT 0 ) + +configure_file ( + "${PROJECT_SOURCE_DIR}/config.h.in" + "${PROJECT_BINARY_DIR}/config.h" + ) + +include_directories( + ${PROJECT_BINARY_DIR} +) + set(PROJECT_VERSION 0.6.3) set(PROJECT_COPYRIGHT "2006-2013") @@ -54,13 +74,30 @@ set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules) # Subdirectories for individual projects -add_subdirectory(client) -add_subdirectory(server) -add_subdirectory(master) -add_subdirectory(odalaunch) +if(BUILD_CLIENT) + add_subdirectory(client) +endif() +if(BUILD_SERVER) + add_subdirectory(server) +endif() +if(BUILD_MASTER) + add_subdirectory(master) +endif() +if(BUILD_ODALAUNCH) + add_subdirectory(odalaunch) +endif() + +if(NOT BUILD_CLIENT AND NOT BUILD_SERVER AND NOT BUILD_MASTER) + message(FATAL_ERROR "No target chosen, doing nothing.") +endif() # Disable the ag-odalaunch target completely: -DNO_AG-ODALAUNCH_TARGET # This is only really useful when setting up a universal build. if(NOT NO_AG-ODALAUNCH_TARGET) add_subdirectory(ag-odalaunch) endif() + +# global install rules +if(UNIX) + install(FILES odamex.wad DESTINATION ${CMAKE_INSTALL_DATADIR}) +endif() --- odamex-src-0.6.3/client/CMakeLists.txt +++ odamex-src-0.6.3/client/CMakeLists.txt @@ -48,7 +48,7 @@ # PortMidi configuration find_package(PortMidi) -if(PORTMIDI_FOUND) +if(PORTMIDI_FOUND AND ENABLE_PORTMIDI) include_directories(${PORTMIDI_INCLUDE_DIR}) add_definitions(-DPORTMIDI) else() @@ -95,7 +95,7 @@ target_link_libraries(odamex ${SDL_LIBRARY}) target_link_libraries(odamex ${SDLMIXER_LIBRARY}) - if(PORTMIDI_FOUND) + if(PORTMIDI_FOUND AND ENABLE_PORTMIDI) target_link_libraries(odamex ${PORTMIDI_LIBRARIES}) endif() @@ -164,5 +164,8 @@ " ) endif() + # UNIX install rules + elseif(UNIX) + install( TARGETS odamex DESTINATION ${CMAKE_INSTALL_BINDIR} ) endif() endif() --- odamex-src-0.6.3/master/CMakeLists.txt +++ odamex-src-0.6.3/master/CMakeLists.txt @@ -12,3 +12,9 @@ elseif(SOLARIS) target_link_libraries(odamast socket nsl) endif() + +# install rules +if(UNIX) + install( TARGETS odamast DESTINATION ${CMAKE_INSTALL_BINDIR} ) +endif() + --- odamex-src-0.6.3/odalaunch/CMakeLists.txt +++ odamex-src-0.6.3/odalaunch/CMakeLists.txt @@ -61,3 +61,9 @@ ) endif() endif() + +# install rules +if(UNIX) + install( TARGETS odalaunch DESTINATION ${CMAKE_INSTALL_BINDIR} ) +endif() + --- odamex-src-0.6.3/server/CMakeLists.txt +++ odamex-src-0.6.3/server/CMakeLists.txt @@ -56,3 +56,9 @@ elseif(SOLARIS) target_link_libraries(odasrv socket nsl) endif() + +# install rules +if(UNIX) + install( TARGETS odasrv DESTINATION ${CMAKE_INSTALL_BINDIR} ) +endif() + --- /dev/null +++ odamex-src-0.6.3/config.h.in @@ -0,0 +1,7 @@ +#ifndef CONFIG_H +#define CONFIG_H + +#define CMAKE_WADDIR "@CMAKE_INSTALL_DATADIR@" +#define CMAKE_BINDIR "@CMAKE_INSTALL_BINDIR@" + +#endif --- odamex-src-0.6.3/common/d_main.cpp +++ odamex-src-0.6.3/common/d_main.cpp @@ -23,6 +23,7 @@ //----------------------------------------------------------------------------- #include "version.h" +#include "config.h" #include #include @@ -494,6 +495,7 @@ D_AddSearchDir(dirs, getenv("DOOMWADDIR"), separator); D_AddSearchDir(dirs, getenv("DOOMWADPATH"), separator); D_AddSearchDir(dirs, getenv("HOME"), separator); + D_AddSearchDir(dirs, CMAKE_WADDIR, separator); // [AM] Search additional paths based on platform D_AddPlatformSearchDirs(dirs); --- odamex-src-0.6.3/odalaunch/src/dlg_main.cpp +++ odamex-src-0.6.3/odalaunch/src/dlg_main.cpp @@ -27,6 +27,7 @@ #include "str_utils.h" #include "md5.h" +#include "config.h" #include #include @@ -42,6 +43,7 @@ #include #include #include +#include #ifdef __WXMSW__ #include @@ -190,10 +192,12 @@ } #endif + const char *cmake_bindir_str = CMAKE_BINDIR; + wxString cmake_bindir = wxString::FromAscii(cmake_bindir_str); launchercfg_s.get_list_on_start = 1; launchercfg_s.show_blocked_servers = 0; launchercfg_s.wad_paths = wxGetCwd(); - launchercfg_s.odamex_directory = wxGetCwd(); + launchercfg_s.odamex_directory = cmake_bindir; m_LstCtrlServers = XRCCTRL(*this, "Id_LstCtrlServers", LstOdaServerList); m_LstCtrlPlayers = XRCCTRL(*this, "Id_LstCtrlPlayers", LstOdaPlayerList);