Increase version to 0.8
[libt2n] / CMakeLists.txt
CommitLineData
ab2a4234
KK
1# Project
2project(libt2n)
4bf435eb 3set(VERSION 0.8)
ab2a4234
KK
4set(PROTOCOL_VERSION 1) # protocol version used (integers, increase version if incompatible)
5set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}")
6
7# CMake
8set(CMAKE_COLOR_MAKEFILE ON)
9cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
10
11# Source package generation
12set(CPACK_SOURCE_GENERATOR TGZ)
13set(CPACK_SOURCE_IGNORE_FILES "~$;\\\\.git;build;build-rpm")
14set(CPACK_SOURCE_PACKAGE_FILE_NAME "${PROJECT_NAME}-${VERSION}")
15
8192a7a0
TJ
16# "make dist" target
17set(ARCHIVE_NAME ${CMAKE_PROJECT_NAME}-${VERSION})
18add_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})
22
ab2a4234
KK
23# Find external packages
24include(FindPkgConfig)
25
26find_package(Boost 1.33 REQUIRED COMPONENTS serialization unit_test_framework)
27include_directories(${Boost_INCLUDE_DIRS})
28
29pkg_check_modules(XMLPP REQUIRED libxml++-2.6>=2.8.1)
30include_directories(${XMLPP_INCLUDE_DIRS})
31link_directories(${XMLPP_LIBRARY_DIRS})
32
33# Documentation
34find_package(Doxygen)
35if(DOXYGEN_FOUND)
36 # Find doxy config
37 message(STATUS "Doxygen found.")
38 set(DOXY_DIR "${CMAKE_SOURCE_DIR}/doc")
39 set(DOXY_CONFIG "${DOXY_DIR}/Doxyfile.in")
40
41 # Copy doxy.config.in
ccb4d3d3 42 set(top_srcdir ${CMAKE_SOURCE_DIR})
ab2a4234
KK
43 configure_file("${DOXY_CONFIG}" "${CMAKE_BINARY_DIR}/doxy.config")
44
45 # Create doc directory
46 add_custom_command(
47 OUTPUT ${CMAKE_BINARY_DIR}/doc
48 COMMAND rm -rf ${CMAKE_BINARY_DIR}/doc/{html,man}
49 COMMAND mkdir -p ${CMAKE_BINARY_DIR}/doc
50 DEPENDS codegen examples examples-codegen src test
51 )
52
53 # Run doxygen
54 add_custom_command(
55 OUTPUT ${CMAKE_BINARY_DIR}/doc/html/index.html
56 COMMAND ${DOXYGEN_EXECUTABLE} "${CMAKE_BINARY_DIR}/doxy.config"
57 DEPENDS "${CMAKE_BINARY_DIR}/doxy.config" "${CMAKE_BINARY_DIR}/doc"
58 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/doc
59 )
60
61 add_custom_target(docs ALL DEPENDS ${CMAKE_BINARY_DIR}/doc/html/index.html)
62
63 message(STATUS "Generating API documentation with Doxygen.")
64else(DOXYGEN_FOUND)
65 message(STATUS "Not generating API documentation.")
66endif(DOXYGEN_FOUND)
67
68# Spec file
69configure_file(${CMAKE_SOURCE_DIR}/libt2n.spec.in ${CMAKE_SOURCE_DIR}/libt2n.spec @ONLY)
70
71# Check include files and availability of libraries for config file
72include(CheckIncludeFiles)
73
74if(Boost_FOUND)
75 set(HAVE_BOOST 1)
76endif()
77if(Boost_SERIALIZATION_FOUND)
78 set(HAVE_BOOST_SERIALIZATION 1)
79endif()
80if(Boost_UNIT_TEST_FRAMEWORK_FOUND)
81 set(HAVE_BOOST_UNIT_TEST_FRAMEWORK 1)
82endif()
83check_include_files(dlfcn.h HAVE_DLFCN_H)
84check_include_files(inttypes.h HAVE_INTTYPES_H)
85check_include_files(memory.h HAVE_MEMORY_H)
86check_include_files(stdint.h HAVE_STDINT_H)
87check_include_files(stdlib.h HAVE_STDLIB_H)
88check_include_files(strings.h HAVE_STRINGS_H)
89check_include_files(string.h HAVE_STRING_H)
90check_include_files(sys/stat.h HAVE_SYS_STAT_H)
91check_include_files(sys/types.h HAVE_SYS_TYPES_H)
92check_include_files(unistd.h HAVE_UNISTD_H)
93set(STDC_HEADER_NAMES
94 assert.h
95 ctype.h
96 errno.h
97 float.h
98 limits.h
99 locale.h
100 math.h
101 setjmp.h
102 signal.h
103 stdarg.h
104 stddef.h
105 stdio.h
106 stdlib.h
107 string.h
108 time.h
109)
110check_include_files("${STDC_HEADER_NAMES}" STDC_HEADERS)
111
112# Config file
113configure_file(${CMAKE_SOURCE_DIR}/config.h.in.cmake ${CMAKE_BINARY_DIR}/config.h)
114include_directories(BEFORE ${CMAKE_BINARY_DIR})
115
116# PkgConfig output
117set(prefix ${CMAKE_INSTALL_PREFIX})
118set(exec_prefix ${CMAKE_INSTALL_PREFIX}/bin)
119set(includedir ${CMAKE_INSTALL_PREFIX}/include)
120set(libdir ${CMAKE_INSTALL_PREFIX}/lib)
121set(bindir ${exec_prefix})
122set(datadir ${CMAKE_INSTALL_PREFIX}/share)
123
124# PkgConfig files
125configure_file(${CMAKE_SOURCE_DIR}/libt2n.pc.in ${CMAKE_BINARY_DIR}/libt2n.pc @ONLY)
126install(FILES ${CMAKE_BINARY_DIR}/libt2n.pc DESTINATION lib/pkgconfig)
127
128# Installation of scripts
7ba38527 129install(PROGRAMS libt2n-gccxml.sh DESTINATION bin)
ab2a4234
KK
130
131# Subdirectories
132set(CPACK_SET_DESTDIR "ON")
133add_subdirectory(src)
134add_subdirectory(test)
ab2a4234 135add_subdirectory(codegen)
7ba38527
KK
136add_subdirectory(examples EXCLUDE_FROM_ALL)
137add_subdirectory(examples-codegen EXCLUDE_FROM_ALL)
ab2a4234
KK
138
139include(CPack)