From a4dd0ad63c00f4dee3b86dfd3075d1d61b2b3180 Mon Sep 17 00:00:00 2001 From: sanine Date: Sat, 27 Aug 2022 23:52:56 -0500 Subject: add plibsys --- .../plibsys/platforms/bb10-qcc/blackberry.cmake | 141 +++++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 3rdparty/plibsys/platforms/bb10-qcc/blackberry.cmake (limited to '3rdparty/plibsys/platforms/bb10-qcc/blackberry.cmake') diff --git a/3rdparty/plibsys/platforms/bb10-qcc/blackberry.cmake b/3rdparty/plibsys/platforms/bb10-qcc/blackberry.cmake new file mode 100644 index 0000000..6509d24 --- /dev/null +++ b/3rdparty/plibsys/platforms/bb10-qcc/blackberry.cmake @@ -0,0 +1,141 @@ +set (CMAKE_SYSTEM_NAME QNX) +set (CMAKE_SYSTEM_VERSION 8.0.0) +set (TOOLCHAIN QNX) + +set (CPUVARDIR $ENV{CPUVARDIR}) + +if (NOT CPUVARDIR) + message (FATAL_ERROR "CPU architecture not set") +endif() + +if (${CPUVARDIR} STREQUAL "armle-v7") + set (CMAKE_SYSTEM_PROCESSOR armv7) +elseif (${CPUVARDIR} STREQUAL "x86") + set (CMAKE_SYSTEM_PROCESSOR x86) +else() + message (FATAL_ERROR "Unsupported CPU architecture: ${CPUVARDIR}") +endif() + +set (QNX_HOST $ENV{QNX_HOST}) +set (QNX_TARGET $ENV{QNX_TARGET}) + +if (NOT QNX_HOST) + message (FATAL_ERROR "You must define QNX_HOST environment variable for toolchain") +endif() + +if (NOT QNX_TARGET) + message (FATAL_ERROR "You must define QNX_TARGET environment variable for toolchain") +endif() + +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() + +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${HOST_EXECUTABLE_SUFFIX}" + 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/qcc${HOST_EXECUTABLE_SUFFIX}") +set (CMAKE_CXX_COMPILER "${QNX_HOST}/usr/bin/qcc${HOST_EXECUTABLE_SUFFIX}") +set (CMAKE_ASM_COMPILER "${QNX_HOST}/usr/bin/nto${CMAKE_SYSTEM_PROCESSOR}-as${HOST_EXECUTABLE_SUFFIX}") + +execute_process (COMMAND nto${CMAKE_SYSTEM_PROCESSOR}-gcc${HOST_EXECUTABLE_SUFFIX} --version + OUTPUT_VARIABLE QCC_VERSION + OUTPUT_STRIP_TRAILING_WHITESPACE +) + +string (REGEX MATCH "[0-9]+.[0-9]+.[0-9]+" QCC_VERSION "${QCC_VERSION}") + +set (CMAKE_C_COMPILER_VERSION ${QCC_VERSION}) +set (CMAKE_CXX_COMPILER_VERSION ${QCC_VERSION}) + +set (BLACKBERRY_BASE_FLAGS "-D_REENTRANT -Wno-psabi -fstack-protector -fstack-protector-all") + +if (CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7") + set (BLACKBERRY_CPU_FLAGS "-mcpu=cortex-a9 -mthumb") +endif() + +if (CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7") + set (BLACKBERRY_QCC_FLAGS "-Vgcc_ntoarmv7le") +elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86") + set (BLACKBERRY_QCC_FLAGS "-Vgcc_ntox86") +endif() + +set (BLACKBERRY_FLAGS "${BLACKBERRY_QCC_FLAGS} ${BLACKBERRY_BASE_FLAGS} ${BLACKBERRY_CPU_FLAGS}") + +set (CMAKE_C_FLAGS_DEBUG "${BLACKBERRY_FLAGS} -g" CACHE STRING "" FORCE) +set (CMAKE_C_FLAGS_MINSIZEREL "${BLACKBERRY_FLAGS} -O2 -fstack-protector-strong -Os" CACHE STRING "" FORCE) +set (CMAKE_C_FLAGS_RELEASE "${BLACKBERRY_FLAGS} -O2 -fstack-protector-strong -Os" CACHE STRING "" FORCE) +set (CMAKE_C_FLAGS_RELWITHDEBINFO "${BLACKBERRY_FLAGS} -O2 -g -fstack-protector-strong" CACHE STRING "" FORCE) + +set (CMAKE_CXX_FLAGS_DEBUG "${BLACKBERRY_FLAGS} -lang-c++ -lstdc++ -g" CACHE STRING "" FORCE) +set (CMAKE_CXX_FLAGS_MINSIZEREL "${BLACKBERRY_FLAGS} -lang-c++ -lstdc++ -O2 -fstack-protector-strong -Os" CACHE STRING "" FORCE) +set (CMAKE_CXX_FLAGS_RELEASE "${BLACKBERRY_FLAGS} -lang-c++ -lstdc++ -O2 -fstack-protector-strong -Os" CACHE STRING "" FORCE) +set (CMAKE_CXX_FLAGS_RELWITHDEBINFO "${BLACKBERRY_FLAGS} -lang-c++ -lstdc++ -O2 -g -fstack-protector-strong" CACHE STRING "" FORCE) + +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) + +# To remove full linking paths +link_directories (${QNX_TARGET}/${CPUVARDIR}/lib ${QNX_TARGET}/${CPUVARDIR}/usr/lib) + +# To distinguish from QNX +add_definitions (-D__BLACKBERRY10__) + +set (CMAKE_LIBRARY_PATH + ${QNX_TARGET}/${CPUVARDIR}/lib + ${QNX_TARGET}/${CPUVARDIR}/usr/lib +) + +set (CMAKE_INCLUDE_PATH + ${QNX_TARGET}/usr/include/c++/${QCC_VERSION} + ${QNX_TARGET}/usr/include/c++/${QCC_VERSION}/arm-unknown-nto-qnx8.0.0eabi +) -- cgit v1.2.1