binpac: Build binpac shared lib instead of static by default

Related to https://github.com/zeek/zeek/issues/307
This commit is contained in:
Jon Siwek 2019-03-18 13:49:52 -07:00 committed by Tim Wojtulewicz
parent 7bb1a148af
commit 7e6e24a4d8
2 changed files with 50 additions and 8 deletions

View file

@ -3,6 +3,20 @@ cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR)
include(cmake/CommonCMakeConfig.cmake)
file(STRINGS "${CMAKE_CURRENT_SOURCE_DIR}/VERSION" BINPAC_VERSION LIMIT_COUNT 1)
string(REPLACE "." " " _version_numbers ${BINPAC_VERSION})
separate_arguments(_version_numbers)
list(GET _version_numbers 0 BINPAC_VERSION_MAJOR)
list(GET _version_numbers 1 BINPAC_VERSION_MINOR)
# The SO number shall increase only if binary interface changes.
set(BINPAC_SOVERSION 0)
set(ENABLE_SHARED true)
if ( ENABLE_STATIC_ONLY )
set(ENABLE_STATIC true)
set(ENABLE_SHARED false)
endif ()
# Set default install paths
include(GNUInstallDirs)
@ -43,11 +57,27 @@ if (CMAKE_BUILD_TYPE)
string(TOUPPER ${CMAKE_BUILD_TYPE} BuildType)
endif ()
macro(display test desc summary)
if ( ${test} )
set(${summary} ${desc})
else ()
set(${summary} no)
endif()
endmacro()
display(ENABLE_SHARED yes shared_summary)
display(ENABLE_STATIC yes static_summary)
message(
"\n==================| BinPAC Build Summary |===================="
"\nVersion: ${BINPAC_VERSION}"
"\nSO version: ${BINPAC_SOVERSION}"
"\n"
"\nInstall prefix: ${CMAKE_INSTALL_PREFIX}"
"\nBuild Type: ${CMAKE_BUILD_TYPE}"
"\nDebug mode: ${ENABLE_DEBUG}"
"\nInstall prefix: ${CMAKE_INSTALL_PREFIX}"
"\nShared libs: ${shared_summary}"
"\nStatic libs: ${static_summary}"
"\n"
"\nCC: ${CMAKE_C_COMPILER}"
"\nCFLAGS: ${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${BuildType}}"

View file

@ -25,11 +25,21 @@ set(binpac_lib_SRCS
${binpac_headers}
)
add_library(binpac_lib STATIC ${binpac_lib_SRCS})
if ( ENABLE_SHARED )
add_library(binpac_lib SHARED ${binpac_lib_SRCS})
set_target_properties(binpac_lib PROPERTIES
SOVERSION ${BINPAC_SOVERSION}
VERSION ${BINPAC_VERSION_MAJOR}.${BINPAC_VERSION_MINOR}
MACOSX_RPATH true
OUTPUT_NAME binpac)
install(TARGETS binpac_lib DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif ()
set_target_properties(binpac_lib PROPERTIES OUTPUT_NAME binpac)
install(TARGETS binpac_lib DESTINATION ${CMAKE_INSTALL_LIBDIR})
if ( ENABLE_STATIC )
add_library(binpac_static STATIC ${binpac_lib_SRCS})
set_target_properties(binpac_static PROPERTIES OUTPUT_NAME binpac)
install(TARGETS binpac_static DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif ()
if ( BRO_ROOT_DIR )
# Installed in binpac subdir just for organization purposes.
@ -40,9 +50,11 @@ endif ()
# This is set to assist superprojects that want to build BinPac
# from source and rely on it as a target
set(BinPAC_LIBRARY binpac_lib
CACHE STRING "BinPAC static library" FORCE
)
if ( ENABLE_SHARED )
set(BinPAC_LIBRARY binpac_lib CACHE STRING "BinPAC library" FORCE)
else ()
set(BinPAC_LIBRARY binpac_static CACHE STRING "BinPAC library" FORCE)
endif ()
set(BinPAC_INCLUDE_DIR
${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}