| # |
| # 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=<path to toolchain>/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") |