4 set(PROTOCOL_VERSION 1) # protocol version used (integers, increase version if incompatible)
5 set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}")
8 set(CMAKE_COLOR_MAKEFILE ON)
9 cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
11 # Source package generation
12 set(CPACK_SOURCE_GENERATOR TGZ)
13 set(CPACK_SOURCE_IGNORE_FILES "~$;\\\\.git;build;build-rpm")
14 set(CPACK_SOURCE_PACKAGE_FILE_NAME "${PROJECT_NAME}-${VERSION}")
17 set(ARCHIVE_NAME ${CMAKE_PROJECT_NAME}-${VERSION})
18 add_custom_target(dist
19 COMMAND git archive --prefix=${ARCHIVE_NAME}/ HEAD
20 | bzip2 > ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar.bz2
21 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
23 # Find external packages
24 include(FindPkgConfig)
26 find_package(Boost 1.33 REQUIRED COMPONENTS serialization unit_test_framework)
27 include_directories(${Boost_INCLUDE_DIRS})
29 pkg_check_modules(XMLPP REQUIRED libxml++-2.6>=2.8.1)
30 include_directories(${XMLPP_INCLUDE_DIRS})
31 link_directories(${XMLPP_LIBRARY_DIRS})
34 option(DOCUMENTATION "Generate API documentation with Doxygen" ON)
36 if(DOXYGEN_FOUND AND DOCUMENTATION)
38 message(STATUS "Doxygen found.")
39 set(DOXY_DIR "${CMAKE_SOURCE_DIR}/doc")
40 set(DOXY_CONFIG "${DOXY_DIR}/Doxyfile.in")
43 set(top_srcdir ${CMAKE_SOURCE_DIR})
44 configure_file("${DOXY_CONFIG}" "${CMAKE_BINARY_DIR}/doxy.config")
46 # Create doc directory
48 OUTPUT ${CMAKE_BINARY_DIR}/doc
49 COMMAND rm -rf ${CMAKE_BINARY_DIR}/doc/{html,man}
50 COMMAND mkdir -p ${CMAKE_BINARY_DIR}/doc
51 DEPENDS codegen examples examples-codegen src test
56 OUTPUT ${CMAKE_BINARY_DIR}/doc/html/index.html
57 COMMAND ${DOXYGEN_EXECUTABLE} "${CMAKE_BINARY_DIR}/doxy.config"
58 DEPENDS "${CMAKE_BINARY_DIR}/doxy.config" "${CMAKE_BINARY_DIR}/doc"
59 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/doc
62 add_custom_target(docs ALL DEPENDS ${CMAKE_BINARY_DIR}/doc/html/index.html)
64 message(STATUS "Generating API documentation with Doxygen.")
65 else(DOXYGEN_FOUND AND DOCUMENTATION)
66 message(STATUS "Not generating API documentation.")
67 endif(DOXYGEN_FOUND AND DOCUMENTATION)
70 configure_file(${CMAKE_SOURCE_DIR}/libt2n.spec.in ${CMAKE_SOURCE_DIR}/libt2n.spec @ONLY)
72 # Check include files and availability of libraries for config file
73 include(CheckIncludeFiles)
78 if(Boost_SERIALIZATION_FOUND)
79 set(HAVE_BOOST_SERIALIZATION 1)
81 if(Boost_UNIT_TEST_FRAMEWORK_FOUND)
82 set(HAVE_BOOST_UNIT_TEST_FRAMEWORK 1)
84 check_include_files(dlfcn.h HAVE_DLFCN_H)
85 check_include_files(inttypes.h HAVE_INTTYPES_H)
86 check_include_files(memory.h HAVE_MEMORY_H)
87 check_include_files(stdint.h HAVE_STDINT_H)
88 check_include_files(stdlib.h HAVE_STDLIB_H)
89 check_include_files(strings.h HAVE_STRINGS_H)
90 check_include_files(string.h HAVE_STRING_H)
91 check_include_files(sys/stat.h HAVE_SYS_STAT_H)
92 check_include_files(sys/types.h HAVE_SYS_TYPES_H)
93 check_include_files(unistd.h HAVE_UNISTD_H)
111 check_include_files("${STDC_HEADER_NAMES}" STDC_HEADERS)
114 configure_file(${CMAKE_SOURCE_DIR}/config.h.in.cmake ${CMAKE_BINARY_DIR}/config.h)
115 include_directories(BEFORE ${CMAKE_BINARY_DIR})
118 set(prefix ${CMAKE_INSTALL_PREFIX})
119 set(exec_prefix ${CMAKE_INSTALL_PREFIX}/bin)
120 set(includedir ${CMAKE_INSTALL_PREFIX}/include)
121 set(libdir ${CMAKE_INSTALL_PREFIX}/lib)
122 set(bindir ${exec_prefix})
123 set(datadir ${CMAKE_INSTALL_PREFIX}/share)
126 configure_file(${CMAKE_SOURCE_DIR}/libt2n.pc.in ${CMAKE_BINARY_DIR}/libt2n.pc @ONLY)
127 install(FILES ${CMAKE_BINARY_DIR}/libt2n.pc DESTINATION lib/pkgconfig)
129 # Installation of scripts
130 install(PROGRAMS libt2n-gccxml.sh DESTINATION bin)
133 set(CPACK_SET_DESTDIR "ON")
134 add_subdirectory(src)
135 add_subdirectory(test)
136 add_subdirectory(codegen)
137 add_subdirectory(examples EXCLUDE_FROM_ALL)
138 add_subdirectory(examples-codegen EXCLUDE_FROM_ALL)