From fc6e3892c68a44ece3997b6d4311194b7c3e41aa Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Fri, 10 Nov 2017 11:43:14 +0100 Subject: [PATCH 1/9] added Travis-CI config --- .travis.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..72586d43 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,15 @@ +language: c +compiler: + - clang + - gcc + +addons: + apt: + packages: + - cmake + - time + +script: + - cmake . + - make + - make examples From 02bc54a8c25291f3d5cf63be4b3b68816778fc1b Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Fri, 10 Nov 2017 11:51:22 +0100 Subject: [PATCH 2/9] fix wrong #cmakedefine01 statement --- config/stack_config.h.cmake | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/config/stack_config.h.cmake b/config/stack_config.h.cmake index c85e15d9..c36f782d 100644 --- a/config/stack_config.h.cmake +++ b/config/stack_config.h.cmake @@ -29,9 +29,9 @@ #cmakedefine01 DEBUG_MMS_SERVER #cmakedefine01 DEBUG_GOOSE_SUBSCRIBER #cmakedefine01 DEBUG_GOOSE_PUBLISHER -#cmakedefine01 DEBUG_SV_SUBSCRIBER 0 -#cmakedefine01 DEBUG_SV_PUBLISHER 0 -#cmakedefine01 DEBUG_HAL_ETHERNET 0 +#cmakedefine01 DEBUG_SV_SUBSCRIBER +#cmakedefine01 DEBUG_SV_PUBLISHER +#cmakedefine01 DEBUG_HAL_ETHERNET /* 1 ==> server runs in single threaded mode (one dedicated thread for the server) * 0 ==> server runs in multi threaded mode (one thread for each connection and From 4fb314108806d0ec0920533543127e8c8f4fef6f Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Fri, 10 Nov 2017 12:11:54 +0100 Subject: [PATCH 3/9] enable build on OS X and Python bindings --- .travis.yml | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 72586d43..3c601deb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,9 @@ language: c + +os: + - linux + - osx + compiler: - clang - gcc @@ -7,9 +12,15 @@ addons: apt: packages: - cmake - - time + - swig + - libsqlite3-dev + - python-dev + +before_install: + - if [ "$TRAVIS_OS_NAME" == "osx" ]; then + brew update; + brew install swig python sqlite; + fi script: - - cmake . - - make - - make examples + - mkdir build && cd build && cmake .. -DBUILD_PYTHON_BINDINGS=ON && make From 064bfa902e91772fedc6a6158bb29c5318eec284 Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Fri, 10 Nov 2017 14:14:01 +0100 Subject: [PATCH 4/9] 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) From 403c3a9e931585404bc4fa351c20a24a50a9ba9e Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Fri, 10 Nov 2017 14:14:30 +0100 Subject: [PATCH 5/9] added missing case to switch statement in order to silence compiler warnings --- examples/iec61850_client_example_files/file-tool.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/examples/iec61850_client_example_files/file-tool.c b/examples/iec61850_client_example_files/file-tool.c index 4610c7bd..53f23086 100644 --- a/examples/iec61850_client_example_files/file-tool.c +++ b/examples/iec61850_client_example_files/file-tool.c @@ -248,6 +248,8 @@ main(int argc, char** argv) case FileOperationType_Set: setFile(con); break; + case FileOperationType_None: + break; } From 581bd6e9af4de1a94f78d2f413dad770eb322134 Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Fri, 10 Nov 2017 14:19:30 +0100 Subject: [PATCH 6/9] run tests in Travis-CI --- .travis.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 3c601deb..42856c26 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,4 +23,7 @@ before_install: fi script: - - mkdir build && cd build && cmake .. -DBUILD_PYTHON_BINDINGS=ON && make + - mkdir build && cd build + - cmake .. -DBUILD_PYTHON_BINDINGS=ON + - make + - make test From dffe21930323f2b845bb7717cf7b1c28ca873101 Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Fri, 10 Nov 2017 14:36:49 +0100 Subject: [PATCH 7/9] fix version incompatability in Swig --- .travis.yml | 2 +- build/pyiec61850/CTestTestfile.cmake | 7 + build/pyiec61850/Makefile | 266 +++++++++++++++++++++++++++ pyiec61850/CMakeLists.txt | 14 +- 4 files changed, 283 insertions(+), 6 deletions(-) create mode 100644 build/pyiec61850/CTestTestfile.cmake create mode 100644 build/pyiec61850/Makefile diff --git a/.travis.yml b/.travis.yml index 42856c26..13ffe2b3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,9 +21,9 @@ before_install: brew update; brew install swig python sqlite; fi + - mkdir -p build && cd build script: - - mkdir build && cd build - cmake .. -DBUILD_PYTHON_BINDINGS=ON - make - make test diff --git a/build/pyiec61850/CTestTestfile.cmake b/build/pyiec61850/CTestTestfile.cmake new file mode 100644 index 00000000..628a0177 --- /dev/null +++ b/build/pyiec61850/CTestTestfile.cmake @@ -0,0 +1,7 @@ +# CMake generated Testfile for +# Source directory: /Users/stv0g/workspace/rwth/villas/node/thirdparty/libiec61850/pyiec61850 +# Build directory: /Users/stv0g/workspace/rwth/villas/node/thirdparty/libiec61850/build/pyiec61850 +# +# This file includes the relevant testing commands required for +# testing this directory and lists subdirectories to be tested as well. +add_test(test_pyiec61850 "/opt/local/bin/python3.6" "/Users/stv0g/workspace/rwth/villas/node/thirdparty/libiec61850/pyiec61850/test_pyiec61850.py") diff --git a/build/pyiec61850/Makefile b/build/pyiec61850/Makefile new file mode 100644 index 00000000..bd54c89f --- /dev/null +++ b/build/pyiec61850/Makefile @@ -0,0 +1,266 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.9 + +# Default target executed when no arguments are given to make. +default_target: all + +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /opt/local/bin/cmake + +# The command to remove a file. +RM = /opt/local/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /Users/stv0g/workspace/rwth/villas/node/thirdparty/libiec61850 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /Users/stv0g/workspace/rwth/villas/node/thirdparty/libiec61850/build + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target install/strip +install/strip: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /opt/local/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip + +# Special rule for the target install/strip +install/strip/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /opt/local/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip/fast + +# Special rule for the target install +install: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /opt/local/bin/cmake -P cmake_install.cmake +.PHONY : install + +# Special rule for the target install +install/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /opt/local/bin/cmake -P cmake_install.cmake +.PHONY : install/fast + +# Special rule for the target list_install_components +list_install_components: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"Development\" \"Libraries\" \"Unspecified\"" +.PHONY : list_install_components + +# Special rule for the target list_install_components +list_install_components/fast: list_install_components + +.PHONY : list_install_components/fast + +# Special rule for the target install/local +install/local: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /opt/local/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local + +# Special rule for the target install/local +install/local/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /opt/local/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local/fast + +# Special rule for the target test +test: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running tests..." + /opt/local/bin/ctest --force-new-ctest-process $(ARGS) +.PHONY : test + +# Special rule for the target test +test/fast: test + +.PHONY : test/fast + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake cache editor..." + /opt/local/bin/ccmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache + +.PHONY : edit_cache/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..." + /opt/local/bin/cmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache + +.PHONY : rebuild_cache/fast + +# Special rule for the target package_source +package_source: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Run CPack packaging tool for source..." + cd /Users/stv0g/workspace/rwth/villas/node/thirdparty/libiec61850/build && /opt/local/bin/cpack --config ./CPackSourceConfig.cmake /Users/stv0g/workspace/rwth/villas/node/thirdparty/libiec61850/build/CPackSourceConfig.cmake +.PHONY : package_source + +# Special rule for the target package_source +package_source/fast: package_source + +.PHONY : package_source/fast + +# Special rule for the target package +package: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Run CPack packaging tool..." + cd /Users/stv0g/workspace/rwth/villas/node/thirdparty/libiec61850/build && /opt/local/bin/cpack --config ./CPackConfig.cmake +.PHONY : package + +# Special rule for the target package +package/fast: package + +.PHONY : package/fast + +# The main all target +all: cmake_check_build_system + cd /Users/stv0g/workspace/rwth/villas/node/thirdparty/libiec61850/build && $(CMAKE_COMMAND) -E cmake_progress_start /Users/stv0g/workspace/rwth/villas/node/thirdparty/libiec61850/build/CMakeFiles /Users/stv0g/workspace/rwth/villas/node/thirdparty/libiec61850/build/pyiec61850/CMakeFiles/progress.marks + cd /Users/stv0g/workspace/rwth/villas/node/thirdparty/libiec61850/build && $(MAKE) -f CMakeFiles/Makefile2 pyiec61850/all + $(CMAKE_COMMAND) -E cmake_progress_start /Users/stv0g/workspace/rwth/villas/node/thirdparty/libiec61850/build/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + cd /Users/stv0g/workspace/rwth/villas/node/thirdparty/libiec61850/build && $(MAKE) -f CMakeFiles/Makefile2 pyiec61850/clean +.PHONY : clean + +# The main clean target +clean/fast: clean + +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + cd /Users/stv0g/workspace/rwth/villas/node/thirdparty/libiec61850/build && $(MAKE) -f CMakeFiles/Makefile2 pyiec61850/preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + cd /Users/stv0g/workspace/rwth/villas/node/thirdparty/libiec61850/build && $(MAKE) -f CMakeFiles/Makefile2 pyiec61850/preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + cd /Users/stv0g/workspace/rwth/villas/node/thirdparty/libiec61850/build && $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +# Convenience name for target. +pyiec61850/CMakeFiles/_iec61850.dir/rule: + cd /Users/stv0g/workspace/rwth/villas/node/thirdparty/libiec61850/build && $(MAKE) -f CMakeFiles/Makefile2 pyiec61850/CMakeFiles/_iec61850.dir/rule +.PHONY : pyiec61850/CMakeFiles/_iec61850.dir/rule + +# Convenience name for target. +_iec61850: pyiec61850/CMakeFiles/_iec61850.dir/rule + +.PHONY : _iec61850 + +# fast build rule for target. +_iec61850/fast: + cd /Users/stv0g/workspace/rwth/villas/node/thirdparty/libiec61850/build && $(MAKE) -f pyiec61850/CMakeFiles/_iec61850.dir/build.make pyiec61850/CMakeFiles/_iec61850.dir/build +.PHONY : _iec61850/fast + +iec61850PYTHON_wrap.o: iec61850PYTHON_wrap.cxx.o + +.PHONY : iec61850PYTHON_wrap.o + +# target to build an object file +iec61850PYTHON_wrap.cxx.o: + cd /Users/stv0g/workspace/rwth/villas/node/thirdparty/libiec61850/build && $(MAKE) -f pyiec61850/CMakeFiles/_iec61850.dir/build.make pyiec61850/CMakeFiles/_iec61850.dir/iec61850PYTHON_wrap.cxx.o +.PHONY : iec61850PYTHON_wrap.cxx.o + +iec61850PYTHON_wrap.i: iec61850PYTHON_wrap.cxx.i + +.PHONY : iec61850PYTHON_wrap.i + +# target to preprocess a source file +iec61850PYTHON_wrap.cxx.i: + cd /Users/stv0g/workspace/rwth/villas/node/thirdparty/libiec61850/build && $(MAKE) -f pyiec61850/CMakeFiles/_iec61850.dir/build.make pyiec61850/CMakeFiles/_iec61850.dir/iec61850PYTHON_wrap.cxx.i +.PHONY : iec61850PYTHON_wrap.cxx.i + +iec61850PYTHON_wrap.s: iec61850PYTHON_wrap.cxx.s + +.PHONY : iec61850PYTHON_wrap.s + +# target to generate assembly for a file +iec61850PYTHON_wrap.cxx.s: + cd /Users/stv0g/workspace/rwth/villas/node/thirdparty/libiec61850/build && $(MAKE) -f pyiec61850/CMakeFiles/_iec61850.dir/build.make pyiec61850/CMakeFiles/_iec61850.dir/iec61850PYTHON_wrap.cxx.s +.PHONY : iec61850PYTHON_wrap.cxx.s + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... install/strip" + @echo "... install" + @echo "... list_install_components" + @echo "... install/local" + @echo "... test" + @echo "... edit_cache" + @echo "... rebuild_cache" + @echo "... package_source" + @echo "... package" + @echo "... _iec61850" + @echo "... iec61850PYTHON_wrap.o" + @echo "... iec61850PYTHON_wrap.i" + @echo "... iec61850PYTHON_wrap.s" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + cd /Users/stv0g/workspace/rwth/villas/node/thirdparty/libiec61850/build && $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/pyiec61850/CMakeLists.txt b/pyiec61850/CMakeLists.txt index 235b832e..156f90f2 100644 --- a/pyiec61850/CMakeLists.txt +++ b/pyiec61850/CMakeLists.txt @@ -13,13 +13,17 @@ set_property(SOURCE iec61850.i PROPERTY CPLUSPLUS ON) if(WIN32) set(LIBS iec61850 ws2_32) else() - set(LIBS iec61850 iec61850-shared) + set(LIBS iec61850-shared) endif() -swig_add_library(iec61850 - LANGUAGE python - SOURCES iec61850.i -) +if(${SWIG_VERSION} VERSION_LESS 3.0) + swig_add_module(iec61850 python iec61850.i) +else() + swig_add_library(iec61850 + LANGUAGE python + SOURCES iec61850.i + ) +endif() swig_link_libraries(iec61850 ${PYTHON_LIBRARIES} ${LIBS}) From 1d8d6211ca2962ea0aba7c2b2977f160ff7aa1a4 Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Fri, 10 Nov 2017 14:55:14 +0100 Subject: [PATCH 8/9] remove OS X to cut build time --- .travis.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 13ffe2b3..c1b0da08 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,9 +1,5 @@ language: c -os: - - linux - - osx - compiler: - clang - gcc From ddae3c70ee60ffe9347f690b0e98e2acd5f4978d Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Sun, 12 Nov 2017 11:13:18 +0100 Subject: [PATCH 9/9] use correct include path for generated configuration files --- CMakeLists.txt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 440acaf5..cff01918 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -57,7 +57,7 @@ option(DEBUG_MMS_CLIENT "Enable MMS CLIENT printf debugging" OFF) # DEBUG_IED_CLIENT DEBUG_MMS_SERVER DEBUG_MMS_CLIENT) include_directories( - config + ${CMAKE_CURRENT_BINARY_DIR}/config src/common/inc src/goose src/sampled_values @@ -116,7 +116,10 @@ if(MSVC) 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) +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)