From 78511d99298db052a3707fb38d16c14fdad6ddd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20L=C3=BChne?= Date: Thu, 24 Nov 2016 22:46:44 +0100 Subject: [PATCH] Added CMake option for statically linking the binary. --- CMakeLists.txt | 19 ++++++++++++++++--- app/CMakeLists.txt | 14 +++++++++++++- src/CMakeLists.txt | 12 +++++++----- 3 files changed, 36 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6432d1a..ce2e056 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,8 +2,7 @@ cmake_minimum_required(VERSION 2.6) project(anthem CXX) option(ANTHEM_BUILD_TESTS "Build unit tests" OFF) - -find_package(Boost 1.55.0 COMPONENTS program_options iostreams system filesystem REQUIRED) +option(ANTHEM_BUILD_STATIC "Build static binaries" OFF) set(CMAKE_CXX_FLAGS "-Wall -Wpedantic") set(CMAKE_CXX_FLAGS_DEBUG "-g") @@ -16,9 +15,23 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) +if(ANTHEM_BUILD_STATIC) + set(CMAKE_EXE_LINKER_FLAGS "-static") + set(CMAKE_FIND_LIBRARY_SUFFIXES ".a") + # Remove -Wl,-Bdynamic + set(CMAKE_EXE_LINK_DYNAMIC_C_FLAGS) + set(CMAKE_EXE_LINK_DYNAMIC_CXX_FLAGS) +endif() + set(CLASP_BUILD_APP OFF CACHE BOOL "whether or not to build the clasp application") set(CLASP_BUILD_TEST OFF CACHE BOOL "whether or not to build clasp unit tests (requires CppUnit)") -set(CLINGO_BUILD_SHARED OFF CACHE BOOL "build clingo library shared") + +if(ANTHEM_BUILD_STATIC) + set(CLINGO_BUILD_SHARED OFF CACHE BOOL "build clingo library shared") +else() + set(CLINGO_BUILD_SHARED ON CACHE BOOL "build clingo library shared") +endif() + set(CLINGO_BUILD_WITH_LUA OFF CACHE BOOL "enable lua support") set(CLINGO_BUILD_WITH_PYTHON OFF CACHE BOOL "enable python support") set(LIB_POTASSCO_BUILD_APP OFF CACHE BOOL "whether or not to build lpconvert tool") diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index 6729d25..5696449 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -1,5 +1,7 @@ set(target anthem-app) +find_package(Boost 1.55.0 COMPONENTS program_options system filesystem REQUIRED) + file(GLOB core_sources "*.cpp") file(GLOB core_headers "*.h") @@ -8,6 +10,16 @@ set(sources ${core_headers} ) +set(includes + ${Boost_INCLUDE_DIRS} +) + +set(libraries + ${Boost_LIBRARIES} + anthem +) + add_executable(${target} ${sources}) -target_link_libraries(${target} anthem) +target_include_directories(${target} PRIVATE ${includes}) +target_link_libraries(${target} PRIVATE ${libraries}) set_target_properties(${target} PROPERTIES OUTPUT_NAME anthem) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 2076c74..f7413fb 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -15,18 +15,20 @@ set(sources ) set(includes - ${PROJECT_SOURCE_DIR}/include - ${Boost_INCLUDE_DIRS} + ${PROJECT_SOURCE_DIR}/include ) set(libraries - ${Boost_LIBRARIES} libclasp libclingo libgringo - pthread ) -add_library(${target} ${sources}) +if(ANTHEM_BUILD_STATIC) + add_library(${target} STATIC ${sources}) +else() + add_library(${target} ${sources}) +endif() + target_include_directories(${target} PUBLIC ${includes}) target_link_libraries(${target} ${libraries})