# ================================================================= # # # # # # ## # #### ##### ## # ###### ##### # # # # # # # # # # # # # # # # # # # # # # # # ##### # # # # # # # ##### # # # # # # # ## # # # # # ## # # # # # #### # # # # ###### # # # --- The NorNet Testbed for Multi-Homed Systems --- # https://www.nntb.no # ================================================================= # # High-Performance Connectivity Tracer (HiPerConTracer) # Copyright (C) 2015-2020 by Thomas Dreibholz # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # Contact: dreibh@simula.no CMAKE_MINIMUM_REQUIRED(VERSION 3.0.2) PROJECT(hipercontracer LANGUAGES C CXX) SET(BUILD_MAJOR "1") SET(BUILD_MINOR "4") SET(BUILD_PATCH "9") SET(BUILD_VERSION ${BUILD_MAJOR}.${BUILD_MINOR}.${BUILD_PATCH}) SET(CMAKE_CXX_STANDARD 14) SET(CMAKE_CXX_STANDARD_REQUIRED ON) SET(CMAKE_CXX_EXTENSIONS OFF) ############################################################################# # INSTALLATION_DIRECTORIES ############################################################################# # See: https://cmake.org/cmake/help/v3.0/module/GNUInstallDirs.html INCLUDE(GNUInstallDirs) ################################################# # PACKAGING ################################################# SET(CPACK_SOURCE_GENERATOR "TXZ") SET(CPACK_SOURCE_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${BUILD_MAJOR}.${BUILD_MINOR}.${BUILD_PATCH}") SET(CPACK_SOURCE_IGNORE_FILES "${PROJECT_SOURCE_DIR}/${CMAKE_PROJECT_NAME}-*;${PROJECT_SOURCE_DIR}/${CMAKE_PROJECT_NAME}_*;/build/;/.git/;/config.log;/CMakeFiles/;CMakeCache.txt$;.cmake$;.tar.gz$;/_CPack_Packages;/Makefile$;~$;/build-deb;/clean-deb;/filter-empty-entries;/make-symbols;/make-ppa;/make-deb;/debian.conf;/make-rpm;/rpm.conf;${CPACK_SOURCE_IGNORE_FILES}") INCLUDE(CPack) ADD_CUSTOM_TARGET(dist COMMAND ${CMAKE_MAKE_PROGRAM} clean package_source) INCLUDE(CheckIncludeFile) INCLUDE(CheckStructHasMember) ################################################# # UNINSTALL ################################################# IF(NOT TARGET uninstall) configure_file( "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" IMMEDIATE @ONLY) ADD_CUSTOM_TARGET(uninstall COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake) ENDIF() ################################################# # OS DEPENDENT ################################################# IF (${CMAKE_SYSTEM_NAME} MATCHES "Linux") MESSAGE(STATUS ${CMAKE_SYSTEM_NAME} " supported") FIND_LIBRARY(SCTP_LIB sctp) ELSEIF (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") MESSAGE(STATUS ${CMAKE_SYSTEM_NAME} " supported") SET(CMAKE_REQUIRED_INCLUDES "/usr/local/include" "/usr/include") SET(CMAKE_LIBRARY_PATH "/usr/local/lib") INCLUDE_DIRECTORIES("/usr/local/include") ELSEIF (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") MESSAGE(STATUS ${CMAKE_SYSTEM_NAME} " supported") SET(CMAKE_REQUIRED_INCLUDES "/usr/local/include" "/usr/include" "/usr/local/opt/openssl/include") SET(CMAKE_LIBRARY_PATH "/usr/local/lib") INCLUDE_DIRECTORIES("/usr/local/include" "/usr/local/opt/openssl/include") ELSEIF (${CMAKE_SYSTEM_NAME} MATCHES "NetBSD") MESSAGE(STATUS ${CMAKE_SYSTEM_NAME} " supported") LIST(APPEND neat_headers neat_bsd.h) LIST(APPEND neat_sources neat_bsd.c) SET(CMAKE_REQUIRED_INCLUDES "/usr/pkg/include" "/usr/include" "/usr/local/include") SET(CMAKE_LIBRARY_PATH "/usr/local/lib") INCLUDE_DIRECTORIES("/usr/pkg/include" "/usr/local/include") ELSEIF (${CMAKE_SYSTEM_NAME} MATCHES "NetBSD") MESSAGE(STATUS ${CMAKE_SYSTEM_NAME} " supported") ELSE() MESSAGE(FATAL_ERROR ${CMAKE_SYSTEM_NAME} " not supported (yet?)") ENDIF() ############################################################################# # CHECK STRUCT MEMBERS ############################################################################# CHECK_STRUCT_HAS_MEMBER("struct sockaddr" "sa_len" "sys/types.h;sys/socket.h" HAVE_SA_LEN) IF (HAVE_SA_LEN) MESSAGE(STATUS "HAVE_SA_LEN") ADD_DEFINITIONS(-DHAVE_SA_LEN) ENDIF() CHECK_STRUCT_HAS_MEMBER("struct sockaddr_in" "sin_len" "sys/types.h;netinet/in.h" HAVE_SIN_LEN) IF (HAVE_SIN_LEN) MESSAGE(STATUS "HAVE_SIN_LEN") ADD_DEFINITIONS(-DHAVE_SIN_LEN) ENDIF() CHECK_STRUCT_HAS_MEMBER("struct sockaddr_in6" "sin6_len" "sys/types.h;netinet/in.h" HAVE_SIN6_LEN) IF (HAVE_SIN6_LEN) MESSAGE(STATUS "HAVE_SIN6_LEN") ADD_DEFINITIONS(-DHAVE_SIN6_LEN) ENDIF() CHECK_STRUCT_HAS_MEMBER("struct sockaddr_storage" "ss_len" "sys/types.h;sys/socket.h" HAVE_SS_LEN) IF (HAVE_SS_LEN) MESSAGE(STATUS "HAVE_SS_LEN") ADD_DEFINITIONS(-DHAVE_SS_LEN) ENDIF() ############################################################################# # REQUIREMENTS ############################################################################# # ###### Threads ############################################################ FIND_PACKAGE(Threads REQUIRED) # ###### Boost ############################################################## FIND_PACKAGE(Boost REQUIRED COMPONENTS log date_time system thread iostreams filesystem program_options) IF (NOT Boost_FOUND) MESSAGE(FATAL_ERROR "Cannot find Boost libraries!") ELSE() INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS}) ENDIF() ADD_DEFINITIONS(-DBOOST_ALL_DYN_LINK) # <<-- Required to handle BOOST Log link problem! ############################################################################# # SUBDIRECTORIES ############################################################################# ADD_SUBDIRECTORY(src)