1
- strongswanLibsSrc=" $PWD /../strongswan-src/src/frontends/android/app/src/main/libs/*"
2
- strongswanLibsDst=" $PWD /../strongswan/libs"
3
- mkdir -p $strongswanLibsDst
4
- strongswanRoot=" $PWD /../strongswan-src"
5
- cd $strongswanRoot
6
- lib=" $PWD /src/frontends/android/app/src/main/jni/openssl"
7
- PATH=$ANDROID_NDK /toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH
8
- pushd $OpenSSL
9
- CC=armv7a-linux-androideabi16-clang ./Configure android-arm no-shared no-ssl3 no-engine no-dso no-asm no-hw no-comp no-stdio -fPIC -DOPENSSL_PIC -D__ANDROID_API__=16 -ffast-math -O3 -funroll-loops
10
- make -j $( nproc) > config.log
11
- mkdir -p " ${lib} /armeabi-v7a"
12
- cp libcrypto.a ${lib} /armeabi-v7a/
13
- make distclean
14
- CC=aarch64-linux-android21-clang ./Configure android-arm64 no-shared no-ssl3 no-engine no-dso no-asm no-hw no-comp no-stdio -fPIC -DOPENSSL_PIC -D__ANDROID_API__=21 -ffast-math -O3 -funroll-loops
15
- make -j $( nproc) > config.log
16
- mkdir -p " ${lib} /arm64-v8a"
17
- cp libcrypto.a ${lib} /arm64-v8a/
18
- make distclean
19
- CC=i686-linux-android16-clang ./Configure android-x86 no-shared no-ssl3 no-engine no-dso no-asm no-hw no-comp no-stdio -fPIC -DOPENSSL_PIC -D__ANDROID_API__=16 -ffast-math -O3 -funroll-loops
20
- make -j $( nproc) > config.log
21
- mkdir -p " ${lib} /x86"
22
- cp libcrypto.a ${lib} /x86/
23
- make distclean
24
- CC=x86_64-linux-android21-clang ./Configure android-x86_64 no-shared no-ssl3 no-engine no-dso no-asm no-hw no-comp no-stdio -fPIC -DOPENSSL_PIC -D__ANDROID_API__=21 -ffast-math -O3 -funroll-loops
25
- make -j $( nproc) > config.log
26
- mkdir -p " ${lib} /x86_64"
27
- cp libcrypto.a ${lib} /x86_64/
28
- cp -R include/ ${lib} /
29
- make distclean
30
- rm config.log
31
- popd
32
- echo " LOCAL_PATH := \$ (call my-dir)" > " ${lib} /Android.mk"
33
- echo " include \$ (CLEAR_VARS)" >> " ${lib} /Android.mk"
34
- echo " LOCAL_MODULE := libcrypto_static" >> " ${lib} /Android.mk"
35
- echo " LOCAL_SRC_FILES := \$ (TARGET_ARCH_ABI)/libcrypto.a" >> " ${lib} /Android.mk"
36
- echo " LOCAL_EXPORT_C_INCLUDES := \$ (LOCAL_PATH)/include" >> " ${lib} /Android.mk"
37
- echo " include \$ (PREBUILT_STATIC_LIBRARY)" >> " ${lib} /Android.mk"
38
- cd $strongswanRoot
1
+ #! /usr/bin/env bash
2
+
3
+ set -euo pipefail
4
+
5
+ # === Usage ===
6
+ # ./build_strongswan.sh /path/to/strongswan-src /path/to/openssl /path/to/output-libs
7
+ # ================================
8
+
9
+ if [ " $# " -ne 3 ]; then
10
+ echo " Usage: $0 <strongswan-dir> <openssl-dir> <strongswan-libs-dst>"
11
+ exit 1
12
+ fi
13
+
14
+ # === Parameters ===
15
+ STRONGSWAN_DIR=" $1 "
16
+ OPENSSL_SRC=" $2 "
17
+ STRONGSWAN_LIBS_DST=" $3 "
18
+
19
+ # === Derived Paths ===
20
+ ANDROID_OPENSSL_DIR=" $STRONGSWAN_DIR /src/frontends/android/openssl"
21
+ export OUT_DIR=" $STRONGSWAN_DIR /src/frontends/android/app/src/main/jni/openssl"
22
+ APP_DIR=" $STRONGSWAN_DIR /src/frontends/android/app"
23
+
24
+ echo " ===> Copying OpenSSL sources..."
25
+ cp -a " $OPENSSL_SRC /." " $ANDROID_OPENSSL_DIR /"
26
+
27
+ echo " ===> Compiling OpenSSL..."
28
+ cd " $ANDROID_OPENSSL_DIR "
29
+ ./compile.sh
30
+
31
+ echo " ===> Generating Android.mk for libcrypto_static..."
32
+ mkdir -p " $OUT_DIR "
33
+ cat << EOF > "${OUT_DIR} /Android.mk"
34
+ LOCAL_PATH := \$ (call my-dir)
35
+ include \$ (CLEAR_VARS)
36
+ LOCAL_MODULE := libcrypto_static
37
+ LOCAL_SRC_FILES := \$ (TARGET_ARCH_ABI)/libcrypto.a
38
+ LOCAL_EXPORT_C_INCLUDES := \$ (LOCAL_PATH)/include
39
+ include \$ (PREBUILT_STATIC_LIBRARY)
40
+ EOF
41
+
42
+ echo " ===> Building Strongswan..."
43
+ cd " $STRONGSWAN_DIR "
39
44
./autogen.sh > config.log
40
- ./configure --disable-defaults > config.log
41
- make dist -j $( nproc) > config.log
45
+ ./configure --disable-defaults >> config.log
46
+ make dist -j " $( nproc) " > > config.log
42
47
rm config.log
48
+
49
+ echo " ===> Updating Gradle build config..."
50
+ cd " $APP_DIR "
51
+ sed -i ' /arguments ' \' ' -j' \' ' \+ Runtime\.runtime\.availableProcessors()/a\ arguments "-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON"' build.gradle
52
+
53
+ echo " ===> Building release APK..."
54
+ gradle assembleRelease
55
+
56
+ echo " ===> Copying output libs to: $STRONGSWAN_LIBS_DST "
57
+ mkdir -p " $STRONGSWAN_LIBS_DST "
58
+ cp -r " $APP_DIR " /build/intermediates/merged_native_libs/release/mergeReleaseNativeLibs/out/lib/* " $STRONGSWAN_LIBS_DST /"
59
+
60
+ echo " ✅ Build completed successfully."
0 commit comments