Эх сурвалжийг харах

Merge branch 'wpmccormick-develop'

Martin Melik-Merkumians 7 жил өмнө
parent
commit
a3bc070083

+ 1 - 1
bin/posix/setup_posix.sh

@@ -1,2 +1,2 @@
-cmake -DOpENer_PLATFORM:STRING="POSIX" -DCMAKE_BUILD_TYPE:STRING="" ../../source
+cmake -DOpENer_PLATFORM:STRING="POSIX" -DCMAKE_BUILD_TYPE:STRING="" -DBUILD_SHARED_LIBS:BOOL=OFF ../../source
 

+ 14 - 7
source/CMakeLists.txt

@@ -6,17 +6,24 @@ cmake_minimum_required( VERSION 3.3 )
 #######################################
 # Project name                        #
 #######################################
-project( OpENer C )
+project( OpENer LANGUAGES C VERSION 2.3 )
 
 #######################################
 # Project version                     #
 #######################################
-set( OpENer_Device_Config_Vendor_Id 1 CACHE STRING "Device Vendor ID")
-set( OpENer_Device_Config_Device_Type 12 CACHE STRING "Device Type ID")
-set( OpENer_Device_Config_Product_Code 65001 CACHE STRING "Device Product Code")
-set( OpENer_Device_Config_Device_Name "OpENer PC" CACHE STRING "Device Name")
-set( OpENer_VERSION_MAJOR 2 )
-set( OpENer_VERSION_MINOR 2 )
+
+if( NOT DEFINED OpENer_Device_Config_Vendor_Id )
+  set( OpENer_Device_Config_Vendor_Id 1 CACHE STRING "Device Vendor ID" )
+endif()
+if( NOT DEFINED OpENer_Device_Config_Device_Type )
+  set( OpENer_Device_Config_Device_Type 12 CACHE STRING "Device Type ID" )
+endif()
+if( NOT DEFINED OpENer_Device_Config_Product_Code )
+  set( OpENer_Device_Config_Product_Code 65001 CACHE STRING "Device Product Code" )
+endif()
+if( NOT DEFINED OpENer_Device_Config_Device_Name )
+  set( OpENer_Device_Config_Device_Name "OpENer PC" CACHE STRING "Device Name" )
+endif()
 
 configure_file(  
 	"${PROJECT_SOURCE_DIR}/src/ports/devicedata.h.in"

+ 6 - 0
source/buildsupport/POSIX/OpENer_PLATFORM_INCLUDES.cmake

@@ -1,6 +1,12 @@
 macro(opener_platform_spec)
   include_directories(${PORTS_SRC_DIR}/${OpENer_PLATFORM} ${PORTS_SRC_DIR}/${OpENer_PLATFORM}/sample_application)
   set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99 -Werror=implicit-function-declaration" )
+  if(NOT CMAKE_INSTALL_LIBDIR)
+    set( CMAKE_INSTALL_LIBDIR "lib/OpENer")
+  endif()
+  if(NOT CMAKE_INSTALL_INCLUDEDIR )
+    set( CMAKE_INSTALL_INCLUDEDIR "include/OpENer")
+  endif()
   add_definitions( -D_POSIX_C_SOURCE=200112L -D__USE_GNU -D__USE_XOPEN2K -DOPENER_POSIX)
   get_property(languages GLOBAL PROPERTY ENABLED_LANGUAGES)
   if ("CXX" IN_LIST languages)

+ 8 - 1
source/src/CMakeLists.txt

@@ -1,9 +1,9 @@
 #######################################
 # Add subdirectories                  #
 #######################################
+add_subdirectory( enet_encap )
 add_subdirectory( cip )
 add_subdirectory( cip_objects )
-add_subdirectory( enet_encap )
 add_subdirectory( ports )
 add_subdirectory( utils )
 
@@ -17,3 +17,10 @@ opener_common_includes()
 #######################################
 
 opener_platform_support( "INCLUDES" )
+
+if( BUILD_SHARED_LIBS )
+  install(DIRECTORY .
+    DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+    FILES_MATCHING PATTERN "*.h"
+   )
+endif( BUILD_SHARED_LIBS )

+ 13 - 0
source/src/cip/CMakeLists.txt

@@ -15,3 +15,16 @@ opener_platform_support("INCLUDES")
 set( CIP_SRC appcontype.c cipassembly.c cipclass3connection.c cipcommon.c cipconnectionobject.c cipconnectionmanager.c ciperror.h cipethernetlink.c cipidentity.c cipioconnection.c cipmessagerouter.c ciptcpipinterface.c ciptypes.h cipepath.h cipepath.c cipelectronickey.h cipelectronickey.c cipqos.c )
 
 add_library( CIP ${CIP_SRC} )
+
+if( BUILD_SHARED_LIBS )
+  target_link_libraries(CIP ENET_ENCAP)
+  install(TARGETS CIP
+    ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+    RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR}
+  )
+  install(DIRECTORY ${CIP_SRC_DIR}
+    DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+    FILES_MATCHING PATTERN "*.h"
+   )
+endif( BUILD_SHARED_LIBS )

