diff options
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/customconfig.clang-default.cmake | 31 | ||||
-rw-r--r-- | cmake/customconfig.clang-x86_32.cmake | 30 | ||||
-rw-r--r-- | cmake/customconfig.gcc-default.cmake | 14 | ||||
-rw-r--r-- | cmake/customconfig.gcc-x86_32.cmake | 18 | ||||
-rw-r--r-- | cmake/glibc-compat-symbols.h | 46 | ||||
-rw-r--r-- | cmake/toolchain.android.cmake | 213 | ||||
-rw-r--r-- | cmake/toolchain.gcc-armv6.cmake | 14 | ||||
-rw-r--r-- | cmake/toolchain.gcc-armv6hf.cmake | 14 | ||||
-rw-r--r-- | cmake/toolchain.windows.cmake | 30 |
9 files changed, 410 insertions, 0 deletions
diff --git a/cmake/customconfig.clang-default.cmake b/cmake/customconfig.clang-default.cmake new file mode 100644 index 00000000..bd6cada8 --- /dev/null +++ b/cmake/customconfig.clang-default.cmake @@ -0,0 +1,31 @@ +# For normal clang compilation + +set(CMAKE_C_FLAGS "-include ${PROJECT_SOURCE_DIR}/cmake/glibc-compat-symbols.h") +set(CMAKE_CXX_FLAGS "-include ${PROJECT_SOURCE_DIR}/cmake/glibc-compat-symbols.h") + +if(APPLE) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mmacosx-version-min=10.5") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmacosx-version-min=10.5") +endif() + +# inject additional architectures for fat-binary (macosx) +# CMAKE_EXTRA_ARCHS is set from JOAL's ant build.xml +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_EXTRA_ARCHS}") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_EXTRA_ARCHS}") + +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "c flags") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE STRING "c++ flags") + +message(STATUS "CMAKE_C_COMPILER : ${CMAKE_C_COMPILER}") +message(STATUS "CMAKE_CXX_COMPILER: ${CMAKE_CXX_COMPILER}") +message(STATUS "CMAKE_C_FLAGS : ${CMAKE_C_FLAGS}") +message(STATUS "CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}") + +# set(LINKER_FLAGS "-static-libgcc") + +message(STATUS "LINKER_FLAGS: ${LINKER_FLAGS}") + +set(CMAKE_SHARED_LINKER_FLAGS "${LINKER_FLAGS}" CACHE STRING "linker flags" FORCE) +set(CMAKE_MODULE_LINKER_FLAGS "${LINKER_FLAGS}" CACHE STRING "linker flags" FORCE) +set(CMAKE_EXE_LINKER_FLAGS "${LINKER_FLAGS}" CACHE STRING "linker flags" FORCE) + diff --git a/cmake/customconfig.clang-x86_32.cmake b/cmake/customconfig.clang-x86_32.cmake new file mode 100644 index 00000000..a33e18b0 --- /dev/null +++ b/cmake/customconfig.clang-x86_32.cmake @@ -0,0 +1,30 @@ +# For multiarch clang crosscompile, i.e. x86_32 target on x86_64 host + +set(CMAKE_SYSTEM_PROCESSOR "x86") + +link_directories("/usr/lib32") + +set(CMAKE_C_FLAGS "-m32 -include ${PROJECT_SOURCE_DIR}/cmake/glibc-compat-symbols.h") +set(CMAKE_CXX_FLAGS "-m32 -include ${PROJECT_SOURCE_DIR}/cmake/glibc-compat-symbols.h") + +if(APPLE) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mmacosx-version-min=10.5") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmacosx-version-min=10.5") +endif() + +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "c flags") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE STRING "c++ flags") + +message(STATUS "CMAKE_C_COMPILER : ${CMAKE_C_COMPILER}") +message(STATUS "CMAKE_CXX_COMPILER: ${CMAKE_CXX_COMPILER}") +message(STATUS "CMAKE_C_FLAGS : ${CMAKE_C_FLAGS}") +message(STATUS "CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}") + +# set(LINKER_FLAGS "-m32 -static-libgcc") + +message(STATUS "LINKER_FLAGS: ${LINKER_FLAGS}") + +set(CMAKE_SHARED_LINKER_FLAGS "${LINKER_FLAGS}" CACHE STRING "linker flags" FORCE) +set(CMAKE_MODULE_LINKER_FLAGS "${LINKER_FLAGS}" CACHE STRING "linker flags" FORCE) +set(CMAKE_EXE_LINKER_FLAGS "${LINKER_FLAGS}" CACHE STRING "linker flags" FORCE) + diff --git a/cmake/customconfig.gcc-default.cmake b/cmake/customconfig.gcc-default.cmake new file mode 100644 index 00000000..43294ab0 --- /dev/null +++ b/cmake/customconfig.gcc-default.cmake @@ -0,0 +1,14 @@ +# For normal gcc compilation, but use static-libgcc + +set(CMAKE_C_FLAGS "-include ${PROJECT_SOURCE_DIR}/cmake/glibc-compat-symbols.h") +set(CMAKE_CXX_FLAGS "-include ${PROJECT_SOURCE_DIR}/cmake/glibc-compat-symbols.h") + +set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "c++ flags") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "c flags") + +set(LINKER_FLAGS "-static-libgcc") + +set(CMAKE_SHARED_LINKER_FLAGS "${LINKER_FLAGS}" CACHE STRING "linker flags" FORCE) +set(CMAKE_MODULE_LINKER_FLAGS "${LINKER_FLAGS}" CACHE STRING "linker flags" FORCE) +set(CMAKE_EXE_LINKER_FLAGS "${LINKER_FLAGS}" CACHE STRING "linker flags" FORCE) + diff --git a/cmake/customconfig.gcc-x86_32.cmake b/cmake/customconfig.gcc-x86_32.cmake new file mode 100644 index 00000000..502378ab --- /dev/null +++ b/cmake/customconfig.gcc-x86_32.cmake @@ -0,0 +1,18 @@ +# For multiarch gcc crosscompile, i.e. x86_32 target on x86_64 host + +set(CMAKE_SYSTEM_PROCESSOR "x86") + +link_directories("/usr/lib32") + +set(CMAKE_C_FLAGS "-m32 -include ${PROJECT_SOURCE_DIR}/cmake/glibc-compat-symbols.h") +set(CMAKE_CXX_FLAGS "-m32 -include ${PROJECT_SOURCE_DIR}/cmake/glibc-compat-symbols.h") + +set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "c++ flags") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "c flags") + +set(LINKER_FLAGS "-m32 -static-libgcc") + +set(CMAKE_SHARED_LINKER_FLAGS "${LINKER_FLAGS}" CACHE STRING "linker flags" FORCE) +set(CMAKE_MODULE_LINKER_FLAGS "${LINKER_FLAGS}" CACHE STRING "linker flags" FORCE) +set(CMAKE_EXE_LINKER_FLAGS "${LINKER_FLAGS}" CACHE STRING "linker flags" FORCE) + diff --git a/cmake/glibc-compat-symbols.h b/cmake/glibc-compat-symbols.h new file mode 100644 index 00000000..4c9c933c --- /dev/null +++ b/cmake/glibc-compat-symbols.h @@ -0,0 +1,46 @@ +#ifndef __GLIBC_COMPAT_SYMBOLS_H__ +#define __GLIBC_COMPAT_SYMBOLS_H__ 1 + +/** + * + * Note: Patching a specific glibc symbol version is only required if *not* statically linking glibc, + * which should be preferred. + * + * Note: JogAmp's minimum GLIBC is 2.4 due to '__stack_chk_fail' (stack overflow checking) + * + * GLIBC 2.4 - March 2006 - Standard for LSB 4.0, Used in SLES 10 + * + * We could add compile/link option '-fno-stack-protector', however stack protection seems reasonable + * and a pre 2006 distribution a bit too 'far fetched' for our multimedia bindings anyway. + * + * Check build-in macro definitions via 'gcc -dM -E - < /dev/null' + */ +#if defined(__linux__) /* Actually we like to test whether we link against GLIBC .. */ + #if defined(__GNUC__) + #if defined(__arm__) + #define GLIBC_COMPAT_SYMBOL(FFF) __asm__(".symver " #FFF "," #FFF "@GLIBC_2.4"); + #elif defined(__amd64__) + #define GLIBC_COMPAT_SYMBOL(FFF) __asm__(".symver " #FFF "," #FFF "@GLIBC_2.2.5"); + #else + #define GLIBC_COMPAT_SYMBOL(FFF) __asm__(".symver " #FFF "," #FFF "@GLIBC_2.0"); + #endif /*__amd64__*/ + #elif defined(__clang__) + #if defined(__arm__) + #define GLIBC_COMPAT_SYMBOL(FFF) asm(".symver " #FFF "," #FFF "@GLIBC_2.4"); + #elif defined(__amd64__) + #define GLIBC_COMPAT_SYMBOL(FFF) asm(".symver " #FFF "," #FFF "@GLIBC_2.2.5"); + #else + #define GLIBC_COMPAT_SYMBOL(FFF) asm(".symver " #FFF "," #FFF "@GLIBC_2.0"); + #endif /*__amd64__*/ + #else + #warning GLIBC_COMPAT_SYMBOL not supported with current compiler on GNU/Linux + #define GLIBC_COMPAT_SYMBOL(FFF) + #endif +#else + // #warning GLIBC_COMPAT_SYMBOL not supported with target OS + #define GLIBC_COMPAT_SYMBOL(FFF) +#endif + +GLIBC_COMPAT_SYMBOL(memcpy) + +#endif /*__GLIBC_COMPAT_SYMBOLS_H__*/ diff --git a/cmake/toolchain.android.cmake b/cmake/toolchain.android.cmake new file mode 100644 index 00000000..37474a7e --- /dev/null +++ b/cmake/toolchain.android.cmake @@ -0,0 +1,213 @@ +# Adapted from http://code.google.com/p/android-cmake/ + +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_VERSION 1) + +if(APPLE) + set(HOST_APPLE true) +elseif(UNIX) + set(HOST_UNIX true) +endif() + +set(APPLE false) +set(UNIX true) + +set(ANDROID_NDK_DEFAULT_SEARCH_PATH /opt/android-ndk) +set(ANDROID_NDK_SUPPORTED_VERSIONS -r8d -r8 -r7 -r6 -r5c -r5b -r5 "") +set(ANDROID_NDK_TOOLCHAIN_DEFAULT_SEARCH_PATH /opt/android-toolchain) +set(TOOL_OS_SUFFIX "") + +if(NOT DEFINED ANDROID_NDK) + set(ANDROID_NDK "$ENV{ANDROID_NDK}") +endif() + +if(NOT DEFINED ANDROID_NDK_TOOLCHAIN_ROOT) + set(ANDROID_NDK_TOOLCHAIN_ROOT $ENV{ANDROID_NDK_TOOLCHAIN_ROOT}) +endif() + +if(NOT EXISTS "${ANDROID_NDK}") + foreach(ndk_version ${ANDROID_NDK_SUPPORTED_VERSIONS}) + if(EXISTS ${ANDROID_NDK_DEFAULT_SEARCH_PATH}${ndk_version}) + set(ANDROID_NDK "${ANDROID_NDK_DEFAULT_SEARCH_PATH}${ndk_version}") + message(STATUS "Using default path for android NDK ${ANDROID_NDK}") + message(STATUS " If you prefer to use a different location, please define the variable: ANDROID_NDK") + break() + endif() + endforeach() +endif() + +if(EXISTS "${ANDROID_NDK}") + if(NOT DEFINED ANDROID_TOOLCHAIN_SYSTEM) + if(APPLE) + set(ANDROID_TOOLCHAIN_SYSTEM "darwin-x86") + elseif(WIN32) + set(ANDROID_TOOLCHAIN_SYSTEM "windows") + set(TOOL_OS_SUFFIX ".exe") + elseif(UNIX) + set(ANDROID_TOOLCHAIN_SYSTEM "linux-x86") + else() + message(FATAL_ERROR "Your platform is not supported") + endif() + endif() + + if(NOT ANDROID_API_LEVEL GREATER 2) + if(NDK_CPU_ARM64) + set(ANDROID_API_LEVEL 21) + elseif(NDK_CPU_X86) + set(ANDROID_API_LEVEL 9) + else() + set(ANDROID_API_LEVEL 5) + endif() + message(STATUS "Using default android API level android-${ANDROID_API_LEVEL}") + message(STATUS " If you prefer to use a different API level, please define the variable: ANDROID_API_LEVEL") + endif() + + if (NDK_CPU_X86) + set(ANDROID_TOOLCHAIN_PREFIX "i686-android-linux") + set(ANDROID_TOOLCHAIN_NAME "x86") + set(ANDROID_TOOLCHAIN_PLATFORM_NAME "x86") + elseif(NDK_CPU_ARM64) + set(ANDROID_TOOLCHAIN_PREFIX "aarch64-linux-android") + set(ANDROID_TOOLCHAIN_NAME "${ANDROID_TOOLCHAIN_PREFIX}") + set(ANDROID_TOOLCHAIN_PLATFORM_NAME "arm64") + else() + set(ANDROID_TOOLCHAIN_PREFIX "arm-linux-androideabi") + set(ANDROID_TOOLCHAIN_NAME "${ANDROID_TOOLCHAIN_PREFIX}") + set(ANDROID_TOOLCHAIN_PLATFORM_NAME "arm") + endif() + + if (NOT DEFINED ANDROID_TOOLCHAIN_VERSION) + set(SUPPORTED_TOOLCHAIN_VERSIONS 4.4.0 4.4.3 4.6.0 4.6.1 4.6.2 4.6.3 4.7 4.8 4.9) + foreach(gcc_version ${SUPPORTED_TOOLCHAIN_VERSIONS}) + if (EXISTS "${ANDROID_NDK}/toolchains/${ANDROID_TOOLCHAIN_NAME}-${gcc_version}") + set(ANDROID_TOOLCHAIN_VERSION ${gcc_version}) + endif() + endforeach() + if(NOT DEFINED ANDROID_TOOLCHAIN_VERSION) + message(FATAL_ERROR "Unable to find toolchain") + else() + message(STATUS "Using auto-detected toolchain ${ANDROID_TOOLCHAIN_NAME}-${ANDROID_TOOLCHAIN_VERSION}") + endif() + endif() + if (EXISTS "${ANDROID_NDK}/toolchains/clang-android-${ANDROID_TOOLCHAIN_VERSION}") + set (ANDROID_TOOLCHAIN_NAME "clang-android") + message(STATUS "Found clang toolchain ${ANDROID_TOOLCHAIN_NAME}-${ANDROID_TOOLCHAIN_VERSION}") + endif() + + set(ANDROID_NDK_SYSROOT "${ANDROID_NDK}/platforms/android-${ANDROID_API_LEVEL}/arch-${ANDROID_TOOLCHAIN_PLATFORM_NAME}") + set(ANDROID_NDK_TOOLCHAIN_ROOT "${ANDROID_NDK}/toolchains/${ANDROID_TOOLCHAIN_NAME}-${ANDROID_TOOLCHAIN_VERSION}/prebuilt/${ANDROID_TOOLCHAIN_SYSTEM}") + +endif() + +set(CMAKE_C_COMPILER "${ANDROID_NDK_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_PREFIX}-gcc${TOOL_OS_SUFFIX}" CACHE PATH "gcc" FORCE) +set(CMAKE_CXX_COMPILER "${ANDROID_NDK_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_PREFIX}-g++${TOOL_OS_SUFFIX}" CACHE PATH "g++" FORCE) +set(CMAKE_AR "${ANDROID_NDK_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_PREFIX}-ar${TOOL_OS_SUFFIX}" CACHE PATH "archive" FORCE) +set(CMAKE_LINKER "${ANDROID_NDK_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_PREFIX}-ld${TOOL_OS_SUFFIX}" CACHE PATH "linker" FORCE) +set(CMAKE_NM "${ANDROID_NDK_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_PREFIX}-nm${TOOL_OS_SUFFIX}" CACHE PATH "nm" FORCE) +set(CMAKE_OBJCOPY "${ANDROID_NDK_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_PREFIX}-objcopy${TOOL_OS_SUFFIX}" CACHE PATH "objcopy" FORCE) +set(CMAKE_OBJDUMP "${ANDROID_NDK_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_PREFIX}-objdump${TOOL_OS_SUFFIX}" CACHE PATH "objdump" FORCE) +set(CMAKE_STRIP "${ANDROID_NDK_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_PREFIX}-strip${TOOL_OS_SUFFIX}" CACHE PATH "strip" FORCE) +set(CMAKE_RANLIB "${ANDROID_NDK_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_PREFIX}-ranlib${TOOL_OS_SUFFIX}" CACHE PATH "ranlib" FORCE) + +if(NDK_CPU_X86) + set(ANDROID_NDK_CPU_NAME "x86") + set(CMAKE_SYSTEM_PROCESSOR "x86") +elseif(NDK_CPU_ARM64) + set(NDK_CPU_ARM true) + set(ANDROID_NDK_CPU_NAME "arm64-v8a") + set(NDK_CPU_ARM_NEON false) + set(CMAKE_SYSTEM_PROCESSOR "armv8-a") +elseif(NDK_CPU_ARM_V7A) + set(NDK_CPU_ARM_NEON false) + set(NDK_CPU_ARM_VFPV3 false) + set(NDK_CPU_ARM true) + set(ANDROID_NDK_CPU_NAME "armeabi-v7a") + set(CMAKE_SYSTEM_PROCESSOR "armv7-a") +else() + set(NDK_CPU_ARM true) + set(ANDROID_NDK_CPU_NAME "armeabi") + set(NDK_CPU_ARM_NEON false) + set(CMAKE_SYSTEM_PROCESSOR "armv5te") +endif() + +set(CMAKE_FIND_ROOT_PATH "${ANDROID_NDK_TOOLCHAIN_ROOT}/bin" "${ANDROID_NDK_TOOLCHAIN_ROOT}/${ANDROID_TOOLCHAIN_PREFIX}" "${ANDROID_NDK_SYSROOT}" "${CMAKE_INSTALL_PREFIX}" "${CMAKE_INSTALL_PREFIX}/share") + +set(STL_PATH "${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/${ANDROID_TOOLCHAIN_VERSION}") +set(STL_LIBRARIES_PATH "${STL_PATH}/libs/${ANDROID_NDK_CPU_NAME}") +include_directories(SYSTEM "${STL_PATH}/include" "${STL_LIBRARIES_PATH}/include") +link_directories("${ANDROID_NDK_SYSROOT}/usr/lib") + +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM BOTH) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) + +set(CMAKE_C_FLAGS "-fPIC -DANDROID -Wno-psabi -fsigned-char -I${ANDROID_NDK_SYSROOT}/usr/include") +set(CMAKE_CXX_FLAGS "-fPIC -DANDROID -Wno-psabi -fsigned-char -I${ANDROID_NDK_SYSROOT}/usr/include") + +set(FORCE_ARM OFF CACHE BOOL "Use 32-bit ARM instructions instead of Thumb-1") +if(NDK_CPU_X86) +elseif(NDK_CPU_ARM64) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=armv8-a -std=c99") +elseif(NOT FORCE_ARM) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mthumb") +else() + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -marm") +endif() + +set(CMAKE_C_FLAGS "--sysroot=${ANDROID_NDK_SYSROOT} ${CMAKE_C_FLAGS}") + +include(CMakeForceCompiler) +CMAKE_FORCE_C_COMPILER("${CMAKE_C_COMPILER}" GNU) +CMAKE_FORCE_CXX_COMPILER("${CMAKE_CXX_COMPILER}" GNU) + +if(NDK_CPU_ARM_V7A) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=armv7-a -mfloat-abi=softfp") + if(NDK_CPU_ARM_NEON) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfpu=neon") + elseif(NDK_CPU_ARM_VFPV3) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfpu=vfpv3") + endif() +elseif(NDK_CPU_ARM64) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mabi=lp64 -mlittle-endian -march=armv8-a -std=c99") +endif() + +set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "c++ flags") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "c flags") + +message(STATUS "CMAKE_C_COMPILER : ${CMAKE_C_COMPILER}") +message(STATUS "CMAKE_CXX_COMPILER: ${CMAKE_CXX_COMPILER}") +message(STATUS "CMAKE_C_FLAGS : ${CMAKE_C_FLAGS}") +message(STATUS "CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}") +message(STATUS "NDK_CPU_ARM: ${NDK_CPU_ARM}") +message(STATUS "NDK_CPU_ARM64: ${NDK_CPU_ARM64}") + +set(LINKER_FLAGS "-L\"${STL_LIBRARIES_PATH}\" -L\"${CMAKE_INSTALL_PREFIX}/libs/${ANDROID_NDK_CPU_NAME}\"") + +message(STATUS "ARM32_LINKER_OPTS: ${ARM32_LINKER_OPTS}") +message(STATUS "ARM64_LINKER_OPTS: ${ARM64_LINKER_OPTS}") +if(NDK_CPU_ARM64) + message(STATUS "XXXXXXXXXX Adding ARM64_LINKER_OPTS: ${ARM64_LINKER_OPTS}") + set(LINKER_FLAGS "${ARM64_LINKER_OPTS} ${LINKER_FLAGS}") +elseif(NDK_CPU_ARM OR NDK_CPU_ARM_V7A) + # for an unknown reason, passing '-Wl,--fix-cortex-a8' to LINKER_FLAGS directly here + # causes its usage for 'try_compile' even though 'NDK_CPU_ARM64' is 'ON' ! + message(STATUS "XXXXXXXXXX Adding ARM32_LINKER_OPTS: ${ARM32_LINKER_OPTS}") + # set(LINKER_FLAGS "-Wl,--fix-cortex-a8 ${LINKER_FLAGS}") + set(LINKER_FLAGS "${ARM32_LINKER_OPTS} ${LINKER_FLAGS}") +endif() + +message(STATUS "LINKER_FLAGS: ${LINKER_FLAGS}") + +set(CMAKE_SHARED_LINKER_FLAGS "${LINKER_FLAGS}" CACHE STRING "shared linker flags" FORCE) +set(CMAKE_MODULE_LINKER_FLAGS "${LINKER_FLAGS}" CACHE STRING "module linker flags" FORCE) +set(CMAKE_EXE_LINKER_FLAGS "${LINKER_FLAGS}" CACHE STRING "exe linker flags" FORCE) + +message(STATUS "CMAKE_SHARED_LINKER_FLAGS: ${CMAKE_SHARED_LINKER_FLAGS}") +message(STATUS "CMAKE_MODULE_LINKER_FLAGS: ${CMAKE_MODULE_LINKER_FLAGS}") +message(STATUS "CMAKE_EXE_LINKER_FLAGS: ${CMAKE_EXE_LINKER_FLAGS}") +message(STATUS "CMAKE_STATIC_LINKER_FLAGS: ${CMAKE_STATIC_LINKER_FLAGS}") + +set(ANDROID true) +set(BUILD_ANDROID true) + +MARK_AS_ADVANCED(FORCE_ARM NO_UNDEFINED) diff --git a/cmake/toolchain.gcc-armv6.cmake b/cmake/toolchain.gcc-armv6.cmake new file mode 100644 index 00000000..93c374b5 --- /dev/null +++ b/cmake/toolchain.gcc-armv6.cmake @@ -0,0 +1,14 @@ +# For normal gcc compilation, but use static-libgcc + +set(CMAKE_C_FLAGS "-fpic -march=armv5te -marm -mfloat-abi=softfp -include ${PROJECT_SOURCE_DIR}/cmake/glibc-compat-symbols.h -I/usr/include") +set(CMAKE_CXX_FLAGS "-fpic -march=armv5te -marm -mfloat-abi=softfp -include ${PROJECT_SOURCE_DIR}/cmake/glibc-compat-symbols.h -I/usr/include") + +set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "c++ flags") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "c flags") + +set(LINKER_FLAGS "-fpic -march=armv5te -marm -mfloat-abi=softfp -static-libgcc") + +set(CMAKE_SHARED_LINKER_FLAGS "${LINKER_FLAGS}" CACHE STRING "linker flags" FORCE) +set(CMAKE_MODULE_LINKER_FLAGS "${LINKER_FLAGS}" CACHE STRING "linker flags" FORCE) +set(CMAKE_EXE_LINKER_FLAGS "${LINKER_FLAGS}" CACHE STRING "linker flags" FORCE) + diff --git a/cmake/toolchain.gcc-armv6hf.cmake b/cmake/toolchain.gcc-armv6hf.cmake new file mode 100644 index 00000000..ec239661 --- /dev/null +++ b/cmake/toolchain.gcc-armv6hf.cmake @@ -0,0 +1,14 @@ +# For normal gcc compilation, but use static-libgcc + +set(CMAKE_C_FLAGS "-fpic -march=armv6 -marm -mfloat-abi=hard -include ${PROJECT_SOURCE_DIR}/cmake/glibc-compat-symbols.h -I/usr/include") +set(CMAKE_CXX_FLAGS "-fpic -march=armv6 -marm -mfloat-abi=hard -include ${PROJECT_SOURCE_DIR}/cmake/glibc-compat-symbols.h -I/usr/include") + +set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "c++ flags") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "c flags") + +set(LINKER_FLAGS "-fpic -march=armv6 -marm -mfloat-abi=hard -static-libgcc") + +set(CMAKE_SHARED_LINKER_FLAGS "${LINKER_FLAGS}" CACHE STRING "linker flags" FORCE) +set(CMAKE_MODULE_LINKER_FLAGS "${LINKER_FLAGS}" CACHE STRING "linker flags" FORCE) +set(CMAKE_EXE_LINKER_FLAGS "${LINKER_FLAGS}" CACHE STRING "linker flags" FORCE) + diff --git a/cmake/toolchain.windows.cmake b/cmake/toolchain.windows.cmake new file mode 100644 index 00000000..4a4f2718 --- /dev/null +++ b/cmake/toolchain.windows.cmake @@ -0,0 +1,30 @@ +# Cross-compiling requires CMake 2.6 or newer. To use it from build/, call it +# like this: +# cmake .. -DCMAKE_TOOLCHAIN_FILE=../XCompile.txt -DHOST=i686-pc-mingw32 +# Where 'i686-pc-mingw32' is the host prefix for your cross-compiler. If you +# already have a toolchain file setup, you may use that instead of this file. + +# the name of the target operating system +SET(CMAKE_SYSTEM_NAME Windows) + +# which compilers to use for C and C++ +SET(CMAKE_C_COMPILER "gcc.exe") +SET(CMAKE_CXX_COMPILER "g++.exe") + +# here is the target environment located +#SET(CMAKE_FIND_ROOT_PATH "/usr/${HOST}") + +# here is where stuff gets installed to +#SET(CMAKE_INSTALL_PREFIX "${CMAKE_FIND_ROOT_PATH}/usr" CACHE STRING "Install path prefix, prepended onto install directories." FORCE) + +# adjust the default behaviour of the FIND_XXX() commands: +# search headers and libraries in the target environment, search +# programs in the host environment +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) + +# set env vars so that pkg-config will look in the appropriate directory for +# .pc files (as there seems to be no way to force using ${HOST}-pkg-config) +set(ENV{PKG_CONFIG_LIBDIR} "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig") +set(ENV{PKG_CONFIG_PATH} "") |