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")
23 EXECUTE_PROCESS(COMMAND "${CMAKE_SOURCE_DIR}/debian/fixperms.sh")
25 SET(CPACK_SOURCE_GENERATOR "TGZ")
26 SET(CPACK_GENERATOR "TGZ;DEB;RPM")
27 SET(CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/README")
28 SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE")
29 SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CPACK_RESOURCE_FILE_README}")
30 SET(CPACK_PACKAGE_VERSION_MAJOR "0")
31 SET(CPACK_PACKAGE_VERSION_MINOR "4")
32 #SET(CPACK_PACKAGE_VERSION_PATCH "1")
33 #SET(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
34 SET(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}")
35 SET(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}_${CPACK_PACKAGE_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}")
36 SET(CPACK_SOURCE_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}_${CPACK_PACKAGE_VERSION}_orig")
37 SET(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6, libcap2-bin, libprotobuf-c0, libnl-3-200, libnl-genl-3-200, libnl-route-3-200, adduser")
38 SET(CPACK_PACKAGE_VENDOR "Emmanuel Roullit")
39 SET(CPACK_PACKAGE_CONTACT "${CPACK_PACKAGE_VENDOR} <emmanuel.roullit@gmail.com>")
40 SET(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_SOURCE_DIR}/debian/postinst;${CMAKE_SOURCE_DIR}/debian/postrm;${CMAKE_SOURCE_DIR}/debian/shlibs;${CMAKE_SOURCE_DIR}/debian/conffiles")
41 SET(CPACK_DEBIAN_PACKAGE_DESCRIPTION
42 "Suite of low-level multithreaded zero-copy network tools.
43 dabba is based on 4 parts:
44 - libdabba - low-level zero-copy network library
45 - libdabba-rpc - protobuf-based rpc library for dabbad and dabba
46 - dabbad - multi-threaded task manager and IPC query processor
47 - dabba - CLI 'à la git' to communicate with dabbad and submit tasks"
49 SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Suite of low-level multithreaded zero-copy network tools.")
50 SET(CPACK_PACKAGE_DESCRIPTION "dabba is a set of multithreaded network tools using zero-copy features.")
51 SET(CPACK_DEBIAN_PACKAGE_PRIORITY "optional")
52 SET(CPACK_DEBIAN_PACKAGE_SECTION "net")
53 SET(CPACK_STRIP_FILES ON)
54 set(CPACK_SOURCE_IGNORE_FILES "/build/;/.git/;/.gitignore;/*.swp;~$;${CPACK_SOURCE_IGNORE_FILES}")
57 INCLUDE(CheckBPFAttach)
58 INCLUDE(CheckPFPacket)
59 INCLUDE(CheckStrictAlign)
63 SET(CMAKE_C_FLAGS_RELEASE "")
74 -D_FILE_OFFSET_BITS=64
75 -DDABBA_VERSION="${CPACK_PACKAGE_VERSION}"
79 IF(CMAKE_C_COMPILER_ID STREQUAL GNU)
86 ENDIF(CMAKE_C_COMPILER_ID STREQUAL GNU)
88 IF (CMAKE_BUILD_TYPE STREQUAL profile)
89 ADD_DEFINITIONS(-g -pg)
90 ENDIF (CMAKE_BUILD_TYPE STREQUAL profile)
94 ADD_CUSTOM_TARGET(setcap)
95 ADD_CUSTOM_TARGET(doc)
98 ADD_SUBDIRECTORY(libdabba)
99 ADD_SUBDIRECTORY(libdabba-rpc)
100 ADD_SUBDIRECTORY(dabbad)
101 ADD_SUBDIRECTORY(dabba)
104 INSTALL(FILES debian/copyright debian/changelog.gz DESTINATION share/doc/${PROJECT_NAME})