Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add LIBB64_BOTH to allow building of static library in addition to shared #2

Open
wants to merge 1 commit into
base: post-2.0.0-transmission
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ if(PROJECT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
endif()

option(LIBB64_SHARED "${PROJECT_NAME}: Build shared library" ${BUILD_SHARED_LIBS})
option(LIBB64_BOTH "${PROJECT_NAME}: Build static library in addition to shared library" OFF)
option(LIBB64_ENABLE_INSTALL "${PROJECT_NAME}: Enable install" ${LIBB64_STANDALONE_BUILD})
option(LIBB64_ENABLE_TESTS "${PROJECT_NAME}: Enable tests" ${LIBB64_STANDALONE_BUILD})
option(LIBB64_ENABLE_WERROR "${PROJECT_NAME}: Treat warnings as errors" ${LIBB64_STANDALONE_BUILD})
Expand Down
40 changes: 26 additions & 14 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,32 +1,44 @@
add_library(libb64 ${LIBB64_LIBRARY_TYPE}
../include/b64/cencode.h
../include/b64/cdecode.h
../include/b64/ccommon.h
../include/b64/encode.h
../include/b64/decode.h
add_library(libb64_obj OBJECT
cdecode.c
cencode.c)
target_include_directories(libb64_obj
PUBLIC
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)

add_library(libb64 ${LIBB64_LIBRARY_TYPE})
target_link_libraries(libb64 PUBLIC libb64_obj)

if(NOT LIBB64_STANDALONE_BUILD)
add_library(${PROJECT_NAME}::libb64 ALIAS libb64)
endif()

set_target_properties(libb64
PROPERTIES
OUTPUT_NAME b64)
OUTPUT_NAME b64
VERSION ${CMAKE_PROJECT_VERSION}
SOVERSION 0d)

target_include_directories(libb64
PUBLIC
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
if(LIBB64_SHARED AND LIBB64_BOTH)
add_library(libb64_static STATIC)
target_link_libraries(libb64_static PUBLIC libb64_obj)
set_target_properties(libb64_static
PROPERTIES
OUTPUT_NAME b64)
endif()

if(LIBB64_ENABLE_INSTALL)
install(
TARGETS libb64
TARGETS libb64 libb64_obj
EXPORT ${PROJECT_NAME}-targets
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})

if(LIBB64_BOTH)
install(
TARGETS libb64_static
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()

install(
DIRECTORY ${PROJECT_SOURCE_DIR}/include/
Expand Down