From 6cd6d9ef5d2f3f41581fbac5d3eb413364714dcf Mon Sep 17 00:00:00 2001 From: Hardcore Sushi Date: Wed, 22 Jun 2022 22:32:05 +0200 Subject: [PATCH] Fix vendor libs build --- CMakeLists.txt | 26 ++++++++-------- vendor/boost/.gitignore | 1 + vendor/boost/CMakeLists.txt | 30 +++++++++++++++++-- vendor/boost/android-build.sh | 10 +++---- vendor/cryptopp/CMakeLists.txt | 8 ++++- vendor/cryptopp/android-build.sh | 11 +++---- .../TestScripts/setenv-android.sh | 5 +--- 7 files changed, 60 insertions(+), 31 deletions(-) create mode 100644 vendor/boost/.gitignore diff --git a/CMakeLists.txt b/CMakeLists.txt index 9a0b6858..adb9ab48 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,19 +7,19 @@ cmake_policy(SET CMP0065 OLD) # - try if setting CRYPTOPP_NATIVE_ARCH=ON and adding -march=native to the compile commands for cryfs source files makes a difference # -> if yes, offer a cmake option to enable both of these -set(ANDROID_ABI arm64-v8a) -set(ANDROID_NDK /ndk/23.1.7779620/) -set(ANDROID_PLATFORM android-21) -set(ANDROID_TOOLCHAIN clang) - -set(CMAKE_SYSTEM_NAME Android) -set(CMAKE_SYSTEM_VERSION 21) -set(CMAKE_ANDROID_ARCH_ABI arm64-v8a) -set(CMAKE_ANDROID_NDK ${ANDROID_NDK}) -set(CMAKE_ANDROID_STL_TYPE c++_static) - -set(CMAKE_TOOLCHAIN_FILE ${CMAKE_ANDROID_NDK}/build/cmake/android.toolchain.cmake) -set(ANDROID TRUE) # Current toolchain file doesn't set this variable which is needed by spdlog +#set(ANDROID_ABI arm64-v8a) +#set(ANDROID_NDK /ndk/23.1.7779620/) +#set(ANDROID_PLATFORM android-21) +#set(ANDROID_TOOLCHAIN clang) +# +#set(CMAKE_SYSTEM_NAME Android) +#set(CMAKE_SYSTEM_VERSION 21) +#set(CMAKE_ANDROID_ARCH_ABI arm64-v8a) +#set(CMAKE_ANDROID_NDK ${ANDROID_NDK}) +#set(CMAKE_ANDROID_STL_TYPE c++_static) +# +#set(CMAKE_TOOLCHAIN_FILE ${CMAKE_ANDROID_NDK}/build/cmake/android.toolchain.cmake) +#set(ANDROID TRUE) # Current toolchain file doesn't set this variable which is needed by spdlog project(cryfs) diff --git a/vendor/boost/.gitignore b/vendor/boost/.gitignore new file mode 100644 index 00000000..796b96d1 --- /dev/null +++ b/vendor/boost/.gitignore @@ -0,0 +1 @@ +/build diff --git a/vendor/boost/CMakeLists.txt b/vendor/boost/CMakeLists.txt index 2a1b986b..6c35170f 100644 --- a/vendor/boost/CMakeLists.txt +++ b/vendor/boost/CMakeLists.txt @@ -1,12 +1,36 @@ project(libboost) add_library(boost INTERFACE) +set(BOOST_OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/build/${CMAKE_ANDROID_ARCH_ABI}") +set(BOOST_STATIC_LIBS + ${BOOST_OUTPUT}/lib/libboost_atomic-clang-mt-a64-1_76.a + ${BOOST_OUTPUT}/lib/libboost_chrono-clang-mt-a64-1_76.a + ${BOOST_OUTPUT}/lib/libboost_container-clang-mt-a64-1_76.a + ${BOOST_OUTPUT}/lib/libboost_date_time-clang-mt-a64-1_76.a + ${BOOST_OUTPUT}/lib/libboost_exception-clang-mt-a64-1_76.a + ${BOOST_OUTPUT}/lib/libboost_filesystem-clang-mt-a64-1_76.a + ${BOOST_OUTPUT}/lib/libboost_serialization-clang-mt-a64-1_76.a + ${BOOST_OUTPUT}/lib/libboost_system-clang-mt-a64-1_76.a + ${BOOST_OUTPUT}/lib/libboost_thread-clang-mt-a64-1_76.a + ${BOOST_OUTPUT}/lib/libboost_wserialization-clang-mt-a64-1_76.a +) add_custom_target( vendor_boost COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/android-build.sh ${CMAKE_ANDROID_NDK} ${CMAKE_ANDROID_ARCH_ABI} + BYPRODUCTS ${BOOST_STATIC_LIBS} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) -set(BOOST_OUTPUT "Boost-for-Android/build/out/${CMAKE_ANDROID_ARCH_ABI}") -file(GLOB BOOST_STATIC_LIBS ${BOOST_OUTPUT}/lib/libboost_*.a) +add_dependencies(boost vendor_boost) target_include_directories(boost SYSTEM INTERFACE ${BOOST_OUTPUT}/include/boost-1_76) -target_link_libraries(boost INTERFACE vendor_boost ${BOOST_STATIC_LIBS}) +target_link_libraries(boost INTERFACE + ${BOOST_OUTPUT}/lib/libboost_atomic-clang-mt-a64-1_76.a + ${BOOST_OUTPUT}/lib/libboost_chrono-clang-mt-a64-1_76.a + ${BOOST_OUTPUT}/lib/libboost_container-clang-mt-a64-1_76.a + ${BOOST_OUTPUT}/lib/libboost_date_time-clang-mt-a64-1_76.a + ${BOOST_OUTPUT}/lib/libboost_exception-clang-mt-a64-1_76.a + ${BOOST_OUTPUT}/lib/libboost_filesystem-clang-mt-a64-1_76.a + ${BOOST_OUTPUT}/lib/libboost_serialization-clang-mt-a64-1_76.a + ${BOOST_OUTPUT}/lib/libboost_system-clang-mt-a64-1_76.a + ${BOOST_OUTPUT}/lib/libboost_thread-clang-mt-a64-1_76.a + ${BOOST_OUTPUT}/lib/libboost_wserialization-clang-mt-a64-1_76.a +) diff --git a/vendor/boost/android-build.sh b/vendor/boost/android-build.sh index 8ea07136..eac4e41e 100755 --- a/vendor/boost/android-build.sh +++ b/vendor/boost/android-build.sh @@ -1,14 +1,13 @@ #!/bin/sh -if [ -d Boost-for-Android/build/out/$2 ]; then +if ls build/$2/lib/libboost_*.a 1>&2 2>/dev/null; then echo "boost already built for $2"; exit 0 fi +mkdir -p build && rm -rf build/$2 && cd Boost-for-Android || exit 1 + BOOST_TAR=boost_1_76_0.tar.bz2 - -cd Boost-for-Android || exit 1 - if [ ! -f $BOOST_TAR ]; then wget -O $BOOST_TAR https://boostorg.jfrog.io/artifactory/main/release/1.76.0/source/boost_1_76_0.tar.bz2 || exit 1 fi @@ -16,4 +15,5 @@ fi sha256sum -c ../checksum.txt && \ ./build-android.sh --boost=1.76.0 --arch=$2 --target-version=21 \ --with-libraries=atomic,chrono,container,date_time,exception,filesystem,serialization,system,thread \ - $1 + $1 && \ +mv build/out/$2 ../build diff --git a/vendor/cryptopp/CMakeLists.txt b/vendor/cryptopp/CMakeLists.txt index 761c9458..7af9ec72 100644 --- a/vendor/cryptopp/CMakeLists.txt +++ b/vendor/cryptopp/CMakeLists.txt @@ -19,5 +19,11 @@ set(USE_INTERMEDIATE_OBJECTS_TARGET OFF CACHE BOOL "") set(cryptocpp_DISPLAY_CMAKE_SUPPORT_WARNING OFF CACHE BOOL "") set(LIBCRYPTOPP_A "${CMAKE_CURRENT_SOURCE_DIR}/vendor_cryptopp/build/${CMAKE_ANDROID_ARCH_ABI}/libcryptopp.a") -add_custom_command(OUTPUT ${LIBCRYPTOPP_A} COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/android-build.sh ${CMAKE_ANDROID_ARCH_ABI}) +add_custom_target( + vendor_cryptopp + COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/android-build.sh ${CMAKE_ANDROID_NDK} ${CMAKE_ANDROID_ARCH_ABI} + BYPRODUCTS ${LIBCRYPTOPP_A} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} +) +#add_dependencies(cryptopp vendor_cryptopp) target_link_libraries(cryptopp INTERFACE ${LIBCRYPTOPP_A}) diff --git a/vendor/cryptopp/android-build.sh b/vendor/cryptopp/android-build.sh index b1a4b0a3..89a77081 100755 --- a/vendor/cryptopp/android-build.sh +++ b/vendor/cryptopp/android-build.sh @@ -1,7 +1,8 @@ -#!/bin/sh +#!/usr/bin/env bash +export ANDROID_NDK_ROOT=$1 && \ cd vendor_cryptopp && \ - mkdir -p build/$1 && \ - TestScripts/setenv-android.sh 21 $1 && \ - make -f GNUmakefile-cross static && \ - mv libcryptopp.a build/$1 +mkdir -p build/$2 && \ +source TestScripts/setenv-android.sh 21 $2 && \ +make -f GNUmakefile-cross static && \ +mv libcryptopp.a build/$2 diff --git a/vendor/cryptopp/vendor_cryptopp/TestScripts/setenv-android.sh b/vendor/cryptopp/vendor_cryptopp/TestScripts/setenv-android.sh index e0e73bd6..f265fc57 100755 --- a/vendor/cryptopp/vendor_cryptopp/TestScripts/setenv-android.sh +++ b/vendor/cryptopp/vendor_cryptopp/TestScripts/setenv-android.sh @@ -192,7 +192,6 @@ case "$ANDROID_CPU" in armv7*|armeabi*) CC="armv7a-linux-androideabi${ANDROID_API}-clang" CXX="armv7a-linux-androideabi${ANDROID_API}-clang++" - AR="arm-linux-androideabi-ar" STRIP="arm-linux-androideabi-strip" OBJDUMP="arm-linux-androideabi-objdump" @@ -215,7 +214,6 @@ case "$ANDROID_CPU" in armv8*|aarch64|arm64*) CC="aarch64-linux-android${ANDROID_API}-clang" CXX="aarch64-linux-android${ANDROID_API}-clang++" - AR="aarch64-linux-android-ar" STRIP="aarch64-linux-android-strip" OBJDUMP="aarch64-linux-android-objdump" @@ -235,7 +233,6 @@ case "$ANDROID_CPU" in i686|x86) CC="i686-linux-android${ANDROID_API}-clang" CXX="i686-linux-android${ANDROID_API}-clang++" - AR="i686-linux-android-ar" STRIP="i686-linux-android-strip" OBJDUMP="i686-linux-android-objdump" @@ -257,7 +254,6 @@ case "$ANDROID_CPU" in x86_64|x64) CC="x86_64-linux-android${ANDROID_API}-clang" CXX="x86_64-linux-android${ANDROID_API}-clang++" - AR="x86_64-linux-android-ar" STRIP="x86_64-linux-android-strip" OBJDUMP="x86_64-linux-android-objdump" @@ -283,6 +279,7 @@ esac LD=$CC AS="llvm-as" +AR="llvm-ar" RANLIB="llvm-ranlib" echo "Configuring for Android API ${ANDROID_API} ($ANDROID_CPU)"