PageRenderTime 47ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/library/CMakeLists.txt

https://github.com/stan1y/dfhack
CMake | 253 lines | 204 code | 37 blank | 12 comment | 6 complexity | 8f83732e6d9f2185d5e4a902b307c6f0 MD5 | raw file
  1. # don't use this file directly. use the one in the root folder of the project
  2. PROJECT (dfhack-library)
  3. cmake_minimum_required(VERSION 2.6)
  4. SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/CMake/Modules)
  5. # disable warning, autosearch
  6. if(COMMAND cmake_policy)
  7. cmake_policy(SET CMP0003 NEW)
  8. endif(COMMAND cmake_policy)
  9. if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
  10. message(SEND_ERROR "In-source builds are not allowed.")
  11. endif("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
  12. IF(NOT DEFINED CMAKE_BUILD_TYPE)
  13. SET(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build, options are: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel.")
  14. ENDIF(NOT DEFINED CMAKE_BUILD_TYPE)
  15. SET( LIBRARY_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/output CACHE PATH "Output directory for the dfhack library" )
  16. SET( EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/output CACHE PATH "Output directory for the dfhack tools" )
  17. include_directories (${CMAKE_SOURCE_DIR}/library/include/)
  18. include_directories (${CMAKE_SOURCE_DIR}/library/shm/)
  19. include_directories (${CMAKE_SOURCE_DIR}/library/depends/md5/)
  20. include_directories (${CMAKE_SOURCE_DIR}/library/depends/tinyxml/)
  21. include_directories (${CMAKE_SOURCE_DIR}/library/depends/argstream/)
  22. include_directories (${CMAKE_SOURCE_DIR}/library/private/)
  23. SET(PROJECT_HDRS_INTERNAL
  24. private/ContextShared.h
  25. private/Internal.h
  26. )
  27. SET(PROJECT_HDRS
  28. include/DFHack.h
  29. include/dfhack/DFContext.h
  30. include/dfhack/DFContextManager.h
  31. include/dfhack/DFError.h
  32. include/dfhack/DFExport.h
  33. include/dfhack/DFGlobal.h
  34. include/dfhack/DFIntegers.h
  35. include/dfhack/DFMiscUtils.h
  36. include/dfhack/DFModule.h
  37. include/dfhack/DFPragma.h
  38. include/dfhack/DFProcess.h
  39. include/dfhack/DFProcessEnumerator.h
  40. include/dfhack/DFTileTypes.h
  41. include/dfhack/DFTypes.h
  42. include/dfhack/DFVector.h
  43. include/dfhack/VersionInfoFactory.h
  44. include/dfhack/VersionInfo.h
  45. include/dfhack/modules/Buildings.h
  46. include/dfhack/modules/Constructions.h
  47. include/dfhack/modules/Creatures.h
  48. include/dfhack/modules/Gui.h
  49. include/dfhack/modules/Items.h
  50. include/dfhack/modules/Maps.h
  51. include/dfhack/modules/Materials.h
  52. include/dfhack/modules/Position.h
  53. include/dfhack/modules/Translation.h
  54. include/dfhack/modules/Vegetation.h
  55. include/dfhack/modules/WindowIO.h
  56. include/dfhack/modules/World.h
  57. )
  58. SET(PROJECT_C_HDRS
  59. include/DFHack_C.h
  60. include/dfhack-c/DFTypes_C.h
  61. include/dfhack-c/DFContext_C.h
  62. include/dfhack-c/modules/Buildings_C.h
  63. include/dfhack-c/modules/Constructions_C.h
  64. include/dfhack-c/modules/Creatures_C.h
  65. include/dfhack-c/modules/Gui_C.h
  66. include/dfhack-c/modules/Items_C.h
  67. include/dfhack-c/modules/Maps_C.h
  68. include/dfhack-c/modules/Materials_C.h
  69. include/dfhack-c/modules/Position_C.h
  70. include/dfhack-c/modules/Translation_C.h
  71. include/dfhack-c/modules/Vegetation_C.h
  72. include/dfhack-c/modules/WindowIO_C.h
  73. include/dfhack-c/modules/World_C.h
  74. )
  75. SET(PROJECT_SRCS
  76. VersionInfo.cpp
  77. VersionInfoFactory.cpp
  78. DFContextManager.cpp
  79. DFContext.cpp
  80. DFTileTypes.cpp
  81. DFProcessEnumerator.cpp
  82. ContextShared.cpp
  83. depends/md5/md5.cpp
  84. depends/md5/md5wrapper.cpp
  85. depends/tinyxml/tinystr.cpp
  86. depends/tinyxml/tinyxml.cpp
  87. depends/tinyxml/tinyxmlerror.cpp
  88. depends/tinyxml/tinyxmlparser.cpp
  89. modules/Buildings.cpp
  90. modules/Constructions.cpp
  91. modules/Creatures.cpp
  92. modules/Gui.cpp
  93. modules/Items.cpp
  94. modules/Maps.cpp
  95. modules/Materials.cpp
  96. modules/Position.cpp
  97. modules/Translation.cpp
  98. modules/Vegetation.cpp
  99. modules/World.cpp
  100. )
  101. SET(PROJECT_C_SRCS
  102. DFContext_C.cpp
  103. DFTypes_C.cpp
  104. modules/Buildings_C.cpp
  105. modules/Constructions_C.cpp
  106. modules/Creatures_C.cpp
  107. modules/Gui_C.cpp
  108. modules/Items_C.cpp
  109. modules/Maps_C.cpp
  110. modules/Position_C.cpp
  111. modules/Materials_C.cpp
  112. modules/Translation_C.cpp
  113. modules/Vegetation_C.cpp
  114. modules/WindowIO_C.cpp
  115. modules/World_C.cpp
  116. )
  117. SET(PROJECT_HDRS_LINUX
  118. )
  119. SET(PROJECT_HDRS_WINDOWS
  120. include/dfhack/DFstdint_win.h
  121. )
  122. SET(PROJECT_HDRS_APPLE
  123. include/dfhack/modules/AppleScript.h
  124. )
  125. SET(PROJECT_SRCS_LINUX
  126. DFProcess-linux.cpp
  127. DFProcess-linux-SHM.cpp
  128. DFProcess-linux-wine.cpp
  129. modules/WindowIO-linux.cpp
  130. )
  131. SET(PROJECT_SRCS_WINDOWS
  132. DFProcess-windows.cpp
  133. DFProcess-windows-SHM.cpp
  134. modules/WindowIO-windows.cpp
  135. )
  136. SET(PROJECT_SRCS_MACOSX
  137. modules/WindowIO-macosx.cpp
  138. modules/AppleScript.m
  139. )
  140. IF(LINUX)
  141. LIST(APPEND PROJECT_HDRS ${PROJECT_HDRS_LINUX})
  142. LIST(APPEND PROJECT_SRCS ${PROJECT_SRCS_LINUX})
  143. ENDIF(LINUX)
  144. IF(WINDOWS)
  145. LIST(APPEND PROJECT_HDRS ${PROJECT_HDRS_WINDOWS})
  146. LIST(APPEND PROJECT_SRCS ${PROJECT_SRCS_WINDOWS})
  147. ENDIF(WINDOWS)
  148. IF(APPLE)
  149. LIST(APPEND PROJECT_HDRS ${PROJECT_HDRS_MACOSX})
  150. LIST(APPEND PROJECT_SRCS ${PROJECT_SRCS_MACOSX})
  151. ENDIF(APPLE)
  152. IF(BUILD_DFHACK_C_BINDINGS)
  153. LIST(APPEND PROJECT_HDRS ${PROJECT_C_HDRS})
  154. LIST(APPEND PROJECT_SRCS ${PROJECT_C_SRCS})
  155. ENDIF(BUILD_DFHACK_C_BINDINGS)
  156. SET_SOURCE_FILES_PROPERTIES( ${PROJECT_HDRS} PROPERTIES HEADER_FILE_ONLY TRUE )
  157. LIST(APPEND PROJECT_SRCS ${PROJECT_HDRS})
  158. SET( MEMXML_DATA_PATH . CACHE PATH "search path for Memory.xml")
  159. # OPTION( VARIABLE "Description" Initial state)
  160. #OPTION( WITH_FOO "Enable FOO support" ON )
  161. #OPTION( WITH_BAR "Enable BAR component" OFF )
  162. # Are we 64bit? (Damn you, ptrace()!)
  163. IF( CMAKE_SIZEOF_VOID_P MATCHES 4 )
  164. SET( HAVE_64_BIT 0 )
  165. ELSE( CMAKE_SIZEOF_VOID_P MATCHES 4 )
  166. SET( HAVE_64_BIT 1 )
  167. ENDIF( CMAKE_SIZEOF_VOID_P MATCHES 4 )
  168. CONFIGURE_FILE( ${CMAKE_SOURCE_DIR}/library/config.h.cmake ${CMAKE_SOURCE_DIR}/library/private/config.h )
  169. ADD_DEFINITIONS(-DBUILD_DFHACK_LIB)
  170. IF(UNIX)
  171. add_definitions(-DLINUX_BUILD)
  172. add_definitions(-DUSE_CONFIG_H)
  173. find_library(X11_LIBRARY X11)
  174. SET(CMAKE_CXX_FLAGS_DEBUG "-g -Wall")
  175. SET(CMAKE_CXX_FLAGS "-fvisibility=hidden")
  176. SET(PROJECT_LIBS ${X11_LIBRARY} rt ) #dfhack-md5 dfhack-tixml
  177. ELSE(UNIX)
  178. SET(PROJECT_LIBS psapi)
  179. ENDIF(UNIX)
  180. ADD_LIBRARY(dfhack SHARED ${PROJECT_SRCS})
  181. SET_TARGET_PROPERTIES(dfhack PROPERTIES DEBUG_POSTFIX "-debug" )
  182. TARGET_LINK_LIBRARIES(dfhack ${PROJECT_LIBS})
  183. if(MSVC)
  184. # This is a MSVC hack used for copying files into the target directory
  185. # of build target set in MSVC.
  186. # It exploits the fact that MSVC has some variables in .vcproj files, much like cmake does here.
  187. #
  188. # So, $(TargetDir) is ignored by cmake, and replaced with the actual output directory by MSVC
  189. ADD_CUSTOM_COMMAND(TARGET dfhack
  190. COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/data/Memory-ng.xml "$(TargetDir)/Memory.xml"
  191. MAIN_DEPENDENCY ${CMAKE_SOURCE_DIR}/data/Memory-ng.xml
  192. )
  193. ADD_CUSTOM_COMMAND(TARGET dfhack
  194. COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/Compile.html "$(TargetDir)/Compile.html"
  195. MAIN_DEPENDENCY ${CMAKE_SOURCE_DIR}/Compile.html
  196. )
  197. ADD_CUSTOM_COMMAND(TARGET dfhack
  198. COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/Readme.html "$(TargetDir)/Readme.html"
  199. MAIN_DEPENDENCY ${CMAKE_SOURCE_DIR}/Readme.html
  200. )
  201. ADD_CUSTOM_COMMAND(TARGET dfhack
  202. COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/LICENSE "$(TargetDir)/LICENSE.txt"
  203. MAIN_DEPENDENCY ${CMAKE_SOURCE_DIR}/LICENSE
  204. )
  205. else(MSVC)
  206. # Just put the file in the output directory on Linux and Mac
  207. configure_file(${CMAKE_SOURCE_DIR}/data/Memory-ng.xml ${DATA_OUTPUT_PATH}/Memory.xml COPYONLY)
  208. configure_file(${CMAKE_SOURCE_DIR}/Compile.html ${DATA_OUTPUT_PATH}/Compile.html COPYONLY)
  209. configure_file(${CMAKE_SOURCE_DIR}/Readme.html ${DATA_OUTPUT_PATH}/Readme.html COPYONLY)
  210. configure_file(${CMAKE_SOURCE_DIR}/LICENSE ${DATA_OUTPUT_PATH}/LICENSE.txt COPYONLY)
  211. endif(MSVC)
  212. IF(UNIX)
  213. install(TARGETS dfhack LIBRARY DESTINATION lib)
  214. install(FILES ${CMAKE_SOURCE_DIR}/output/Memory.xml DESTINATION share/dfhack)
  215. install(DIRECTORY ${CMAKE_SOURCE_DIR}/library/include/ DESTINATION include FILES_MATCHING PATTERN "*.h")
  216. ENDIF(UNIX)