Switched default packaging format to .tar.bz2
[libt2n] / CMakeLists.txt
CommitLineData
ab2a4234
KK
1# Project
2project(libt2n)
cf902cad 3set(VERSION 0.7)
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
42 configure_file("${DOXY_CONFIG}" "${CMAKE_BINARY_DIR}/doxy.config")
43
44 # Create doc directory
45 add_custom_command(
46 OUTPUT ${CMAKE_BINARY_DIR}/doc
47 COMMAND rm -rf ${CMAKE_BINARY_DIR}/doc/{html,man}
48 COMMAND mkdir -p ${CMAKE_BINARY_DIR}/doc
49 DEPENDS codegen examples examples-codegen src test
50 )
51
52 # Run doxygen
53 add_custom_command(
54 OUTPUT ${CMAKE_BINARY_DIR}/doc/html/index.html
55 COMMAND ${DOXYGEN_EXECUTABLE} "${CMAKE_BINARY_DIR}/doxy.config"
56 DEPENDS "${CMAKE_BINARY_DIR}/doxy.config" "${CMAKE_BINARY_DIR}/doc"
57 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/doc
58 )
59
60 add_custom_target(docs ALL DEPENDS ${CMAKE_BINARY_DIR}/doc/html/index.html)
61
62 message(STATUS "Generating API documentation with Doxygen.")
63else(DOXYGEN_FOUND)
64 message(STATUS "Not generating API documentation.")
65endif(DOXYGEN_FOUND)
66
67# Spec file
68configure_file(${CMAKE_SOURCE_DIR}/libt2n.spec.in ${CMAKE_SOURCE_DIR}/libt2n.spec @ONLY)
69
70# Check include files and availability of libraries for config file
71include(CheckIncludeFiles)
72
73if(Boost_FOUND)
74 set(HAVE_BOOST 1)
75endif()
76if(Boost_SERIALIZATION_FOUND)
77 set(HAVE_BOOST_SERIALIZATION 1)
78endif()
79if(Boost_UNIT_TEST_FRAMEWORK_FOUND)
80 set(HAVE_BOOST_UNIT_TEST_FRAMEWORK 1)
81endif()
82check_include_files(dlfcn.h HAVE_DLFCN_H)
83check_include_files(inttypes.h HAVE_INTTYPES_H)
84check_include_files(memory.h HAVE_MEMORY_H)
85check_include_files(stdint.h HAVE_STDINT_H)
86check_include_files(stdlib.h HAVE_STDLIB_H)
87check_include_files(strings.h HAVE_STRINGS_H)
88check_include_files(string.h HAVE_STRING_H)
89check_include_files(sys/stat.h HAVE_SYS_STAT_H)
90check_include_files(sys/types.h HAVE_SYS_TYPES_H)
91check_include_files(unistd.h HAVE_UNISTD_H)
92set(STDC_HEADER_NAMES
93 assert.h
94 ctype.h
95 errno.h
96 float.h
97 limits.h
98 locale.h
99 math.h
100 setjmp.h
101 signal.h
102 stdarg.h
103 stddef.h
104 stdio.h
105 stdlib.h
106 string.h
107 time.h
108)
109check_include_files("${STDC_HEADER_NAMES}" STDC_HEADERS)
110
111# Config file
112configure_file(${CMAKE_SOURCE_DIR}/config.h.in.cmake ${CMAKE_BINARY_DIR}/config.h)
113include_directories(BEFORE ${CMAKE_BINARY_DIR})
114
115# PkgConfig output
116set(prefix ${CMAKE_INSTALL_PREFIX})
117set(exec_prefix ${CMAKE_INSTALL_PREFIX}/bin)
118set(includedir ${CMAKE_INSTALL_PREFIX}/include)
119set(libdir ${CMAKE_INSTALL_PREFIX}/lib)
120set(bindir ${exec_prefix})
121set(datadir ${CMAKE_INSTALL_PREFIX}/share)
122
123# PkgConfig files
124configure_file(${CMAKE_SOURCE_DIR}/libt2n.pc.in ${CMAKE_BINARY_DIR}/libt2n.pc @ONLY)
125install(FILES ${CMAKE_BINARY_DIR}/libt2n.pc DESTINATION lib/pkgconfig)
126
127# Installation of scripts
7ba38527 128install(PROGRAMS libt2n-gccxml.sh DESTINATION bin)
ab2a4234
KK
129
130# Subdirectories
131set(CPACK_SET_DESTDIR "ON")
132add_subdirectory(src)
133add_subdirectory(test)
ab2a4234 134add_subdirectory(codegen)
7ba38527
KK
135add_subdirectory(examples EXCLUDE_FROM_ALL)
136add_subdirectory(examples-codegen EXCLUDE_FROM_ALL)
ab2a4234
KK
137
138include(CPack)