-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCMakeLists.txt
160 lines (144 loc) · 5.1 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
cmake_minimum_required(VERSION 3.0)
project(REVOCAP_Mesh CXX C Fortran)
set(REVOCAP_Mesh_VERSION "1.7.01")
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)
option(WITH_EXTENSION "Build with ruby extension libraries" OFF)
option(WITH_OPENCASCADE "Build with OpenCASCADE feature" OFF)
option(WITH_OCE "Build with OpenCASCADE Community Edition feature" OFF)
option(WITH_OPENMP "Enable OpenMP feature" ON)
option(WITH_TEST "Enable tests" OFF)
option(BUILD_DOC "Generate API documents." OFF)
add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>")
if(WITH_EXTENSION)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
message(STATUS "WITH_EXTENSION=ON")
message(STATUS "CMAKE_POSITION_INDEPENDENT_CODE=ON")
endif()
if(WITH_OCE)
set(CMAKE_MODULE_PATH $ENV{OCE_DIR})
find_package(OCE REQUIRED)
if(OCE_ALL_FOUND)
message(STATUS "Found OpenCASCADE Community Edition: ${OCE_DIR}")
include_directories(
/usr/include/oce
)
add_definitions(
-DOPENCASCADE
-DHAVE_CONFIG_H
-DHAVE_FSTREAM
-DHAVE_IOSTREAM
-DHAVE_LIMITS_H
)
else()
message(WARNING "OpenCASCADE Community Edition not Found!!\n"
" Please set directory to enviornment variable named OCE_DIR\n"
" at placed on OCEConfig.cmake\n"
"ex.) % find /usr -name OCEConfig.cmake\n"
" ./lib/x86_64-linux-gnu/oce-0.17/OCEConfig.cmake\n"
" % export OCE_DIR=/usr/lib/x86_64-linux-gnu/oce-0.7\n")
endif()
endif()
if(WITH_OPENCASCADE)
set(CMAKE_MODULE_PATH $ENV{OPENCASCADE_DIR})
find_package(OPENCASCADE REQUIRED)
message(STATUS "OpenCASCADE Dir: ${OPENCASCADE_DIR}")
if(OPENCASCADE_FOUND)
message(STATUS "Found OpenCASCADE")
message(STATUS "OpenCASCADE Version ${OpenCASCADE_MAJOR_VERSION}.${OpenCASCADE_MINOR_VERSION}.${OpenCASCADE_MAINTENANCE_VERSION}")
message(STATUS "OpenCASCADE Include ${OpenCASCADE_INCLUDE_DIR}")
include_directories(
${OpenCASCADE_INCLUDE_DIRS}
${OpenCASCADE_INCLUDE_DIR}
)
add_definitions(
-DOPENCASCADE
-DHAVE_CONFIG_H
-DHAVE_FSTREAM
-DHAVE_IOSTREAM
-DHAVE_LIMITS_H
)
else()
message(WARNING "OpenCASCADE not Found!!")
endif()
endif()
if(WITH_OPENMP)
find_package(OpenMP)
if(OPENMP_FOUND)
message(STATUS "WITH_OPENMP=ON")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
endif()
endif()
include_directories(
${CMAKE_SOURCE_DIR}
)
set(CMAKE_BUILD_TYPE "RELEASE")
set(CMAKE_C_FLAGS_RELEASE "-Wall -O2")
set(CMAKE_C_FLAGS_DEBUG "-Wall -g")
if(CMAKE_BUILD_TYPE MATCHES "RELEASE")
add_definitions(
-DNDEBUG
)
elseif(CMAKE_BUILD_TYPE MATCHES "DEBUG")
add_definitions(
-D_DEBUG=3
)
endif()
# Build static libraries
add_subdirectory(Common) # RcapCommon target, static library
add_subdirectory(Matrix) # RcapMatrix target, static library
add_subdirectory(Geometry) # RcapGeometry target, static library
add_subdirectory(MeshDB) # RcapMeshDB target, static library
add_subdirectory(RevocapIO) # RcapIO target,static library
add_subdirectory(MeshGL) # RcapMeshGL target, static library
add_subdirectory(MeshGen) # RcapMeshGen target, static library
add_subdirectory(Shape) # RcapShape target, static library
# Build swig modules
if(WITH_EXTENSION)
find_package(SWIG REQUIRED)
find_package(Ruby REQUIRED)
if(RUBY_FOUND AND SWIG_FOUND)
message(STATUS "Found ${RUBY_EXECUTABLE} (${RUBY_VERSION})")
message(STATUS "Found ${SWIG_EXECUTABLE} (${SWIG_VERSION})")
add_subdirectory(MeshDBRuby) # RcapMesh target, swig module
add_dependencies(RevocapMesh RcapMeshDB RcapGeometry RcapMatrix RcapCommon)
add_subdirectory(RevocapIORuby) # RevocapIO target, swig module
add_dependencies(RevocapIO RcapIO RcapMeshDB RcapGeometry RcapMatrix RcapCommon)
add_subdirectory(MeshGLRuby) # RevocapGL target, swig module
add_dependencies(RevocapGL RcapMeshGL RcapMeshDB RcapMeshDB RcapGeometry RcapMatrix RcapCommon)
add_subdirectory(MeshGenRuby) # RevocapMeshGen target, swig module
add_dependencies(RevocapMeshGen RcapMeshGen RcapMeshDB RcapGeometry RcapMatrix RcapCommon)
add_subdirectory(ShapeRuby) # RevocapShape target, swig module
add_dependencies(RevocapShape RcapShape RcapMeshDB RcapGeometry RcapMatrix RcapCommon)
endif()
endif()
# Test
if(WITH_TEST)
message(STATUS "WITH_TEST=ON")
enable_testing()
add_subdirectory(Test)
if(WITH_EXTENSION)
add_subdirectory(TestRuby)
endif()
endif()
# Refiner (afer setting test)
add_subdirectory(Refiner)
# -DBUILD_DOC
if(BUILD_DOC)
find_package(Doxygen)
if(DOXYGEN_FOUND)
message(STATUS "Generate API documents. Please type \"make doc\"")
set(doxy_main_page "${CMAKE_SOURCE_DIR}/INSTALL.md")
set(doxyfile_in ${CMAKE_SOURCE_DIR}/doc/Doxyfile.in)
set(doxyfile ${CMAKE_BINARY_DIR}/doc/Doxyfile)
configure_file(${doxyfile_in} ${doxyfile} @ONLY)
add_custom_target(doc
COMMAND ${DOXYGEN_EXECUTABLE} ${doxyfile}
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
COMMENT "Generate API documents."
VERBATIM
)
else()
message(WARNING "doxygen not found.")
endif()
endif()