Update build-ndk-standalone scripts.
Previous version did a bad job of recognizing an incorrect config file. This makes it a bit better. It also removes the need for a config in the parent directory. Co-authored-by: Jack Grigg <jack@z.cash>
This commit is contained in:
parent
42295cf09a
commit
56154ee506
|
@ -1,2 +0,0 @@
|
|||
[build]
|
||||
target-dir = "build/rust/target"
|
|
@ -9,6 +9,7 @@
|
|||
*.class
|
||||
|
||||
# Generated files
|
||||
.cargo/
|
||||
bin/
|
||||
gen/
|
||||
out/
|
||||
|
|
|
@ -9,6 +9,15 @@ if "%DIRNAME%" == "" set DIRNAME=.
|
|||
@rem put this somewhere that's often ignored by git
|
||||
set output_dir=%DIRNAME%\out\ndk\standalone
|
||||
|
||||
call :generate_standalone_ndk
|
||||
call :generate_config
|
||||
|
||||
echo Done
|
||||
exit /b %ERRORLEVEL%
|
||||
|
||||
|
||||
:generate_standalone_ndk
|
||||
|
||||
@rem check for NDK standalone
|
||||
if exist "%output_dir%" echo Standalone NDK files found! && exit /b 0
|
||||
|
||||
|
@ -22,7 +31,7 @@ cd %DIRNAME%
|
|||
if exist "%standalone_script%" goto standaloneScriptFound
|
||||
|
||||
echo NDK not found. Please make sure that ANDROID_HOME is set and the NDK has been installed there
|
||||
exit 1
|
||||
exit /b 1
|
||||
|
||||
:standaloneScriptFound
|
||||
echo Standalone NDK files appear to be missing.
|
||||
|
@ -43,20 +52,45 @@ mkdir %output_dir%
|
|||
"%standalone_script%" --arch arm --api 16 --install-dir "%output_dir%\arm"
|
||||
"%standalone_script%" --arch arm64 --api 21 --install-dir "%output_dir%\arm64"
|
||||
|
||||
@rem check for our generated cargo file
|
||||
set cargo_dir=%DIRNAME%\..\.cargo
|
||||
set generated_cargo_config=%cargo_dir%\config
|
||||
@rem end of generate_standalone_ndk
|
||||
exit /b 0
|
||||
|
||||
if exist "%generated_cargo_config%" goto backup
|
||||
|
||||
:generate_config
|
||||
|
||||
@rem check for our generated cargo file
|
||||
set cargo_dir=%DIRNAME%\.cargo
|
||||
set generated_cargo_config=%cargo_dir%\config
|
||||
set generated_cargo_config_hash=%cargo_dir%\.config-windows.hash
|
||||
set generated_cargo_config_hash_tmp=%cargo_dir%\.config-windows.hash.tmp
|
||||
|
||||
if exist "%generated_cargo_config%" goto configExists
|
||||
goto notFound
|
||||
|
||||
:configExists
|
||||
if exist "%generated_cargo_config_hash%" goto checkConfig
|
||||
goto notFound
|
||||
|
||||
:checkConfig
|
||||
echo Cargo config found!
|
||||
|
||||
certutil -hashfile %generated_cargo_config% > %generated_cargo_config_hash_tmp%
|
||||
comp %generated_cargo_config_hash% %generated_cargo_config_hash_tmp% /m
|
||||
if %ERRORLEVEL% equ 0 exit /b 0
|
||||
echo.
|
||||
|
||||
echo but it does not appear to be correct! Regenerating it.
|
||||
|
||||
set backup_config=%cargo_dir%\config.backup
|
||||
echo First, backing it up from %generated_cargo_config% to %backup_config%
|
||||
copy %generated_cargo_config% %backup_config%
|
||||
goto generate
|
||||
|
||||
:backup
|
||||
set backup_config=%cargo_dir%\config.backup
|
||||
echo existing config found. Backing it up from %generated_cargo_config% to %backup_config%
|
||||
copy %generated_cargo_config% %backup_config%
|
||||
:notFound
|
||||
echo Cargo config not found!
|
||||
|
||||
:generate
|
||||
echo generating cargo config at %generated_cargo_config%
|
||||
echo Generating cargo config at %generated_cargo_config%
|
||||
|
||||
mkdir %cargo_dir% 2>NUL
|
||||
|
||||
|
@ -65,7 +99,10 @@ set output_dir=%output_dir:\=/%
|
|||
|
||||
(
|
||||
|
||||
echo #auto-generated by build-ndk-standalone.bat
|
||||
echo #auto-generated by build-ndk-standalone.bat. Modifications may get replaced.
|
||||
echo.
|
||||
echo [build]
|
||||
echo target-dir = "build/rust/target"
|
||||
echo.
|
||||
echo [target.i686-linux-android]
|
||||
echo ar = "%output_dir%/x86/bin/i686-linux-android-ar.exe"
|
||||
|
@ -81,7 +118,7 @@ set output_dir=%output_dir:\=/%
|
|||
|
||||
) > %generated_cargo_config%
|
||||
|
||||
echo Done
|
||||
certutil -hashfile %generated_cargo_config% > %generated_cargo_config_hash%
|
||||
|
||||
@rem end of generate_config
|
||||
exit /b 0
|
||||
|
||||
|
||||
|
|
|
@ -1,59 +1,91 @@
|
|||
#!/usr/bin/zsh
|
||||
|
||||
# put this somewhere that's often ignored by git
|
||||
# put this somewhere that will be ignored by git
|
||||
output_dir=out/ndk/standalone
|
||||
script_name=$0
|
||||
|
||||
# check for NDK standalone
|
||||
[[ -d "$output_dir" ]] && echo "Standalone NDK files found!" && exit 0
|
||||
function generate_standalone_ndk()
|
||||
{
|
||||
# check for NDK standalone
|
||||
[[ -d "$output_dir" ]] && echo "Standalone NDK files found!" && return 0
|
||||
|
||||
standalone_script=$(find $ANDROID_HOME -name "*make_standalone_toolchain.py")
|
||||
standalone_script=$(find $ANDROID_HOME -name "*make_standalone_toolchain.py")
|
||||
|
||||
# Try to find and print some info about the NDK based on the location of the toolchain script
|
||||
if [ ! -f "$standalone_script" ]; then
|
||||
echo "NDK not found. Please make sure that ANDROID_HOME is set and the NDK has been installed there"
|
||||
else
|
||||
echo "Standalone NDK files appear to be missing.\n Attempting to install them..."
|
||||
ndk_dir=$(dirname $(dirname $(dirname $standalone_script 2>/dev/null) 2>/dev/null) 2>/dev/null)
|
||||
ndk_version=$(grep -oE "[0-9.]{5,}" $ndk_dir/source.properties 2>/dev/null)
|
||||
echo " NDK version $ndk_version found at $ndk_dir"
|
||||
fi
|
||||
# Try to find and print some info about the NDK based on the location of the toolchain script
|
||||
if [ ! -f "$standalone_script" ]; then
|
||||
echo "NDK not found. Please make sure that ANDROID_HOME is set and the NDK has been installed there"
|
||||
else
|
||||
echo "Standalone NDK files appear to be missing.\n Attempting to install them..."
|
||||
ndk_dir=$(dirname $(dirname $(dirname $standalone_script 2>/dev/null) 2>/dev/null) 2>/dev/null)
|
||||
ndk_version=$(grep -oE "[0-9.]{5,}" $ndk_dir/source.properties 2>/dev/null)
|
||||
echo " NDK version $ndk_version found at $ndk_dir"
|
||||
fi
|
||||
|
||||
echo " Installing the standalone NDK for x86|arm|arm64 into $output_dir"
|
||||
mkdir -p $output_dir
|
||||
"$standalone_script" --arch x86 --api 16 --install-dir "$output_dir/x86"
|
||||
"$standalone_script" --arch arm --api 16 --install-dir "$output_dir/arm"
|
||||
"$standalone_script" --arch arm64 --api 21 --install-dir "$output_dir/arm64"
|
||||
echo " Installing the standalone NDK for x86|arm|arm64 into $output_dir"
|
||||
mkdir -p $output_dir
|
||||
"$standalone_script" --arch x86 --api 16 --install-dir "$output_dir/x86"
|
||||
"$standalone_script" --arch arm --api 16 --install-dir "$output_dir/arm"
|
||||
"$standalone_script" --arch arm64 --api 21 --install-dir "$output_dir/arm64"
|
||||
}
|
||||
|
||||
# check for our generated cargo file
|
||||
generated_cargo_config=../.cargo/config
|
||||
function generate_config()
|
||||
{
|
||||
# check for our generated cargo file
|
||||
generated_cargo_config=.cargo/config
|
||||
generated_cargo_config_hash=.cargo/.config.hash
|
||||
expected_lines=17
|
||||
|
||||
if [ -f "$generated_cargo_config" ]; then
|
||||
backup_config_filename="config.$(date +%s).backup"
|
||||
echo " existing config found. Backing it up from $generated_cargo_config to $(dirname $generated_cargo_config)/$backup_config_filename"
|
||||
cp $generated_cargo_config $(dirname $generated_cargo_config)/$backup_config_filename
|
||||
fi
|
||||
if [ -f "$generated_cargo_config" -a -f "$generated_cargo_config_hash" ]; then
|
||||
echo "Cargo config found!"
|
||||
|
||||
echo " generating cargo config at $generated_cargo_config"
|
||||
line_count=$(wc -l < "$generated_cargo_config")
|
||||
|
||||
mkdir -p $(dirname $generated_cargo_config)
|
||||
sha256sum -c "$generated_cargo_config_hash" && [[ "$line_count" -eq "$expected_lines" ]] && return 0
|
||||
|
||||
awk -v SA_NDK=$output_dir -v SCRIPT_DIR=$PWD 'BEGIN{
|
||||
echo " but it does not appear to be correct! Regenerating it."
|
||||
|
||||
printf "#auto-generated by build-ndk-standalone.sh\n\n"
|
||||
if [ -f "$generated_cargo_config" ]; then
|
||||
backup_config_filename="config-$(date +%s).backup"
|
||||
echo " first, backing it up from $generated_cargo_config to $(dirname $generated_cargo_config)/$backup_config_filename"
|
||||
echo " *** NOTE: if this keeps happening, update the 'expected_lines' value in $script_name : "$(basename "$0")
|
||||
echo
|
||||
cp $generated_cargo_config $(dirname $generated_cargo_config)/$backup_config_filename
|
||||
fi
|
||||
else
|
||||
echo "Cargo config not found!"
|
||||
fi
|
||||
|
||||
printf "[target.i686-linux-android]\n"
|
||||
printf "ar = \"%s/%s/x86/bin/i686-linux-android-ar\"\n", SCRIPT_DIR, SA_NDK
|
||||
printf "linker = \"%s/%s/x86/bin/i686-linux-android-clang\"\n\n", SCRIPT_DIR, SA_NDK
|
||||
echo " Generating cargo config at $generated_cargo_config"
|
||||
|
||||
printf "[target.armv7-linux-androideabi]\n"
|
||||
printf "ar = \"%s/%s/arm/bin/arm-linux-androideabi-ar\"\n", SCRIPT_DIR, SA_NDK
|
||||
printf "linker = \"%s/%s/arm/bin/arm-linux-androideabi-clang\"\n\n", SCRIPT_DIR, SA_NDK
|
||||
mkdir -p $(dirname $generated_cargo_config)
|
||||
|
||||
printf "[target.aarch64-linux-android]\n"
|
||||
printf "ar = \"%s/%s/arm64/bin/aarch64-linux-android-ar\"\n", SCRIPT_DIR, SA_NDK
|
||||
printf "linker = \"%s/%s/arm64/bin/aarch64-linux-android-clang\"\n\n", SCRIPT_DIR, SA_NDK
|
||||
awk -v SA_NDK=$output_dir -v SCRIPT_DIR=$PWD 'BEGIN{
|
||||
|
||||
}' > $generated_cargo_config
|
||||
printf "#auto-generated by build-ndk-standalone.sh. Modifications will get replaced.\n\n"
|
||||
|
||||
printf "[build]\n"
|
||||
printf "target-dir = \"build/rust/target\"\n\n"
|
||||
|
||||
printf "[target.i686-linux-android]\n"
|
||||
printf "ar = \"%s/%s/x86/bin/i686-linux-android-ar\"\n", SCRIPT_DIR, SA_NDK
|
||||
printf "linker = \"%s/%s/x86/bin/i686-linux-android-clang\"\n\n", SCRIPT_DIR, SA_NDK
|
||||
|
||||
printf "[target.armv7-linux-androideabi]\n"
|
||||
printf "ar = \"%s/%s/arm/bin/arm-linux-androideabi-ar\"\n", SCRIPT_DIR, SA_NDK
|
||||
printf "linker = \"%s/%s/arm/bin/arm-linux-androideabi-clang\"\n\n", SCRIPT_DIR, SA_NDK
|
||||
|
||||
printf "[target.aarch64-linux-android]\n"
|
||||
printf "ar = \"%s/%s/arm64/bin/aarch64-linux-android-ar\"\n", SCRIPT_DIR, SA_NDK
|
||||
printf "linker = \"%s/%s/arm64/bin/aarch64-linux-android-clang\"\n\n", SCRIPT_DIR, SA_NDK
|
||||
|
||||
}' > $generated_cargo_config
|
||||
|
||||
sha256sum $generated_cargo_config > $generated_cargo_config_hash
|
||||
|
||||
}
|
||||
|
||||
generate_standalone_ndk
|
||||
generate_config
|
||||
|
||||
echo "Done"
|
||||
|
||||
|
|
Loading…
Reference in New Issue