|
|
|
@ -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()
|
|
|
|
|