|
@@ -296,6 +296,7 @@ set(lib_sources ${PROJECT_SOURCE_DIR}/src/ua_types.c
|
|
${PROJECT_SOURCE_DIR}/src/ua_types_encoding_binary.c
|
|
${PROJECT_SOURCE_DIR}/src/ua_types_encoding_binary.c
|
|
${PROJECT_BINARY_DIR}/src_generated/ua_types_generated.c
|
|
${PROJECT_BINARY_DIR}/src_generated/ua_types_generated.c
|
|
${PROJECT_BINARY_DIR}/src_generated/ua_transport_generated.c
|
|
${PROJECT_BINARY_DIR}/src_generated/ua_transport_generated.c
|
|
|
|
+ ${PROJECT_BINARY_DIR}/src_generated/ua_statuscode_descriptions.c
|
|
${PROJECT_SOURCE_DIR}/src/ua_util.c
|
|
${PROJECT_SOURCE_DIR}/src/ua_util.c
|
|
${PROJECT_SOURCE_DIR}/src/ua_connection.c
|
|
${PROJECT_SOURCE_DIR}/src/ua_connection.c
|
|
${PROJECT_SOURCE_DIR}/src/ua_securechannel.c
|
|
${PROJECT_SOURCE_DIR}/src/ua_securechannel.c
|
|
@@ -388,6 +389,12 @@ add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/src_generated/ua_types_generated
|
|
${PROJECT_SOURCE_DIR}/tools/schema/datatypes_minimal.txt
|
|
${PROJECT_SOURCE_DIR}/tools/schema/datatypes_minimal.txt
|
|
${CMAKE_CURRENT_SOURCE_DIR}/tools/schema/Opc.Ua.Types.bsd
|
|
${CMAKE_CURRENT_SOURCE_DIR}/tools/schema/Opc.Ua.Types.bsd
|
|
${CMAKE_CURRENT_SOURCE_DIR}/tools/schema/NodeIds.csv)
|
|
${CMAKE_CURRENT_SOURCE_DIR}/tools/schema/NodeIds.csv)
|
|
|
|
+# we need a custom target to avoid that the generator is called concurrently and thus overwriting files while the other thread is compiling
|
|
|
|
+add_custom_target(open62541-generator-types DEPENDS
|
|
|
|
+ ${PROJECT_BINARY_DIR}/src_generated/ua_types_generated.c
|
|
|
|
+ ${PROJECT_BINARY_DIR}/src_generated/ua_types_generated.h
|
|
|
|
+ ${PROJECT_BINARY_DIR}/src_generated/ua_types_generated_handling.h
|
|
|
|
+ ${PROJECT_BINARY_DIR}/src_generated/ua_types_generated_encoding_binary.h)
|
|
|
|
|
|
# transport data types
|
|
# transport data types
|
|
add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/src_generated/ua_transport_generated.c
|
|
add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/src_generated/ua_transport_generated.c
|
|
@@ -403,6 +410,12 @@ add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/src_generated/ua_transport_gener
|
|
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/tools/generate_datatypes.py
|
|
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/tools/generate_datatypes.py
|
|
${PROJECT_SOURCE_DIR}/tools/schema/datatypes_transport.txt
|
|
${PROJECT_SOURCE_DIR}/tools/schema/datatypes_transport.txt
|
|
${CMAKE_CURRENT_SOURCE_DIR}/tools/schema/Custom.Opc.Ua.Transport.bsd)
|
|
${CMAKE_CURRENT_SOURCE_DIR}/tools/schema/Custom.Opc.Ua.Transport.bsd)
|
|
|
|
+# we need a custom target to avoid that the generator is called concurrently and thus overwriting files while the other thread is compiling
|
|
|
|
+add_custom_target(open62541-generator-transport DEPENDS
|
|
|
|
+ ${PROJECT_BINARY_DIR}/src_generated/ua_transport_generated.c
|
|
|
|
+ ${PROJECT_BINARY_DIR}/src_generated/ua_transport_generated.h
|
|
|
|
+ ${PROJECT_BINARY_DIR}/src_generated/ua_transport_generated_handling.h
|
|
|
|
+ ${PROJECT_BINARY_DIR}/src_generated/ua_transport_generated_encoding_binary.h)
|
|
|
|
|
|
# statuscode explanation
|
|
# statuscode explanation
|
|
add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/src_generated/ua_statuscode_descriptions.c
|
|
add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/src_generated/ua_statuscode_descriptions.c
|
|
@@ -411,24 +424,9 @@ add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/src_generated/ua_statuscode_desc
|
|
${PROJECT_SOURCE_DIR}/tools/schema/Opc.Ua.StatusCodes.csv ${PROJECT_BINARY_DIR}/src_generated/ua_statuscode_descriptions
|
|
${PROJECT_SOURCE_DIR}/tools/schema/Opc.Ua.StatusCodes.csv ${PROJECT_BINARY_DIR}/src_generated/ua_statuscode_descriptions
|
|
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/tools/generate_statuscode_descriptions.py
|
|
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/tools/generate_statuscode_descriptions.py
|
|
${CMAKE_CURRENT_SOURCE_DIR}/tools/schema/Opc.Ua.StatusCodes.csv)
|
|
${CMAKE_CURRENT_SOURCE_DIR}/tools/schema/Opc.Ua.StatusCodes.csv)
|
|
-list(APPEND lib_sources ${PROJECT_BINARY_DIR}/src_generated/ua_statuscode_descriptions.c)
|
|
|
|
-
|
|
|
|
-# generated namespace 0
|
|
|
|
-add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/src_generated/ua_namespaceinit_generated.c
|
|
|
|
- ${PROJECT_BINARY_DIR}/src_generated/ua_namespaceinit_generated.h
|
|
|
|
- PRE_BUILD
|
|
|
|
- COMMAND ${PYTHON_EXECUTABLE} ${PROJECT_SOURCE_DIR}/tools/pyUANamespace/generate_open62541CCode.py
|
|
|
|
- -i ${PROJECT_SOURCE_DIR}/tools/pyUANamespace/NodeID_AssumeExternal.txt
|
|
|
|
- -s description -b ${PROJECT_SOURCE_DIR}/tools/pyUANamespace/NodeID_Blacklist.txt
|
|
|
|
- ${PROJECT_SOURCE_DIR}/tools/schema/namespace0/${GENERATE_NAMESPACE0_FILE}
|
|
|
|
- ${PROJECT_BINARY_DIR}/src_generated/ua_namespaceinit_generated
|
|
|
|
- DEPENDS ${PROJECT_SOURCE_DIR}/tools/schema/namespace0/${GENERATE_NAMESPACE0_FILE}
|
|
|
|
- ${PROJECT_SOURCE_DIR}/tools/pyUANamespace/generate_open62541CCode.py
|
|
|
|
- ${PROJECT_SOURCE_DIR}/tools/pyUANamespace/open62541_MacroHelper.py
|
|
|
|
- ${PROJECT_SOURCE_DIR}/tools/pyUANamespace/ua_builtin_types.py
|
|
|
|
- ${PROJECT_SOURCE_DIR}/tools/pyUANamespace/ua_constants.py
|
|
|
|
- ${PROJECT_SOURCE_DIR}/tools/pyUANamespace/ua_namespace.py
|
|
|
|
- ${PROJECT_SOURCE_DIR}/tools/pyUANamespace/ua_node_types.py)
|
|
|
|
|
|
+# we need a custom target to avoid that the generator is called concurrently and thus overwriting files while the other thread is compiling
|
|
|
|
+add_custom_target(open62541-generator-statuscode DEPENDS
|
|
|
|
+ ${PROJECT_BINARY_DIR}/src_generated/ua_statuscode_descriptions.c)
|
|
|
|
|
|
# single-file release
|
|
# single-file release
|
|
add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/open62541.h
|
|
add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/open62541.h
|
|
@@ -445,8 +443,32 @@ add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/open62541.c
|
|
${internal_headers} ${lib_sources} ${default_plugin_sources}
|
|
${internal_headers} ${lib_sources} ${default_plugin_sources}
|
|
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/tools/amalgamate.py ${internal_headers} ${lib_sources})
|
|
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/tools/amalgamate.py ${internal_headers} ${lib_sources})
|
|
|
|
|
|
-ADD_CUSTOM_TARGET(open62541_amalgamation DEPENDS ${PROJECT_BINARY_DIR}/open62541.h
|
|
|
|
- ${PROJECT_BINARY_DIR}/open62541.c)
|
|
|
|
|
|
+add_custom_target(open62541_amalgamation_source DEPENDS ${PROJECT_BINARY_DIR}/open62541.c)
|
|
|
|
+add_custom_target(open62541_amalgamation_header DEPENDS ${PROJECT_BINARY_DIR}/open62541.h)
|
|
|
|
+
|
|
|
|
+add_dependencies(open62541_amalgamation_source open62541-generator-types open62541-generator-transport open62541-generator-statuscode)
|
|
|
|
+add_dependencies(open62541_amalgamation_header open62541-generator-types)
|
|
|
|
+
|
|
|
|
+# generated namespace 0
|
|
|
|
+add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/src_generated/ua_namespaceinit_generated.c
|
|
|
|
+ ${PROJECT_BINARY_DIR}/src_generated/ua_namespaceinit_generated.h
|
|
|
|
+ PRE_BUILD
|
|
|
|
+ COMMAND ${PYTHON_EXECUTABLE} ${PROJECT_SOURCE_DIR}/tools/pyUANamespace/generate_open62541CCode.py
|
|
|
|
+ -i ${PROJECT_SOURCE_DIR}/tools/pyUANamespace/NodeID_AssumeExternal.txt
|
|
|
|
+ -s description -b ${PROJECT_SOURCE_DIR}/tools/pyUANamespace/NodeID_Blacklist.txt
|
|
|
|
+ ${PROJECT_SOURCE_DIR}/tools/schema/namespace0/${GENERATE_NAMESPACE0_FILE}
|
|
|
|
+ ${PROJECT_BINARY_DIR}/src_generated/ua_namespaceinit_generated
|
|
|
|
+ DEPENDS ${PROJECT_SOURCE_DIR}/tools/schema/namespace0/${GENERATE_NAMESPACE0_FILE}
|
|
|
|
+ ${PROJECT_SOURCE_DIR}/tools/pyUANamespace/generate_open62541CCode.py
|
|
|
|
+ ${PROJECT_SOURCE_DIR}/tools/pyUANamespace/open62541_MacroHelper.py
|
|
|
|
+ ${PROJECT_SOURCE_DIR}/tools/pyUANamespace/ua_builtin_types.py
|
|
|
|
+ ${PROJECT_SOURCE_DIR}/tools/pyUANamespace/ua_constants.py
|
|
|
|
+ ${PROJECT_SOURCE_DIR}/tools/pyUANamespace/ua_namespace.py
|
|
|
|
+ ${PROJECT_SOURCE_DIR}/tools/pyUANamespace/ua_node_types.py)
|
|
|
|
+# we need a custom target to avoid that the generator is called concurrently and thus overwriting files while the other thread is compiling
|
|
|
|
+add_custom_target(open62541-generator-namespace DEPENDS
|
|
|
|
+ ${PROJECT_BINARY_DIR}/src_generated/ua_namespaceinit_generated.c
|
|
|
|
+ ${PROJECT_BINARY_DIR}/src_generated/ua_namespaceinit_generated.h)
|
|
|
|
|
|
#####################
|
|
#####################
|
|
# Build the Library #
|
|
# Build the Library #
|
|
@@ -460,9 +482,10 @@ if(UA_ENABLE_AMALGAMATION)
|
|
add_library(open62541-object OBJECT ${PROJECT_BINARY_DIR}/open62541.c ${PROJECT_BINARY_DIR}/open62541.h)
|
|
add_library(open62541-object OBJECT ${PROJECT_BINARY_DIR}/open62541.c ${PROJECT_BINARY_DIR}/open62541.h)
|
|
target_include_directories(open62541-object PRIVATE ${PROJECT_BINARY_DIR})
|
|
target_include_directories(open62541-object PRIVATE ${PROJECT_BINARY_DIR})
|
|
|
|
|
|
- # make sure the open62541_amalgamation target builds before so that amalgamation is finished and it is not executed again for open62541-object
|
|
|
|
|
|
+ # make sure the open62541_amalgamation target builds before so that amalgamation is finished and it is not executed again for open62541-object
|
|
# and thus may overwrite the amalgamation result during multiprocessor compilation
|
|
# and thus may overwrite the amalgamation result during multiprocessor compilation
|
|
- add_dependencies(open62541-object open62541_amalgamation)
|
|
|
|
|
|
+ # the header is already a dependency of open62541 target itself
|
|
|
|
+ add_dependencies(open62541-object open62541_amalgamation_source)
|
|
|
|
|
|
add_library(open62541 $<TARGET_OBJECTS:open62541-object>)
|
|
add_library(open62541 $<TARGET_OBJECTS:open62541-object>)
|
|
|
|
|
|
@@ -472,9 +495,11 @@ if(UA_ENABLE_AMALGAMATION)
|
|
else()
|
|
else()
|
|
add_definitions(-DUA_NO_AMALGAMATION)
|
|
add_definitions(-DUA_NO_AMALGAMATION)
|
|
add_library(open62541-object OBJECT ${lib_sources} ${internal_headers} ${exported_headers})
|
|
add_library(open62541-object OBJECT ${lib_sources} ${internal_headers} ${exported_headers})
|
|
|
|
+ add_dependencies(open62541-object open62541-generator-types open62541-generator-transport open62541-generator-statuscode)
|
|
target_include_directories(open62541-object PRIVATE ${PROJECT_SOURCE_DIR}/src)
|
|
target_include_directories(open62541-object PRIVATE ${PROJECT_SOURCE_DIR}/src)
|
|
|
|
|
|
add_library(open62541-plugins OBJECT ${default_plugin_sources} ${exported_headers})
|
|
add_library(open62541-plugins OBJECT ${default_plugin_sources} ${exported_headers})
|
|
|
|
+ add_dependencies(open62541-plugins open62541-generator-types)
|
|
target_include_directories(open62541-plugins PRIVATE ${PROJECT_SOURCE_DIR}/plugins)
|
|
target_include_directories(open62541-plugins PRIVATE ${PROJECT_SOURCE_DIR}/plugins)
|
|
target_include_directories(open62541-plugins PRIVATE ${PROJECT_BINARY_DIR}/src_generated)
|
|
target_include_directories(open62541-plugins PRIVATE ${PROJECT_BINARY_DIR}/src_generated)
|
|
target_compile_definitions(open62541-plugins PRIVATE -DUA_DYNAMIC_LINKING_EXPORT)
|
|
target_compile_definitions(open62541-plugins PRIVATE -DUA_DYNAMIC_LINKING_EXPORT)
|
|
@@ -487,6 +512,13 @@ else()
|
|
endif()
|
|
endif()
|
|
endif()
|
|
endif()
|
|
|
|
|
|
|
|
+if(UA_ENABLE_GENERATE_NAMESPACE0)
|
|
|
|
+ add_dependencies(open62541_amalgamation_source open62541-generator-namespace)
|
|
|
|
+ if(NOT UA_ENABLE_AMALGAMATION)
|
|
|
|
+ add_dependencies(open62541-object open62541-generator-namespace)
|
|
|
|
+ endif()
|
|
|
|
+endif()
|
|
|
|
+
|
|
# Export Symbols
|
|
# Export Symbols
|
|
target_compile_definitions(open62541-object PRIVATE -DUA_DYNAMIC_LINKING_EXPORT)
|
|
target_compile_definitions(open62541-object PRIVATE -DUA_DYNAMIC_LINKING_EXPORT)
|
|
target_compile_definitions(open62541 PRIVATE -DUA_DYNAMIC_LINKING_EXPORT)
|
|
target_compile_definitions(open62541 PRIVATE -DUA_DYNAMIC_LINKING_EXPORT)
|
|
@@ -499,7 +531,7 @@ endif()
|
|
target_link_libraries(open62541 ${open62541_LIBRARIES})
|
|
target_link_libraries(open62541 ${open62541_LIBRARIES})
|
|
|
|
|
|
# Always generate the amalgamated header
|
|
# Always generate the amalgamated header
|
|
-add_dependencies(open62541 open62541_amalgamation)
|
|
|
|
|
|
+add_dependencies(open62541 open62541_amalgamation_header)
|
|
|
|
|
|
# Generate properly versioned shared library links on Linux
|
|
# Generate properly versioned shared library links on Linux
|
|
SET_TARGET_PROPERTIES(open62541 PROPERTIES SOVERSION 0 VERSION "${OPEN62541_VER_MAJOR}.${OPEN62541_VER_MINOR}.${OPEN62541_VER_PATCH}")
|
|
SET_TARGET_PROPERTIES(open62541 PROPERTIES SOVERSION 0 VERSION "${OPEN62541_VER_MAJOR}.${OPEN62541_VER_MINOR}.${OPEN62541_VER_PATCH}")
|