1 cmake_minimum_required(VERSION 2.8)
4 set(PACKAGE_VERSION "0.0.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/clay.texi --output=${CMAKE_CURRENT_BINARY_DIR}/clay.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")
58 find_package(osl REQUIRED)
61 find_package(clan REQUIRED)
62 add_definitions(-DCLAN_LINKED)
65 find_package(candl REQUIRED)
66 add_definitions(-DCANDL_LINKED)
69 find_package(cloog-isl REQUIRED)
70 add_definitions(-DCLOOG_LINKED)
73 find_package(BISON REQUIRED)
74 find_package(FLEX REQUIRED)
75 BISON_TARGET(clay_parser source/parser.y ${CMAKE_CURRENT_BINARY_DIR}/parser.c)
76 FLEX_TARGET(clay_scanner source/scanner.l ${CMAKE_CURRENT_BINARY_DIR}/scanner.c)
77 ADD_FLEX_BISON_DEPENDENCY(clay_scanner clay_parser)
78 include_directories(${CMAKE_CURRENT_BINARY_DIR})
80 # Include directories (to use #include <> instead of #include "")
82 # include/clay/macros.h
83 configure_file("include/clay/macros.h.in" "include/clay/macros.h")
84 include_directories("${CMAKE_CURRENT_BINARY_DIR}/include")
86 include_directories("./include")
91 message(STATUS "C compiler = ${CMAKE_C_COMPILER}")
93 message(STATUS "Mode Release")
95 message(STATUS "Mode Debug")
97 message(STATUS "C flags = ${CMAKE_C_FLAGS}")
102 message(STATUS "---")
110 string(REPLACE "${CMAKE_CURRENT_SOURCE_DIR}/source/clay.c;" "" sources "${sources}") # with ;
111 string(REPLACE "${CMAKE_CURRENT_SOURCE_DIR}/source/clay.c" "" sources "${sources}") # without ;
118 ${BISON_clay_parser_OUTPUTS}
119 ${FLEX_clay_scanner_OUTPUTS}
121 target_link_libraries(clay ${OSL_LIBRARY})
122 target_link_libraries(clay ${CLAN_LIBRARY})
123 target_link_libraries(clay ${CANDL_LIBRARY})
124 target_link_libraries(clay ${CLOOG_ISL_LIBRARY})
125 get_property(clay_lib_location TARGET clay PROPERTY LOCATION)
126 message(STATUS "Add clay library (shared) ${clay_lib_location}")
133 ${BISON_clay_parser_OUTPUTS}
134 ${FLEX_clay_scanner_OUTPUTS}
136 set_target_properties(clay_static PROPERTIES OUTPUT_NAME clay)
137 target_link_libraries(clay_static ${OSL_LIBRARY})
138 target_link_libraries(clay_static ${CLAN_LIBRARY})
139 target_link_libraries(clay_static ${CANDL_LIBRARY})
140 target_link_libraries(clay_static ${CLOOG_ISL_LIBRARY})
141 get_property(clay_static_lib_location TARGET clay_static PROPERTY LOCATION)
142 message(STATUS "Add clay library (static) ${clay_static_lib_location}")
145 # Executables & tests
147 message(STATUS "---") # clay
149 message(STATUS "Add executable clay")
150 add_executable(clay_exe "source/clay.c")
151 set_target_properties(clay_exe PROPERTIES OUTPUT_NAME "clay")
152 target_link_libraries(clay_exe clay_static ${OSL_LIBRARY})
153 target_link_libraries(clay_exe clay_static ${CLAN_LIBRARY})
154 target_link_libraries(clay_exe clay_static ${CANDL_LIBRARY})
155 target_link_libraries(clay_exe clay_static ${CLOOG_ISL_LIBRARY})
158 find_package(PythonInterp)
159 if (PYTHONINTERP_FOUND)
161 message(STATUS "---")
170 foreach(test ${tests})
171 message(STATUS "Add Test ${test}")
174 "${CMAKE_CURRENT_SOURCE_DIR}/tests/check_source_result.py"
177 "${CMAKE_CURRENT_BINARY_DIR}/clay"
181 message(STATUS "---")
188 install(TARGETS clay LIBRARY DESTINATION lib)
189 install(TARGETS clay_static ARCHIVE DESTINATION lib)
190 install(DIRECTORY include/ DESTINATION include FILES_MATCHING PATTERN "*.h")
191 install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/include/" DESTINATION include FILES_MATCHING PATTERN "*.h")
192 install(FILES "${CMAKE_CURRENT_BINARY_DIR}/parser.h" DESTINATION include/clay)
193 install(FILES clay-config.cmake DESTINATION lib/clay)
194 install(TARGETS clay_exe RUNTIME DESTINATION bin)
195 install(DIRECTORY tests DESTINATION share/clay FILES_MATCHING PATTERN "*.c")
200 message(STATUS "You can execute:")
201 message(STATUS " make # To compile clay library & clay")
202 if (PYTHONINTERP_FOUND)
203 message(STATUS " make test # To execute tests")
205 message(STATUS " make install # To install library, include and CMake module")
206 message(STATUS " # If you need root access:")
207 message(STATUS " # sudo make install")
208 message(STATUS " # su -c \"make install\"")
210 message(STATUS " make doxygen # To generate the Doxygen")
213 message(STATUS " make doc # To generate the documentation")
216 message(STATUS "---")