blob: c9ff8f69c6a7eca0a554959a3171d9e978db0f07 [file] [log] [blame]
#
# 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")