From b52bd2c14ba449936cc084d1fe809de6843b9671 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert-Andr=C3=A9=20Mauchin?= Date: Tue, 2 Apr 2019 20:15:09 +0200 Subject: [PATCH 1/2] chore: Install library to CMAKE_INSTALL_LIBDIR MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently the library is installed in hardcoded /lib path. This patch use the standard GNUInstallDirs macros to install it in either lib or lib64, according to the user platform. Signed-off-by: Robert-André Mauchin --- CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ef616e9..8171f87 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,6 +15,7 @@ find_package(Threads REQUIRED) set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) +include("GNUInstallDirs") if (DISABLE_AUTO_INGEST) add_definitions(-DDISABLE_AUTO_INGEST) @@ -130,4 +131,5 @@ if (NOT DISABLE_FTL_APP) endif() # Install rules -install(TARGETS ftl DESTINATION lib) \ No newline at end of file +install(TARGETS ftl DESTINATION + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) \ No newline at end of file From 0efe798973e1be8eea0d149cb7d4367efceb5926 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert-Andr=C3=A9=20Mauchin?= Date: Tue, 2 Apr 2019 20:30:12 +0200 Subject: [PATCH 2/2] chore: Add the possibility to install dev headers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The library should provide the possibility to install development headers. This patch adds this option by splitting sources and headers in the CMakeLists file, allowing to install the headers separately. Signed-off-by: Robert-André Mauchin --- CMakeLists.txt | 79 +++++++++++++++++++++++++++++++++++--------------- 1 file changed, 55 insertions(+), 24 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8171f87..8b6896c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,6 +11,9 @@ MESSAGE(STATUS "FTL DISABLE_FTL_APP: " ${DISABLE_FTL_APP}) option(FTL_STATIC_COMPILE "Set to TRUE if you want ftl to be compiled as a static lib. If TRUE, the program will want to statically link to the ftl cmake object." FALSE) MESSAGE(STATUS "FTL FTL_STATIC_COMPILE: " ${FTL_STATIC_COMPILE}) +option(FTL_INSTALL_INCLUDES "Set to TRUE if you want development headers to be installed." FALSE) +MESSAGE(STATUS "FTL FTL_INSTALL_INCLUDES: " ${FTL_INSTALL_INCLUDES}) + find_package(Threads REQUIRED) set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) @@ -57,17 +60,18 @@ if (WIN32) ftl_app/win32/ctrlc_handler.c) #set(FTL_PLATFORM_LIBS kernel32 user32 gdi32 advapi32 ) #set(FTL_PLATFORM_LIBS ws2_32 ) - set(FTLSDK_PLATFORM_FILES libftl/win32/socket.c - libftl/win32/socket.h - libftl/win32/threads.c - libftl/win32/threads.h) + set(FTLSDK_PLATFORM_HEADERS libftl/win32/socket.h + libftl/win32/threads.h) + set(FTLSDK_PLATFORM_SOURCES libftl/win32/socket.c + libftl/win32/threads.c) include_directories(libftl/win32) else() set(FTL_PLATFORM_FILES ftl_app/posix/ctrlc_handler.c) - set(FTLSDK_PLATFORM_FILES libftl/posix/socket.c - libftl/posix/socket.h - libftl/posix/threads.c - libftl/posix/threads.h) + + set(FTLSDK_PLATFORM_HEADERS libftl/posix/socket.h + libftl/posix/threads.h) + set(FTLSDK_PLATFORM_SOURCES libftl/posix/socket.c + libftl/posix/threads.c) include_directories(libftl/posix) endif() @@ -79,21 +83,33 @@ else(FTL_STATIC_COMPILE) set(FTL_LIB_TYPE SHARED) endif(FTL_STATIC_COMPILE) -add_library(ftl ${FTL_LIB_TYPE} libftl/hmac/hmac.c - libftl/hmac/hmac.h - libftl/hmac/sha2.c - libftl/hmac/sha2.h - libftl/gettimeofday/gettimeofday.c - libftl/gettimeofday/gettimeofday.h - libftl/ftl-sdk.c - libftl/handshake.c - libftl/ingest.c - libftl/ftl_helpers.c - libftl/media.c - libftl/logging.c - libftl/ftl.h - libftl/ftl_private.h - ${FTLSDK_PLATFORM_FILES}) +set(FTL_HEADERS + libftl/ftl.h + libftl/ftl_private.h) + +set(FTL_HMAC_HEADERS + libftl/hmac/hmac.h + libftl/hmac/sha2.h) + +set(FTL_GETTIMEOFDAY_HEADERS + libftl/gettimeofday/gettimeofday.h) + +set(FTL_SOURCES + libftl/hmac/hmac.c + libftl/hmac/sha2.c + libftl/gettimeofday/gettimeofday.c + libftl/ftl-sdk.c + libftl/handshake.c + libftl/ingest.c + libftl/ftl_helpers.c + libftl/media.c + libftl/logging.c) + +add_library(ftl ${FTL_LIB_TYPE} ${FTL_HEADERS} + ${FTL_HMAC_HEADERS} + ${FTL_GETTIMEOFDAY_HEADERS} + ${FTLSDK_PLATFORM_HEADERS} + ${FTLSDK_PLATFORM_SOURCES}) include_directories(libftl libftl/gettimeofday) set_target_properties(ftl PROPERTIES VERSION "0.5.0") @@ -132,4 +148,19 @@ endif() # Install rules install(TARGETS ftl DESTINATION - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) \ No newline at end of file + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) + +if (FTL_INSTALL_INCLUDES) +foreach(ITEM ${FTL_HEADERS}) + install(FILES ${ITEM} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/ftl) +endforeach() +foreach(ITEM ${FTL_HMAC_HEADERS}) + install(FILES ${ITEM} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/ftl/hmac/) +endforeach() +foreach(ITEM ${FTL_GETTIMEOFDAY_HEADERS}) + install(FILES ${ITEM} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/ftl/gettimeofday) +endforeach() +foreach(ITEM ${FTLSDK_PLATFORM_HEADERS}) + install(FILES ${ITEM} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/ftl) +endforeach() +endif() \ No newline at end of file