+ 13 - 1
source/src/enet_encap/CMakeLists.txt

@@ -16,4 +16,16 @@ opener_platform_support("INCLUDES")
 
 add_library( ENET_ENCAP ${ENET_ENCAP_SRC} )
 
-target_link_libraries( ENET_ENCAP Utils)
+if( BUILD_SHARED_LIBS )
+  install(TARGETS ENET_ENCAP
+    ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+    RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR}
+  )
+  install(DIRECTORY ${ENET_ENCAP_SRC_DIR}
+    DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+    FILES_MATCHING PATTERN "*.h"
+   )
+endif( BUILD_SHARED_LIBS )
+
+target_link_libraries( ENET_ENCAP Utils)

+ 0 - 1
source/src/opener_api.h

@@ -12,7 +12,6 @@
 #include "typedefs.h"
 #include "ciptypes.h"
 #include "ciperror.h"
-#include "opener_user_conf.h"
 
 /**  @defgroup CIP_API OpENer User interface
  * @brief This is the public interface of the OpENer. It provides all function

+ 16 - 0
source/src/ports/CMakeLists.txt

@@ -17,3 +17,19 @@ opener_platform_support("INCLUDES")
 set( PLATFORM_GENERIC_SRC generic_networkhandler.c socket_timer.c  udp_protocol.c)
 
 add_library( PLATFORM_GENERIC ${PLATFORM_GENERIC_SRC})
+
+if( BUILD_SHARED_LIBS )
+  install(TARGETS PLATFORM_GENERIC
+    ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+    RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR}
+  )
+  install(DIRECTORY ${PORTS_SRC_DIR}
+    DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+    USE_SOURCE_PERMISSIONS
+    FILES_MATCHING
+      PATTERN "*.h"
+      PATTERN "sample_application" EXCLUDE
+   )
+endif( BUILD_SHARED_LIBS )
+

+ 16 - 0
source/src/ports/POSIX/CMakeLists.txt

@@ -23,6 +23,22 @@ opener_common_includes()
 opener_platform_support("INCLUDES")
 
 add_library( ${OpENer_PLATFORM}PLATFORM ${PLATFORM_SPEC_SRC})
+# Mark executables and/or libraries for installation
+
+if( BUILD_SHARED_LIBS )
+  install(TARGETS ${OpENer_PLATFORM}PLATFORM
+    ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+    RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR}
+  )
+  install(DIRECTORY ${PORTS_SRC_DIR}
+    DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+    USE_SOURCE_PERMISSIONS
+    FILES_MATCHING
+      PATTERN "*.h"
+      PATTERN "sample_application" EXCLUDE
+   )
+endif( BUILD_SHARED_LIBS )
 
 add_executable(OpENer main.c)
 

+ 4 - 2
source/src/trace.h

@@ -6,14 +6,16 @@
 #ifndef OPENER_TRACE_H_
 #define OPENER_TRACE_H_
 
-#include <opener_user_conf.h>
-
 /** @file trace.h
  * @brief Tracing infrastructure for OpENer
  */
 
 #ifdef OPENER_WITH_TRACES
 
+#ifndef BUILD_SHARED_LIBS
+#include "opener_user_conf.h"
+#endif
+
 /** @def OPENER_TRACE_LEVEL_ERROR Enable tracing of error messages. This is the
  *  default if no trace level is given.
  */

+ 13 - 0
source/src/utils/CMakeLists.txt

@@ -5,3 +5,16 @@ opener_platform_spec()
 set( UTILS_SRC random.c xorshiftrandom.c doublylinkedlist.c  enipmessage.c)
 
 add_library( Utils ${UTILS_SRC} )
+
+if( BUILD_SHARED_LIBS )
+  install(TARGETS Utils
+    ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+    RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR}
+  )
+  install(DIRECTORY ${UTILS_SRC_DIR}
+    DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+    FILES_MATCHING PATTERN "*.h"
+   )
+endif( BUILD_SHARED_LIBS )
+