1 cmake_minimum_required(VERSION 2.8)
4 set(PACKAGE_VERSION "0.7.1")
5 set(top_srcdir "${CMAKE_CURRENT_SOURCE_DIR}")
7 set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
10 # User's settings - C Flags
17 set(CMAKE_C_FLAGS "-O3")
18 # Debug # valgrind --show-reachable=yes --leak-check=full -v exe
20 set(CMAKE_C_FLAGS "-O0 -g3")
23 # User's settings - General C Flags
24 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -std=c99 -pedantic")
30 configure_file("doc/Doxyfile.in" "Doxyfile")
33 ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
34 WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
35 COMMENT "Generating API documentation with Doxygen" VERBATIM
38 message (STATUS "Doxygen not found :( API documentation can not be built")
44 find_program(texi2pdf_exe texi2pdf)
48 ${texi2pdf_exe} ${CMAKE_CURRENT_SOURCE_DIR}/doc/clan.texi --output=${CMAKE_CURRENT_BINARY_DIR}/clan.pdf
49 WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
50 COMMENT "Generating documentation (pdf) (with texi2pdf)" VERBATIM
53 message (STATUS "texi2pdf not found :( Documentation can not be built")
57 find_program(pdflatex_exe pdflatex)
59 file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/doc/reference_card DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
62 ${pdflatex_exe} ${CMAKE_CURRENT_BINARY_DIR}/reference_card/reference_card.tex
63 WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/reference_card"
64 COMMENT "Generating Clan reference card (pdf) (with pdflatex)" VERBATIM
67 message (STATUS "pdflatex not found =( Clan reference card can not be built")
72 find_package(osl REQUIRED)
75 find_package(BISON REQUIRED)
76 find_package(FLEX REQUIRED)
77 BISON_TARGET(clan_parser source/parser.y ${CMAKE_CURRENT_BINARY_DIR}/parser.c)
78 FLEX_TARGET(clan_scanner source/scanner.l ${CMAKE_CURRENT_BINARY_DIR}/scanner.c)
79 ADD_FLEX_BISON_DEPENDENCY(clan_scanner clan_parser)
80 include_directories(${CMAKE_CURRENT_BINARY_DIR})
82 # Include directories (to use #include <> instead of #include "")
84 # include/clan/macros.h
85 configure_file("include/clan/macros.h.in" "include/clan/macros.h")
86 include_directories("${CMAKE_CURRENT_BINARY_DIR}/include")
88 include_directories("./include")
93 message(STATUS "C compiler = ${CMAKE_C_COMPILER}")
95 message(STATUS "Mode Release")
97 message(STATUS "Mode Debug")
99 message(STATUS "C flags = ${CMAKE_C_FLAGS}")
104 message(STATUS "---")
112 string(REPLACE "${CMAKE_CURRENT_SOURCE_DIR}/source/clan.c;" "" sources "${sources}") # with ;
113 string(REPLACE "${CMAKE_CURRENT_SOURCE_DIR}/source/clan.c" "" sources "${sources}") # without ;
120 ${BISON_clan_parser_OUTPUTS}
121 ${FLEX_clan_scanner_OUTPUTS}
123 target_link_libraries(clan ${OSL_LIBRARY})
124 get_property(clan_lib_location TARGET clan PROPERTY LOCATION)
125 message(STATUS "Add clan library (shared) ${clan_lib_location}")
132 ${BISON_clan_parser_OUTPUTS}
133 ${FLEX_clan_scanner_OUTPUTS}
135 set_target_properties(clan_static PROPERTIES OUTPUT_NAME clan)
136 target_link_libraries(clan_static ${OSL_LIBRARY})
137 get_property(clan_static_lib_location TARGET clan_static PROPERTY LOCATION)
138 message(STATUS "Add clan library (static) ${clan_static_lib_location}")
141 # Executables & tests
143 message(STATUS "---") # clan
145 message(STATUS "Add executable clan")
146 add_executable(clan_exe "source/clan.c")
147 set_target_properties(clan_exe PROPERTIES OUTPUT_NAME "clan")
148 target_link_libraries(clan_exe clan_static ${OSL_LIBRARY})
151 find_package(PythonInterp)
152 if (PYTHONINTERP_FOUND)
154 message(STATUS "---")
163 foreach(test ${tests})
164 message(STATUS "Add Test ${test}")
165 if("${test}" MATCHES "autoscop")
168 "${CMAKE_CURRENT_SOURCE_DIR}/tests/check_source_result.py"
171 "${CMAKE_CURRENT_BINARY_DIR}/clan"
177 "${CMAKE_CURRENT_SOURCE_DIR}/tests/check_source_result.py"
180 "${CMAKE_CURRENT_BINARY_DIR}/clan"
185 message(STATUS "---")
192 install(TARGETS clan LIBRARY DESTINATION lib)
193 install(TARGETS clan_static ARCHIVE DESTINATION lib)
194 install(DIRECTORY include/ DESTINATION include FILES_MATCHING PATTERN "*.h")
195 install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/include/" DESTINATION include FILES_MATCHING PATTERN "*.h")
196 install(FILES "${CMAKE_CURRENT_BINARY_DIR}/parser.h" DESTINATION include/clan)
197 install(FILES clan-config.cmake DESTINATION lib/clan)
198 install(TARGETS clan_exe RUNTIME DESTINATION bin)
203 message(STATUS "You can execute:")
204 message(STATUS " make # To compile clan library & clan")
205 if (PYTHONINTERP_FOUND)
206 message(STATUS " make test # To execute tests")
208 message(STATUS " make install # To install library, include and CMake module")
209 message(STATUS " # If you need root access:")
210 message(STATUS " # sudo make install")
211 message(STATUS " # su -c \"make install\"")
213 message(STATUS " make doxygen # To generate the Doxygen")
216 message(STATUS " make doc # To generate the documentation")
219 message(STATUS " make ref_card # To generate Clan reference card")
222 message(STATUS "---")