From 064bfa902e91772fedc6a6158bb29c5318eec284 Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Fri, 10 Nov 2017 14:14:01 +0100 Subject: [PATCH] mostly cosmetical cleanup of CMakeLists --- CMakeLists.txt | 97 +++++++++++++++++++-------------------- examples/CMakeLists.txt | 41 ++++++++--------- pyiec61850/CMakeLists.txt | 55 +++++++++++++--------- 3 files changed, 100 insertions(+), 93 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3bcabf08..440acaf5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,9 +2,9 @@ cmake_minimum_required(VERSION 2.8) # automagically detect if we should cross-compile if(DEFINED ENV{TOOLCHAIN}) - set(CMAKE_C_COMPILER $ENV{TOOLCHAIN}gcc) - set(CMAKE_CXX_COMPILER $ENV{TOOLCHAIN}g++) - set(CMAKE_AR "$ENV{TOOLCHAIN}ar" CACHE FILEPATH "CW archiver" FORCE) + set(CMAKE_C_COMPILER $ENV{TOOLCHAIN}gcc) + set(CMAKE_CXX_COMPILER $ENV{TOOLCHAIN}g++) + set(CMAKE_AR "$ENV{TOOLCHAIN}ar" CACHE FILEPATH "CW archiver" FORCE) endif() project(libiec61850) @@ -32,20 +32,15 @@ option(BUILD_PYTHON_BINDINGS "Build Python bindings" OFF) option(CONFIG_MMS_SINGLE_THREADED "Compile for single threaded version" ON) option(CONFIG_MMS_THREADLESS_STACK "Optimize stack for threadless operation (warning: single- or multi-threaded server will not work!)" OFF) - -# choose the library features which shall be included +option(CONFIG_ACTIVATE_TCP_KEEPALIVE "Activate TCP keepalive" ON) option(CONFIG_INCLUDE_GOOSE_SUPPORT "Build with GOOSE support" ON) +# choose the library features which shall be included option(CONFIG_IEC61850_CONTROL_SERVICE "Build with support for IEC 61850 control features" ON) - option(CONFIG_IEC61850_REPORT_SERVICE "Build with support for IEC 61850 reporting services" ON) - option(CONFIG_IEC61850_LOG_SERVICE "Build with support for IEC 61850 logging services" ON) - option(CONFIG_IEC61850_SETTING_GROUPS "Build with support for IEC 61850 setting group services" ON) -option(CONFIG_ACTIVATE_TCP_KEEPALIVE "Activate TCP keepalive" ON) - set(CONFIG_REPORTING_DEFAULT_REPORT_BUFFER_SIZE "8000" CACHE STRING "Default buffer size for buffered reports in byte" ) # advanced options @@ -62,17 +57,17 @@ option(DEBUG_MMS_CLIENT "Enable MMS CLIENT printf debugging" OFF) # DEBUG_IED_CLIENT DEBUG_MMS_SERVER DEBUG_MMS_CLIENT) include_directories( - ${CMAKE_CURRENT_BINARY_DIR}/config - ${CMAKE_CURRENT_LIST_DIR}/src/common/inc - ${CMAKE_CURRENT_LIST_DIR}/src/goose - ${CMAKE_CURRENT_LIST_DIR}/src/sampled_values - ${CMAKE_CURRENT_LIST_DIR}/src/hal/inc - ${CMAKE_CURRENT_LIST_DIR}/src/iec61850/inc - ${CMAKE_CURRENT_LIST_DIR}/src/iec61850/inc_private - ${CMAKE_CURRENT_LIST_DIR}/src/mms/inc - ${CMAKE_CURRENT_LIST_DIR}/src/mms/inc_private - ${CMAKE_CURRENT_LIST_DIR}/src/mms/iso_mms/asn1c - ${CMAKE_CURRENT_LIST_DIR}/src/logging + config + src/common/inc + src/goose + src/sampled_values + src/hal/inc + src/iec61850/inc + src/iec61850/inc_private + src/mms/inc + src/mms/inc_private + src/mms/iso_mms/asn1c + src/logging ) set(API_HEADERS @@ -114,42 +109,42 @@ set(API_HEADERS ${CMAKE_CURRENT_BINARY_DIR}/config/stack_config.h ) -IF(MSVC) -include_directories( - src/vs -) -ENDIF(MSVC) +if(MSVC) + include_directories( + src/vs + ) +endif(MSVC) # write the detected stuff to this file configure_file(${CMAKE_CURRENT_LIST_DIR}/config/stack_config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config/stack_config.h) if(BUILD_EXAMPLES) - add_subdirectory(examples) + add_subdirectory(examples) endif(BUILD_EXAMPLES) add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/src) -INSTALL(FILES ${API_HEADERS} DESTINATION include/libiec61850 COMPONENT Development) - -IF(BUILD_PYTHON_BINDINGS) - add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/pyiec61850) -ENDIF(BUILD_PYTHON_BINDINGS) - -IF(EXISTS "${CMAKE_ROOT}/Modules/CPack.cmake") -INCLUDE(InstallRequiredSystemLibraries) - -SET(CPACK_PACKAGE_DESCRIPTION "IEC 61850 MMS/GOOSE client and server library") -SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "IEC 61850 MMS/GOOSE client and server library") -SET(CPACK_PACKAGE_VENDOR "MZ Automation GmbH") -SET(CPACK_PACKAGE_CONTACT "info@libiec61850.com") -SET(CPACK_PACKAGE_VERSION_MAJOR "${LIB_VERSION_MAJOR}") -SET(CPACK_PACKAGE_VERSION_MINOR "${LIB_VERSION_MINOR}") -SET(CPACK_PACKAGE_VERSION_PATCH "${LIB_VERSION_PATCH}") -SET(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}_${LIB_VERSION_MAJOR}.${LIB_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}_${CMAKE_SYSTEM_PROCESSOR}") -SET(CPACK_SOURCE_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}_${LIB_VERSION_MAJOR}.${LIB_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") - -SET(CPACK_COMPONENTS_ALL Libraries Development Applications) -#set(CPACK_PACKAGE_INSTALL_DIRECTORY "${CMAKE_PROJECT_NAME}") -INCLUDE(CPack) - -ENDIF(EXISTS "${CMAKE_ROOT}/Modules/CPack.cmake") +install(FILES ${API_HEADERS} DESTINATION include/libiec61850 COMPONENT Development) + +if(BUILD_PYTHON_BINDINGS) + add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/pyiec61850) +endif(BUILD_PYTHON_BINDINGS) + +if(EXISTS "${CMAKE_ROOT}/Modules/CPack.cmake") + include(InstallRequiredSystemLibraries) + + set(CPACK_PACKAGE_DESCRIPTION "IEC 61850 MMS/GOOSE client and server library") + set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "IEC 61850 MMS/GOOSE client and server library") + set(CPACK_PACKAGE_VENDOR "MZ Automation GmbH") + set(CPACK_PACKAGE_CONTACT "info@libiec61850.com") + set(CPACK_PACKAGE_VERSION_MAJOR "${LIB_VERSION_MAJOR}") + set(CPACK_PACKAGE_VERSION_MINOR "${LIB_VERSION_MINOR}") + set(CPACK_PACKAGE_VERSION_PATCH "${LIB_VERSION_PATCH}") + set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}_${LIB_VERSION_MAJOR}.${LIB_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}_${CMAKE_SYSTEM_PROCESSOR}") + set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}_${LIB_VERSION_MAJOR}.${LIB_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") + + set(CPACK_COMPONENTS_ALL Libraries Development Applications) + #set(CPACK_PACKAGE_INSTALL_DIRECTORY "${CMAKE_PROJECT_NAME}") + + include(CPack) +endif(EXISTS "${CMAKE_ROOT}/Modules/CPack.cmake") diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index dba5285f..2502ff10 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -11,35 +11,34 @@ add_subdirectory(server_example_61400_25) add_subdirectory(server_example_setting_groups) add_subdirectory(server_example_logging) add_subdirectory(server_example_files) + add_subdirectory(iec61850_client_example1) add_subdirectory(iec61850_client_example2) add_subdirectory(iec61850_client_example3) add_subdirectory(iec61850_client_example4) add_subdirectory(iec61850_client_example5) -IF(WIN32) -else() -add_subdirectory(iec61850_client_example_files) -endif() add_subdirectory(iec61850_client_example_reporting) add_subdirectory(iec61850_client_example_log) -IF(WIN32) -if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/../third_party/winpcap/Lib/wpcap.lib") -message("Found winpcap -> compile examples for GOOSE and SV") -add_subdirectory(server_example_goose) -add_subdirectory(goose_subscriber) -add_subdirectory(goose_publisher) -add_subdirectory(sv_subscriber) -add_subdirectory(iec61850_9_2_LE_example) -add_subdirectory(iec61850_sv_client_example) -add_subdirectory(sv_publisher) +if(NOT WIN32) + add_subdirectory(iec61850_client_example_files) endif() + +if(WIN32) + if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/../third_party/winpcap/Lib/wpcap.lib") + set(BUILD_SV_GOOSE_EXAMPLES ON) + message("Found winpcap -> compile examples for GOOSE and SV") + endif() else() -add_subdirectory(server_example_goose) -add_subdirectory(goose_subscriber) -add_subdirectory(goose_publisher) -add_subdirectory(sv_subscriber) -add_subdirectory(iec61850_9_2_LE_example) -add_subdirectory(iec61850_sv_client_example) -add_subdirectory(sv_publisher) + set(BUILD_SV_GOOSE_EXAMPLES ON) +endif() + +if(${BUILD_SV_GOOSE_EXAMPLES}) + add_subdirectory(server_example_goose) + add_subdirectory(goose_subscriber) + add_subdirectory(goose_publisher) + add_subdirectory(sv_subscriber) + add_subdirectory(iec61850_9_2_LE_example) + add_subdirectory(iec61850_sv_client_example) + add_subdirectory(sv_publisher) endif() diff --git a/pyiec61850/CMakeLists.txt b/pyiec61850/CMakeLists.txt index f5f0f922..235b832e 100644 --- a/pyiec61850/CMakeLists.txt +++ b/pyiec61850/CMakeLists.txt @@ -1,23 +1,36 @@ -FIND_PACKAGE(SWIG REQUIRED) -INCLUDE(${SWIG_USE_FILE}) -FIND_PACKAGE(PythonLibs REQUIRED) -FIND_PACKAGE ( PythonInterp ${PYTHONLIBS_VERSION_STRING} EXACT REQUIRED ) -INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH}) -INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}) -SET(CMAKE_SWIG_FLAGS "") -SET_PROPERTY(SOURCE iec61850.i PROPERTY CPLUSPLUS ON) -SWIG_ADD_MODULE(iec61850 python iec61850.i) -IF(WIN32) - SWIG_LINK_LIBRARIES(iec61850 ${PYTHON_LIBRARIES} iec61850 ws2_32) -ELSE() - SWIG_LINK_LIBRARIES(iec61850 ${PYTHON_LIBRARIES} iec61850-shared) -ENDIF(WIN32) -EXECUTE_PROCESS ( #Finding python modules install path - COMMAND ${PYTHON_EXECUTABLE} -c - "import site, sys; sys.stdout.write(site.getsitepackages()[-1])" - OUTPUT_VARIABLE PYTHON_SITE_DIR - ) -INSTALL ( FILES ${CMAKE_CURRENT_BINARY_DIR}/iec61850.py DESTINATION ${PYTHON_SITE_DIR}) -INSTALL ( TARGETS _iec61850 LIBRARY DESTINATION ${PYTHON_SITE_DIR}) +find_package(SWIG REQUIRED) +include(${SWIG_USE_FILE}) + +find_package(PythonLibs REQUIRED) +find_package(PythonInterp ${PYTHONLIBS_VERSION_STRING} EXACT REQUIRED) + +include_directories(${PYTHON_INCLUDE_PATH}) +include_directories(${CMAKE_CURRENT_SOURCE_DIR}) + +set(CMAKE_SWIG_FLAGS "") +set_property(SOURCE iec61850.i PROPERTY CPLUSPLUS ON) + +if(WIN32) + set(LIBS iec61850 ws2_32) +else() + set(LIBS iec61850 iec61850-shared) +endif() + +swig_add_library(iec61850 + LANGUAGE python + SOURCES iec61850.i +) + +swig_link_libraries(iec61850 ${PYTHON_LIBRARIES} ${LIBS}) + +# Finding python modules install path +execute_process( + COMMAND ${PYTHON_EXECUTABLE} -c + "import site, sys; sys.stdout.write(site.getsitepackages()[-1])" + OUTPUT_VARIABLE PYTHON_SITE_DIR +) + +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/iec61850.py DESTINATION ${PYTHON_SITE_DIR}) +install(TARGETS _iec61850 LIBRARY DESTINATION ${PYTHON_SITE_DIR}) add_test(test_pyiec61850 ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/test_pyiec61850.py)