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_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_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" ) set(CONFIG_REPORTING_DEFAULT_REPORT_BUFFER_SIZE "65536" CACHE STRING "Default buffer size for buffered reports in byte" )
# advanced options # advanced options

@ -147,17 +147,22 @@ list (APPEND libhal_SRCS ${tls_SRCS})
endif(WITH_MBEDTLS) endif(WITH_MBEDTLS)
add_library (hal STATIC ${libhal_SRCS}) if (CONFIG_IEC61850_HAL_STATIC)
add_library (hal STATIC ${libhal_SRCS})
endif (CONFIG_IEC61850_HAL_STATIC)
add_library (hal-shared STATIC ${libhal_SRCS}) if (CONFIG_IEC61850_HAL_SHARED)
add_library (hal-shared STATIC ${libhal_SRCS})
target_compile_definitions(hal-shared PRIVATE EXPORT_FUNCTIONS_FOR_DLL) target_compile_definitions(hal-shared PRIVATE EXPORT_FUNCTIONS_FOR_DLL)
SET_TARGET_PROPERTIES(hal-shared PROPERTIES SET_TARGET_PROPERTIES(hal-shared PROPERTIES
COMPILE_FLAGS "-fPIC" COMPILE_FLAGS "-fPIC"
) )
endif (CONFIG_IEC61850_HAL_SHARED)
IF(UNIX) if (CONFIG_IEC61850_HAL_STATIC)
IF(UNIX)
IF (CONFIG_SYSTEM_HAS_CLOCK_GETTIME) IF (CONFIG_SYSTEM_HAS_CLOCK_GETTIME)
target_link_libraries (hal target_link_libraries (hal
-lpthread -lpthread
@ -168,22 +173,23 @@ IF(UNIX)
-lpthread -lpthread
) )
ENDIF (CONFIG_SYSTEM_HAS_CLOCK_GETTIME) ENDIF (CONFIG_SYSTEM_HAS_CLOCK_GETTIME)
ENDIF(UNIX) ENDIF(UNIX)
IF(CONFIG_USE_EXTERNAL_MBEDTLS_DYNLIB) IF(CONFIG_USE_EXTERNAL_MBEDTLS_DYNLIB)
target_link_libraries(hal mbedcrypto mbedx509 mbedtls) target_link_libraries(hal mbedcrypto mbedx509 mbedtls)
ENDIF(CONFIG_USE_EXTERNAL_MBEDTLS_DYNLIB) ENDIF(CONFIG_USE_EXTERNAL_MBEDTLS_DYNLIB)
IF(MINGW) IF(MINGW)
target_link_libraries(hal ws2_32 iphlpapi) target_link_libraries(hal ws2_32 iphlpapi)
ENDIF(MINGW) ENDIF(MINGW)
iF(WITH_WPCAP) iF(WITH_WPCAP)
target_link_libraries(hal target_link_libraries(hal
${CMAKE_CURRENT_SOURCE_DIR}/../third_party/winpcap/Lib/wpcap.lib ${CMAKE_CURRENT_SOURCE_DIR}/../third_party/winpcap/Lib/wpcap.lib
${CMAKE_CURRENT_SOURCE_DIR}/../third_party/winpcap/Lib/packet.lib ${CMAKE_CURRENT_SOURCE_DIR}/../third_party/winpcap/Lib/packet.lib
) )
ENDIF(WITH_WPCAP) ENDIF(WITH_WPCAP)
endif (CONFIG_IEC61850_HAL_STATIC)
set(BINDIR "bin") set(BINDIR "bin")
set(LIBDIR "lib") set(LIBDIR "lib")
@ -194,8 +200,18 @@ if(UNIX)
set(BINDIR ${CMAKE_INSTALL_BINDIR}) set(BINDIR ${CMAKE_INSTALL_BINDIR})
endif() endif()
install (TARGETS hal hal-shared if (CONFIG_IEC61850_HAL_STATIC)
install (TARGETS hal
RUNTIME DESTINATION ${BINDIR} COMPONENT Applications RUNTIME DESTINATION ${BINDIR} COMPONENT Applications
ARCHIVE DESTINATION ${LIBDIR} COMPONENT Libraries ARCHIVE DESTINATION ${LIBDIR} COMPONENT Libraries
LIBRARY 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,33 +289,36 @@ if ( WIN32 )
set(library_SRCS ${library_SRCS} ${RES_FILES}) set(library_SRCS ${library_SRCS} ${RES_FILES})
endif( WIN32 ) 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 set_target_properties(iec61850-shared PROPERTIES
OUTPUT_NAME iec61850 OUTPUT_NAME iec61850
SOVERSION "${LIB_VERSION_MAJOR}.${LIB_VERSION_MINOR}.${LIB_VERSION_PATCH}" SOVERSION "${LIB_VERSION_MAJOR}.${LIB_VERSION_MINOR}.${LIB_VERSION_PATCH}"
) )
target_compile_definitions(iec61850-shared PRIVATE EXPORT_FUNCTIONS_FOR_DLL) target_compile_definitions(iec61850-shared PRIVATE EXPORT_FUNCTIONS_FOR_DLL)
target_link_libraries(iec61850-shared target_link_libraries(iec61850-shared
hal-shared hal-shared
) )
GENERATE_EXPORT_HEADER(iec61850-shared GENERATE_EXPORT_HEADER(iec61850-shared
BASE_NAME iec61850-shared BASE_NAME iec61850-shared
EXPORT_MACRO_NAME iec61850-shared_EXPORT EXPORT_MACRO_NAME iec61850-shared_EXPORT
EXPORT_FILE_NAME iec61850-shared_export.h EXPORT_FILE_NAME iec61850-shared_export.h
STATIC_DEFINE iec61850-shared_BUILT_AS_STATIC STATIC_DEFINE iec61850-shared_BUILT_AS_STATIC
) )
endif (CONFIG_IEC61850_IEC61850_SHARED)
add_library (iec61850 STATIC ${library_SRCS}) if (CONFIG_IEC61850_IEC61850_STATIC)
add_library (iec61850 STATIC ${library_SRCS})
target_link_libraries(iec61850 target_link_libraries(iec61850
hal hal
) )
IF(UNIX) IF(UNIX)
IF (CONFIG_SYSTEM_HAS_CLOCK_GETTIME) IF (CONFIG_SYSTEM_HAS_CLOCK_GETTIME)
target_link_libraries (iec61850 target_link_libraries (iec61850
-lpthread -lpthread
@ -328,23 +331,37 @@ IF(UNIX)
-lm -lm
) )
ENDIF (CONFIG_SYSTEM_HAS_CLOCK_GETTIME) ENDIF (CONFIG_SYSTEM_HAS_CLOCK_GETTIME)
ENDIF(UNIX) ENDIF(UNIX)
endif (CONFIG_IEC61850_IEC61850_STATIC)
IF(MINGW) IF(MINGW)
if (CONFIG_IEC61850_IEC61850_SHARED)
target_link_libraries(iec61850-shared ws2_32 iphlpapi) target_link_libraries(iec61850-shared ws2_32 iphlpapi)
endif (CONFIG_IEC61850_IEC61850_SHARED)
if (CONFIG_IEC61850_IEC61850_STATIC)
target_link_libraries(iec61850 ws2_32 iphlpapi) target_link_libraries(iec61850 ws2_32 iphlpapi)
endif (CONFIG_IEC61850_IEC61850_STATIC)
ENDIF(MINGW) ENDIF(MINGW)
iF(WITH_WPCAP) iF(WITH_WPCAP)
target_link_libraries(iec61850 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/wpcap.lib
${CMAKE_CURRENT_SOURCE_DIR}/../third_party/winpcap/lib/packet.lib ${CMAKE_CURRENT_SOURCE_DIR}/../third_party/winpcap/lib/packet.lib
) )
target_link_libraries(iec61850-shared 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/wpcap.lib
${CMAKE_CURRENT_SOURCE_DIR}/../third_party/winpcap/lib/packet.lib ${CMAKE_CURRENT_SOURCE_DIR}/../third_party/winpcap/lib/packet.lib
) )
endif (CONFIG_IEC61850_IEC61850_SHARED)
ENDIF(WITH_WPCAP) ENDIF(WITH_WPCAP)
find_package(Doxygen) find_package(Doxygen)
if(DOXYGEN_FOUND) if(DOXYGEN_FOUND)
configure_file(Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY) 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") install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libiec61850.pc" DESTINATION "${CMAKE_INSTALL_PREFIX}/share/pkgconfig")
endif() endif()
install (TARGETS iec61850 iec61850-shared if (CONFIG_IEC61850_IEC61850_STATIC)
install (TARGETS iec61850
RUNTIME DESTINATION ${BINDIR} COMPONENT Applications RUNTIME DESTINATION ${BINDIR} COMPONENT Applications
ARCHIVE DESTINATION ${LIBDIR} COMPONENT Libraries ARCHIVE DESTINATION ${LIBDIR} COMPONENT Libraries
LIBRARY 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