mirror of https://github.com/ntop/n2n.git
Browse Source
It is difficult to maintain one build system, let alone two - especially if one build system is known to be better maintained and the other build system continues to be used - with bug and feature requests raised against it. The maintainers are aware that there are people using the CMake system, but believe that the extra maintainability of only having one build system, combined with the knowledge that the current CI system demonstrates that all supported architectures are working with the Makefiles make the use of these Makefiles a more sustainable direction.pull/1093/head
Hamish Coleman
2 years ago
13 changed files with 11 additions and 655 deletions
@ -1,45 +0,0 @@ |
|||||
# Build project. |
|
||||
# |
|
||||
# The script assumes that it will be called from inside the project directory. |
|
||||
# |
|
||||
# Usage: .ci\build-project.ps1 [vcpkg-directory [build-directory-name]] |
|
||||
# - vcpkg-directory: Optional full path to Vcpkg directory. Default: $HOME\vcpkg |
|
||||
# - build-directory-name: Optional name of build directory. Default: build. |
|
||||
# Can only be set of vcpkg-directory is set as well. |
|
||||
# |
|
||||
# Example 1: .ci\build-project.ps1 |
|
||||
# Example 2: .ci\build-project.ps1 $HOME\vcpkg-clang |
|
||||
# Example 3: .ci\build-project.ps1 $HOME\vcpkg-clang build-clang |
|
||||
|
|
||||
$ErrorActionPreference="Stop" |
|
||||
|
|
||||
$VCPKG_DIR=$args[0] |
|
||||
$BUILD_DIR=$args[1] |
|
||||
|
|
||||
if ($null -eq $VCPKG_DIR) { $VCPKG_DIR="$HOME\vcpkg" } |
|
||||
if ($null -eq $BUILD_DIR) { $BUILD_DIR="build" } |
|
||||
|
|
||||
# only pass toolchain file to CMake if Vcpkg is installed |
|
||||
if (Test-Path "$VCPKG_DIR" -PathType Container) { |
|
||||
$TOOLCHAIN="$VCPKG_DIR\scripts\buildsystems\vcpkg.cmake" |
|
||||
} else { |
|
||||
$TOOLCHAIN="False" |
|
||||
} |
|
||||
|
|
||||
Write-Host "---- build-project.ps1 ----" |
|
||||
Write-Host "VCPKG_DIR: $VCPKG_DIR" |
|
||||
Write-Host "BUILD_DIR: $BUILD_DIR" |
|
||||
Write-Host "CMAKE_TOOLCHAIN_FILE: $TOOLCHAIN" |
|
||||
Write-Host "---------------------------" |
|
||||
|
|
||||
if (-not (Get-Command cmake -ErrorAction SilentlyContinue)) { |
|
||||
New-Alias -Name cmake -Value "$Env:ProgramFiles\CMake\bin\cmake.exe" |
|
||||
} |
|
||||
|
|
||||
New-Item -Name $BUILD_DIR -ItemType Directory |
|
||||
Push-Location $BUILD_DIR |
|
||||
$ErrorActionPreference = "Stop"; |
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DVCPKG_TARGET_TRIPLET=x64-windows -DCMAKE_TOOLCHAIN_FILE="$TOOLCHAIN" .. |
|
||||
cmake --build . --config Release |
|
||||
if ($LASTEXITCODE) { Throw "BUILD FAILED!" } |
|
||||
Pop-Location |
|
@ -1,38 +0,0 @@ |
|||||
|
|
||||
# Build Vcpkg and install dependency packages. |
|
||||
# |
|
||||
# Usage: .ci\install-vcpkg.ps1 <project directory> [vcpkg directory name] |
|
||||
# - project directory: Path to the project sources where the .vcpkg file is located. |
|
||||
# - vcpkg directory name: optional name of directory where Vcpkg will be clone'd into |
|
||||
# |
|
||||
# Example 1: .ci\install-vcpkg.ps1 $Env:GITHUB_WORKSPACE |
|
||||
# Example 2: .ci\install-vcpkg.ps1 $Env:APPVEYOR_BUILD_FOLDER vcpkg-msvc |
|
||||
|
|
||||
$ErrorActionPreference="Stop" |
|
||||
|
|
||||
if ($args.Count -lt 1) { Exit 1 } |
|
||||
|
|
||||
$PROJECT_DIR=$args[0] |
|
||||
$VCPKG_DIR=$args[1] |
|
||||
|
|
||||
if ($null -eq $VCPKG_DIR) { $VCPKG_DIR="vcpkg" } |
|
||||
|
|
||||
# do nothing if .vcpkg file doesn't exist |
|
||||
if (-not (Test-Path "$PROJECT_DIR\.vcpkg" -PathType Leaf)) { Write-Host ".vcpkg file does not exist, skipping Vcpkg installation."; Exit 0 } |
|
||||
|
|
||||
Write-Host "---- install-vcpkg.ps1 ----" |
|
||||
Write-Host "PROJECT_DIR: $PROJECT_DIR" |
|
||||
Write-Host "VCPKG_DIR: $VCPKG_DIR" |
|
||||
Write-Host "---------------------------" |
|
||||
|
|
||||
if (-not (Get-Command git -ErrorAction SilentlyContinue)) { |
|
||||
New-Alias -Name git -Value "$Env:ProgramFiles\Git\bin\git.exe" |
|
||||
} |
|
||||
|
|
||||
Push-Location "$HOME" |
|
||||
git clone --quiet --depth 1 https://github.com/Microsoft/vcpkg.git $VCPKG_DIR |
|
||||
Set-Location $VCPKG_DIR |
|
||||
.\bootstrap-vcpkg.bat -disableMetrics |
|
||||
$packages = Get-Content "$PROJECT_DIR\.vcpkg" |
|
||||
.\vcpkg.exe install --triplet x64-windows $packages |
|
||||
Pop-Location |
|
@ -1,82 +0,0 @@ |
|||||
--- |
|
||||
name: CMake |
|
||||
|
|
||||
# yamllint disable-line rule:truthy |
|
||||
on: |
|
||||
push: |
|
||||
pull_request: |
|
||||
|
|
||||
env: |
|
||||
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) |
|
||||
BUILD_TYPE: Release |
|
||||
|
|
||||
jobs: |
|
||||
build: |
|
||||
# The CMake configure and build commands are platform agnostic and should |
|
||||
# work equally well on Windows or Mac. You can convert this to a matrix |
|
||||
# build if you need cross-platform coverage. |
|
||||
# yamllint disable-line rule:line-length |
|
||||
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix |
|
||||
runs-on: ${{ matrix.os }} |
|
||||
strategy: |
|
||||
matrix: |
|
||||
include: |
|
||||
- os: ubuntu-latest |
|
||||
- os: windows-latest |
|
||||
- os: macos-latest |
|
||||
|
|
||||
steps: |
|
||||
- uses: actions/checkout@v2 |
|
||||
with: |
|
||||
submodules: true |
|
||||
fetch-depth: 0 |
|
||||
|
|
||||
- name: Fix Checkout |
|
||||
run: | |
|
||||
git fetch --force --tags |
|
||||
|
|
||||
- name: Create Build Environment |
|
||||
# Some projects don't allow in-source building, so create a separate |
|
||||
# build directory. We'll use this as our working directory for all |
|
||||
# subsequent commands |
|
||||
run: cmake -E make_directory ${{github.workspace}}/build |
|
||||
|
|
||||
- name: Configure CMake |
|
||||
# Use a bash shell so we can use the same syntax for environment |
|
||||
# variable access regardless of the host operating system |
|
||||
shell: bash |
|
||||
working-directory: ${{github.workspace}}/build |
|
||||
# Note the current convention is to use the -S and -B options here to |
|
||||
# specify source and build directories, but this is only available |
|
||||
# with CMake 3.13 and higher. The CMake binaries on the Github Actions |
|
||||
# machines are (as of this writing) 3.12 |
|
||||
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE |
|
||||
|
|
||||
- name: Build |
|
||||
working-directory: ${{github.workspace}}/build |
|
||||
shell: bash |
|
||||
# Execute the build. You can specify a specific target |
|
||||
# with "--target <NAME>" |
|
||||
run: cmake --build . --config $BUILD_TYPE |
|
||||
|
|
||||
- name: Test |
|
||||
working-directory: ${{github.workspace}}/build |
|
||||
shell: bash |
|
||||
# Execute tests defined by the CMake configuration. |
|
||||
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more |
|
||||
# detail |
|
||||
run: ctest -C $BUILD_TYPE |
|
||||
|
|
||||
- if: ${{ failure() }} |
|
||||
name: Upload test data |
|
||||
uses: actions/upload-artifact@v2 |
|
||||
with: |
|
||||
name: tests-out |
|
||||
path: tests |
|
||||
|
|
||||
- if: ${{ failure() }} |
|
||||
name: Upload cmake test output |
|
||||
uses: actions/upload-artifact@v2 |
|
||||
with: |
|
||||
name: tests-out |
|
||||
path: build/Testing |
|
@ -1,333 +0,0 @@ |
|||||
project(n2n) |
|
||||
cmake_minimum_required(VERSION 2.6) |
|
||||
include(CheckFunctionExists) |
|
||||
SET(CMAKE_VERBOSE_MAKEFILE ON) |
|
||||
|
|
||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON) |
|
||||
|
|
||||
# N2n release information |
|
||||
execute_process( |
|
||||
COMMAND scripts/version.sh |
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} |
|
||||
OUTPUT_VARIABLE PACKAGE_VERSION |
|
||||
RESULT_VARIABLE GIT_ERROR_CODE |
|
||||
) |
|
||||
if (NOT GIT_ERROR_CODE EQUAL 0) |
|
||||
# - if we can run version.sh and it exits with an error that is signaling |
|
||||
# a build failure. |
|
||||
# - if we are on windows with no MSYS or Cygwin, we cannot run version.sh |
|
||||
# which is the fallback case handled below |
|
||||
# TODO: Distinguish between these two cases |
|
||||
|
|
||||
# Fallback to just using the non dynamic short version string |
|
||||
file(STRINGS VERSION PACKAGE_VERSION) |
|
||||
endif (NOT GIT_ERROR_CODE EQUAL 0) |
|
||||
|
|
||||
string(STRIP "${PACKAGE_VERSION}" PACKAGE_VERSION) |
|
||||
MESSAGE(STATUS "Build for version: ${PACKAGE_VERSION}") |
|
||||
|
|
||||
add_definitions(-DCMAKE_BUILD) |
|
||||
add_definitions(-DPACKAGE_OSNAME="${CMAKE_SYSTEM_NAME}") |
|
||||
add_definitions(-DPACKAGE_VERSION="${PACKAGE_VERSION}") |
|
||||
|
|
||||
# third-party directory |
|
||||
set(THIRD_PARTY_DIR ${CMAKE_SOURCE_DIR}/thirdparty) |
|
||||
|
|
||||
# Build information |
|
||||
OPTION(BUILD_SHARED_LIBS "BUILD Shared Library" OFF) |
|
||||
|
|
||||
# N2n specific params |
|
||||
OPTION(N2N_OPTION_USE_PTHREAD "USE PTHREAD Library" OFF) |
|
||||
OPTION(N2N_OPTION_USE_OPENSSL "USE OPENSSL Library" OFF) |
|
||||
OPTION(N2N_OPTION_USE_CAPLIB "USE CAP Library" OFF) |
|
||||
OPTION(N2N_OPTION_USE_PCAPLIB "USE PCAP Library" OFF) |
|
||||
OPTION(N2N_OPTION_USE_ZSTD "USE ZSTD Library" OFF) |
|
||||
OPTION(N2N_OPTION_USE_PORTMAPPING "USE MINIUPNP and NATPMP Libraries" OFF) |
|
||||
|
|
||||
|
|
||||
if(N2N_OPTION_USE_PTHREAD) |
|
||||
find_library(PTHREAD_LIB pthread) |
|
||||
if(NOT PTHREAD_LIB) |
|
||||
MESSAGE(FATAL_ERROR "libpthread not found.") |
|
||||
endif(NOT PTHREAD_LIB) |
|
||||
MESSAGE(STATUS "Using libpthread.") |
|
||||
ADD_DEFINITIONS("-DHAVE_PTHREAD") |
|
||||
endif(N2N_OPTION_USE_PTHREAD) |
|
||||
|
|
||||
if(N2N_OPTION_USE_OPENSSL) |
|
||||
find_package(OpenSSL QUIET) |
|
||||
if(NOT OPENSSL_FOUND) |
|
||||
MESSAGE(FATAL_ERROR "OpenSSL not found.") |
|
||||
endif(NOT OPENSSL_FOUND) |
|
||||
MESSAGE(STATUS "Found OpenSSL ${OPENSSL_VERSION}") |
|
||||
string(COMPARE GREATER "${OPENSSL_VERSION}" "1.1" OPENSSL_V11) |
|
||||
if(NOT OPENSSL_V11) |
|
||||
MESSAGE(FATAL_ERROR "OpenSSL too old") |
|
||||
endif() |
|
||||
include_directories(${OPENSSL_INCLUDE_DIR}) |
|
||||
add_definitions(-DHAVE_OPENSSL_1_1) |
|
||||
endif(N2N_OPTION_USE_OPENSSL) |
|
||||
|
|
||||
if(N2N_OPTION_USE_ZSTD) |
|
||||
find_library(LIBZSTD zstd) |
|
||||
if(NOT LIBZSTD) |
|
||||
MESSAGE(FATAL_ERROR "libzstd not found.") |
|
||||
endif(NOT LIBZSTD) |
|
||||
MESSAGE(STATUS "Using libztd.") |
|
||||
add_definitions(-DHAVE_ZSTD) |
|
||||
endif(N2N_OPTION_USE_ZSTD) |
|
||||
|
|
||||
if(N2N_OPTION_USE_PCAPLIB) |
|
||||
find_library(PCAP_LIB pcap) |
|
||||
if(NOT PCAP_LIB) |
|
||||
MESSAGE(FATAL_ERROR "libpcap not found.") |
|
||||
endif(NOT PCAP_LIB) |
|
||||
|
|
||||
# Set var needed for check_function_exists() |
|
||||
set(CMAKE_REQUIRED_LIBRARIES ${PCAP_LIB}) |
|
||||
|
|
||||
# TODO |
|
||||
# - pcap_set_immediate_mode has been available since libpcap 1.5 in 2013 |
|
||||
# probably should remove this check |
|
||||
check_function_exists(pcap_set_immediate_mode HAVE_PCAP_IMMEDIATE_MODE) |
|
||||
IF(NOT HAVE_PCAP_IMMEDIATE_MODE) |
|
||||
MESSAGE(FATAL_ERROR "libpcap not support pcap_set_immediate_mode()") |
|
||||
ENDIF(NOT HAVE_PCAP_IMMEDIATE_MODE) |
|
||||
MESSAGE(STATUS "Using libpcap.") |
|
||||
|
|
||||
ADD_DEFINITIONS("-DHAVE_PCAP_IMMEDIATE_MODE") |
|
||||
add_executable(n2n-decode tools/n2n-decode.c) |
|
||||
target_link_libraries(n2n-decode n2n pcap) |
|
||||
install(TARGETS n2n-decode RUNTIME DESTINATION bin) |
|
||||
|
|
||||
endif(N2N_OPTION_USE_PCAPLIB) |
|
||||
|
|
||||
if(N2N_OPTION_USE_CAPLIB) |
|
||||
# Linux Capabilities |
|
||||
find_library(CAP_LIB cap) |
|
||||
if(NOT CAP_LIB) |
|
||||
MESSAGE(FATAL_ERROR "libcap not found.") |
|
||||
endif(NOT CAP_LIB) |
|
||||
MESSAGE(STATUS "Using libcap.") |
|
||||
|
|
||||
ADD_DEFINITIONS("-DHAVE_LIBCAP") |
|
||||
|
|
||||
endif(N2N_OPTION_USE_CAPLIB) |
|
||||
|
|
||||
if(N2N_OPTION_USE_PORTMAPPING) |
|
||||
ADD_DEFINITIONS("-DHAVE_MINIUPNP") |
|
||||
include_directories(${THIRD_PARTY_DIR}/miniupnp/miniupnpc/include) |
|
||||
add_subdirectory(${THIRD_PARTY_DIR}/miniupnp/miniupnpc lib_miniupnpc) |
|
||||
link_directories(${PROJECT_BINARY_DIR}/lib_miniupnpc) |
|
||||
|
|
||||
ADD_DEFINITIONS("-DHAVE_NATPMP") |
|
||||
include_directories(${THIRD_PARTY_DIR}/libnatpmp) |
|
||||
add_subdirectory(${THIRD_PARTY_DIR}/libnatpmp libnatpmp) |
|
||||
link_directories(${PROJECT_BINARY_DIR}/libnatpmp) |
|
||||
|
|
||||
# TODO: |
|
||||
# - this is the odd one out, is it needed? |
|
||||
include_directories(${PROJECT_BINARY_DIR}/lib_miniupnpc) |
|
||||
endif(N2N_OPTION_USE_PORTMAPPING) |
|
||||
|
|
||||
|
|
||||
if(NOT DEFINED CMAKE_BUILD_TYPE) |
|
||||
set(CMAKE_BUILD_TYPE None) |
|
||||
endif(NOT DEFINED CMAKE_BUILD_TYPE) |
|
||||
#set(CMAKE_BUILD_TYPE Debug) |
|
||||
#set(CMAKE_BUILD_TYPE Release) |
|
||||
|
|
||||
if (DEFINED UNIX) |
|
||||
# None |
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wshadow -Wpointer-arith -Wmissing-declarations -Wnested-externs") |
|
||||
set(CMAKE_CXX_FLAGS "-Wall -Wshadow -Wpointer-arith -Wmissing-declarations -Wnested-externs") |
|
||||
# Debug |
|
||||
set(CMAKE_C_FLAGS_DEBUG "-g") |
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "-g") |
|
||||
# Release |
|
||||
set(CMAKE_C_FLAGS_RELEASE "-O2 -DNDEBUG") |
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG") |
|
||||
endif(DEFINED UNIX) |
|
||||
|
|
||||
# Static target. |
|
||||
#SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static") |
|
||||
|
|
||||
|
|
||||
INCLUDE_DIRECTORIES(.) |
|
||||
INCLUDE_DIRECTORIES(include) |
|
||||
if(DEFINED WIN32) |
|
||||
INCLUDE_DIRECTORIES(win32) |
|
||||
# Customize include. |
|
||||
# INCLUDE_DIRECTORIES("D:/Program Files/MinGW/opt/include/" "D:/Program Files/MinGW/x86_64-w64-mingw32/include/") |
|
||||
# Customize library. |
|
||||
# LINK_DIRECTORIES("D:/Program Files/MinGW/opt/lib/" "D:/Program Files/MinGW/x86_64-w64-mingw32/lib/") |
|
||||
endif(DEFINED WIN32) |
|
||||
|
|
||||
|
|
||||
#aux_source_directory(./src N2N_DIR_SRCS) |
|
||||
#add_library(n2n STATIC ${N2N_DIR_SRCS}) |
|
||||
add_library(n2n STATIC |
|
||||
src/n2n.c |
|
||||
src/edge_management.c |
|
||||
src/edge_utils.c |
|
||||
src/sn_management.c |
|
||||
src/sn_utils.c |
|
||||
src/wire.c |
|
||||
src/hexdump.c |
|
||||
src/minilzo.c |
|
||||
src/tf.c |
|
||||
src/cc20.c |
|
||||
src/transform_null.c |
|
||||
src/transform_tf.c |
|
||||
src/transform_aes.c |
|
||||
src/transform_cc20.c |
|
||||
src/transform_speck.c |
|
||||
src/transform_lzo.c |
|
||||
src/transform_zstd.c |
|
||||
src/aes.c |
|
||||
src/speck.c |
|
||||
src/random_numbers.c |
|
||||
src/management.c |
|
||||
src/pearson.c |
|
||||
src/header_encryption.c |
|
||||
src/tuntap_freebsd.c |
|
||||
src/tuntap_netbsd.c |
|
||||
src/tuntap_linux.c |
|
||||
src/tuntap_osx.c |
|
||||
src/n2n_regex.c |
|
||||
src/network_traffic_filter.c |
|
||||
src/sn_selection.c |
|
||||
src/auth.c |
|
||||
src/curve25519.c |
|
||||
src/n2n_port_mapping.c |
|
||||
src/json.c) |
|
||||
|
|
||||
|
|
||||
if(DEFINED WIN32) |
|
||||
add_library(edge_utils_win32 src/edge_utils_win32.c) |
|
||||
add_subdirectory(win32) |
|
||||
target_link_libraries(n2n edge_utils_win32 n2n_win32 iphlpapi netapi32) |
|
||||
endif(DEFINED WIN32) |
|
||||
|
|
||||
add_executable(edge src/edge.c) |
|
||||
target_link_libraries(edge n2n) |
|
||||
|
|
||||
add_executable(supernode src/supernode.c) |
|
||||
target_link_libraries(supernode n2n) |
|
||||
|
|
||||
add_executable(example_edge_embed_quick_edge_init src/example_edge_embed_quick_edge_init.c) |
|
||||
target_link_libraries(example_edge_embed_quick_edge_init n2n) |
|
||||
|
|
||||
add_executable(example_edge_embed src/example_edge_embed.c) |
|
||||
target_link_libraries(example_edge_embed n2n) |
|
||||
|
|
||||
add_executable(example_sn_embed src/example_sn_embed.c) |
|
||||
target_link_libraries(example_sn_embed n2n) |
|
||||
|
|
||||
if(N2N_OPTION_USE_PTHREAD) |
|
||||
target_link_libraries(n2n pthread) |
|
||||
endif(N2N_OPTION_USE_PTHREAD) |
|
||||
|
|
||||
if(N2N_OPTION_USE_OPENSSL) |
|
||||
# target_link_libraries(n2n crypto) |
|
||||
target_link_libraries(n2n ${OPENSSL_LIBRARIES}) |
|
||||
endif(N2N_OPTION_USE_OPENSSL) |
|
||||
|
|
||||
if(N2N_OPTION_USE_ZSTD) |
|
||||
target_link_libraries(n2n ${LIBZSTD}) |
|
||||
endif(N2N_OPTION_USE_ZSTD) |
|
||||
|
|
||||
if(N2N_OPTION_USE_CAPLIB) |
|
||||
target_link_libraries(edge cap) |
|
||||
endif(N2N_OPTION_USE_CAPLIB) |
|
||||
|
|
||||
if(N2N_OPTION_USE_PORTMAPPING) |
|
||||
target_link_libraries(n2n libminiupnpc-static) |
|
||||
target_link_libraries(n2n natpmp) |
|
||||
endif(N2N_OPTION_USE_PORTMAPPING) |
|
||||
|
|
||||
install(TARGETS edge supernode |
|
||||
RUNTIME DESTINATION sbin |
|
||||
LIBRARY DESTINATION lib |
|
||||
ARCHIVE DESTINATION lib |
|
||||
) |
|
||||
|
|
||||
|
|
||||
# Tools |
|
||||
add_executable(n2n-benchmark tools/n2n-benchmark.c) |
|
||||
target_link_libraries(n2n-benchmark n2n) |
|
||||
add_executable(n2n-keygen tools/n2n-keygen.c) |
|
||||
target_link_libraries(n2n-keygen n2n) |
|
||||
add_executable(n2n-route tools/n2n-route.c) |
|
||||
target_link_libraries(n2n-route n2n) |
|
||||
add_executable(n2n-portfwd tools/n2n-portfwd.c) |
|
||||
target_link_libraries(n2n-portfwd n2n) |
|
||||
|
|
||||
add_executable(tests-auth tools/tests-auth.c) |
|
||||
target_link_libraries(tests-auth n2n) |
|
||||
add_executable(tests-compress tools/tests-compress.c) |
|
||||
target_link_libraries(tests-compress n2n) |
|
||||
add_executable(tests-elliptic tools/tests-elliptic.c) |
|
||||
target_link_libraries(tests-elliptic n2n) |
|
||||
add_executable(tests-hashing tools/tests-hashing.c) |
|
||||
target_link_libraries(tests-hashing n2n) |
|
||||
add_executable(tests-transform tools/tests-transform.c) |
|
||||
target_link_libraries(tests-transform n2n) |
|
||||
add_executable(tests-wire tools/tests-wire.c) |
|
||||
target_link_libraries(tests-wire n2n) |
|
||||
|
|
||||
install(TARGETS n2n-benchmark RUNTIME DESTINATION bin) |
|
||||
|
|
||||
# Documentation |
|
||||
if(DEFINED UNIX) |
|
||||
add_dependencies(n2n doc) |
|
||||
file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/doc) |
|
||||
add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/doc/edge.8.gz |
|
||||
COMMAND gzip -c ${PROJECT_SOURCE_DIR}/edge.8 > ${PROJECT_BINARY_DIR}/doc/edge.8.gz |
|
||||
DEPENDS ${PROJECT_SOURCE_DIR}/edge.8 |
|
||||
) |
|
||||
|
|
||||
add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/doc/supernode.1.gz |
|
||||
COMMAND gzip -c ${PROJECT_SOURCE_DIR}/supernode.1 > ${PROJECT_BINARY_DIR}/doc/supernode.1.gz |
|
||||
DEPENDS ${PROJECT_SOURCE_DIR}/supernode.1 |
|
||||
) |
|
||||
|
|
||||
add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/doc/n2n.7.gz |
|
||||
COMMAND gzip -c ${PROJECT_SOURCE_DIR}/n2n.7 > ${PROJECT_BINARY_DIR}/doc/n2n.7.gz |
|
||||
DEPENDS ${PROJECT_SOURCE_DIR}/n2n.7 |
|
||||
) |
|
||||
|
|
||||
add_custom_target(doc DEPENDS ${PROJECT_BINARY_DIR}/doc/edge.8.gz |
|
||||
${PROJECT_BINARY_DIR}/doc/supernode.1.gz |
|
||||
${PROJECT_BINARY_DIR}/doc/n2n.7.gz |
|
||||
) |
|
||||
|
|
||||
set_source_files_properties(${PROJECT_BINARY_DIR}/doc/edge.8.gz |
|
||||
${PROJECT_BINARY_DIR}/doc/supernode.1.gz |
|
||||
${PROJECT_BINARY_DIR}/doc/n2n.7.gz |
|
||||
PROPERTIES GENERATED 1) |
|
||||
|
|
||||
install(FILES ${PROJECT_BINARY_DIR}/doc/edge.8.gz |
|
||||
DESTINATION /usr/share/man/man8) |
|
||||
install(FILES ${PROJECT_BINARY_DIR}/doc/supernode.1.gz |
|
||||
DESTINATION /usr/share/man/man1) |
|
||||
install(FILES ${PROJECT_BINARY_DIR}/doc/n2n.7.gz |
|
||||
DESTINATION /usr/share/man/man7) |
|
||||
endif(DEFINED UNIX) |
|
||||
|
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL Linux) |
|
||||
|
|
||||
# TODO: |
|
||||
# - Add the right dependancy so that the tests binaries get built first |
|
||||
enable_testing() |
|
||||
add_test(NAME unit |
|
||||
COMMAND ${CMAKE_COMMAND} -E env |
|
||||
TOPDIR=${PROJECT_SOURCE_DIR} BINDIR=${PROJECT_BINARY_DIR} |
|
||||
${PROJECT_SOURCE_DIR}/scripts/test_harness.sh ${PROJECT_SOURCE_DIR}/tests/tests_units.list |
|
||||
) |
|
||||
add_test(NAME integration |
|
||||
COMMAND ${CMAKE_COMMAND} -E env |
|
||||
TOPDIR=${PROJECT_SOURCE_DIR} BINDIR=${PROJECT_BINARY_DIR} |
|
||||
${PROJECT_SOURCE_DIR}/scripts/test_harness.sh ${PROJECT_SOURCE_DIR}/tests/tests_integration.list |
|
||||
) |
|
||||
endif() |
|
@ -1,38 +0,0 @@ |
|||||
#!/bin/bash |
|
||||
# |
|
||||
# Well, cmake might be approximately the same as ./configure && make, but it |
|
||||
# never rolls off the fingers as easily |
|
||||
# |
|
||||
|
|
||||
if [ ! -f CMakeLists.txt ]; then |
|
||||
echo ERROR: run this script from the TOPDIR |
|
||||
exit 1 |
|
||||
fi |
|
||||
|
|
||||
OPTS="" |
|
||||
#OPTS+=" -DN2N_OPTION_USE_PTHREAD=ON" |
|
||||
#OPTS+=" -DN2N_OPTION_USE_OPENSSL=ON" |
|
||||
#OPTS+=" -DN2N_OPTION_USE_CAPLIB=ON" |
|
||||
#OPTS+=" -DN2N_OPTION_USE_PCAPLIB=ON" |
|
||||
#OPTS+=" -DN2N_OPTION_USE_ZSTD=ON" |
|
||||
#OPTS+=" -DN2N_OPTION_USE_PORTMAPPING=ON" |
|
||||
|
|
||||
#OPTS+=" -DOPENSSL_USE_STATIC_LIBS=true" |
|
||||
|
|
||||
set -e |
|
||||
|
|
||||
rm -rf build |
|
||||
|
|
||||
cmake -E make_directory build |
|
||||
cd build |
|
||||
|
|
||||
# Shell check wants me to use an array in this scenario. Bourne shell |
|
||||
# arrays are my line in the sand showing that a script should not be |
|
||||
# written in such a horrible language. Since it would be silly to rewrite |
|
||||
# a one-page wrapper script in python, we submit that this check is wrong. |
|
||||
# shellcheck disable=SC2086 |
|
||||
cmake .. $OPTS |
|
||||
|
|
||||
cmake --build . --config Release |
|
||||
|
|
||||
ctest |
|
Loading…
Reference in new issue