B. Ouharrou, G Terre: Repair Gauss weighting factor of I.A.
[libgpiv.git] / CMakeLists.txt
blobbdd744c3823a958bf76325b942c4b9234c4ba1db
1 cmake_minimum_required( VERSION 2.6 )
2 project( libgpiv )
3 set (LIBGPIV_MAJOR_VERSION 0)
4 set (LIBGPIV_MINOR_VERSION 6)
5 set (LIBGPIV_MICRO_VERSION 1)
6 set (LIBGPIV_SO_VERSION 4)
8 # set up custom cmake module path
9 set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/CMake/Modules)
10 include(${CMAKE_SOURCE_DIR}/CMake/GpivUtilities.cmake)
12 set( CMAKE_VERBOSE_MAKEFILE on )
14 find_package( FFTW REQUIRED )
15 include_directories( ${FFTW_INCLUDE_DIRS} )
16 set( LIBS ${LIBS} ${FFTW_LIBRARIES} )
18 find_package( GSL )
20 find_package( HDF5 REQUIRED )
21 include_directories( ${HDF5_INCLUDE_DIRS} )
22 set( LIBS ${LIBS} ${HDF5_LIBRARIES} )
24 find_package( Glib REQUIRED )
25 include_directories( ${Glib_INCLUDE_DIRS} )
26 set( LIBS ${LIBS} ${Glib_LIBRARIES} )
28 find_package( PNG )
29 include_directories( ${PNG_INCLUDE_DIR} )
30 set( LIBS ${LIBS} ${PNG_LIBRARIES} )
32 # find_package( netpbm )
34 include_directories( ${MPI_INCLUDE_PATH} )
35 set( LIBS ${LIBS} ${MPI_LIBRARY} )
36 option( LGPIV_ENABLE_MPI "Parallel processing on distributed memory systems" OFF )
37 if(LGPIV_ENABLE_MPI)
38   add_definitions(-DENABLE_MPI)
39   find_package( MPI )
40 endif()
41 set(_PAR_ERROR
42   "ENABLE_@PKG@ is true, but @PKG@ cannot be found.\n"
43   "If you have @PKG@ installed on your system, edit the variables\n"
44   "@PKG@_INCLUDE_DIR and @PKG@_LIBRARY in the cache, else disable the\n"
45   "setting USE_@PKG@."
46   )
47 if(LGPIV_ENABLE_MPI AND NOT MPI_FOUND)
48   string(REPLACE "@PKG@" "MPI" MPI_ERROR "${_PAR_ERROR}")
49   message(SEND_ERROR "${MPI_ERROR}")
50 endif()
52 option( LGPIV_ENABLE_OMP "Multi-core parallel processing on shared memory systems" ON )
53 if(LGPIV_ENABLE_OMP)
54   add_definitions(-DENABLE_OMP)
55   find_package( OpenMP REQUIRED )
56   add_definitions(${OpenMP_C_FLAGS})
57   set( LIBS ${LIBS} ${OpenMP_C_FLAGS} )
58 #  message( "link OMP with ${OpenMP_C_FLAGS}" )
59 endif()
61 option( LGPIV_ENABLE_CAM "IEEE 1394 (Firewire) camera for recording" OFF )
62 if(LGPIV_ENABLE_CAM)
63   add_definitions(-DENABLE_CAM)
64   find_package( Raw1394 REQUIRED )
65   find_package( Dc1394 REQUIRED )
66 endif()
68 option( LGPIV_ENABLE_TRIG "Triggering of laser puls with camera. Needs RTAI-enabled kernel" OFF )
69 if(LGPIV_ENABLE_TRIG)
70   add_definitions(-DENABLE_TRIG)
71 endif()
73 # check_include_files( fftw.h hdf5.h )
75 #file (GLOB SRC lib/*.c)
76 # or:
77 include( files.cmake )
79 # message ("src dir = ${PROJECT_SOURCE_DIR}" )
80 include_directories( ${PROJECT_SOURCE_DIR}/include )
81 add_library( gpiv SHARED ${SRC} )
82 target_link_libraries( gpiv ${LIBS} )
83 install_targets(/lib gpiv )
85 add_library( gpiv-static STATIC ${SRC} )
86 target_link_libraries( gpiv-static ${LIBS} )
87 install_targets(/lib gpiv-static )
89 set_target_properties(
90   gpiv
91   gpiv-static
92   PROPERTIES
93   VERSION ${LIBGPIV_MAJOR_VERSION}.${LIBGPIV_MINOR_VERSION}.${LIBGPIV_MICRO_VERSION}
94   SOVERSION ${LIBGPIV_SO_VERSION}
95   )
97 ## file (GLOB MAIN_HDR include/*.h include/gpiv/*.h)
98 install (FILES include/gpiv.h DESTINATION include)
99 file (GLOB HDRS include/gpiv/*.h)
100 install (FILES ${HDRS} DESTINATION include/gpiv)
103 # API documentation
104 option(LGPIV_ENABLE_DOXYGEN_DOCS "Doxygen API documentation" OFF)
105 doxygen_format( HTML ON )
106 doxygen_format( XML OFF )
107 doxygen_format( LATEX OFF )
108 if ( LGPIV_ENABLE_DOXYGEN_DOCS )
109   find_package( Doxygen )
110   if ( DOXYGEN_FOUND )
111     configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY )
112     configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/doxygen_header.html.in ${CMAKE_CURRENT_BINARY_DIR}/doxygen_header.html @ONLY )
113     configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/doxygen_footer.html.in ${CMAKE_CURRENT_BINARY_DIR}/doxygen_footer.html @ONLY )
114     configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/doxygen_stylesheet.css.in ${CMAKE_CURRENT_BINARY_DIR}/doxygen_stylesheet.css @ONLY )
115     add_custom_target( doc
116       ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
117       WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
118       COMMENT "Generating API documentation with Doxygen" VERBATIM
119       )
121   add_custom_target( apidoc ${DOXYGEN_CMD_STRING} )
123   set( LGPIV_INSTALL_DOC_PATH share/doc/${PROJECT_NAME}/doc CACHE STRING "directory where docs will be installed")
124   mark_as_advanced ( LGPIV_INSTALL_DOC_PATH )
125 #  message("install doc path: "${LGPIV_INSTALL_DOC_PATH})
126 #  message( "html = "${ENABLE_DOXYGEN_DOCS_HTML} )
127   if ( ENABLE_DOXYGEN_DOCS_HTML )
128     install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html/ DESTINATION ${LGPIV_INSTALL_DOC_PATH}/html/ COMPONENT apidoc )
129   endif( ENABLE_DOXYGEN_DOCS_HTML )
131 #  message( "xml = "${ENABLE_DOXYGEN_DOCS_XML} )
132   if ( ENABLE_DOXYGEN_DOCS_XML )
133     install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/xml/ DESTINATION ${LGPIV_INSTALL_DOC_PATH}/xml/ COMPONENT apidoc )
134   endif( ENABLE_DOXYGEN_DOCS_XML )
136 #  message( "latex = "${ENABLE_DOXYGEN_DOCS_LATEX} )
137   if ( ENABLE_DOXYGEN_DOCS_LATEX )
138     install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/latex/ DESTINATION ${LGPIV_INSTALL_DOC_PATH}/latex COMPONENT apidoc )
139   endif( ENABLE_DOXYGEN_DOCS_LATEX )
141   endif(DOXYGEN_FOUND)
142 endif(LGPIV_ENABLE_DOXYGEN_DOCS)
144 # install configuration file gpiv.conf
145 option( LGPIV_INSTALL_SYSCONFIG "Install system wide configuration (needs admin privileges)" ON )
146 if( LGPIV_INSTALL_SYSCONFIG )
147   set( SYSCONFIG_INSTALL_DIR /etc/ )
148   install( FILES ${CMAKE_CURRENT_SOURCE_DIR}/gpiv.conf DESTINATION ${SYSCONFIG_INSTALL_DIR} )
149 endif( LGPIV_INSTALL_SYSCONFIG )
151 # uninstall target
152 configure_file(
153   "${CMAKE_SOURCE_DIR}/CMake/Modules/cmake_uninstall.cmake.in"
154   "${CMAKE_BINARY_DIR}/cmake_uninstall.cmake"
155   @ONLY
156   )
158 add_custom_target(uninstall
159   "${CMAKE_COMMAND}" -P "${CMAKE_BINARY_DIR}/cmake_uninstall.cmake"
160   )
162 option( LGPIV_ENABLE_DEBUG "Debug mode for verbose behaviour" OFF )
163 if(LGPIV_ENABLE_DEBUG)
164   add_definitions(-DDEBUG)
165 endif()