/src/contrib/geom-6.3.1.8/CMakeLists.txt

https://gitlab.com/tylerluo/pythonocc · CMake · 199 lines · 129 code · 19 blank · 51 comment · 1 complexity · 74a099e230cd0ec27c4f754a8a551a4c MD5 · raw file

  1. # GEOM cmake build file
  2. PROJECT(GEOM)
  3. SET(GEOM_VERSION_MAJOR 6)
  4. SET(GEOM_VERSION_MINOR 3)
  5. SET(GEOM_VERSION_PATCH 1)
  6. #SET(GEOM_VERSION_TWEAK 8)
  7. CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
  8. ######################
  9. # Set ABI SOVERSION #
  10. ######################
  11. SET(GEOM_ABI_SOVERSION 1)
  12. SET(GEOM_ABI_VERSION ${GEOM_ABI_SOVERSION}.0.0)
  13. SET(CMAKE_BUILD_TYPE "Release") # By default, build in release mode
  14. SET(BUILD_SHARED_LIBS ON)
  15. INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
  16. INCLUDE_DIRECTORIES(inc)
  17. ################################################################
  18. # OpenCASCADE Community Edition (OCE) include and lib location #
  19. ################################################################
  20. SET( OCE_INCLUDE_PATH /usr/local/include/oce CACHE
  21. PATH "OCE headers location" )
  22. SET( OCE_LIB_PATH /usr/local/lib CACHE
  23. PATH "OCE libraries location" )
  24. # Tells CMake where are the required headers
  25. INCLUDE_DIRECTORIES(${OCE_INCLUDE_PATH})
  26. LINK_DIRECTORIES(${OCE_LIB_PATH})
  27. ############################
  28. # Check 32/64 bit platform #
  29. ############################
  30. IF (${CMAKE_SIZEOF_VOID_P} MATCHES "8") # It is 64bit, 32 bit systems returns 4
  31. ADD_DEFINITIONS(-D_OCC64)
  32. SET(BIT 64)
  33. ELSE (${CMAKE_SIZEOF_VOID_P} MATCHES "8")
  34. SET(BIT 32)
  35. ENDIF(${CMAKE_SIZEOF_VOID_P} MATCHES "8")
  36. MESSAGE(STATUS "Build ${BIT}bit")
  37. #################
  38. # Release build #
  39. #################
  40. IF (NOT MSVC)
  41. IF( NOT DEFINED ${PROJECT_NAME}_BUILD_TYPE )
  42. SET( ${PROJECT_NAME}_BUILD_TYPE "Release" CACHE STRING "Build type" ) # By default set release build
  43. ENDIF( NOT DEFINED ${PROJECT_NAME}_BUILD_TYPE )
  44. SET( CMAKE_BUILD_TYPE ${${PROJECT_NAME}_BUILD_TYPE} CACHE INTERNAL "Build type,
  45. immutable" FORCE )
  46. ENDIF(NOT MSVC)
  47. ######################################################
  48. # Configure Build settings according to the platform #
  49. ######################################################
  50. IF(UNIX)
  51. IF(APPLE)
  52. ######### MacOSX ###########
  53. MESSAGE(STATUS "MacOSX platform detected")
  54. SET(PLATFORM Darwin)
  55. ELSE(APPLE)
  56. ######### Unix/Linux ###########
  57. MESSAGE(STATUS "Unix/Linux platform detected")
  58. SET(PLATFORM Unix)
  59. ENDIF(APPLE)# Same settings are used for both MacOSX and Unix/Linux
  60. ADD_DEFINITIONS(-DHAVE_CONFIG_H -DCSFDB -DOCC_CONVERT_SIGNALS)
  61. ELSE(UNIX)
  62. IF(WIN32)
  63. ######### Windows ###########
  64. MESSAGE("-- Windows system detected")
  65. ADD_DEFINITIONS(-DWNT -DWIN32 -D_WINDOWS -DCSFDB -DHAVE_CONFIG_H)
  66. ELSE(WIN32)
  67. MESSAGE("Unknown platform")
  68. ENDIF(WIN32)
  69. ENDIF(UNIX)
  70. ################################################
  71. # Define output path for generated libraries: #
  72. # platform/compiler-build_type-bits #
  73. # for instance: #
  74. # ./win32/bin/vc7.1-release-64 #
  75. # ./win32/bin/vc9-debug-32 #
  76. # ./Unix/i386-debug-64 #
  77. ################################################
  78. IF(WIN32)
  79. IF(MSVC) # The compiler used is MSVC
  80. MESSAGE(STATUS "Found MSVC compiler: ${MSVC} ${MSVC_VERSION}")
  81. SET(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin/)
  82. ELSEIF (BORLAND) # The compiler used is BORLAND
  83. SET(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/win${BIT}/bin/${CMAKE_BUILD_TYPE})
  84. ELSE()
  85. SET(LIBRARY_OUTPUT_PATH win${BIT}/bin/${CMAKE_BUILD_TYPE})
  86. ENDIF()
  87. SET(EXECUTABLE_OUTPUT_PATH ${LIBRARY_OUTPUT_PATH})
  88. ELSE(WIN32)
  89. SET(LIBRARY_OUTPUT_PATH ${PLATFORM}/${CMAKE_SYSTEM_PROCESSOR}-${CMAKE_BUILD_TYPE}-${BIT})
  90. ENDIF(WIN32)
  91. MESSAGE(STATUS "output_path: ${LIBRARY_OUTPUT_PATH}")
  92. #####################
  93. # Add include paths #
  94. #####################
  95. INCLUDE_DIRECTORIES(src/NMTDS)
  96. INCLUDE_DIRECTORIES(src/NMTTools)
  97. INCLUDE_DIRECTORIES(src/GEOMAlgo/ src/BlockFix)
  98. INCLUDE_DIRECTORIES(src/GEOM/)
  99. INCLUDE_DIRECTORIES(src/Partition)
  100. #######################
  101. # Define source files #
  102. #######################
  103. FILE(GLOB libGEOM_source_files src/NMTDS/NMTDS_*.cpp
  104. src/NMTTools/NMTTools_*.cpp
  105. src/GEOMAlgo/GEOMAlgo_*.cpp
  106. src/GEOM/GEOM_*.cpp
  107. src/Archimede/Archimede_VolumeSection.cpp
  108. src/BlockFix/BlockFix*.cpp
  109. src/ExchangeBREP/ExchangeBREP_Export.cpp src/ExchangeBREP/ExchangeBREP_Import.cpp
  110. src/ExchangeCSFDB/ExchangeCSFDB_Export.cpp src/ExchangeCSFDB/ExchangeCSFDB_Import.cpp
  111. src/ExchangeIGES/ExchangeIGES_Export.cpp src/ExchangeIGES/ExchangeIGES_Import.cpp
  112. src/ExchangeSTEP/ExchangeSTEP_Export.cpp src/ExchangeSTEP/ExchangeSTEP_Import.cpp
  113. src/ExchangeSTL/ExchangeSTL_Export.cpp
  114. src/ExchangeVRML/ExchangeVRML_Export.cpp
  115. src/ShHealOper/ShHealOper_*.cpp
  116. src/Sketcher/Sketcher*.cpp
  117. src/GEOMImpl/GEOMImpl_*.cpp
  118. src/Partition/Partition_*.cpp
  119. )
  120. ##################################
  121. # Build a single dynamic library #
  122. ##################################
  123. ADD_LIBRARY(GEOM SHARED ${libGEOM_source_files})
  124. TARGET_LINK_LIBRARIES(GEOM TKernel TKBRep TKBO TKMath
  125. TKG3d TKG2d TKGeomAlgo TKGeomBase TKTopAlgo
  126. TKService TKBool TKMesh TKShHealing
  127. TKLCAF TKCAF TKCDF TKAdvTools TKXSBase
  128. TKPShape PTKernel TKShapeSchema
  129. TKIGES TKSTEPBase TKSTEP TKSTL TKVRML
  130. TKPrim TKFillet TKOffset TKFeat
  131. TKV3d ${CMAKE_DL_LIBS}
  132. )
  133. SET_TARGET_PROPERTIES(GEOM PROPERTIES
  134. SOVERSION ${${PROJECT_NAME}_ABI_SOVERSION}
  135. VERSION ${${PROJECT_NAME}_ABI_VERSION})
  136. ####################
  137. # Install location #
  138. ####################
  139. IF( NOT DEFINED ${PROJECT_NAME}_INSTALL_PREFIX )
  140. IF( WIN32 )
  141. SET(${PROJECT_NAME}_INSTALL_PREFIX
  142. "c:/${PROJECT_NAME}-${${PROJECT_NAME}_VERSION}")
  143. ELSE( WIN32 )
  144. SET(${PROJECT_NAME}_INSTALL_PREFIX
  145. "/usr/local")
  146. ENDIF( WIN32 )
  147. ENDIF( NOT DEFINED ${PROJECT_NAME}_INSTALL_PREFIX )
  148. SET( ${PROJECT_NAME}_INSTALL_PREFIX ${${PROJECT_NAME}_INSTALL_PREFIX} CACHE
  149. PATH "Install prefix prepended to target to create install location" )
  150. SET( CMAKE_INSTALL_PREFIX "${${PROJECT_NAME}_INSTALL_PREFIX}" CACHE INTERNAL "Prefix
  151. prepended to install directories if target destination is not absolute,
  152. immutable" FORCE )
  153. ################
  154. # Install GEOM #
  155. ################
  156. IF (UNIX)
  157. # Install lib (by default to /usr/local/lib)
  158. INSTALL(TARGETS GEOM DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
  159. # Install headers (by default to /usr/local/include/geom)
  160. INSTALL(DIRECTORY inc/
  161. DESTINATION ${CMAKE_INSTALL_PREFIX}/include/geom
  162. FILES_MATCHING PATTERN "*.*"
  163. )
  164. ENDIF(UNIX)
  165. ########################
  166. # Packaging with CPack #
  167. # $ make package #
  168. ########################
  169. SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "GEOM library")
  170. SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README.LINUX")
  171. SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENCE.lgpl.txt")
  172. SET(CPACK_SET_DESTDIR "ON")
  173. # Define version
  174. SET(CPACK_PACKAGE_VERSION_MAJOR ${GEOM_VERSION_MAJOR})
  175. SET(CPACK_PACKAGE_VERSION_MINOR ${GEOM_VERSION_MINOR})
  176. SET(CPACK_PACKAGE_VERSION_PATCH ${GEOM_VERSION_PATCH})
  177. SET(CPACK_PACKAGE_NAME ${PROJECT_NAME} )
  178. SET(CPACK_PACKAGE_CONTACT "pythonocc mailing list <pythonocc-users@gna.org>")
  179. INCLUDE(InstallRequiredSystemLibraries)
  180. INCLUDE(CPack)