From 2755a0e94cb2f434e303667407907d95c0d88bc0 Mon Sep 17 00:00:00 2001 From: Ferry Huberts Date: Fri, 29 Oct 2021 21:25:04 +0200 Subject: [PATCH] Make building the static and shared libraries configurable Signed-off-by: Ferry Huberts --- CMakeLists.txt | 5 ++ hal/CMakeLists.txt | 100 +++++++++++++++++++-------------- src/CMakeLists.txt | 134 +++++++++++++++++++++++++++------------------ 3 files changed, 143 insertions(+), 96 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 50c7a7c7..619a10a5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -49,6 +49,11 @@ option(CONFIG_IEC61850_SERVICE_TRACKING "Build with support for IEC 61850 servic option(CONFIG_IEC61850_SETTING_GROUPS "Build with support for IEC 61850 setting group services" ON) option(CONFIG_IEC61850_SUPPORT_USER_READ_ACCESS_CONTROL "Allow user provided callback to control read access" ON) +option(CONFIG_IEC61850_HAL_STATIC "Build the static hal library" ON) +option(CONFIG_IEC61850_HAL_SHARED "Build the shared hal library" ON) +option(CONFIG_IEC61850_IEC61850_STATIC "Build the static iec61850 library" ON) +option(CONFIG_IEC61850_IEC61850_SHARED "Build the shared iec61850 library" ON) + set(CONFIG_REPORTING_DEFAULT_REPORT_BUFFER_SIZE "65536" CACHE STRING "Default buffer size for buffered reports in byte" ) # advanced options diff --git a/hal/CMakeLists.txt b/hal/CMakeLists.txt index 6bf01739..3f14c16f 100644 --- a/hal/CMakeLists.txt +++ b/hal/CMakeLists.txt @@ -147,43 +147,49 @@ list (APPEND libhal_SRCS ${tls_SRCS}) endif(WITH_MBEDTLS) -add_library (hal STATIC ${libhal_SRCS}) - -add_library (hal-shared STATIC ${libhal_SRCS}) - -target_compile_definitions(hal-shared PRIVATE EXPORT_FUNCTIONS_FOR_DLL) - -SET_TARGET_PROPERTIES(hal-shared PROPERTIES - COMPILE_FLAGS "-fPIC" -) - -IF(UNIX) - IF (CONFIG_SYSTEM_HAS_CLOCK_GETTIME) - target_link_libraries (hal - -lpthread - -lrt - ) - ELSE () - target_link_libraries (hal - -lpthread - ) - ENDIF (CONFIG_SYSTEM_HAS_CLOCK_GETTIME) -ENDIF(UNIX) - -IF(CONFIG_USE_EXTERNAL_MBEDTLS_DYNLIB) - target_link_libraries(hal mbedcrypto mbedx509 mbedtls) -ENDIF(CONFIG_USE_EXTERNAL_MBEDTLS_DYNLIB) - -IF(MINGW) - target_link_libraries(hal ws2_32 iphlpapi) -ENDIF(MINGW) - -iF(WITH_WPCAP) -target_link_libraries(hal - ${CMAKE_CURRENT_SOURCE_DIR}/../third_party/winpcap/Lib/wpcap.lib - ${CMAKE_CURRENT_SOURCE_DIR}/../third_party/winpcap/Lib/packet.lib -) -ENDIF(WITH_WPCAP) +if (CONFIG_IEC61850_HAL_STATIC) + add_library (hal STATIC ${libhal_SRCS}) +endif (CONFIG_IEC61850_HAL_STATIC) + +if (CONFIG_IEC61850_HAL_SHARED) + add_library (hal-shared STATIC ${libhal_SRCS}) + + target_compile_definitions(hal-shared PRIVATE EXPORT_FUNCTIONS_FOR_DLL) + + SET_TARGET_PROPERTIES(hal-shared PROPERTIES + COMPILE_FLAGS "-fPIC" + ) +endif (CONFIG_IEC61850_HAL_SHARED) + +if (CONFIG_IEC61850_HAL_STATIC) + IF(UNIX) + IF (CONFIG_SYSTEM_HAS_CLOCK_GETTIME) + target_link_libraries (hal + -lpthread + -lrt + ) + ELSE () + target_link_libraries (hal + -lpthread + ) + ENDIF (CONFIG_SYSTEM_HAS_CLOCK_GETTIME) + ENDIF(UNIX) + + IF(CONFIG_USE_EXTERNAL_MBEDTLS_DYNLIB) + target_link_libraries(hal mbedcrypto mbedx509 mbedtls) + ENDIF(CONFIG_USE_EXTERNAL_MBEDTLS_DYNLIB) + + IF(MINGW) + target_link_libraries(hal ws2_32 iphlpapi) + ENDIF(MINGW) + + iF(WITH_WPCAP) + target_link_libraries(hal + ${CMAKE_CURRENT_SOURCE_DIR}/../third_party/winpcap/Lib/wpcap.lib + ${CMAKE_CURRENT_SOURCE_DIR}/../third_party/winpcap/Lib/packet.lib + ) + ENDIF(WITH_WPCAP) +endif (CONFIG_IEC61850_HAL_STATIC) set(BINDIR "bin") set(LIBDIR "lib") @@ -194,8 +200,18 @@ if(UNIX) set(BINDIR ${CMAKE_INSTALL_BINDIR}) endif() -install (TARGETS hal hal-shared - RUNTIME DESTINATION ${BINDIR} COMPONENT Applications - ARCHIVE DESTINATION ${LIBDIR} COMPONENT Libraries - LIBRARY DESTINATION ${LIBDIR} COMPONENT Libraries -) +if (CONFIG_IEC61850_HAL_STATIC) + install (TARGETS hal + RUNTIME DESTINATION ${BINDIR} COMPONENT Applications + ARCHIVE DESTINATION ${LIBDIR} COMPONENT Libraries + LIBRARY DESTINATION ${LIBDIR} COMPONENT Libraries + ) +endif (CONFIG_IEC61850_HAL_STATIC) + +if (CONFIG_IEC61850_HAL_SHARED) + install (TARGETS hal-shared + RUNTIME DESTINATION ${BINDIR} COMPONENT Applications + ARCHIVE DESTINATION ${LIBDIR} COMPONENT Libraries + LIBRARY DESTINATION ${LIBDIR} COMPONENT Libraries + ) +endif (CONFIG_IEC61850_HAL_SHARED) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ff2ee08b..00f5fa42 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -289,62 +289,79 @@ if ( WIN32 ) set(library_SRCS ${library_SRCS} ${RES_FILES}) endif( WIN32 ) -add_library (iec61850-shared SHARED ${library_SRCS} ) +if (CONFIG_IEC61850_IEC61850_SHARED) + add_library (iec61850-shared SHARED ${library_SRCS} ) + + set_target_properties(iec61850-shared PROPERTIES + OUTPUT_NAME iec61850 + SOVERSION "${LIB_VERSION_MAJOR}.${LIB_VERSION_MINOR}.${LIB_VERSION_PATCH}" + ) + + target_compile_definitions(iec61850-shared PRIVATE EXPORT_FUNCTIONS_FOR_DLL) + + target_link_libraries(iec61850-shared + hal-shared + ) + + GENERATE_EXPORT_HEADER(iec61850-shared + BASE_NAME iec61850-shared + EXPORT_MACRO_NAME iec61850-shared_EXPORT + EXPORT_FILE_NAME iec61850-shared_export.h + STATIC_DEFINE iec61850-shared_BUILT_AS_STATIC + ) +endif (CONFIG_IEC61850_IEC61850_SHARED) + +if (CONFIG_IEC61850_IEC61850_STATIC) + add_library (iec61850 STATIC ${library_SRCS}) + + target_link_libraries(iec61850 + hal + ) + + IF(UNIX) + IF (CONFIG_SYSTEM_HAS_CLOCK_GETTIME) + target_link_libraries (iec61850 + -lpthread + -lm + -lrt + ) + ELSE () + target_link_libraries (iec61850 + -lpthread + -lm + ) + ENDIF (CONFIG_SYSTEM_HAS_CLOCK_GETTIME) + ENDIF(UNIX) +endif (CONFIG_IEC61850_IEC61850_STATIC) -set_target_properties(iec61850-shared PROPERTIES - OUTPUT_NAME iec61850 - SOVERSION "${LIB_VERSION_MAJOR}.${LIB_VERSION_MINOR}.${LIB_VERSION_PATCH}" -) - -target_compile_definitions(iec61850-shared PRIVATE EXPORT_FUNCTIONS_FOR_DLL) - -target_link_libraries(iec61850-shared - hal-shared -) - -GENERATE_EXPORT_HEADER(iec61850-shared - BASE_NAME iec61850-shared - EXPORT_MACRO_NAME iec61850-shared_EXPORT - EXPORT_FILE_NAME iec61850-shared_export.h - STATIC_DEFINE iec61850-shared_BUILT_AS_STATIC -) +IF(MINGW) + if (CONFIG_IEC61850_IEC61850_SHARED) + target_link_libraries(iec61850-shared ws2_32 iphlpapi) + endif (CONFIG_IEC61850_IEC61850_SHARED) -add_library (iec61850 STATIC ${library_SRCS}) + if (CONFIG_IEC61850_IEC61850_STATIC) + target_link_libraries(iec61850 ws2_32 iphlpapi) + endif (CONFIG_IEC61850_IEC61850_STATIC) +ENDIF(MINGW) -target_link_libraries(iec61850 - hal -) -IF(UNIX) - IF (CONFIG_SYSTEM_HAS_CLOCK_GETTIME) - target_link_libraries (iec61850 - -lpthread - -lm - -lrt - ) - ELSE () - target_link_libraries (iec61850 - -lpthread - -lm - ) - ENDIF (CONFIG_SYSTEM_HAS_CLOCK_GETTIME) -ENDIF(UNIX) -IF(MINGW) - target_link_libraries(iec61850-shared ws2_32 iphlpapi) - target_link_libraries(iec61850 ws2_32 iphlpapi) -ENDIF(MINGW) iF(WITH_WPCAP) -target_link_libraries(iec61850 - ${CMAKE_CURRENT_SOURCE_DIR}/../third_party/winpcap/lib/wpcap.lib - ${CMAKE_CURRENT_SOURCE_DIR}/../third_party/winpcap/lib/packet.lib -) -target_link_libraries(iec61850-shared - ${CMAKE_CURRENT_SOURCE_DIR}/../third_party/winpcap/lib/wpcap.lib - ${CMAKE_CURRENT_SOURCE_DIR}/../third_party/winpcap/lib/packet.lib -) + if (CONFIG_IEC61850_IEC61850_STATIC) + target_link_libraries(iec61850 + ${CMAKE_CURRENT_SOURCE_DIR}/../third_party/winpcap/lib/wpcap.lib + ${CMAKE_CURRENT_SOURCE_DIR}/../third_party/winpcap/lib/packet.lib + ) + endif (CONFIG_IEC61850_IEC61850_STATIC) + if (CONFIG_IEC61850_IEC61850_SHARED) + target_link_libraries(iec61850-shared + ${CMAKE_CURRENT_SOURCE_DIR}/../third_party/winpcap/lib/wpcap.lib + ${CMAKE_CURRENT_SOURCE_DIR}/../third_party/winpcap/lib/packet.lib + ) + endif (CONFIG_IEC61850_IEC61850_SHARED) ENDIF(WITH_WPCAP) + find_package(Doxygen) if(DOXYGEN_FOUND) configure_file(Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY) @@ -370,9 +387,18 @@ if(UNIX) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libiec61850.pc" DESTINATION "${CMAKE_INSTALL_PREFIX}/share/pkgconfig") endif() -install (TARGETS iec61850 iec61850-shared - RUNTIME DESTINATION ${BINDIR} COMPONENT Applications - ARCHIVE DESTINATION ${LIBDIR} COMPONENT Libraries - LIBRARY DESTINATION ${LIBDIR} COMPONENT Libraries -) - +if (CONFIG_IEC61850_IEC61850_STATIC) + install (TARGETS iec61850 + RUNTIME DESTINATION ${BINDIR} COMPONENT Applications + ARCHIVE DESTINATION ${LIBDIR} COMPONENT Libraries + LIBRARY DESTINATION ${LIBDIR} COMPONENT Libraries + ) +endif (CONFIG_IEC61850_IEC61850_STATIC) + +if (CONFIG_IEC61850_IEC61850_SHARED) + install (TARGETS iec61850-shared + RUNTIME DESTINATION ${BINDIR} COMPONENT Applications + ARCHIVE DESTINATION ${LIBDIR} COMPONENT Libraries + LIBRARY DESTINATION ${LIBDIR} COMPONENT Libraries + ) +endif (CONFIG_IEC61850_IEC61850_SHARED)