1
# The YADE has the following parameters to configure:
2
# INSTALL_PREFIX: path, where Yade will be installed (/usr/local by default)
3
# LIBRARY_OUTPUT_PATH: path to install libraries (lib by default)
4
# DEBUG: compile in debug-mode (OFF by default)
5
# CMAKE_VERBOSE_MAKEFILE: output additional information during compiling (OFF by default)
6
# SUFFIX: suffix, added after binary-names (version number by default)
7
# NOSUFFIX: do not add a suffix after binary-name (OFF by default)
8
# YADE_VERSION: explicitely set version number (is defined from git-directory by default)
9
# ENABLE_GUI: enable GUI option (ON by default)
10
# ENABLE_CGAL: enable CGAL option (ON by default)
11
# ENABLE_VTK: enable VTK-export option (ON by default)
12
# ENABLE_OPENMP: enable OpenMP-parallelizing option (ON by default)
13
# ENABLE_GTS: enable GTS-option (ON by default)
14
# ENABLE_GL2PS: enable GL2PS-option (ON by default)
15
# ENABLE_LINSOLV: enable LINSOLV-option (ON by default)
16
# ENABLE_PFVFLOW: enable PFVFLOW-option, FlowEngine (ON by default)
17
# runtimePREFIX: used for packaging, when install directory is not the same is runtime directory (/usr/local by default)
18
# CHUNKSIZE: set >1, if you want several sources to be compiled at once. Increases compilation speed and RAM-consumption during it (1 by default).
22
cmake_minimum_required(VERSION 2.8)
24
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cMake")
26
INCLUDE(FindPythonLibs)
27
INCLUDE(FindPythonInterp)
31
INCLUDE(FindPkgConfig)
39
INCLUDE(FindPythonModule)
40
INCLUDE(GNUInstallDirs)
41
#===========================================================
43
#If flags are set, add only neccessary flags
45
SET(CMAKE_VERBOSE_MAKEFILE 1)
46
SET(CMAKE_BUILD_TYPE Debug)
47
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DYADE_PTR_CAST=static_pointer_cast -DYADE_CAST=static_cast -DYADE_DEBUG")
49
SET(CMAKE_BUILD_TYPE Release)
50
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DYADE_PTR_CAST=static_pointer_cast -DYADE_CAST=static_cast -fPIC")
52
ELSE (CMAKE_CXX_FLAGS)
53
#If flags are not set, add all useful flags
55
SET(CMAKE_VERBOSE_MAKEFILE 1)
56
SET(CMAKE_BUILD_TYPE Debug)
57
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DYADE_PTR_CAST=static_pointer_cast -DYADE_CAST=static_cast -DYADE_DEBUG -Wall -fPIC -g -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security")
59
SET(CMAKE_BUILD_TYPE Release)
60
SET(CMAKE_CXX_FLAGS "-DYADE_PTR_CAST=static_pointer_cast -DYADE_CAST=static_cast -Wall -fPIC -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security -s")
62
ENDIF (CMAKE_CXX_FLAGS)
63
#===========================================================
64
# Add possibility to use local boost installation (e.g. -DLocalBoost=1.46.1)
66
FIND_PACKAGE(Boost ${LocalBoost} COMPONENTS python thread date_time filesystem iostreams regex serialization system REQUIRED)
67
INCLUDE_DIRECTORIES (${Boost_INCLUDE_DIRS})
68
# for checking purpose
69
MESSAGE("-- Boost_VERSION: " ${Boost_VERSION})
70
MESSAGE("-- Boost_LIB_VERSION: " ${Boost_LIB_VERSION})
71
MESSAGE("-- Boost_INCLUDE_DIRS: " ${Boost_INCLUDE_DIRS})
72
MESSAGE("-- Boost_LIBRARIES: " ${Boost_LIBRARIES})
74
#===========================================================
75
FIND_PACKAGE(NumPy REQUIRED)
76
INCLUDE_DIRECTORIES(${NUMPY_INCLUDE_DIRS})
78
FIND_PACKAGE(Loki REQUIRED)
79
INCLUDE_DIRECTORIES(${LOKI_INCLUDE_DIR})
80
FIND_PACKAGE(Eigen3 REQUIRED)
81
FIND_PACKAGE(BZip2 REQUIRED)
82
FIND_PACKAGE(ZLIB REQUIRED)
83
#===========================================================
85
SET(DEFAULT ON CACHE INTERNAL "Default value for enabled by default options")
87
SET(CONFIGURED_FEATS "")
88
SET(DISABLED_FEATS "")
90
OPTION(ENABLE_VTK "Enable VTK" ${DEFAULT})
91
OPTION(ENABLE_OPENMP "Enable OpenMP" ${DEFAULT})
92
OPTION(ENABLE_GTS "Enable GTS" ${DEFAULT})
93
OPTION(ENABLE_GUI "Enable GUI" ${DEFAULT})
94
OPTION(ENABLE_CGAL "Enable CGAL" ${DEFAULT})
95
OPTION(ENABLE_GL2PS "Enable GL2PS" ${DEFAULT})
96
OPTION(ENABLE_LINSOLV "Enable direct solver for the flow engines (experimental)" ${DEFAULT})
97
OPTION(ENABLE_PFVFLOW "Enable flow engine (experimental)" ${DEFAULT})
99
#===========================================================
100
# Use Eigen3 by default
102
INCLUDE_DIRECTORIES(${EIGEN3_INCLUDE_DIR})
103
MESSAGE(STATUS "Found Eigen3")
104
SET(CONFIGURED_FEATS "${CONFIGURED_FEATS} Eigen3")
106
#===========================================================
107
INCLUDE_DIRECTORIES(${BZIP2_INCLUDE_DIR})
108
INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIRS})
109
SET(LINKLIBS "${LINKLIBS};${BZIP2_LIBRARIES};${ZLIB_LIBRARIES};")
110
#===========================================================
112
FIND_PACKAGE(VTK COMPONENTS Common)
114
INCLUDE_DIRECTORIES(${VTK_INCLUDE_DIRS})
115
LINK_DIRECTORIES( ${VTK_LIBRARY_DIRS} )
116
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DYADE_VTK")
117
SET(features "${features} vtk")
118
MESSAGE(STATUS "Found VTK")
119
SET(CONFIGURED_FEATS "${CONFIGURED_FEATS} VTK")
121
MESSAGE(STATUS "VTK NOT found")
123
SET(DISABLED_FEATS "${DISABLED_FEATS} VTK")
126
SET(DISABLED_FEATS "${DISABLED_FEATS} VTK")
128
#===========================================================
132
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DYADE_OPENMP ${OpenMP_CXX_FLAGS}")
133
MESSAGE(STATUS "Found OpenMP")
134
SET(CONFIGURED_FEATS "${CONFIGURED_FEATS} OpenMP")
135
SET(features "${features} openmp")
137
MESSAGE(STATUS "OpenMP NOT found")
138
SET(ENABLE_OPENMP OFF)
139
SET(DISABLED_FEATS "${DISABLED_FEATS} OPENMP")
142
SET(DISABLED_FEATS "${DISABLED_FEATS} OPENMP")
144
#===========================================================
148
IF(GTS_FOUND AND GLIB2_FOUND)
149
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DYADE_GTS ${CMAKE_GTS_CXX_FLAGS}")
150
SET(CMAKE_LD_FLAGS "${CMAKE_LD_FLAGS} ${GTS_LIBRARIES}")
151
INCLUDE_DIRECTORIES(${GTS_INCLUDE_DIR})
152
INCLUDE_DIRECTORIES(${GLIB2_INCLUDE_DIRS})
153
MESSAGE(STATUS "Found GTS")
154
SET(CONFIGURED_FEATS "${CONFIGURED_FEATS} GTS")
155
SET(features "${features} gts")
156
ELSE(GTS_FOUND AND GLIB2_FOUND)
157
MESSAGE(STATUS "GTS NOT found")
158
SET(DISABLED_FEATS "${DISABLED_FEATS} GTS")
160
ENDIF(GTS_FOUND AND GLIB2_FOUND)
162
SET(DISABLED_FEATS "${DISABLED_FEATS} GTS")
164
#===========================================================
166
FIND_PACKAGE(Qt4 COMPONENTS QtCore QtGui QtOpenGL)
170
FIND_PACKAGE(QGLVIEWER)
171
IF(QT4_FOUND AND OPENGL_FOUND AND GLUT_FOUND AND GLIB2_FOUND AND QGLVIEWER_FOUND)
172
SET(GUI_LIBS ${GLUT_LIBRARY} ${OPENGL_LIBRARY} ${QGLVIEWER_LIBRARIES})
173
SET(GUI_SRC_LIB "lib/opengl/GLUtils.cpp")
174
SET(features "${features} qt4 opengl")
175
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DYADE_OPENGL")
176
INCLUDE_DIRECTORIES(${GLIB2_INCLUDE_DIRS})
177
INCLUDE_DIRECTORIES(${QT_INCLUDES})
179
MESSAGE(STATUS "Found GUI-LIBS")
180
SET(CONFIGURED_FEATS "${CONFIGURED_FEATS} GUI")
181
ELSE(QT4_FOUND AND OPENGL_FOUND AND GLUT_FOUND AND GLIB2_FOUND AND QGLVIEWER_FOUND)
182
MESSAGE(STATUS "GUI-LIBS NOT found")
183
SET(DISABLED_FEATS "${DISABLED_FEATS} GUI")
185
ENDIF(QT4_FOUND AND OPENGL_FOUND AND GLUT_FOUND AND GLIB2_FOUND AND QGLVIEWER_FOUND)
187
SET(DISABLED_FEATS "${DISABLED_FEATS} GUI")
189
#===========================================================
190
# This one will automatically enable CGAL
193
MESSAGE(STATUS "PFVFLOW depends on CGAL, attempting to turn ENABLE_CGAL ON")
195
ENDIF (NOT ENABLE_CGAL)
196
ENDIF(ENABLE_PFVFLOW)
197
#===========================================================
202
IF(CGAL_FOUND AND GMP_FOUND AND (NOT("${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1}" MATCHES ".*clang"))) #Check for clang should be removed, when CGAL will be compilable by clang
203
#INCLUDE_DIRECTORIES(${CGAL_INCLUDE_DIR})
204
#INCLUDE_DIRECTORIES(${GMP_INCLUDE_DIR})
205
#INCLUDE_DIRECTORIES(${GMPXX_INCLUDE_DIR})
207
FILE(GLOB CGAL_SRC_LIB "lib/triangulation/*.cpp")
208
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CGAL_DEFINITIONS} -DYADE_CGAL")
209
SET(LINKLIBS "${LINKLIBS};${CGAL_LIBRARIES};${GMP_LIBRARIES};${GMPXX_LIBRARIES};")
210
MESSAGE(STATUS "Found CGAL")
211
SET(CONFIGURED_FEATS "${CONFIGURED_FEATS} CGAL")
214
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DFLOW_ENGINE")
215
SET(CONFIGURED_FEATS "${CONFIGURED_FEATS} PFVflow")
217
SET(DISABLED_FEATS "${DISABLED_FEATS} PFVflow")
218
ENDIF(ENABLE_PFVFLOW)
220
ELSE(CGAL_FOUND AND GMP_FOUND AND (NOT("${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1}" MATCHES ".*clang")))
221
MESSAGE(STATUS "CGAL NOT found")
222
SET(DISABLED_FEATS "${DISABLED_FEATS} CGAL")
225
SET(DISABLED_FEATS "${DISABLED_FEATS} PFVflow")
226
MESSAGE(STATUS "CGAL NOT found: PFVFLOW disabled")
227
ENDIF(ENABLE_PFVFLOW)
229
ENDIF(CGAL_FOUND AND GMP_FOUND AND (NOT("${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1}" MATCHES ".*clang")))
231
SET(DISABLED_FEATS "${DISABLED_FEATS} CGAL")
233
#===========================================================
235
FIND_PACKAGE(Cholmod)
236
FIND_PACKAGE(OpenBlas)
238
IF(CHOLMOD_FOUND AND OPENBLAS_FOUND AND METIS_FOUND)
239
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CGAL_DEFINITIONS} -DLINSOLV -DFLOW_ENGINE")
240
SET(LINKLIBS "${LINKLIBS};${CHOLMOD_LIBRARIES};${AMD_LIBRARY};${CAMD_LIBRARY};${COLAMD_LIBRARY};${CCOLAMD_LIBRARY};${OPENBLAS_LIBRARY};${METIS_LIBRARY}")
241
INCLUDE_DIRECTORIES(${METIS_INCLUDE_DIR} ${CHOLMOD_INCLUDE_DIR})
242
MESSAGE(STATUS "Found Cholmod")
243
MESSAGE(STATUS "Found OpenBlas")
244
MESSAGE(STATUS "Found Metis")
245
SET(CONFIGURED_FEATS "${CONFIGURED_FEATS} LinSolv")
246
ELSE(CHOLMOD_FOUND AND OPENBLAS_FOUND AND METIS_FOUND)
247
MESSAGE(STATUS "CHOLMOD NOT found, LINSOLV disabled")
248
SET(DISABLED_FEATS "${DISABLED_FEATS} LinSolv")
249
SET(ENABLE_LINSOLV OFF)
250
ENDIF(CHOLMOD_FOUND AND OPENBLAS_FOUND AND METIS_FOUND)
252
SET(DISABLED_FEATS "${DISABLED_FEATS} LinSolv")
253
ENDIF(ENABLE_LINSOLV)
254
#===============================================
258
INCLUDE_DIRECTORIES(${GL2PS_INCLUDE_DIR})
259
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DYADE_GL2PS")
260
SET(LINKLIBS "${LINKLIBS};${GL2PS_LIBRARIES};")
261
MESSAGE(STATUS "Found GL2PS")
262
SET(CONFIGURED_FEATS "${CONFIGURED_FEATS} GL2PS")
264
MESSAGE(STATUS "GL2PS NOT found")
265
SET(DISABLED_FEATS "${DISABLED_FEATS} GL2PS")
266
SET(ENABLE_GL2PS OFF)
269
SET(DISABLED_FEATS "${DISABLED_FEATS} GL2PS")
272
INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_DIRS})
273
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/extra/floating_point_utilities_v3)
274
INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR})
276
#===========================================================
278
IF (NOT INSTALL_PREFIX)
279
SET(CMAKE_INSTALL_PREFIX "/usr/local")
280
MESSAGE("Yade will be installed to default path ${CMAKE_INSTALL_PREFIX}, if you want to override it use -DINSTALL_PREFIX option.")
281
ELSE (NOT INSTALL_PREFIX)
282
GET_FILENAME_COMPONENT(CMAKE_INSTALL_PREFIX ${INSTALL_PREFIX} ABSOLUTE)
283
MESSAGE("Yade will be installed to ${CMAKE_INSTALL_PREFIX}")
284
ENDIF (NOT INSTALL_PREFIX)
287
SET (SUFFIX "-${YADE_VERSION}")
290
IF(NOSUFFIX) #For packaging
292
ENDIF(NOSUFFIX) #For packaging
294
IF(NOT LIBRARY_OUTPUT_PATH) #For packaging
295
SET (LIBRARY_OUTPUT_PATH ${CMAKE_INSTALL_LIBDIR})
296
ENDIF(NOT LIBRARY_OUTPUT_PATH) #For packaging
298
IF (NOT runtimePREFIX)
299
SET (runtimePREFIX ${CMAKE_INSTALL_PREFIX})
300
ENDIF (NOT runtimePREFIX)
302
MESSAGE (STATUS "Suffix is set to " ${SUFFIX})
303
MESSAGE (STATUS "LIBRARY_OUTPUT_PATH is set to " ${LIBRARY_OUTPUT_PATH})
304
MESSAGE (STATUS "runtimePREFIX is set to " ${runtimePREFIX})
305
#===========================================================
307
SET(YADE_LIB_PATH ${CMAKE_INSTALL_PREFIX}/${LIBRARY_OUTPUT_PATH}/yade${SUFFIX})
308
SET(YADE_EXEC_PATH ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR})
309
SET(YADE_PY_PATH ${YADE_LIB_PATH}/py)
310
SET(YADE_DOC_PATH ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATAROOTDIR}/doc/yade${SUFFIX})
311
SET(YADE_MAN_PATH ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_MANDIR})
314
SET(CMAKE_SKIP_BUILD_RPATH FALSE)
315
SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
316
SET(CMAKE_INSTALL_RPATH "${YADE_LIB_PATH};${YADE_PY_PATH};${YADE_PY_PATH}/yade/;${YADE_PY_PATH}/yade/qt;${YADE_PY_PATH}/gts")
317
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
319
#===========================================================
321
ADD_SUBDIRECTORY("${CMAKE_SOURCE_DIR}/gui")
323
ADD_SUBDIRECTORY("${CMAKE_SOURCE_DIR}/py")
324
#===========================================================
326
# this is only a temporary hack, headers should be installed in the build-dir directly
327
# perhaps there is a proper way, have to ask
328
IF(NOT EXISTS "${CMAKE_BINARY_DIR}/yade")
329
EXECUTE_PROCESS(COMMAND ln -s ${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR}/yade)
331
#===========================================================
333
FILE(GLOB SRC_CORE "core/*.cpp")
334
FILE(GLOB_RECURSE SRC_PKG "pkg/*.cpp")
335
FILE(GLOB SRC_LIB "lib/*.cpp")
337
SET(SRC_LIB "${SRC_LIB};lib/base/Math.cpp;lib/factory/ClassFactory.cpp;lib/factory/DynLibManager.cpp;lib/multimethods/Indexable.cpp;lib/serialization/Serializable.cpp;lib/pyutil/gil.cpp;core/main/pyboot.cpp;${GUI_SRC_LIB};${CGAL_SRC_LIB}")
339
#===========================================================
342
INCLUDE(CombineSources)
343
COMBINE_SOURCES(${CMAKE_BINARY_DIR}/core "${SRC_CORE}" ${CHUNKSIZE})
344
FILE(GLOB SRC_CORE_COMBINED "${CMAKE_BINARY_DIR}/core.*.cpp")
345
COMBINE_SOURCES(${CMAKE_BINARY_DIR}/pkg "${SRC_PKG}" ${CHUNKSIZE})
346
FILE(GLOB SRC_PKG_COMBINED "${CMAKE_BINARY_DIR}/pkg.*.cpp")
347
COMBINE_SOURCES(${CMAKE_BINARY_DIR}/lib "${SRC_LIB}" ${CHUNKSIZE})
348
FILE(GLOB SRC_LIB_COMBINED "${CMAKE_BINARY_DIR}/lib.*.cpp")
349
ADD_LIBRARY(yade SHARED ${SRC_LIB_COMBINED} ${SRC_CORE_COMBINED} ${SRC_PKG_COMBINED})
351
ADD_LIBRARY(yade SHARED ${SRC_CORE} ${SRC_PKG} ${SRC_LIB})
353
#===========================================================
354
find_python_module(minieigen)
356
MESSAGE(STATUS "Use system minieigen version")
358
MESSAGE(STATUS "Use embedded version of minieigen. Please, consider installing the corresponding package")
360
find_python_module(Tkinter REQUIRED)
361
#===========================================================
363
ADD_LIBRARY(boot SHARED ${CMAKE_CURRENT_SOURCE_DIR}/core/main/pyboot.cpp)
364
SET_TARGET_PROPERTIES(boot PROPERTIES PREFIX "")
365
TARGET_LINK_LIBRARIES(yade ${Boost_LIBRARIES} ${PYTHON_LIBRARIES} ${LINKLIBS} ${LOKI_LIBRARY} -lrt)
366
TARGET_LINK_LIBRARIES(boot yade)
369
TARGET_LINK_LIBRARIES(yade vtkHybrid)
372
TARGET_LINK_LIBRARIES(yade _GLViewer ${GUI_LIBS})
375
#====================================
376
IF (NOT (PY_minieigen))
377
ADD_LIBRARY(miniEigen SHARED py/mathWrap/miniEigen.cpp)
378
SET_TARGET_PROPERTIES(miniEigen PROPERTIES PREFIX "")
379
TARGET_LINK_LIBRARIES(miniEigen ${Boost_LIBRARIES} ${PYTHON_LIBRARIES})
380
INSTALL(TARGETS miniEigen DESTINATION ${YADE_PY_PATH})
381
ENDIF (NOT (PY_minieigen))
382
#====================================
383
#Back compatibility with scons
384
SET (realVersion ${YADE_VERSION})
385
SET (version ${YADE_VERSION})
386
SET (pyExecutable ${PYTHON_EXECUTABLE})
387
SET (profile "default")
388
SET (sourceRoot "${CMAKE_CURRENT_SOURCE_DIR}")
389
#====================================
391
CONFIGURE_FILE(core/main/yade-batch.in "${CMAKE_BINARY_DIR}/bins/yade${SUFFIX}-batch")
392
CONFIGURE_FILE(core/main/main.py.in "${CMAKE_BINARY_DIR}/bins/yade${SUFFIX}")
393
CONFIGURE_FILE(py/config.py.in "${CMAKE_BINARY_DIR}/config.py")
394
CONFIGURE_FILE(py/__init__.py.in "${CMAKE_BINARY_DIR}/__init__.py")
396
#===========================================================
398
INSTALL(PROGRAMS "${CMAKE_BINARY_DIR}/bins/yade${SUFFIX}-batch" DESTINATION ${YADE_EXEC_PATH}/)
399
INSTALL(PROGRAMS "${CMAKE_BINARY_DIR}/bins/yade${SUFFIX}" DESTINATION ${YADE_EXEC_PATH}/)
400
INSTALL(FILES "${CMAKE_BINARY_DIR}/config.py" DESTINATION ${YADE_PY_PATH}/yade/)
401
INSTALL(FILES "${CMAKE_BINARY_DIR}/__init__.py" DESTINATION ${YADE_PY_PATH}/yade/)
402
FILE(GLOB filesPYChecks "${CMAKE_CURRENT_SOURCE_DIR}/scripts/checks-and-tests/checks/*.py")
403
INSTALL(FILES ${filesPYChecks} DESTINATION ${YADE_PY_PATH}/yade/tests/checks)
404
FILE(GLOB filesPYChecksData "${CMAKE_CURRENT_SOURCE_DIR}/scripts/checks-and-tests/checks/data/*")
405
INSTALL(FILES ${filesPYChecksData} DESTINATION ${YADE_PY_PATH}/yade/tests/checks/data)
406
INSTALL(FILES "${CMAKE_CURRENT_SOURCE_DIR}/doc/yade-logo-note.png" DESTINATION "${YADE_DOC_PATH}/img")
408
INSTALL(TARGETS boot DESTINATION "${YADE_PY_PATH}/yade/")
409
INSTALL(TARGETS yade DESTINATION ${YADE_LIB_PATH})
411
#===========================================================
412
MESSAGE(STATUS "===========================================================")
413
MESSAGE(STATUS "Yade configured with following features:${CONFIGURED_FEATS}")
414
MESSAGE(STATUS "Disabled features:${DISABLED_FEATS}")
416
MESSAGE(STATUS "Debug build")
417
SET (debugbuild " (debug build)")
419
MESSAGE(STATUS "Optimized build")
422
MESSAGE(STATUS "CHUNKSIZE is set to " ${CHUNKSIZE})
424
MESSAGE(STATUS "===========================================================")
425
#===========================================================
427
ADD_CUSTOM_TARGET(doc)
428
FILE(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/doc)
429
FILE(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/doc/sphinx)
432
COMMAND rm -rf ${CMAKE_BINARY_DIR}/doc/sphinx/_build
433
COMMAND cp -r ${CMAKE_CURRENT_SOURCE_DIR}/doc/* ${CMAKE_BINARY_DIR}/doc
434
COMMAND PYTHONPATH=${CMAKE_BINARY_DIR}/doc/sphinx ${YADE_EXEC_PATH}/yade${SUFFIX} yadeSphinx.py
435
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/doc/sphinx
436
DEPENDS ${YADE_EXEC_PATH}/yade${SUFFIX}
439
TARGET doc POST_BUILD
440
COMMAND xelatex Yade.tex
441
COMMAND xelatex Yade.tex
442
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/doc/sphinx/_build/latex
443
DEPENDS ${YADE_EXEC_PATH}/yade${SUFFIX} ${CMAKE_BINARY_DIR}/doc/sphinx/_build/latex/Yade.tex
446
TARGET doc POST_BUILD
447
COMMAND rm -rf ${YADE_DOC_PATH}/html
448
COMMAND mv ${CMAKE_BINARY_DIR}/doc/sphinx/_build/html ${YADE_DOC_PATH}/html
449
COMMAND mv ${CMAKE_BINARY_DIR}/doc/sphinx/_build/latex/Yade.pdf ${YADE_DOC_PATH}/
450
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/doc/sphinx/_build/latex
451
DEPENDS ${YADE_EXEC_PATH}/yade${SUFFIX} ${CMAKE_BINARY_DIR}/doc/sphinx/_build/latex/Yade.tex
454
TARGET doc POST_BUILD
455
COMMAND mv ${CMAKE_BINARY_DIR}/doc/sphinx/_build/epub/Yade.epub ${YADE_DOC_PATH}/ || true
456
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/doc/sphinx/_build/latex
457
DEPENDS ${YADE_EXEC_PATH}/yade${SUFFIX} ${CMAKE_BINARY_DIR}/doc/sphinx/_build/latex/Yade.tex
459
#===========================================================
461
ADD_CUSTOM_TARGET(manpage)
463
TARGET manpage POST_BUILD
464
COMMAND help2man ${YADE_EXEC_PATH}/yade${SUFFIX} > yade${SUFFIX}.1
465
COMMAND help2man ${YADE_EXEC_PATH}/yade${SUFFIX}-batch > yade${SUFFIX}-batch.1
466
COMMAND mkdir -p ${YADE_MAN_PATH}
467
COMMAND mv *.1 ${YADE_MAN_PATH}
468
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
469
DEPENDS ${YADE_EXEC_PATH}/yade${SUFFIX} /usr/bin/help2man
471
#===========================================================
472
#Execute standard checks
473
ADD_CUSTOM_TARGET(check)
475
TARGET check POST_BUILD
476
COMMAND ${YADE_EXEC_PATH}/yade${SUFFIX} --test
477
COMMAND ${YADE_EXEC_PATH}/yade${SUFFIX} --check
478
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
479
DEPENDS ${YADE_EXEC_PATH}/yade${SUFFIX}
481
#===========================================================