Do not add extra build flags on release.
[dabba.git] / CMakeLists.txt
blob6f0f7c012288e6c9eb504bd8a667fc3de17ec2c4
1 PROJECT(dabba C)
3 # States that CMake required version must be >= 2.6
4 CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
6 SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules)
7 # Activate this when you want to build a shared lib out the the lib/ directory
8 # Bear in mind that no profiling will be available on 64-bit arch when on
9 # SET(BUILD_SHARED_LIBS ON)
11 FIND_PACKAGE(Threads REQUIRED)
13 IF(CMAKE_HAVE_PTHREAD_CREATE)
14         SET(LIBS ${LIBS} ${CMAKE_THREAD_LIBS_INIT})
15 ELSE(CMAKE_HAVE_PTHREAD_CREATE)
16         MESSAGE(FATAL_ERROR "The framework only supports pthread")
17 ENDIF(CMAKE_HAVE_PTHREAD_CREATE)
19 SET(CMAKE_INSTALL_PREFIX "/usr")
21 INCLUDE(FindDebArch)
23 SET(CPACK_SOURCE_GENERATOR "TGZ")
24 SET(CPACK_GENERATOR "TGZ;DEB;RPM")
25 SET(CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/README")
26 SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE")
27 SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CPACK_RESOURCE_FILE_README}")
28 SET(CPACK_PACKAGE_VERSION_MAJOR "0")
29 SET(CPACK_PACKAGE_VERSION_MINOR "1")
30 SET(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}")
31 SET(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}_${CPACK_PACKAGE_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}")
32 SET(CPACK_SOURCE_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}_${CPACK_PACKAGE_VERSION}_orig")
33 SET(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6, libcap2")
34 SET(CPACK_PACKAGE_VENDOR "Emmanuel Roullit")
35 SET(CPACK_PACKAGE_CONTACT "${CPACK_PACKAGE_VENDOR} <emmanuel.roullit@gmail.com>")
36 SET(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_SOURCE_DIR}/debian/postinst;${CMAKE_SOURCE_DIR}/debian/shlibs")
37 SET(CPACK_DEBIAN_PACKAGE_DESCRIPTION
38 "Suite of low-level multithreaded zero-copy network tools.
39  dabba is based on two parts:
40   - dabbad: network task manager and process IPC background queries
41   - dabba: CLI 'à la git' to communicate with the daemon and submit tasks"
43 SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Suite of low-level multithreaded zero-copy network tools.")
44 SET(CPACK_PACKAGE_DESCRIPTION "dabba is a set of multithreaded network tools using zero-copy features.")
45 SET(CPACK_DEBIAN_PACKAGE_PRIORITY "optional")
46 SET(CPACK_DEBIAN_PACKAGE_SECTION "net")
47 SET(CPACK_STRIP_FILES ON)
48 set(CPACK_SOURCE_IGNORE_FILES "/build/;/.git/;/.gitignore;/*.swp;~$;${CPACK_SOURCE_IGNORE_FILES}")
50 INCLUDE(CPack)
51 INCLUDE(CheckBPFAttach)
52 INCLUDE(CheckPFPacket)
53 INCLUDE(CheckStrictAlign)
54 INCLUDE(CheckTxRing)
55 INCLUDE(Pod2Man)
57 SET(CMAKE_C_FLAGS_RELEASE "")
59 ADD_DEFINITIONS(
60         -W
61         -Wextra
62         -Wall
63         -Werror
64         -std=gnu99
65         -O2
66         -D_REENTRANT
67         -D_FORTIFY_SOURCE=2
68         -D_FILE_OFFSET_BITS=64
69         -fstack-protector
72 IF(CMAKE_C_COMPILER_ID STREQUAL GNU)
73         ADD_DEFINITIONS(
74                 -pedantic
75                 -pedantic-errors
76                 -z relo
77                 -pie
78         )
79 ENDIF(CMAKE_C_COMPILER_ID STREQUAL GNU)
81 IF (CMAKE_BUILD_TYPE STREQUAL profile)
82         ADD_DEFINITIONS(-g -pg)
83 ENDIF (CMAKE_BUILD_TYPE STREQUAL profile)
85 ENABLE_TESTING()
87 ADD_CUSTOM_TARGET(setcap)
88 ADD_CUSTOM_TARGET(doc)
89 ADD_MANPAGE_TARGET()
91 ADD_SUBDIRECTORY(libdabba)
92 ADD_SUBDIRECTORY(dabbad)
93 ADD_SUBDIRECTORY(dabba)
95 # HACK
96 INSTALL(FILES debian/copyright debian/changelog.gz DESTINATION share/doc/${PROJECT_NAME})