From 597aa8eb74f7e256b3ffb370d2444eddb4a21297 Mon Sep 17 00:00:00 2001 From: Jeff Becker Date: Fri, 15 Jun 2018 09:42:49 -0400 Subject: [PATCH] fix release target --- CMakeLists.txt | 44 +++++++++++++++++++++++++++++++++----------- Makefile | 4 ++-- 2 files changed, 35 insertions(+), 13 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e4891c82a..547569422 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,19 +5,35 @@ project(${PROJECT_NAME}) macro(add_cflags) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${ARGN}") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ARGN}") endmacro(add_cflags) +macro(add_cxxflags) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ARGN}") +endmacro(add_cxxflags) + +include(CheckCXXCompilerFlag) +CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11) +if(COMPILER_SUPPORTS_CXX11) + add_cxxflags("-std=c++11") +else() + message(ERROR "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.") +endif() + +if(STATIC_LINK) + set(STATIC_LINK_LIBS c) + add_cflags("-static -Wl,--whole-archive -lpthread -Wl,--no-whole-archive") + add_cxxflags("-static -Wl,--whole-archive -lpthread -Wl,--no-whole-archive") +endif() + if(SHADOW) set(WITH_STATIC OFF) - set(WITH_SHARED OFF) else() set(WITH_STATIC ON) - set(WITH_SHARED OFF) endif() set(DEBUG_FLAGS "-g") set(OPTIMIZE_FLAGS "-Os") + if(ASAN) set(DEBUG_FLAGS "${DEBUG_FLAGS} -fsanitize=address -fno-omit-frame-pointer") set(OPTIMIZE_FLAGS "-O0") @@ -35,6 +51,7 @@ if(SHADOW) set(CMAKE_MODULE_PATH "${SHADOW_ROOT}/share/cmake/Modules") include_directories(${CMAKE_MODULE_PATH}) include(ShadowTools) + add_cxxflags("-fno-inline -fno-strict-aliasing") add_cflags("-fno-inline -fno-strict-aliasing") add_definitions(-DTESTNET=true) @@ -42,11 +59,17 @@ if(SHADOW) include_directories(${SHADOW_ROOT}/include) endif() -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c11 -Wall ${DEBUG_FLAGS} ${OPTIMIZE_FLAGS}") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall ${DEBUG_FLAGS} ${OPTIMIZE_FLAGS}") +add_cflags("-Wall ${OPTIMIZE_FLAGS}") +add_cxxflags("-Wall ${OPTIMIZE_FLAGS}") + +if(CMAKE_BUILD_TYPE MATCHES "[Dd][Ee][Bb][Uu][Gg]") + add_cflags("${DEBUG_FLAGS}") + add_cxxflags("${DEBUG_FLAGS}") +endif() if(SHADOW) add_cflags("-fPIC") + add_cxxflags("-fPIC") endif() if(NOT GIT_VERSION) @@ -73,7 +96,6 @@ endif() set(LIBS ${SODIUM_LIB} pthread) - set(LIB llarp) set(SHARED_LIB ${LIB}) set(STATIC_LIB ${LIB}-static) @@ -136,7 +158,9 @@ set(TEST_SRC set(TEST_EXE testAll) set(GTEST_DIR test/gtest) +# TODO: exclude this from includes and expose stuff properly for rcutil include_directories(llarp) + include_directories(include) include_directories(vendor/cppbackport-master/lib) @@ -157,16 +181,15 @@ else() include_directories(${GTEST_DIR}/include ${GTEST_DIR}) add_executable(${TEST_EXE} ${TEST_SRC}) add_test(runAllTests ${TEST_EXE}) - target_link_libraries(${TEST_EXE} ${STATIC_LIB} gtest_main) + target_link_libraries(${TEST_EXE} ${STATIC_LINK_LIBS} gtest_main ${STATIC_LIB}) endif() if(WITH_STATIC) add_library(${STATIC_LIB} STATIC ${LIB_SRC}) target_link_libraries(${STATIC_LIB} ${LIBS}) if(NOT WITH_SHARED) - target_link_libraries(rcutil ${STATIC_LIB}) - target_link_libraries(${EXE} ${STATIC_LIB}) - + target_link_libraries(rcutil ${STATIC_LINK_LIBS} ${STATIC_LIB}) + target_link_libraries(${EXE} ${STATIC_LINK_LIBS} ${STATIC_LIB}) endif() endif() @@ -179,5 +202,4 @@ else() endif() endif() - endif() diff --git a/Makefile b/Makefile index 381ff6bbe..480b8db92 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ SIGN = gpg --sign --detach REPO := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))) -TARGETS = llarpd libllarp.so libllarp-static.a +TARGETS = llarpd SIGS = $(TARGETS:=.sig) SHADOW_ROOT ?= $(HOME)/.shadow @@ -30,7 +30,7 @@ debug-configure: clean cmake -GNinja -DCMAKE_BUILD_TYPE=Debug -DWITH_TESTS=ON release-configure: clean - cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DRELEASE_MOTTO="$(shell cat motto.txt)" + cmake -GNinja -DSTATIC_LINK=ON -DCMAKE_BUILD_TYPE=Release -DRELEASE_MOTTO="$(shell cat motto.txt)" debug: debug-configure ninja