Make building the static and shared libraries configurable

Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl>
pull/356/head
Ferry Huberts 4 years ago
parent a02c63b1de
commit 2755a0e94c

@ -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

@ -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)

@ -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)

Loading…
Cancel
Save