diff options
31 files changed, 589 insertions, 6 deletions
diff --git a/Android.md b/Android.md new file mode 100644 index 00000000..115d5300 --- /dev/null +++ b/Android.md @@ -0,0 +1,41 @@ +# How To Rebuild OpenAL-soft for Android + +This was completed on a Debian Squeeze 6 system. +This produces an ARMv6 libopenal.so file ready to be used with Jogamp's JOAL on Android devices. + +## Prequisites + +Here is the necessary tools needed + +* git +* latest Android NDK (http://dl.google.com/android/ndk/android-ndk-r8d-linux-x86.tar.bz2) +* CMake (2.8) + +We'll suppose the NDK is installed in ~/android-ndk-r8d/: + +```bash +export ANDROID_NDK=~/android-ndk-r8d/ +``` + + +## Clone the OpenAL repository + +```bash +git clone git://repo.or.cz/openal-soft.git + or +git clone git://jogamp.org/srv/scm/openal-soft.git +``` +## Add the toolchain.android.cmake + +Included in ```git://jogamp.org/srv/scm/openal-soft.git``` +at ```cmake/toolchain.android.cmake```. + +## Build + +```bash +cd build +cmake .. -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchain.android.cmake -DANDROID_API_LEVEL=9 +make +``` + +The result should be available in the "build" directory. diff --git a/CMakeLists.txt b/CMakeLists.txt index b4ced226..2a3900ca 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -575,12 +575,22 @@ if(NOT WIN32) message(FATAL_ERROR "PThreads is required for non-Windows builds!") endif() - check_c_compiler_flag(-pthread HAVE_PTHREAD) - if(HAVE_PTHREAD) - set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -pthread") - set(C_FLAGS ${C_FLAGS} -pthread) - set(LINKER_FLAGS ${LINKER_FLAGS} -pthread) - endif() + CHECK_C_COMPILER_FLAG(-pthread HAVE_PTHREAD) + IF(NOT HAVE_ANDROID_H) + IF(HAVE_PTHREAD) + SET(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -pthread") + SET(C_FLAGS ${C_FLAGS} -pthread) + SET(LINKER_FLAGS ${LINKER_FLAGS} -pthread) + ENDIF() + + CHECK_LIBRARY_EXISTS(pthread pthread_create "" HAVE_LIBPTHREAD) + IF(HAVE_LIBPTHREAD) + SET(EXTRA_LIBS pthread ${EXTRA_LIBS}) + ENDIF() + ELSE() + # FIXME: Android has pthread in it's bionic libc! + CHECK_LIBRARY_EXISTS(c pthread_create "" HAVE_LIBPTHREAD) + ENDIF() check_symbol_exists(pthread_setschedparam pthread.h HAVE_PTHREAD_SETSCHEDPARAM) @@ -1257,6 +1267,7 @@ else() "${OpenAL_BINARY_DIR}/version.h") endif() +IF(NOT CMAKE_CROSSCOMPILING) option(ALSOFT_EMBED_HRTF_DATA "Embed the HRTF data files (increases library footprint)" ON) if(ALSOFT_EMBED_HRTF_DATA) @@ -1294,6 +1305,8 @@ if(ALSOFT_UTILS OR ALSOFT_EXAMPLES) endif() endif() +ENDIF() # (NOT CMAKE_CROSSCOMPILING) + if(NOT WIN32) set(LIBNAME "openal") else() diff --git a/cmake/glibc-compat-symbols.h b/cmake/glibc-compat-symbols.h new file mode 100644 index 00000000..d8d0d172 --- /dev/null +++ b/cmake/glibc-compat-symbols.h @@ -0,0 +1,60 @@ +#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(__aarch64__) + /* glibc 2.17 is the first glibc version that support aarch64 + however memcpy is not versioned for aarch64 */ + #define GLIBC_COMPAT_SYMBOL(FFF) + #elif defined(__arm__) + /** On recent toolchain memcpy is no more versioned for arm + #define GLIBC_COMPAT_SYMBOL(FFF) __asm__(".symver " #FFF "," #FFF "@GLIBC_2.4"); + */ + #define GLIBC_COMPAT_SYMBOL(FFF) + #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(__aarch64__) + /* glibc 2.17 is the first glibc version that support aarch64 + however memcpy is not versioned for aarch64 */ + #define GLIBC_COMPAT_SYMBOL(FFF) + #elif defined(__arm__) + /** On recent toolchain memcpy is no more versioned for arm + #define GLIBC_COMPAT_SYMBOL(FFF) __asm__(".symver " #FFF "," #FFF "@GLIBC_2.4"); + */ + #define GLIBC_COMPAT_SYMBOL(FFF) + #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..e56c35e2 --- /dev/null +++ b/cmake/toolchain.android.cmake @@ -0,0 +1,229 @@ +# +# Aligned with NDK r19 using LLVM's clang and C++ STL +# + +# +# Required variables to be set by user: +# (gluegen/make/scripts/setenv-android-tools.sh env var) +# - ANDROID_NDK := ${env.ANDROID_NDK} [/opt/android-sdk/ndk/20.00] +# - ANDROID_HOST_TAG := ${env.ANDROID_HOST_TAG} [linux-x86_64, ..] +# - ANDROID_API_LEVEL := ${env.ANDROID_API_LEVEL} [21..22] +# +# and one of the following CPU target flags: +# +# - NDK_CPU_X86_64 +# - NDK_CPU_X86 +# - NDK_CPU_ARM64 +# - NDK_CPU_ARM_V7A +# - NDK_CPU_ARM +# +# (Will be preserved for try_compile() via CMAKE_TRY_COMPILE_PLATFORM_VARIABLES) +# +# NDK >= r19 using API > 22: 'U __register_atfork' +# __register_atfork; # introduced=23 +# See <https://github.com/android/ndk/issues/964> + +set(CMAKE_CROSSCOMPILING true) + +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_VERSION 1) + +set(ALSOFT_UTILS OFF CACHE BOOL "Build and install utility programs" FORCE) +set(ALSOFT_NO_CONFIG_UTIL ON CACHE BOOL "Disable building the alsoft-config utility" FORCE) +set(ALSOFT_EXAMPLES OFF CACHE BOOL "Build and install example programs" FORCE) +set(ALSOFT_TESTS OFF CACHE BOOL "Build and install test programs" FORCE) +#set(ALSOFT_CONFIG OFF CACHE BOOL "Install alsoft.conf sample configuration file" FORCE) +#set(ALSOFT_HRTF_DEFS OFF CACHE BOOL "Install HRTF definition files" FORCE) +#set(ALSOFT_AMBDEC_PRESETS OFF CACHE BOOL "Install AmbDec preset files" FORCE) +#set(ALSOFT_INSTALL OFF CACHE BOOL "Install headers and libraries" FORCE) + +if(APPLE) + set(HOST_APPLE true) +elseif(UNIX) + set(HOST_UNIX true) +endif() + +set(APPLE false) +set(UNIX true) + +set(TOOL_OS_SUFFIX "") + +unset(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES) + +if(NOT DEFINED ANDROID_NDK) + message(FATAL_ERROR "Undefined ANDROID_NDK") + #set(ANDROID_NDK "$ENV{ANDROID_NDK}") +else() + set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES ${CMAKE_TRY_COMPILE_PLATFORM_VARIABLES} ANDROID_NDK) +endif() + +if(NOT EXISTS "${ANDROID_NDK}") + message(FATAL_ERROR "Not existing ANDROID_NDK ${ANDROID_NDK}") +endif() + +if(NOT DEFINED ANDROID_HOST_TAG) + message(FATAL_ERROR "Undefined ANDROID_HOST_TAG") +else() + set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES ${CMAKE_TRY_COMPILE_PLATFORM_VARIABLES} ANDROID_HOST_TAG) +endif() + +if(NOT ANDROID_API_LEVEL GREATER 20) + set(ANDROID_API_LEVEL 22) + message(STATUS "Using default android API level android-${ANDROID_API_LEVEL}") +else() + set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES ${CMAKE_TRY_COMPILE_PLATFORM_VARIABLES} ANDROID_API_LEVEL) +endif() + +# +# Aligned with gluegen/make/scripts/setenv-android-tools.sh +# +if(NDK_CPU_X86_64) + set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES ${CMAKE_TRY_COMPILE_PLATFORM_VARIABLES} NDK_CPU_X86_64) + set(ANDROID_SYSROOT_ABI "x86_64") + set(CMAKE_SYSTEM_PROCESSOR "x86_64") + set(ANDROID_TOOLCHAIN_NAME "x86_64-linux-android") + set(ANDROID_CLANG_PREFIX ${ANDROID_TOOLCHAIN_NAME}) + set(ANDROID_LLVM_TRIPLE "x86_64-none-linux-android") + message(STATUS "Using NDK_CPU_x86_64, ANDROID_TOOLCHAIN_NAME = ${ANDROID_TOOLCHAIN_NAME}") +elseif(NDK_CPU_X86) + set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES ${CMAKE_TRY_COMPILE_PLATFORM_VARIABLES} NDK_CPU_X86) + set(ANDROID_SYSROOT_ABI "x86") + set(CMAKE_SYSTEM_PROCESSOR "x86") + set(ANDROID_TOOLCHAIN_NAME "i686-linux-android") + set(ANDROID_CLANG_PREFIX ${ANDROID_TOOLCHAIN_NAME}) + set(ANDROID_LLVM_TRIPLE "i686-none-linux-android") + message(STATUS "Using NDK_CPU_X86, ANDROID_TOOLCHAIN_NAME = ${ANDROID_TOOLCHAIN_NAME}") +elseif(NDK_CPU_ARM64) + set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES ${CMAKE_TRY_COMPILE_PLATFORM_VARIABLES} NDK_CPU_ARM64) + set(ANDROID_SYSROOT_ABI "arm64") + set(CMAKE_SYSTEM_PROCESSOR "armv8-a") + set(ANDROID_TOOLCHAIN_NAME "aarch64-linux-android") + set(ANDROID_CLANG_PREFIX ${ANDROID_TOOLCHAIN_NAME}) + set(ANDROID_LLVM_TRIPLE "aarch64-none-linux-android") + message(STATUS "Using NDK_CPU_ARM64, ANDROID_TOOLCHAIN_NAME = ${ANDROID_TOOLCHAIN_NAME}") +elseif(NDK_CPU_ARM_V7A) + set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES ${CMAKE_TRY_COMPILE_PLATFORM_VARIABLES} NDK_CPU_ARM_V7A) + set(NDK_CPU_ARM_NEON true) + set(NDK_CPU_ARM_VFPV3 false) + set(NDK_CPU_ARM true) + set(ANDROID_SYSROOT_ABI "arm") + set(CMAKE_SYSTEM_PROCESSOR "armv7-a") + set(ANDROID_TOOLCHAIN_NAME "arm-linux-androideabi") + set(ANDROID_CLANG_PREFIX "armv7a-linux-androideabi") + set(ANDROID_LLVM_TRIPLE "armv7-none-linux-androideabi") + message(STATUS "Using NDK_CPU_ARM, ANDROID_TOOLCHAIN_NAME = ${ANDROID_TOOLCHAIN_NAME}") +elseif(NDK_CPU_ARM) + set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES ${CMAKE_TRY_COMPILE_PLATFORM_VARIABLES} NDK_CPU_ARM) + set(NDK_CPU_ARM_NEON false) + set(NDK_CPU_ARM true) + set(ANDROID_SYSROOT_ABI "arm") + set(CMAKE_SYSTEM_PROCESSOR "armv5te") + set(ANDROID_TOOLCHAIN_NAME "arm-linux-androideabi") + set(ANDROID_CLANG_PREFIX "armv7a-linux-androideabi") + set(ANDROID_LLVM_TRIPLE "armv7-none-linux-androideabi") + message(STATUS "Using NDK_CPU_ARM, ANDROID_TOOLCHAIN_NAME = ${ANDROID_TOOLCHAIN_NAME}") +else() + message(FATAL_ERROR "You must define one of NDK_CPU_* [X86_64 X86 ARM64 ARM_V7A ARM]") +endif() + +set(ANDROID_NDK_TOOLCHAIN_ROOT "${ANDROID_NDK}/toolchains/llvm/prebuilt/${ANDROID_HOST_TAG}") +set(ANDROID_NDK_SYSROOT0 "${ANDROID_NDK}/platforms/android-${ANDROID_API_LEVEL}/arch-${ANDROID_SYSROOT_ABI}") +set(ANDROID_NDK_SYSROOT1 "${ANDROID_NDK_TOOLCHAIN_ROOT}/sysroot") +set(ANDROID_NDK_SYSROOT1_LIB1 "${ANDROID_NDK_SYSROOT1}/usr/lib/${ANDROID_TOOLCHAIN_NAME}/${ANDROID_API_LEVEL}") +set(ANDROID_NDK_SYSROOT1_LIB2 "${ANDROID_NDK_SYSROOT1}/usr/lib/${ANDROID_TOOLCHAIN_NAME}") + +set(CMAKE_C_COMPILER "${ANDROID_NDK_TOOLCHAIN_ROOT}/bin/${ANDROID_CLANG_PREFIX}${ANDROID_API_LEVEL}-clang${TOOL_OS_SUFFIX}" CACHE PATH "clang" FORCE) +set(CMAKE_CXX_COMPILER "${ANDROID_NDK_TOOLCHAIN_ROOT}/bin/${ANDROID_CLANG_PREFIX}${ANDROID_API_LEVEL}-clang++${TOOL_OS_SUFFIX}" CACHE PATH "clang++" FORCE) +set(CMAKE_AR "${ANDROID_NDK_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_NAME}-ar${TOOL_OS_SUFFIX}" CACHE PATH "archive" FORCE) +set(CMAKE_LINKER "${ANDROID_NDK_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_NAME}-ld${TOOL_OS_SUFFIX}" CACHE PATH "linker" FORCE) +set(CMAKE_NM "${ANDROID_NDK_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_NAME}-nm${TOOL_OS_SUFFIX}" CACHE PATH "nm" FORCE) +set(CMAKE_OBJCOPY "${ANDROID_NDK_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_NAME}-objcopy${TOOL_OS_SUFFIX}" CACHE PATH "objcopy" FORCE) +set(CMAKE_OBJDUMP "${ANDROID_NDK_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_NAME}-objdump${TOOL_OS_SUFFIX}" CACHE PATH "objdump" FORCE) +set(CMAKE_STRIP "${ANDROID_NDK_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_NAME}-strip${TOOL_OS_SUFFIX}" CACHE PATH "strip" FORCE) +set(CMAKE_RANLIB "${ANDROID_NDK_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_NAME}-ranlib${TOOL_OS_SUFFIX}" CACHE PATH "ranlib" FORCE) + +set(CMAKE_FIND_ROOT_PATH "${ANDROID_NDK_TOOLCHAIN_ROOT}/bin" "${ANDROID_NDK_TOOLCHAIN_ROOT}/${ANDROID_TOOLCHAIN_NAME}" "${ANDROID_NDK_SYSROOT0}" "${CMAKE_INSTALL_PREFIX}" "${CMAKE_INSTALL_PREFIX}/share") + +# Using llvm's c++_shared as of NDK r18: https://developer.android.com/ndk/guides/cpp-support.html +# Also see https://github.com/android/ndk/issues/452 and https://gitlab.kitware.com/cmake/cmake/issues/17059 +set(ANDROID_STL "c++_static") +set(STL_INCLUDE_PATH0 "${ANDROID_NDK_SYSROOT1}/usr/include/c++/v1") +include_directories(BEFORE SYSTEM "${STL_INCLUDE_PATH0}") + +set(OPENSL_INCLUDE_DIR "${ANDROID_NDK_SYSROOT1}/usr/include") +set(OPENSL_ANDROID_INCLUDE_DIR "${ANDROID_NDK_SYSROOT1}/usr/include") +set(OPENSL_LIBRARY "${ANDROID_NDK_SYSROOT0}/usr/lib/libOpenSLES.so") + +link_directories("${ANDROID_NDK_SYSROOT0}/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 "-nostdinc++ -fPIC -DANDROID -fsigned-char") +#set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -v") + +# from sdk cmake start +# <compilerarg value="-fdata-sections" /> +# <compilerarg value="-ffunction-sections" /> +# <compilerarg value="-funwind-tables" /> +# <compilerarg value="-fstack-protector-strong" /> +# <compilerarg value="-no-canonical-prefixes" /> + +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -target ${ANDROID_LLVM_TRIPLE}") +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() + +# Using llvm's c++_shared as of NDK r18: https://developer.android.com/ndk/guides/cpp-support.html +# Also see https://github.com/android/ndk/issues/452 and https://gitlab.kitware.com/cmake/cmake/issues/17059 +set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -isystem ${STL_INCLUDE_PATH0} -isystem ${ANDROID_NDK_SYSROOT1}/usr/include -isystem ${ANDROID_NDK_SYSROOT1}/usr/include/${ANDROID_TOOLCHAIN_NAME}") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE STRING "c++ flags") + +#set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --sysroot=${ANDROID_NDK_SYSROOT1} -isysroot ${ANDROID_NDK_SYSROOT1} -isystem ${ANDROID_NDK_SYSROOT1}/usr/include -isystem ${ANDROID_NDK_SYSROOT1}/usr/include/${ANDROID_TOOLCHAIN_NAME}") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -isystem ${ANDROID_NDK_SYSROOT1}/usr/include -isystem ${ANDROID_NDK_SYSROOT1}/usr/include/${ANDROID_TOOLCHAIN_NAME}") +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 "--sysroot=${ANDROID_NDK_SYSROOT0} -L\"${ANDROID_NDK_SYSROOT1_LIB1}\" -Wl,-rpath-link=\"${ANDROID_NDK_SYSROOT1_LIB1}\" -L\"${ANDROID_NDK_SYSROOT1_LIB2}\" -target ${ANDROID_LLVM_TRIPLE} -static-libgcc -static-libstdc++") +#set(LINKER_FLAGS "${LINKER_FLAGS} -v") + +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}") + +# Requires CMake >= 3.2.0 to have these flags being honored by try_compile() +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}") +message(STATUS "CMAKE_CXX_LINK_EXECUTABLE: ${CMAKE_CXX_LINK_EXECUTABLE}") +message(STATUS "CMAKE_C_LINK_EXECUTABLE: ${CMAKE_C_LINK_EXECUTABLE}") +message(STATUS "CMAKE_LINK_EXECUTABLE: ${CMAKE_LINK_EXECUTABLE}") +message(STATUS "CMAKE_TRY_COMPILE_PLATFORM_VARIABLES: ${CMAKE_TRY_COMPILE_PLATFORM_VARIABLES}") + +set(ANDROID true) +set(BUILD_ANDROID true) diff --git a/cmake/toolchain.clang-default.cmake b/cmake/toolchain.clang-default.cmake new file mode 100644 index 00000000..78c52055 --- /dev/null +++ b/cmake/toolchain.clang-default.cmake @@ -0,0 +1,48 @@ +# For normal clang compilation + +if(NOT APPLE) + 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") +endif() + +if(APPLE) + # was 10.5, but `-stdlib=libc++` requires >= 10.7 (deployment target) + # OpenAL-Soft git version 2023-11-25 requires >= 10.13 + # Note: + # - kAudioObjectPropertyElementMain since macOS 12 + # - kAudioObjectPropertyElementMaster gone in macOS 12 + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mmacosx-version-min=10.13 -DkAudioObjectPropertyElementMain=kAudioObjectPropertyElementMaster") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmacosx-version-min=10.13 -DkAudioObjectPropertyElementMain=kAudioObjectPropertyElementMaster") +endif() + +# inject additional architectures for fat-binary (macosx) +# CMAKE_EXTRA_ARCHS is set from JOAL's ant build.xml +if(NOT APPLE) + set(CC_XTRA_FLAGS "") +else() + set(CC_XTRA_FLAGS "-stdlib=libc++") +endif() +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CC_XTRA_FLAGS} ${CMAKE_EXTRA_ARCHS}") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CC_XTRA_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}") + +if(NOT APPLE) + set(LINKER_FLAGS "-static-libgcc -static-libstdc++") +else() + set(LINKER_FLAGS "-stdlib=libc++ -lc++abi") +endif() +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) + +set(CMAKE_CXX_COMPILER "clang++") + diff --git a/cmake/toolchain.clang-x86_32.cmake b/cmake/toolchain.clang-x86_32.cmake new file mode 100644 index 00000000..21a7008e --- /dev/null +++ b/cmake/toolchain.clang-x86_32.cmake @@ -0,0 +1,31 @@ +# For multiarch clang crosscompile, i.e. x86_32 target on x86_64 host + +set(CMAKE_SYSTEM_PROCESSOR "x86") + +link_directories("/usr/lib32") + +if(NOT APPLE) + 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") +endif() + +if(APPLE) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mmacosx-version-min=10.7") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmacosx-version-min=10.7") +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 "-static-libgcc -static-libstdc++") +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/toolchain.gcc-default.cmake b/cmake/toolchain.gcc-default.cmake new file mode 100644 index 00000000..9c185af7 --- /dev/null +++ b/cmake/toolchain.gcc-default.cmake @@ -0,0 +1,17 @@ +# For normal gcc compilation, but use static-libgcc + +if(NOT APPLE) + 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") +endif() + +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 -static-libstdc++") +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/toolchain.gcc-x86_32.cmake b/cmake/toolchain.gcc-x86_32.cmake new file mode 100644 index 00000000..62895703 --- /dev/null +++ b/cmake/toolchain.gcc-x86_32.cmake @@ -0,0 +1,21 @@ +# For multiarch gcc crosscompile, i.e. x86_32 target on x86_64 host + +set(CMAKE_SYSTEM_PROCESSOR "x86") + +link_directories("/usr/lib32") + +if(NOT APPLE) + 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") +endif() + +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 -static-libstdc++") +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/toolchain.linux-gcc-aarch64.cmake b/cmake/toolchain.linux-gcc-aarch64.cmake new file mode 100644 index 00000000..da43bad6 --- /dev/null +++ b/cmake/toolchain.linux-gcc-aarch64.cmake @@ -0,0 +1,23 @@ +# For normal gcc compilation, but use static-libgcc + +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_VERSION 1) + +set(CMAKE_FIND_ROOT_PATH ${TARGET_PLATFORM_SYSROOT} ${TARGET_PLATFORM_USRROOT}) + +if(NOT APPLE) + # -idirafter will be searched after implicit system-dir include '-I =/usr/include' from TARGET_PLATFORM_SYSROOT + set(CMAKE_C_FLAGS "-fpic -march=armv8-a -include ${PROJECT_SOURCE_DIR}/cmake/glibc-compat-symbols.h -idirafter /usr/include") + set(CMAKE_CXX_FLAGS "-fpic -march=armv8-a -include ${PROJECT_SOURCE_DIR}/cmake/glibc-compat-symbols.h -idirafter /usr/include") +endif() + +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=armv8-a -static-libgcc -static-libstdc++ -L${TARGET_PLATFORM_USRLIBS} -static-libgcc -static-libstdc++") +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/toolchain.linux-gcc-armv6hf.cmake b/cmake/toolchain.linux-gcc-armv6hf.cmake new file mode 100644 index 00000000..c5a01168 --- /dev/null +++ b/cmake/toolchain.linux-gcc-armv6hf.cmake @@ -0,0 +1,22 @@ +# For normal gcc compilation, but use static-libgcc + +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_VERSION 1) + +set(CMAKE_FIND_ROOT_PATH ${TARGET_PLATFORM_SYSROOT} ${TARGET_PLATFORM_USRROOT}) + +if(NOT APPLE) + # -idirafter will be searched after implicit system-dir include '-I =/usr/include' from TARGET_PLATFORM_SYSROOT + set(CMAKE_C_FLAGS "-fpic -march=armv6 -mfpu=vfp -mfloat-abi=hard -marm -include ${PROJECT_SOURCE_DIR}/cmake/glibc-compat-symbols.h -idirafter /usr/include") + set(CMAKE_CXX_FLAGS "-fpic -march=armv6 -mfpu=vfp -mfloat-abi=hard -marm -include ${PROJECT_SOURCE_DIR}/cmake/glibc-compat-symbols.h -idirafter /usr/include") +endif() + +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 -mfpu=vfp -mfloat-abi=hard -marm -static-libgcc -static-libstdc++ -L${TARGET_PLATFORM_USRLIBS} -static-libgcc -static-libstdc++") + +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..3ff6cbaa --- /dev/null +++ b/cmake/toolchain.windows.cmake @@ -0,0 +1,36 @@ +# 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") + +set(LINKER_FLAGS "-static -static-libgcc -static-libstdc++") + +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) + +# 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} "") diff --git a/scripts/arm-linux-gnueabi b/scripts/arm-linux-gnueabi new file mode 120000 index 00000000..8b9c9e18 --- /dev/null +++ b/scripts/arm-linux-gnueabi @@ -0,0 +1 @@ +xtools-armsf-linux-gnueabi
\ No newline at end of file diff --git a/scripts/arm-linux-gnueabihf b/scripts/arm-linux-gnueabihf new file mode 120000 index 00000000..cb71826d --- /dev/null +++ b/scripts/arm-linux-gnueabihf @@ -0,0 +1 @@ +xtools-armhf-linux-gnueabi
\ No newline at end of file diff --git a/scripts/make.gcc-armv6-cross.sh b/scripts/make.gcc-armv6-cross.sh new file mode 100755 index 00000000..2eaa1cdf --- /dev/null +++ b/scripts/make.gcc-armv6-cross.sh @@ -0,0 +1,13 @@ +#! /bin/sh + +SDIR=`dirname $0` +CDIR=$SDIR/../cmake + +PATH=$SDIR/arm-linux-gnueabi/bin:$PATH +export PATH + +which gcc + +cmake .. -DCMAKE_TOOLCHAIN_FILE=$CDIR/toolchain.gcc-armv6.cmake +make + diff --git a/scripts/make.gcc-armv6hf-cross.sh b/scripts/make.gcc-armv6hf-cross.sh new file mode 100755 index 00000000..406e5241 --- /dev/null +++ b/scripts/make.gcc-armv6hf-cross.sh @@ -0,0 +1,11 @@ +#! /bin/sh + +SDIR=`dirname $0` +CDIR=$SDIR/../cmake + +PATH=$SDIR/arm-linux-gnueabihf/bin:$PATH +export PATH + +cmake .. -DCMAKE_TOOLCHAIN_FILE=$CDIR/toolchain.gcc-armv6hf.cmake +make + diff --git a/scripts/sys-arm-linux-gnueabi/bin/gcc b/scripts/sys-arm-linux-gnueabi/bin/gcc new file mode 120000 index 00000000..edeaa99b --- /dev/null +++ b/scripts/sys-arm-linux-gnueabi/bin/gcc @@ -0,0 +1 @@ +/usr/bin/arm-linux-gnueabi-gcc
\ No newline at end of file diff --git a/scripts/sys-arm-linux-gnueabi/bin/ld b/scripts/sys-arm-linux-gnueabi/bin/ld new file mode 120000 index 00000000..68f4fae2 --- /dev/null +++ b/scripts/sys-arm-linux-gnueabi/bin/ld @@ -0,0 +1 @@ +/usr/bin/arm-linux-gnueabi-ld
\ No newline at end of file diff --git a/scripts/sys-arm-linux-gnueabi/bin/objdump b/scripts/sys-arm-linux-gnueabi/bin/objdump new file mode 120000 index 00000000..a48d9ee9 --- /dev/null +++ b/scripts/sys-arm-linux-gnueabi/bin/objdump @@ -0,0 +1 @@ +/usr/bin/arm-linux-gnueabi-objdump
\ No newline at end of file diff --git a/scripts/sys-arm-linux-gnueabi/bin/strip b/scripts/sys-arm-linux-gnueabi/bin/strip new file mode 120000 index 00000000..8dab56bf --- /dev/null +++ b/scripts/sys-arm-linux-gnueabi/bin/strip @@ -0,0 +1 @@ +/usr/bin/arm-linux-gnueabi-strip
\ No newline at end of file diff --git a/scripts/sys-arm-linux-gnueabihf/bin/gcc b/scripts/sys-arm-linux-gnueabihf/bin/gcc new file mode 120000 index 00000000..dca59c0f --- /dev/null +++ b/scripts/sys-arm-linux-gnueabihf/bin/gcc @@ -0,0 +1 @@ +/usr/bin/arm-linux-gnueabihf-gcc
\ No newline at end of file diff --git a/scripts/sys-arm-linux-gnueabihf/bin/ld b/scripts/sys-arm-linux-gnueabihf/bin/ld new file mode 120000 index 00000000..bce9f7fb --- /dev/null +++ b/scripts/sys-arm-linux-gnueabihf/bin/ld @@ -0,0 +1 @@ +/usr/bin/arm-linux-gnueabihf-ld
\ No newline at end of file diff --git a/scripts/sys-arm-linux-gnueabihf/bin/objdump b/scripts/sys-arm-linux-gnueabihf/bin/objdump new file mode 120000 index 00000000..ded739ce --- /dev/null +++ b/scripts/sys-arm-linux-gnueabihf/bin/objdump @@ -0,0 +1 @@ +/usr/bin/arm-linux-gnueabihf-objdump
\ No newline at end of file diff --git a/scripts/sys-arm-linux-gnueabihf/bin/strip b/scripts/sys-arm-linux-gnueabihf/bin/strip new file mode 120000 index 00000000..c941465e --- /dev/null +++ b/scripts/sys-arm-linux-gnueabihf/bin/strip @@ -0,0 +1 @@ +/usr/bin/arm-linux-gnueabihf-strip
\ No newline at end of file diff --git a/scripts/xtools-armhf-linux-gnueabi/bin/gcc b/scripts/xtools-armhf-linux-gnueabi/bin/gcc new file mode 120000 index 00000000..ad74056d --- /dev/null +++ b/scripts/xtools-armhf-linux-gnueabi/bin/gcc @@ -0,0 +1 @@ +/usr/local/x-tools/armhf-unknown-linux-gnueabi/bin/armhf-unknown-linux-gnueabi-gcc
\ No newline at end of file diff --git a/scripts/xtools-armhf-linux-gnueabi/bin/ld b/scripts/xtools-armhf-linux-gnueabi/bin/ld new file mode 120000 index 00000000..6d1bd138 --- /dev/null +++ b/scripts/xtools-armhf-linux-gnueabi/bin/ld @@ -0,0 +1 @@ +/usr/local/x-tools/armhf-unknown-linux-gnueabi/bin/armhf-unknown-linux-gnueabi-ld
\ No newline at end of file diff --git a/scripts/xtools-armhf-linux-gnueabi/bin/objdump b/scripts/xtools-armhf-linux-gnueabi/bin/objdump new file mode 120000 index 00000000..9502840a --- /dev/null +++ b/scripts/xtools-armhf-linux-gnueabi/bin/objdump @@ -0,0 +1 @@ +/usr/local/x-tools/armhf-unknown-linux-gnueabi/bin/armhf-unknown-linux-gnueabi-objdump
\ No newline at end of file diff --git a/scripts/xtools-armhf-linux-gnueabi/bin/strip b/scripts/xtools-armhf-linux-gnueabi/bin/strip new file mode 120000 index 00000000..a4ce5087 --- /dev/null +++ b/scripts/xtools-armhf-linux-gnueabi/bin/strip @@ -0,0 +1 @@ +/usr/local/x-tools/armhf-unknown-linux-gnueabi/bin/armhf-unknown-linux-gnueabi-strip
\ No newline at end of file diff --git a/scripts/xtools-armsf-linux-gnueabi/bin/gcc b/scripts/xtools-armsf-linux-gnueabi/bin/gcc new file mode 120000 index 00000000..171bfb69 --- /dev/null +++ b/scripts/xtools-armsf-linux-gnueabi/bin/gcc @@ -0,0 +1 @@ +/usr/local/x-tools/armsf-unknown-linux-gnueabi/bin/armsf-unknown-linux-gnueabi-gcc
\ No newline at end of file diff --git a/scripts/xtools-armsf-linux-gnueabi/bin/ld b/scripts/xtools-armsf-linux-gnueabi/bin/ld new file mode 120000 index 00000000..f10f5b85 --- /dev/null +++ b/scripts/xtools-armsf-linux-gnueabi/bin/ld @@ -0,0 +1 @@ +/usr/local/x-tools/armsf-unknown-linux-gnueabi/bin/armsf-unknown-linux-gnueabi-ld
\ No newline at end of file diff --git a/scripts/xtools-armsf-linux-gnueabi/bin/objdump b/scripts/xtools-armsf-linux-gnueabi/bin/objdump new file mode 120000 index 00000000..8e28b950 --- /dev/null +++ b/scripts/xtools-armsf-linux-gnueabi/bin/objdump @@ -0,0 +1 @@ +/usr/local/x-tools/armsf-unknown-linux-gnueabi/bin/armsf-unknown-linux-gnueabi-objdump
\ No newline at end of file diff --git a/scripts/xtools-armsf-linux-gnueabi/bin/strip b/scripts/xtools-armsf-linux-gnueabi/bin/strip new file mode 120000 index 00000000..1e5fe910 --- /dev/null +++ b/scripts/xtools-armsf-linux-gnueabi/bin/strip @@ -0,0 +1 @@ +/usr/local/x-tools/armsf-unknown-linux-gnueabi/bin/armsf-unknown-linux-gnueabi-strip
\ No newline at end of file |