Browse Source

Configuration for the compile under QNX6.5 (#995)

* Configuration for the compile under QNX6.5

* Errors corrected

* Errors corrected
Kravtsov Maksim 8 years ago
parent
commit
71c772adea
5 changed files with 102 additions and 6 deletions
  1. 2 2
      CMakeLists.txt
  2. 9 3
      examples/CMakeLists.txt
  3. 5 1
      include/ua_config.h.in
  4. 1 0
      tools/amalgamate.py
  5. 85 0
      tools/cmake/Toolchain-QNX-6.5.0.cmake

+ 2 - 2
CMakeLists.txt

@@ -147,9 +147,9 @@ if(NOT UA_COMPILE_AS_CXX AND (CMAKE_COMPILER_IS_GNUCC OR "x${CMAKE_C_COMPILER_ID
                     -Wno-unused-function -Wno-unused-label -Wpointer-arith -Wreturn-type -Wsign-compare
                     -Wmultichar -Wstrict-overflow -Wcast-qual -Wmissing-prototypes -Wstrict-prototypes
                     -Winit-self -Wuninitialized -Wformat-security -Wformat-nonliteral)
-    if(NOT WIN32 AND NOT CYGWIN)
+     if(NOT WIN32 AND NOT CYGWIN AND NOT QNXNTO)
         add_definitions(-Wshadow -Wconversion -fvisibility=hidden -fPIC)
-    endif()
+     endif()
 
     # Linker
     set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") # cmake sets -rdynamic by default

+ 9 - 3
examples/CMakeLists.txt

@@ -12,9 +12,15 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin/examples)
 
 list(APPEND LIBS ${open62541_LIBRARIES})
 if(NOT WIN32)
-  list(APPEND LIBS pthread)
-  if (NOT APPLE)
-    list(APPEND LIBS rt)
+  if(QNXNTO)
+    list(APPEND LIBS socket)
+    list(APPEND LIBS c)
+    list(APPEND LIBS stdc++)
+  else()
+    list(APPEND LIBS pthread)
+    if (NOT APPLE)
+      list(APPEND LIBS rt)
+    endif()
   endif()
 else()
   list(APPEND LIBS ws2_32)

+ 5 - 1
include/ua_config.h.in

@@ -46,7 +46,11 @@ extern "C" {
  * Standard Includes
  * ----------------- */
 #ifndef _XOPEN_SOURCE
-# define _XOPEN_SOURCE 500
+ #if defined(__QNX__) || defined(__QNXNTO__)
+  # define _XOPEN_SOURCE 600
+ #else
+  # define _XOPEN_SOURCE 500
+ #endif
 #endif
 #ifndef _DEFAULT_SOURCE
 # define _DEFAULT_SOURCE

+ 1 - 0
tools/amalgamate.py

@@ -1,3 +1,4 @@
+# coding: UTF-8
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this 
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.

+ 85 - 0
tools/cmake/Toolchain-QNX-6.5.0.cmake

@@ -0,0 +1,85 @@
+#
+# (C) Copyright 2009 Johns Hopkins University (JHU), All Rights
+# Reserved.
+#
+# --- begin cisst license - do not edit ---
+# 
+# This software is provided "as is" under an open source license, with
+# no warranty.  The complete license can be found in license.txt and
+# http://www.cisst.org/cisst/license.txt.
+# 
+# --- end cisst license ---
+
+SET(CMAKE_SYSTEM_NAME QNX)
+SET(CMAKE_SYSTEM_VERSION 6.5.0)
+SET(CMAKE_SYSTEM_PROCESSOR x86)
+SET(TOOLCHAIN QNX)
+
+#SET(CMAKE_IMPORT_LIBRARY_SUFFIX ".a")
+
+SET(CMAKE_SHARED_LIBRARY_PREFIX "lib")
+SET(CMAKE_SHARED_LIBRARY_SUFFIX ".so")
+SET(CMAKE_STATIC_LIBRARY_PREFIX "lib")
+SET(CMAKE_STATIC_LIBRARY_SUFFIX ".a")
+
+IF(CMAKE_HOST_WIN32)
+  SET(HOST_EXECUTABLE_SUFFIX ".exe")
+ENDIF(CMAKE_HOST_WIN32)
+
+FIND_PATH(QNX_HOST
+  NAME usr/bin/qcc${HOST_EXECUTABLE_SUFFIX}
+  PATHS $ENV{QNX_HOST} C:/QNX650/host/win32/
+  NO_CMAKE_PATH
+  NO_CMAKE_ENVIRONMENT_PATH
+)
+  
+FIND_PATH(QNX_TARGET
+  NAME usr/include/qnx_errno.h
+  PATHS $ENV{QNX_TARGET} C:/QNX650/target/qnx6/
+  NO_CMAKE_PATH
+  NO_CMAKE_ENVIRONMENT_PATH
+)
+
+IF(CMAKE_HOST_WIN32)
+  FIND_PATH(QNX_CONFIGURATION
+    NAME bin/qnxactivate.exe
+    PATHS $ENV{QNX_CONFIGURATION}
+    "C:/Program Files/QNX Software Systems/qconfig"
+    NO_CMAKE_PATH
+    NO_CMAKE_ENVIRONMENT_PATH
+ )
+ENDIF(CMAKE_HOST_WIN32)
+
+SET(ENV{QNX_HOST} ${QNX_HOST})
+SET(ENV{QNX_TARGET} ${QNX_TARGET})
+IF(CMAKE_HOST_WIN32)
+  SET(ENV{QNX_CONFIGURATION} ${QNX_CONFIGURATION})
+  SET(ENV{PATH} "$ENV{PATH};${QNX_HOST}/usr/bin")
+ENDIF(CMAKE_HOST_WIN32)
+
+SET(CMAKE_MAKE_PROGRAM "${QNX_HOST}/usr/bin/make${HOST_EXECUTABLE_SUFFIX}"    CACHE PATH "QNX Make Program")
+SET(CMAKE_SH           "${QNX_HOST}/usr/bin/sh${HOST_EXECUTABLE_SUFFIX}"      CACHE PATH "QNX shell Program")
+SET(CMAKE_AR           "${QNX_HOST}/usr/bin/nto${CMAKE_SYSTEM_PROCESSOR}-ar${HOST_EXECUTABLE_SUFFIX}"      CACHE PATH "QNX ar Program")
+SET(CMAKE_RANLIB       "${QNX_HOST}/usr/bin/nto${CMAKE_SYSTEM_PROCESSOR}-ranlib${HOST_EXECUTABLE_SUFFIX}"      CACHE PATH "QNX ranlib Program")
+SET(CMAKE_NM           "${QNX_HOST}/usr/bin/nto${CMAKE_SYSTEM_PROCESSOR}-nm${HOST_EXECUTABLE_SUFFIX}"      CACHE PATH "QNX nm Program")
+SET(CMAKE_OBJCOPY      "${QNX_HOST}/usr/bin/nto${CMAKE_SYSTEM_PROCESSOR}-objcopy${HOST_EXECUTABLE_SUFFIX}" CACHE PATH "QNX objcopy Program")
+SET(CMAKE_OBJDUMP      "${QNX_HOST}/usr/bin/nto${CMAKE_SYSTEM_PROCESSOR}-objdump${HOST_EXECUTABLE_SUFFIX}" CACHE PATH "QNX objdump Program")
+SET(CMAKE_LINKER       "${QNX_HOST}/usr/bin/nto${CMAKE_SYSTEM_PROCESSOR}-ld"     CACHE PATH "QNX Linker Program")
+SET(CMAKE_STRIP        "${QNX_HOST}/usr/bin/nto${CMAKE_SYSTEM_PROCESSOR}-strip${HOST_EXECUTABLE_SUFFIX}"   CACHE PATH "QNX Strip Program")
+
+SET(CMAKE_C_COMPILER ${QNX_HOST}/usr/bin/nto${CMAKE_SYSTEM_PROCESSOR}-gcc${HOST_EXECUTABLE_SUFFIX})
+SET(CMAKE_C_FLAGS_DEBUG "-g")
+SET(CMAKE_C_FLAGS_MINSIZEREL "-Os -DNDEBUG")
+SET(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG")
+SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g")
+
+SET(CMAKE_CXX_COMPILER ${QNX_HOST}/usr/bin/nto${CMAKE_SYSTEM_PROCESSOR}-c++${HOST_EXECUTABLE_SUFFIX})
+SET(CMAKE_CXX_FLAGS_DEBUG "-g")
+SET(CMAKE_CXX_FLAGS_MINSIZEREL "-Os -DNDEBUG")
+SET(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG")
+SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g")
+
+SET(CMAKE_FIND_ROOT_PATH ${QNX_TARGET}) 
+SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)