Added an extended description section.
[dabba.git] / CMakeLists.txt
blobf306966ea7b3e8aad5bb4e351b9098421086c4eb
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(CPACK_GENERATOR "TGZ;DEB")
20 SET(CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/README")
21 SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE")
22 SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CPACK_RESOURCE_FILE_README}")
23 SET(CPACK_PACKAGE_VERSION_MAJOR "0")
24 SET(CPACK_PACKAGE_VERSION_MINOR "1")
25 SET(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}")
26 SET(CPACK_SOURCE_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${CPACK_PACKAGE_VERSION}")
27 SET(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.11.3-3), libcap2 (>= 1:2.22-1.1)")
28 SET(CPACK_PACKAGE_VENDOR "Emmanuel Roullit")
29 SET(CPACK_PACKAGE_CONTACT "${CPACK_PACKAGE_VENDOR} <emmanuel.roullit@gmail.com>")
30 SET(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_SOURCE_DIR}/postinst")
31 SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY
32 "Suite of low-level multithreaded zero-copy network tools.
33  dabba is based on two parts:
34   - dabbad: network task manager and process IPC background queries
35   - dabba: CLI 'à la git' to communicate with the daemon and submit tasks"
37 SET(CPACK_PACKAGE_DESCRIPTION "dabba is a set of multithreaded network tools using zero-copy features.")
38 SET(CPACK_DEBIAN_PACKAGE_PRIORITY "optional")
39 SET(CPACK_DEBIAN_PACKAGE_SECTION "net")
41 INCLUDE(CPack)
42 INCLUDE(CheckBPFAttach)
43 INCLUDE(CheckPFPacket)
44 INCLUDE(CheckStrictAlign)
45 INCLUDE(CheckTxRing)
46 INCLUDE(Pod2Man)
48 ADD_DEFINITIONS(
49         -W
50         -Wextra
51         -Wall
52         -Werror
53         -std=gnu99
54         -O2
55         -D_REENTRANT
56         -D_FORTIFY_SOURCE=2
57         -D_FILE_OFFSET_BITS=64
58         -fstack-protector
61 # Only strip executable on release
62 SET(CMAKE_C_FLAGS_RELEASE "-s")
64 IF(CMAKE_C_COMPILER_ID STREQUAL GNU)
65         ADD_DEFINITIONS(
66                 -pedantic
67                 -pedantic-errors
68                 -z relo
69                 -pie
70         )
71 ENDIF(CMAKE_C_COMPILER_ID STREQUAL GNU)
73 IF (CMAKE_BUILD_TYPE STREQUAL profile)
74         ADD_DEFINITIONS(-g -pg)
75 ENDIF (CMAKE_BUILD_TYPE STREQUAL profile)
77 ENABLE_TESTING()
79 ADD_CUSTOM_TARGET(setcap)
80 ADD_CUSTOM_TARGET(doc)
81 ADD_MANPAGE_TARGET()
83 ADD_SUBDIRECTORY(libdabba)
84 ADD_SUBDIRECTORY(dabbad)
85 ADD_SUBDIRECTORY(dabba)
87 INSTALL(FILES debian/copyright DESTINATION /usr/share/doc/${PROJECT_NAME})