| 
									
										
										
										
											2024-02-18 21:22:42 -05:00
										 |  |  | #!/bin/bash | 
					
						
							| 
									
										
										
										
											2023-09-27 22:23:52 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-18 21:22:42 -05:00
										 |  |  | if [ -z $ANDROID_NDK_ROOT ]; then | 
					
						
							|  |  |  | 	ANDROID_NDK_ROOT=~/Android/Sdk/ndk/26.1.10909125 | 
					
						
							| 
									
										
										
										
											2024-01-31 03:06:47 +00:00
										 |  |  | fi | 
					
						
							|  |  |  | OPENSSL_VERSION=3.2.1 | 
					
						
							| 
									
										
										
										
											2023-09-27 22:23:52 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-22 18:07:23 +00:00
										 |  |  | API_LEVEL=24 | 
					
						
							| 
									
										
										
										
											2023-09-27 22:23:52 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | BUILD_DIR=out/openssl_android_build | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-11 18:44:50 +00:00
										 |  |  | BUILD_TARGETS="x86_64 x86 arm64-v8a armeabi-v7a" | 
					
						
							| 
									
										
										
										
											2023-09-27 22:23:52 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-18 21:22:42 -05:00
										 |  |  | rm -rf out/openssl-${OPENSSL_VERSION} | 
					
						
							| 
									
										
										
										
											2023-09-27 22:23:52 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-21 19:46:28 -05:00
										 |  |  | if [ ! -d out/openssl-${OPENSSL_VERSION} ] | 
					
						
							| 
									
										
										
										
											2023-09-27 22:23:52 +00:00
										 |  |  | then | 
					
						
							| 
									
										
										
										
											2024-02-21 19:46:28 -05:00
										 |  |  |     if [ ! -f out/openssl-${OPENSSL_VERSION}.tar.gz ] | 
					
						
							| 
									
										
										
										
											2023-09-27 22:23:52 +00:00
										 |  |  |     then | 
					
						
							| 
									
										
										
										
											2024-02-18 21:22:42 -05:00
										 |  |  |         wget https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz -O out/openssl-${OPENSSL_VERSION}.tar.gz | exit 128 | 
					
						
							| 
									
										
										
										
											2023-09-27 22:23:52 +00:00
										 |  |  |     fi | 
					
						
							| 
									
										
										
										
											2024-02-18 21:22:42 -05:00
										 |  |  |     tar -C out/ -xzf out/openssl-${OPENSSL_VERSION}.tar.gz || exit 128 | 
					
						
							| 
									
										
										
										
											2023-09-27 22:23:52 +00:00
										 |  |  | fi | 
					
						
							| 
									
										
										
										
											2024-02-18 21:22:42 -05:00
										 |  |  | WORK_DIR=out/openssl-${OPENSSL_VERSION} | 
					
						
							| 
									
										
										
										
											2023-09-27 22:23:52 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | ##### export ndk directory. Required by openssl-build-scripts ##### | 
					
						
							| 
									
										
										
										
											2024-02-18 21:22:42 -05:00
										 |  |  | export ANDROID_NDK_ROOT | 
					
						
							|  |  |  | echo ANDROID_NDK_ROOT=$ANDROID_NDK_ROOT | 
					
						
							| 
									
										
										
										
											2023-09-27 22:23:52 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | ##### build-function ##### | 
					
						
							|  |  |  | build_the_thing() { | 
					
						
							| 
									
										
										
										
											2024-02-18 21:22:42 -05:00
										 |  |  |     TOOLCHAIN=$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64 | 
					
						
							| 
									
										
										
										
											2023-09-27 22:23:52 +00:00
										 |  |  |     export PATH=$TOOLCHAIN/$TRIBLE/bin:$TOOLCHAIN/bin:$PATH | 
					
						
							|  |  |  |     echo $PATH | 
					
						
							| 
									
										
										
										
											2024-01-06 21:33:20 +00:00
										 |  |  |     export GLOBAL_OPTIONS=" | 
					
						
							|  |  |  |         no-apps | 
					
						
							|  |  |  |         no-asm | 
					
						
							|  |  |  |         no-async | 
					
						
							|  |  |  |         no-autoerrinit | 
					
						
							|  |  |  |         no-cmp | 
					
						
							|  |  |  |         no-cms | 
					
						
							|  |  |  |         no-comp | 
					
						
							|  |  |  |         no-deprecated | 
					
						
							|  |  |  |         no-dgram | 
					
						
							|  |  |  |         no-docs | 
					
						
							|  |  |  |         no-dsa | 
					
						
							|  |  |  |         no-dso | 
					
						
							|  |  |  |         no-dtls | 
					
						
							|  |  |  |         no-dynamic-engine | 
					
						
							|  |  |  |         no-ec2m | 
					
						
							|  |  |  |         no-egd | 
					
						
							|  |  |  |         no-engine | 
					
						
							|  |  |  |         no-err | 
					
						
							|  |  |  |         no-filenames | 
					
						
							|  |  |  |         no-gost | 
					
						
							|  |  |  |         no-http | 
					
						
							|  |  |  |         no-idea | 
					
						
							|  |  |  |         no-legacy | 
					
						
							|  |  |  |         no-md2 | 
					
						
							|  |  |  |         no-md4 | 
					
						
							|  |  |  |         no-module | 
					
						
							|  |  |  |         no-multiblock | 
					
						
							|  |  |  |         no-nextprotoneg | 
					
						
							|  |  |  |         no-ocsp | 
					
						
							|  |  |  |         no-psk | 
					
						
							|  |  |  |         no-shared | 
					
						
							|  |  |  |         no-sock | 
					
						
							|  |  |  |         no-srp | 
					
						
							|  |  |  |         no-ssl3 | 
					
						
							|  |  |  |         no-ssl-trace | 
					
						
							|  |  |  |         no-stdio | 
					
						
							|  |  |  |         no-tests | 
					
						
							|  |  |  |         no-thread-pool | 
					
						
							|  |  |  |         no-threads | 
					
						
							|  |  |  |         no-trace | 
					
						
							|  |  |  |         no-ui-console | 
					
						
							|  |  |  |         no-uplink | 
					
						
							|  |  |  |         no-weak-ssl-ciphers | 
					
						
							|  |  |  |         no-zlib | 
					
						
							|  |  |  |         -Os | 
					
						
							|  |  |  |         -DOPENSSL_SMALL_FOOTPRINT" | 
					
						
							| 
									
										
										
										
											2024-02-18 21:22:42 -05:00
										 |  |  |     pwd | 
					
						
							| 
									
										
										
										
											2023-10-19 20:21:17 +00:00
										 |  |  |     echo "./Configure $SSL_TARGET $OPTIONS $GLOBAL_OPTIONS -fuse-ld=$TOOLCHAIN/bin/ld" && \ | 
					
						
							|  |  |  |     ./Configure $SSL_TARGET $OPTIONS $GLOBAL_OPTIONS -fuse-ld=$TOOLCHAIN/bin/ld no-tests && \ | 
					
						
							| 
									
										
										
										
											2023-09-27 22:23:52 +00:00
										 |  |  |     make clean && \ | 
					
						
							|  |  |  |     make build_generated && \ | 
					
						
							|  |  |  |     make libcrypto.a libssl.a || exit 128 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ##### set variables according to build-tagret ##### | 
					
						
							|  |  |  | for build_target in $BUILD_TARGETS | 
					
						
							|  |  |  | do | 
					
						
							|  |  |  |     echo "Building $build_target" | 
					
						
							| 
									
										
										
										
											2024-02-18 21:22:42 -05:00
										 |  |  |     pwd | 
					
						
							|  |  |  |     pushd $WORK_DIR || exit 128 | 
					
						
							| 
									
										
										
										
											2023-09-27 22:23:52 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     case $build_target in | 
					
						
							|  |  |  |     armeabi-v7a) | 
					
						
							|  |  |  |         TRIBLE="arm-linux-androideabi" | 
					
						
							| 
									
										
										
										
											2023-10-19 20:21:17 +00:00
										 |  |  |         OPTIONS="--target=armv7a-linux-androideabi -ffunction-sections -fdata-sections -Wl,--fix-cortex-a8 -fPIC -D__ANDROID_API__=$API_LEVEL -Wno-macro-redefined" | 
					
						
							| 
									
										
										
										
											2023-09-27 22:23:52 +00:00
										 |  |  |         DESTDIR="/tmp/$BUILD_DIR/armeabi-v7a" | 
					
						
							|  |  |  |         SSL_TARGET="android-arm" | 
					
						
							|  |  |  |         CC=clang | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  |     x86) | 
					
						
							|  |  |  |         TRIBLE="i686-linux-android" | 
					
						
							| 
									
										
										
										
											2023-10-19 20:21:17 +00:00
										 |  |  |         OPTIONS="-fPIC -ffunction-sections -fdata-sections -D__ANDROID_API__=${API_LEVEL} -Wno-macro-redefined" | 
					
						
							| 
									
										
										
										
											2023-09-27 22:23:52 +00:00
										 |  |  |         DESTDIR="/tmp/$BUILD_DIR/x86" | 
					
						
							|  |  |  |         SSL_TARGET="android-x86" | 
					
						
							|  |  |  |         CC=clang | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  |     x86_64) | 
					
						
							|  |  |  |         TRIBLE="x86_64-linux-android" | 
					
						
							|  |  |  |         OPTIONS="--static -static -ffunction-sections -fdata-sections -D__ANDROID_API__=${API_LEVEL} -Wno-macro-redefined" | 
					
						
							|  |  |  |         DESTDIR="/tmp/$BUILD_DIR/x86_64" | 
					
						
							|  |  |  |         SSL_TARGET="android-x86_64" | 
					
						
							|  |  |  |         CC=clang | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  |     arm64-v8a) | 
					
						
							|  |  |  |         TRIBLE="aarch64-linux-android" | 
					
						
							| 
									
										
										
										
											2023-09-28 00:32:52 +00:00
										 |  |  |         OPTIONS="--static -static -ffunction-sections -fdata-sections -fPIC -D__ANDROID_API__=${API_LEVEL} -Wno-macro-redefined" | 
					
						
							| 
									
										
										
										
											2023-09-27 22:23:52 +00:00
										 |  |  |         DESTDIR="/tmp/$BUILD_DIR/arm64-v8a" | 
					
						
							|  |  |  |         SSL_TARGET="android-arm64" | 
					
						
							|  |  |  |         CC=clang | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  |     esac | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     rm -rf $DESTDIR | 
					
						
							|  |  |  |     build_the_thing | 
					
						
							| 
									
										
										
										
											2024-02-18 21:22:42 -05:00
										 |  |  |     popd | 
					
						
							| 
									
										
										
										
											2023-09-27 22:23:52 +00:00
										 |  |  | #### copy libraries and includes to output-directory ##### | 
					
						
							|  |  |  |     echo WORK_DIR=$WORK_DIR | 
					
						
							|  |  |  |     rm -rf deps/openssl/android/$build_target/ | 
					
						
							| 
									
										
										
										
											2024-02-21 19:46:28 -05:00
										 |  |  |     mkdir -p deps/openssl/android/$build_target/usr/local/include/ | 
					
						
							| 
									
										
										
										
											2023-09-27 22:23:52 +00:00
										 |  |  |     mkdir -p deps/openssl/android/$build_target/usr/local/lib/ | 
					
						
							|  |  |  |     cp -R $WORK_DIR/include/* deps/openssl/android/$build_target/usr/local/include/ | 
					
						
							|  |  |  |     cp $WORK_DIR/*.a deps/openssl/android/$build_target/usr/local/lib/ | 
					
						
							|  |  |  | done | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | echo Success |