From 369a8850c4bf1183fba3d2c80b700cb5c4d03809 Mon Sep 17 00:00:00 2001 From: Davide Beatrici Date: Mon, 20 Jul 2020 18:31:41 +0200 Subject: [PATCH 1/2] CMake: don't hardcode build directories Our CMake project used to forcefully create and use two different build directories: "build" and "tmp". This commit changes the behavior so that only the build directory CMake is ran in is used. The "configure" script now runs CMake in "build" by default, instead of "tmp". --- CMakeLists.txt | 2 +- configure | 8 ++++---- configure.cmd | 6 +++--- src/hamcorebuilder/CMakeLists.txt | 14 -------------- src/vpnbridge/CMakeLists.txt | 4 ++-- src/vpnclient/CMakeLists.txt | 4 ++-- src/vpncmd/CMakeLists.txt | 4 ++-- src/vpncmgr/CMakeLists.txt | 4 ++-- src/vpnserver/CMakeLists.txt | 4 ++-- src/vpnsmgr/CMakeLists.txt | 4 ++-- src/vpntest/CMakeLists.txt | 4 ++-- 11 files changed, 22 insertions(+), 36 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 32e9dec2..88cbd1ae 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ project("SoftEther VPN" ) set(TOP_DIRECTORY ${CMAKE_SOURCE_DIR}) -set(BUILD_DIRECTORY ${TOP_DIRECTORY}/build) +set(BUILD_DIRECTORY ${CMAKE_BINARY_DIR}) # We define a dedicated variable because CMAKE_BUILD_TYPE can have different # configurations than "Debug" and "Release", such as "RelWithDebInfo". diff --git a/configure b/configure index 77e7317f..21aedd71 100755 --- a/configure +++ b/configure @@ -17,8 +17,8 @@ echo echo 'Welcome to the corner-cutting configure script !' echo -if [ ! -d "tmp" ]; then - mkdir tmp +if [ ! -d "build" ]; then + mkdir build fi if [ ! -z ${CMAKE_FLAGS+x} ]; then @@ -50,9 +50,9 @@ fi echo "" -(cd tmp && cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ${CMAKE_FLAGS} .. || exit 1) +(cd build && cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ${CMAKE_FLAGS} .. || exit 1) echo "" -echo "The Makefile is generated. Run 'make -C tmp' to build SoftEther VPN." +echo "The Makefile is generated. Run 'make -C build' to build SoftEther VPN." diff --git a/configure.cmd b/configure.cmd index 815a5f9b..13e3143c 100644 --- a/configure.cmd +++ b/configure.cmd @@ -13,11 +13,11 @@ echo. echo Welcome to the corner-cutting configure script ! echo. -if not exist "tmp" ( - mkdir tmp +if not exist "build" ( + mkdir build ) -cd tmp +cd build cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -G "NMake Makefiles" .. diff --git a/src/hamcorebuilder/CMakeLists.txt b/src/hamcorebuilder/CMakeLists.txt index 3e8d7b3d..41be69ad 100644 --- a/src/hamcorebuilder/CMakeLists.txt +++ b/src/hamcorebuilder/CMakeLists.txt @@ -1,17 +1,3 @@ add_executable(hamcorebuilder hamcorebuilder.c) -set_target_properties(hamcorebuilder - PROPERTIES - ARCHIVE_OUTPUT_DIRECTORY "${TOP_DIRECTORY}/tmp" - LIBRARY_OUTPUT_DIRECTORY "${TOP_DIRECTORY}/tmp" - RUNTIME_OUTPUT_DIRECTORY "${TOP_DIRECTORY}/tmp" -) - -if(WIN32) - set_target_properties(hamcorebuilder - PROPERTIES - PDB_OUTPUT_DIRECTORY "${TOP_DIRECTORY}/tmp" - ) -endif() - target_link_libraries(hamcorebuilder cedar mayaqua) diff --git a/src/vpnbridge/CMakeLists.txt b/src/vpnbridge/CMakeLists.txt index f0129f13..1e213661 100644 --- a/src/vpnbridge/CMakeLists.txt +++ b/src/vpnbridge/CMakeLists.txt @@ -19,8 +19,8 @@ if(WIN32) get_filename_component(COMPONENT_FILE_NAME vpnbridge NAME) set(COMPONENT_FILE_NAME "${COMPONENT_FILE_NAME}.exe") - configure_file("${TOP_DIRECTORY}/src/BuildFiles/VerScript/ver.rc" "${CMAKE_BINARY_DIR}/VerScript/vpnbridge.rc") - target_sources(vpnbridge PRIVATE vpnbridge.rc "${CMAKE_BINARY_DIR}/VerScript/vpnbridge.rc") + configure_file("${TOP_DIRECTORY}/src/BuildFiles/VerScript/ver.rc" "${CMAKE_CURRENT_BINARY_DIR}/ver.rc") + target_sources(vpnbridge PRIVATE "vpnbridge.rc" "${CMAKE_CURRENT_BINARY_DIR}/ver.rc") endif() target_link_libraries(vpnbridge cedar mayaqua) diff --git a/src/vpnclient/CMakeLists.txt b/src/vpnclient/CMakeLists.txt index 71c5c351..a1addf0f 100644 --- a/src/vpnclient/CMakeLists.txt +++ b/src/vpnclient/CMakeLists.txt @@ -19,8 +19,8 @@ if(WIN32) get_filename_component(COMPONENT_FILE_NAME vpnclient NAME) set(COMPONENT_FILE_NAME "${COMPONENT_FILE_NAME}.exe") - configure_file("${TOP_DIRECTORY}/src/BuildFiles/VerScript/ver.rc" "${CMAKE_BINARY_DIR}/VerScript/vpnclient.rc") - target_sources(vpnclient PRIVATE vpnclient.rc "${CMAKE_BINARY_DIR}/VerScript/vpnclient.rc") + configure_file("${TOP_DIRECTORY}/src/BuildFiles/VerScript/ver.rc" "${CMAKE_CURRENT_BINARY_DIR}/ver.rc") + target_sources(vpnclient PRIVATE "vpnclient.rc" "${CMAKE_CURRENT_BINARY_DIR}/ver.rc") endif() target_link_libraries(vpnclient cedar mayaqua) diff --git a/src/vpncmd/CMakeLists.txt b/src/vpncmd/CMakeLists.txt index 3d257961..565903f7 100644 --- a/src/vpncmd/CMakeLists.txt +++ b/src/vpncmd/CMakeLists.txt @@ -19,8 +19,8 @@ if(WIN32) get_filename_component(COMPONENT_FILE_NAME vpncmd NAME) set(COMPONENT_FILE_NAME "${COMPONENT_FILE_NAME}.exe") - configure_file("${TOP_DIRECTORY}/src/BuildFiles/VerScript/ver.rc" "${CMAKE_BINARY_DIR}/VerScript/vpncmd.rc") - target_sources(vpncmd PRIVATE vpncmd.rc "${CMAKE_BINARY_DIR}/VerScript/vpncmd.rc") + configure_file("${TOP_DIRECTORY}/src/BuildFiles/VerScript/ver.rc" "${CMAKE_CURRENT_BINARY_DIR}/ver.rc") + target_sources(vpncmd PRIVATE "vpncmd.rc" "${CMAKE_CURRENT_BINARY_DIR}/ver.rc") endif() target_link_libraries(vpncmd cedar mayaqua) diff --git a/src/vpncmgr/CMakeLists.txt b/src/vpncmgr/CMakeLists.txt index 9cfa73ae..7a9af191 100644 --- a/src/vpncmgr/CMakeLists.txt +++ b/src/vpncmgr/CMakeLists.txt @@ -10,8 +10,8 @@ add_executable(vpncmgr WIN32 vpncmgr.c vpncmgr.rc) get_filename_component(COMPONENT_FILE_NAME vpncmgr NAME) set(COMPONENT_FILE_NAME "${COMPONENT_FILE_NAME}.exe") -configure_file("${TOP_DIRECTORY}/src/BuildFiles/VerScript/ver.rc" "${CMAKE_BINARY_DIR}/VerScript/vpncmgr.rc") -target_sources(vpncmgr PRIVATE "${CMAKE_BINARY_DIR}/VerScript/vpncmgr.rc") +configure_file("${TOP_DIRECTORY}/src/BuildFiles/VerScript/ver.rc" "${CMAKE_CURRENT_BINARY_DIR}/ver.rc") +target_sources(vpncmgr PRIVATE "vpncmgr.rc" "${CMAKE_CURRENT_BINARY_DIR}/ver.rc") if(${COMPILER_ARCHITECTURE} STREQUAL "x64") target_sources(vpncmgr PRIVATE "${TOP_DIRECTORY}/src/BuildFiles/Manifests/x64_user.manifest") diff --git a/src/vpnserver/CMakeLists.txt b/src/vpnserver/CMakeLists.txt index e4caaed6..87c2cd5b 100644 --- a/src/vpnserver/CMakeLists.txt +++ b/src/vpnserver/CMakeLists.txt @@ -19,8 +19,8 @@ if(WIN32) get_filename_component(COMPONENT_FILE_NAME vpnserver NAME) set(COMPONENT_FILE_NAME "${COMPONENT_FILE_NAME}.exe") - configure_file("${TOP_DIRECTORY}/src/BuildFiles/VerScript/ver.rc" "${CMAKE_BINARY_DIR}/VerScript/vpnserver.rc") - target_sources(vpnserver PRIVATE vpnserver.rc "${CMAKE_BINARY_DIR}/VerScript/vpnserver.rc") + configure_file("${TOP_DIRECTORY}/src/BuildFiles/VerScript/ver.rc" "${CMAKE_CURRENT_BINARY_DIR}/ver.rc") + target_sources(vpnserver PRIVATE "vpnserver.rc" "${CMAKE_CURRENT_BINARY_DIR}/ver.rc") endif() target_link_libraries(vpnserver cedar mayaqua) diff --git a/src/vpnsmgr/CMakeLists.txt b/src/vpnsmgr/CMakeLists.txt index 1b8df278..9c1054fa 100644 --- a/src/vpnsmgr/CMakeLists.txt +++ b/src/vpnsmgr/CMakeLists.txt @@ -10,8 +10,8 @@ add_executable(vpnsmgr WIN32 vpnsmgr.c vpnsmgr.rc) get_filename_component(COMPONENT_FILE_NAME vpnsmgr NAME) set(COMPONENT_FILE_NAME "${COMPONENT_FILE_NAME}.exe") -configure_file("${TOP_DIRECTORY}/src/BuildFiles/VerScript/ver.rc" "${CMAKE_BINARY_DIR}/VerScript/vpnsmgr.rc") -target_sources(vpnsmgr PRIVATE "${CMAKE_BINARY_DIR}/VerScript/vpnsmgr.rc") +configure_file("${TOP_DIRECTORY}/src/BuildFiles/VerScript/ver.rc" "${CMAKE_CURRENT_BINARY_DIR}/ver.rc") +target_sources(vpnsmgr PRIVATE "vpnsmgr.rc" "${CMAKE_CURRENT_BINARY_DIR}/ver.rc") if(${COMPILER_ARCHITECTURE} STREQUAL "x64") target_sources(vpnsmgr PRIVATE "${TOP_DIRECTORY}/src/BuildFiles/Manifests/x64_user.manifest") diff --git a/src/vpntest/CMakeLists.txt b/src/vpntest/CMakeLists.txt index 8aeaa97f..9d03a6c6 100644 --- a/src/vpntest/CMakeLists.txt +++ b/src/vpntest/CMakeLists.txt @@ -19,8 +19,8 @@ if(WIN32) get_filename_component(COMPONENT_FILE_NAME vpntest NAME) set(COMPONENT_FILE_NAME "${COMPONENT_FILE_NAME}.exe") - configure_file("${TOP_DIRECTORY}/src/BuildFiles/VerScript/ver.rc" "${CMAKE_BINARY_DIR}/VerScript/vpntest.rc") - target_sources(vpntest PRIVATE vpntest.rc "${CMAKE_BINARY_DIR}/VerScript/vpntest.rc") + configure_file("${TOP_DIRECTORY}/src/BuildFiles/VerScript/ver.rc" "${CMAKE_CURRENT_BINARY_DIR}/ver.rc") + target_sources(vpntest PRIVATE "vpntest.rc" "${CMAKE_CURRENT_BINARY_DIR}/ver.rc") if(${COMPILER_ARCHITECTURE} STREQUAL "x64") target_sources(vpntest PRIVATE "${TOP_DIRECTORY}/src/BuildFiles/Manifests/x64_user.manifest") From 3c2f5a41bacc7f8b0611d39128279d8e3e0c2730 Mon Sep 17 00:00:00 2001 From: Davide Beatrici Date: Mon, 20 Jul 2020 20:33:36 +0200 Subject: [PATCH 2/2] Use "build" folder instead of "tmp" in CI scripts --- .appveyor.yml | 4 ++-- .ci/azure-pipelines-linux.yml | 2 +- .ci/azure-pipelines-win.yml | 2 +- .ci/sonarcloud.sh | 2 +- .cirrus.yml | 2 +- .gitlab-ci.yml | 4 ++-- .travis.yml | 6 +++--- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index aea1a568..55dd6f29 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -70,7 +70,7 @@ for: before_build: - ./configure build_script: - - make package -C tmp -j $(nproc || sysctl -n hw.ncpu || echo 4) + - make package -C build -j $(nproc || sysctl -n hw.ncpu || echo 4) test_script: - .ci/appveyor-deb-install-test.sh - sudo apt-get update && sudo apt-get -y install autoconf libtool liblzo2-dev libpam-dev fping unzip # openvpn build deps @@ -85,7 +85,7 @@ for: - sh: "if [ ${APPVEYOR_REPO_TAG} == \"true\" ]; then .ci/appveyor-create-release-tarball.sh\nfi" - ./configure build_script: - - make package -C tmp -j $(nproc || sysctl -n hw.ncpu || echo 4) + - make package -C build -j $(nproc || sysctl -n hw.ncpu || echo 4) - .ci/memory-leak-test.sh test_script: - .ci/appveyor-deb-install-test.sh diff --git a/.ci/azure-pipelines-linux.yml b/.ci/azure-pipelines-linux.yml index 85f9c807..39ca2bfa 100644 --- a/.ci/azure-pipelines-linux.yml +++ b/.ci/azure-pipelines-linux.yml @@ -11,7 +11,7 @@ jobs: - script: | sudo apt -y install cmake gcc g++ libncurses5-dev libreadline-dev libssl-dev make zlib1g-dev ./configure - make package -C tmp -j $(nproc || sysctl -n hw.ncpu || echo 4) + make package -C build -j $(nproc || sysctl -n hw.ncpu || echo 4) .ci/appveyor-deb-install-test.sh sudo apt-get -y install autoconf libtool liblzo2-dev libpam-dev fping unzip # openvpn build deps sudo .ci/start-se-openvpn.sh diff --git a/.ci/azure-pipelines-win.yml b/.ci/azure-pipelines-win.yml index b08db741..1ef05eb7 100644 --- a/.ci/azure-pipelines-win.yml +++ b/.ci/azure-pipelines-win.yml @@ -11,7 +11,7 @@ jobs: configure - script: | call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvars64.bat" - cd tmp + cd build nmake - powershell: | . .ci\appveyor-vpntest.ps1 diff --git a/.ci/sonarcloud.sh b/.ci/sonarcloud.sh index fe4c673b..f9ea3561 100755 --- a/.ci/sonarcloud.sh +++ b/.ci/sonarcloud.sh @@ -5,7 +5,7 @@ RUN_SONARCLOUD="${RUN_SONARCLOUD:-0}" if [ "${RUN_SONARCLOUD}" = "1" ] && [ ! -z ${SONAR_TOKEN+x} ]; then ./configure - build-wrapper-linux-x86-64 --out-dir bw-output make -C tmp + build-wrapper-linux-x86-64 --out-dir bw-output make -C build sonar-scanner -Dsonar.projectKey=SoftEtherVPN_SoftEtherVPN -Dsonar.organization=softethervpn -Dsonar.sources=. -Dsonar.cfamily.build-wrapper-output=bw-output -Dsonar.host.url=https://sonarcloud.io -Dsonar.login=${SONAR_TOKEN} else echo "Skipping sonar-scan because \$RUN_SONARCLOUD != \"1\" or \$SONAR_TOKEN is not set" diff --git a/.cirrus.yml b/.cirrus.yml index dcdcc52f..5172b1f4 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -18,7 +18,7 @@ FreeBSD_task: configure_script: - ./configure build_script: - - make -j $(sysctl -n hw.ncpu || echo 4) -C tmp + - make -j $(sysctl -n hw.ncpu || echo 4) -C build test_script: - ldd build/vpnserver - .ci/memory-leak-test.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 38df00fd..92f5893e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -15,7 +15,7 @@ - cd "$REPOSITORY" && git submodule update --init --recursive script: - ./configure - - make package -C tmp + - make package -C build - dpkg -i build/softether-vpn*.deb - .ci/memory-leak-test.sh @@ -36,7 +36,7 @@ build_illumos: script: - git submodule init && git submodule update - CMAKE_FLAGS="-DCMAKE_PREFIX_PATH=/opt/local -DCMAKE_CXX_FLAGS=-m64 -DCMAKE_C_FLAGS=-m64" ./configure - - gmake -C tmp + - gmake -C build # # flawfinder diff --git a/.travis.yml b/.travis.yml index 5f72094c..0028e1df 100644 --- a/.travis.yml +++ b/.travis.yml @@ -55,7 +55,7 @@ matrix: - true script: - ./configure - - make -C tmp + - make -C build - otool -L build/vpnserver - .ci/memory-leak-test.sh @@ -76,7 +76,7 @@ script: - .ci/coverity.sh - .ci/sonarcloud.sh - ./configure - - make -j $(nproc || sysctl -n hw.ncpu || echo 4) -C tmp + - make -j $(nproc || sysctl -n hw.ncpu || echo 4) -C build - ldd build/vpnserver - - if [ "${BUILD_DEB}" = "1" ]; then make package -C tmp; fi + - if [ "${BUILD_DEB}" = "1" ]; then make package -C build; fi - .ci/memory-leak-test.sh