# # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to you under the Apache License, Version # 2.0 (the "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #------------------------------------------------------------------# # #HOW TO BUILD CAPU FOR QNX: #1. set QNX_HOST environment variable to your host's build tools #2. set QNX_TARGET environment variable to the qnx target location #3. add QNX_HOST/usr/bin to your path # Windows: set PATH=%QNX_HOST%\usr\bin;%PATH% # Linux: export PATH=$QNX_HOST/usr/bin:$PATH #4. execute cmake in build-folder: # cmake -G "Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=/QNX_X86.toolchain -DCMAKE_BUILD_TYPE=Debug|Release .. #5. make # #------------------------------------------------------------------# INCLUDE(CMakeForceCompiler) SET(CMAKE_SYSTEM_NAME QNX) SET(TARGET_OS QNX) SET(TARGET_ARCH X86_32) SET(TARGET_COMPILER GCC) SET(CMAKE_SYSTEM_PROCESSOR x86) #set successful exit value on target system SET(THREADS_PTHREAD_ARG 0) #check environment variables IF ("$ENV{QNX_HOST}" STREQUAL "") MESSAGE(FATAL_ERROR "QNX_HOST environment variable not found. Please set the variable to your host's build tools") ENDIF () IF ("$ENV{QNX_TARGET}" STREQUAL "") MESSAGE(FATAL_ERROR "QNX_TARGET environment variable not found. Please set the variable to the qnx target location") ENDIF () #set executable suffix IF(CMAKE_HOST_WIN32) SET(HOST_EXECUTABLE_SUFFIX ".exe") #convert windows paths to cmake paths FILE(TO_CMAKE_PATH "$ENV{QNX_HOST}" QNX_HOST) FILE(TO_CMAKE_PATH "$ENV{QNX_TARGET}" QNX_TARGET) ELSE() SET(QNX_HOST "$ENV{QNX_HOST}") SET(QNX_TARGET "$ENV{QNX_TARGET}") ENDIF() MESSAGE(STATUS "using QNX_HOST ${QNX_HOST}") MESSAGE(STATUS "using QNX_TARGET ${QNX_TARGET}") #set c compiler and flags SET(CMAKE_C_COMPILER ${QNX_HOST}/usr/bin/nto${CMAKE_SYSTEM_PROCESSOR}-gcc${HOST_EXECUTABLE_SUFFIX}) SET(CMAKE_C_FLAGS "-march=i486") SET(CMAKE_C_FLAGS_DEBUG "{CMAKE_C_FLAGS} -g -D_DEBUG" CACHE STRING "C Flags Debug" FORCE) SET(CMAKE_C_FLAGS_RELEASE "{CMAKE_C_FLAGS} -O3 -DNDEBUG" CACHE STRING "CXX Flags Debug" FORCE) #set c++ compiler and flags SET(CMAKE_CXX_COMPILER "${QNX_HOST}/usr/bin/nto${CMAKE_SYSTEM_PROCESSOR}-g++${HOST_EXECUTABLE_SUFFIX}") SET(CMAKE_CXX_FLAGS "-march=i486") SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS} -g -D_DEBUG" CACHE STRING "C Flags Release" FORCE) SET(CMAKE_CXX_FLAGS_RELEASE "{CMAKE_CXX_FLAGS} -O3 -DNDEBUG" CACHE STRING "CXX Flags Release" FORCE) #set linker SET(CMAKE_LINKER "${QNX_HOST}/usr/bin/nto${CMAKE_SYSTEM_PROCESSOR}-ld${HOST_EXECUTABLE_SUFFIX}" CACHE PATH "QNX Linker Program") #set make SET(CMAKE_MAKE_PROGRAM "${QNX_HOST}/usr/bin/make${HOST_EXECUTABLE_SUFFIX}" CACHE PATH "QNX Make Program") #set other tools SET(CMAKE_AR "${QNX_HOST}/usr/bin/nto${CMAKE_SYSTEM_PROCESSOR}-ar${HOST_EXECUTABLE_SUFFIX}" CACHE PATH "QNX ar 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_RANLIB "${QNX_HOST}/usr/bin/nto${CMAKE_SYSTEM_PROCESSOR}-ranlib${HOST_EXECUTABLE_SUFFIX}" CACHE PATH "QNX ranlib Program") SET(CMAKE_SH "${QNX_HOST}/usr/bin/sh${HOST_EXECUTABLE_SUFFIX}" CACHE PATH "QNX shell Program") SET(CMAKE_STRIP "${QNX_HOST}/usr/bin/nto${CMAKE_SYSTEM_PROCESSOR}-strip${HOST_EXECUTABLE_SUFFIX}" CACHE PATH "QNX Strip Program") #set target environment SET(CMAKE_FIND_ROOT_PATH "${QNX_TARGET}") # search for programs in the build host directories only SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) ADD_DEFINITIONS("-DTARGET_OS=QNX") ADD_DEFINITIONS("-DTARGET_ARCH=X86_32") ADD_DEFINITIONS("-DOS_QNX") ADD_DEFINITIONS("-DARCH_X86_32") # necessary for gmock ADD_DEFINITIONS("-DGTEST_HAS_PTHREAD=1")