#!/bin/bash

ANDROID_HOME=~/Android/Sdk
ANDROID_NDK="$(find "$ANDROID_HOME/ndk" -maxdepth 1 | sort -n | tail -1)"

export MAKEFLAGS=-j32

export CXXFLAGS="$3"
export CFLAGS="$3"
export CPPFLAGS="$4"
export LDFLAGS="$4"

export ANDROID_NDK_ROOT=$ANDROID_NDK
PATH=$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin:$ANDROID_NDK_ROOT/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin:$PATH

function build_openssl() {
	_EXISTS_PROJECT=0
	if [ -d "$1" ]; then
		_EXISTS_PROJECT=1
	else
		mkdir "$1"
	fi
	(
		cd "$1" || exit 1
		if [[ "$_EXISTS_PROJECT" == "0" ]]; then
			if [[ "${4}" == "webasm" ]]; then
				emconfigure ../Configure "$2" -no-tests -no-asm -static -no-afalgeng -DOPENSSL_SYS_NETWARE -DSIG_DFL=0 -DSIG_IGN=0 -DHAVE_FORK=0 -DOPENSSL_NO_AFALGENG=1 --with-rand-seed=getrandom

				sed -i 's|^CROSS_COMPILE.*$|CROSS_COMPILE=|g' Makefile
			else
				../Configure "$2" no-asm no-shared
			fi
		fi
		${5} make $MAKEFLAGS build_generated
		${5} make $MAKEFLAGS libcrypto.a
		${5} make $MAKEFLAGS libssl.a
		cd ..
	)
}

if [[ "${2}" == "android" ]]; then
	build_openssl build_"$2"_arm android-arm "$1" "$2" ""
	build_openssl build_"$2"_arm64 android-arm64 "$1" "$2" ""
	build_openssl build_"$2"_x86 android-x86 "$1" "$2" ""
	build_openssl build_"$2"_x86_64 android-x86_64 "$1" "$2" ""
elif [[ "${2}" == "webasm" ]]; then
	build_openssl build_"$2"_wasm linux-generic64 "$1" "$2" emmake
fi
