Sim

ET:L CMake

Sim
Jun 1st, 2012
234
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
CMake 6.06 KB | None | 0 0
  1. #------------------------------------------------------------------------
  2. # ET:Legacy, http://www.etlegacy.com
  3. # - Wolfenstein: Enemy Territory 2.60b compatible client/server
  4. # - based on raedwulf-et: https://bitbucket.org/tcmreastwood/raedwulf-et
  5. #------------------------------------------------------------------------
  6. cmake_minimum_required(VERSION 2.6)
  7.  
  8. set(CMAKE_BUILD_TYPE Release CACHE STRING "Build configuration (Debug, Release)")
  9.  
  10. project(ETLEGACY C)
  11.  
  12. set(ETLEGACY_VERSION_MAJOR  "2")
  13. set(ETLEGACY_VERSION_MINOR  "7")
  14. set(ETLEGACY_VERSION_PATCH  "0")
  15. set(ETLEGACY_VERSION "${ETLEGACY_VERSION_MAJOR}.${ETLEGACY_VERSION_MINOR}${ETLEGACY_VERSION_PATCH}")
  16.  
  17. # General compiler configuration
  18. set(CMAKE_C_FLAGS_RELEASE "-O2 -DNDEBUG -msse")
  19. set(CMAKE_SHARED_LINKER_FLAGS "-Wl")
  20. add_definitions(-DBOTLIB)
  21.  
  22. # Options
  23. option(BUILD_SERVER "Build the dedicated server executable" OFF)
  24. option(BUILD_CLIENT "Build the client executable"       ON)
  25. option(BUILD_MOD    "Build the mod libraries"       ON)
  26.  
  27. # Dependencies
  28. Find_Package(SDL REQUIRED)
  29. Find_Package(OpenGL REQUIRED)
  30. Find_Package(Threads REQUIRED)
  31. Find_Package(JPEG REQUIRED)
  32.  
  33. # Optional features
  34. option(SMP_SUPPORT      "Enable SMP (multicore support) (client only)"          ON)
  35. option(USE_CURL         "Enable auto-download support using Curl (client only)"     ON)
  36. option(USE_CODEC_VORBIS     "Enable OGG Vorbis support (client only)"           OFF)
  37. option(USE_OPENAL       "Enable OpenAL sound backend (client only)"             OFF)
  38. option(USE_FREETYPE     "Enable Freetype font library support (client only)"        OFF)
  39. option(GUIDMASTER_SUPPORT   "Enable client registration with guidmaster (client only)"  ON)
  40. option(TRACKBASE_SUPPORT    "Enable extended server statistics (server only)"       ON)
  41.  
  42. #-----------------------------------------------------------------
  43. # Platform-specific settings
  44. #-----------------------------------------------------------------
  45. if(UNIX)
  46.         set(OS_LIBRARIES dl m ${CMAKE_THREAD_LIBS_INIT})
  47. elseif(WIN32)
  48.         add_definitions(-DWINVER=0x501)
  49.         set(OS_LIBRARIES ws2_32 psapi winmm)
  50. endif()
  51.  
  52. # Get the system architecture
  53. if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "i686" OR "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "i386")
  54. if(WIN32)
  55.         set(ARCH "x86")
  56. else()
  57.         set(ARCH "i386")
  58. endif()
  59. elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64" OR "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "sparc" OR "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "powerpc")
  60.         set(ARCH ${CMAKE_SYSTEM_PROCESSOR})
  61. else()
  62.         set(ARCH "none")
  63. endif()
  64.  
  65. #-----------------------------------------------------------------
  66. # Sources
  67. #-----------------------------------------------------------------
  68.  
  69. FILE(GLOB COMMON_SRC
  70.     "src/qcommon/*.c"
  71. )
  72.  
  73. FILE(GLOB COMMON_SRC_REMOVE
  74.     "src/qcommon/dl_main_curl.c"
  75.     "src/qcommon/dl_main_stubs.c"
  76.     "src/botlib/botlib_stub.c"
  77. )
  78. LIST(REMOVE_ITEM COMMON_SRC ${COMMON_SRC_REMOVE})
  79.  
  80. FILE(GLOB SERVER_SRC
  81.     "src/server/*.c"
  82.     "src/null/*.c"
  83.     "src/botlib/be*.c"
  84.     "src/botlib/l_*.c"
  85.     "src/sys/sys_*.c"
  86.     "src/sys/con_log.c"
  87.     "src/sys/con_tty.c"
  88.     "src/qcommon/dl_main_stubs.c"
  89. )
  90.  
  91. FILE(GLOB CLIENT_SRC
  92.     "src/server/*.c"
  93.     "src/client/*.c"
  94.     "src/botlib/be*.c"
  95.     "src/botlib/l_*.c"
  96.     "src/sys/sys_*.c"
  97.     "src/sys/con_log.c"
  98.     "src/sys/con_tty.c"
  99.     "src/renderer/*.c"
  100.     "src/sdl/*.c"
  101. )
  102.  
  103. FILE(GLOB CGAME_SRC
  104.     "src/cgame/*.c"
  105.     "src/qcommon/q_math.c"
  106.     "src/qcommon/q_shared.c"
  107.     "src/ui/ui_shared.c"
  108.     "src/game/bg_*.c"
  109. )
  110.  
  111. FILE(GLOB QAGAME_SRC
  112.     "src/game/*.c"
  113.     "src/qcommon/q_math.c"
  114.     "src/qcommon/q_shared.c"
  115. )
  116.  
  117. FILE(GLOB UI_SRC
  118.     "src/ui/*.c"
  119.     "src/qcommon/q_math.c"
  120.     "src/qcommon/q_shared.c"
  121.     "src/game/bg_campaign.c"
  122.     "src/game/bg_classes.c"
  123.     "src/game/bg_misc.c"
  124. )
  125.  
  126. #-----------------------------------------------------------------
  127. # User selected features
  128. #-----------------------------------------------------------------
  129. if(USE_CURL)
  130.     add_definitions(-DUSE_CURL)
  131.     find_package(CURL REQUIRED)
  132.     set(CLIENT_SRC ${CLIENT_SRC} "src/qcommon/dl_main_curl.c")
  133. else(USE_CURL)
  134.     set(CLIENT_SRC ${CLIENT_SRC} "src/qcommon/dl_main_stubs.c")
  135. endif(USE_CURL)
  136.  
  137. if(USE_FREETYPE)
  138.     add_definitions(-DUSE_FREETYPE)
  139. #   TODO: find_package(Freetype REQUIRED)
  140. endif(USE_FREETYPE)
  141.  
  142. if(USE_OPENAL)
  143.     add_definitions(-DUSE_OPENAL)
  144. #   add_definitions(-DUSE_OPENAL_DLOPEN)
  145. #   TODO: find_package(OpenAL REQUIRED)
  146. endif(USE_OPENAL)
  147.  
  148. if(USE_CODEC_VORBIS)
  149.     add_definitions(-DUSE_CODEC_VORBIS)
  150. #   TODO: find_package(Vorbis REQUIRED)
  151. endif(USE_CODEC_VORBIS)
  152.  
  153. if(SMP_SUPPORT)
  154.     add_definitions(-DSMP)
  155. endif(SMP_SUPPORT)
  156.  
  157. if(GUIDMASTER_SUPPORT)
  158.     add_definitions(-DGUIDMASTER_SUPPORT)
  159. endif(GUIDMASTER_SUPPORT)
  160.  
  161. if(TRACKBASE_SUPPORT)
  162.     add_definitions(-DTRACKBASE_SUPPORT)
  163. endif(TRACKBASE_SUPPORT)
  164.  
  165. #-----------------------------------------------------------------
  166. # Build
  167. #-----------------------------------------------------------------
  168. if(BUILD_CLIENT)
  169.     add_executable(etl ${COMMON_SRC} ${CLIENT_SRC})
  170.     include_directories(
  171.         ${CURL_INCLUDE_DIRS}
  172.         ${OPENGL_INCLUDE_DIR}
  173.         ${JPEG_INCLUDE_DIR}
  174.     )
  175.     target_link_libraries(etl
  176.         ${OS_LIBRARIES}
  177.         ${SDL_LIBRARY}
  178.         #SDLmain - Windows?
  179.         ${OPENGL_LIBRARY}
  180.         ${CURL_LIBRARY}
  181.         ${JPEG_LIBRARY}
  182.     )
  183.     set_target_properties(etl
  184.         PROPERTIES COMPILE_DEFINITIONS "USE_ICON")
  185.     install(TARGETS etl DESTINATION build/linux-i386)
  186. endif(BUILD_CLIENT)
  187.  
  188. if(BUILD_SERVER)
  189.     add_executable(etlded ${COMMON_SRC} ${SERVER_SRC})
  190.     target_link_libraries(etlded
  191.         ${OS_LIBRARIES})
  192.     set_target_properties(etlded
  193.         PROPERTIES COMPILE_DEFINITIONS "DEDICATED")
  194.     install(TARGETS etlded DESTINATION build/linux-i386)
  195. endif(BUILD_SERVER)
  196.  
  197. if(BUILD_MOD)
  198.     add_library(cgame.mp.${ARCH} SHARED ${CGAME_SRC})
  199.     set_target_properties(cgame.mp.${ARCH}
  200.         PROPERTIES COMPILE_DEFINITIONS "CGAMEDLL"
  201.             PREFIX ""
  202.             LIBRARY_OUTPUT_DIRECTORY "etmain")
  203.     add_library(qagame.mp.${ARCH} SHARED ${QAGAME_SRC})
  204.     set_target_properties(qagame.mp.${ARCH}
  205.         PROPERTIES COMPILE_DEFINITIONS "GAMEDLL"
  206.             PREFIX ""
  207.             LIBRARY_OUTPUT_DIRECTORY "etmain")
  208.     add_library(ui.mp.${ARCH} SHARED ${UI_SRC})
  209.     set_target_properties(ui.mp.${ARCH}
  210.         PROPERTIES
  211.             PREFIX ""
  212.             LIBRARY_OUTPUT_DIRECTORY "etmain")
  213. endif(BUILD_MOD)
Advertisement
Add Comment
Please, Sign In to add comment