add tooling to prepare and ease compilation on Linux
This commit is contained in:
parent
03d5beeeed
commit
f8a728884e
7 changed files with 291 additions and 0 deletions
59
.clang-format
Normal file
59
.clang-format
Normal file
|
@ -0,0 +1,59 @@
|
|||
---
|
||||
Language: Cpp
|
||||
ColumnLimit: 140
|
||||
IndentWidth: 4
|
||||
PPIndentWidth: 2
|
||||
UseTab: Never
|
||||
|
||||
AlignArrayOfStructures: Left
|
||||
|
||||
IndentCaseBlocks: true
|
||||
IndentCaseLabels: true
|
||||
IndentGotoLabels: false
|
||||
IndentPPDirectives: AfterHash
|
||||
IndentWrappedFunctionNames: true
|
||||
|
||||
InsertBraces: false
|
||||
InsertNewlineAtEOF: true
|
||||
|
||||
MaxEmptyLinesToKeep: 1
|
||||
|
||||
PointerAlignment: Left
|
||||
ReferenceAlignment: Left
|
||||
QualifierAlignment: Left
|
||||
|
||||
SortIncludes: false
|
||||
|
||||
SpaceBeforeAssignmentOperators: true
|
||||
SpaceBeforeParens: ControlStatements
|
||||
SpaceBeforeRangeBasedForLoopColon: true
|
||||
SpaceInEmptyParentheses: false
|
||||
SpacesInAngles: true
|
||||
SpacesInCStyleCastParentheses: true
|
||||
SpacesInContainerLiterals: true
|
||||
SpacesInParentheses: true
|
||||
SpacesInSquareBrackets: true
|
||||
SpaceAfterCStyleCast: false
|
||||
SpaceAfterLogicalNot: false
|
||||
|
||||
BreakBeforeBraces: Custom
|
||||
BraceWrapping:
|
||||
AfterCaseLabel: false
|
||||
AfterClass: false
|
||||
AfterControlStatement: Never
|
||||
AfterEnum: false
|
||||
AfterExternBlock: false
|
||||
AfterFunction: true
|
||||
AfterNamespace: false
|
||||
AfterObjCDeclaration: false
|
||||
AfterStruct: false
|
||||
AfterUnion: false
|
||||
BeforeCatch: false
|
||||
BeforeElse: false
|
||||
BeforeLambdaBody: false
|
||||
BeforeWhile: false
|
||||
IndentBraces: false
|
||||
SplitEmptyFunction: true
|
||||
SplitEmptyRecord: true
|
||||
SplitEmptyNamespace: true
|
||||
...
|
41
Makefile
Normal file
41
Makefile
Normal file
|
@ -0,0 +1,41 @@
|
|||
.PHONY: release release-with-assets debug debug-with-assets clean mrproper pull-emu48plus pull-assets keystore linux-compatible undo-linux-compatible
|
||||
|
||||
release:
|
||||
./gradlew assembleRelease assembleReleaseUnitTest
|
||||
find . -name \*.apk
|
||||
|
||||
debug:
|
||||
./gradlew assembleDebug assembleDebugUnitTest
|
||||
find . -name \*.apk
|
||||
|
||||
clean:
|
||||
./gradlew clean
|
||||
-rm -fr ./app/src/main/cpp/emu48plus.bkp
|
||||
-rm -fr ./app/src/main/assets/calculators.bkp
|
||||
|
||||
mrproper: clean
|
||||
-rm -fr ./app/src/main/assets/calculators/*
|
||||
|
||||
linux-compatible:
|
||||
zsh ./make-linux-compatible.sh
|
||||
|
||||
undo-linux-compatible:
|
||||
git reset --hard HEAD
|
||||
rm -f app/src/main/cpp/core/emu48.c
|
||||
rm -f app/src/main/cpp/core/emu48.h
|
||||
rm -f app/src/main/cpp/core/opcodes.h
|
||||
|
||||
keystore:
|
||||
bash ./gen-keystore.sh
|
||||
|
||||
# These are leftovers from a previous iteration,
|
||||
# neither necessary not up-to-date but ncie to keep around for reference
|
||||
release-with-assets: pull-assets release
|
||||
|
||||
debug-with-assets: pull-assets debug
|
||||
|
||||
pull-emu48plus:
|
||||
zsh ./pull-emu48plus-sources.sh
|
||||
|
||||
pull-assets:
|
||||
bash ./pull-KMLs-and-ROMs.sh
|
21
gen-keystore.sh
Executable file
21
gen-keystore.sh
Executable file
|
@ -0,0 +1,21 @@
|
|||
#!/bin/bash
|
||||
|
||||
cd "$(dirname "$0")" || exit 1
|
||||
|
||||
KEYSTORE_FILE=${KEYSTORE_FILE:-./keystore.jks}
|
||||
ALIAS=key-emu48
|
||||
|
||||
echo "Generating $KEYSTORE_FILE…"
|
||||
keytool -genkey -keystore "$KEYSTORE_FILE" -keyalg RSA -validity 9125 -alias $ALIAS
|
||||
|
||||
echo -n "Type again the password (will not echo): "
|
||||
read -s password
|
||||
echo
|
||||
|
||||
echo "Generating ./keystore.properties…"
|
||||
cat <<EOF > ./keystore.properties
|
||||
storeFile=$KEYSTORE_FILE
|
||||
storePassword=$password
|
||||
keyAlias=$ALIAS
|
||||
keyPassword=$password
|
||||
EOF
|
8
local.properties.sample
Normal file
8
local.properties.sample
Normal file
|
@ -0,0 +1,8 @@
|
|||
## This file must *NOT* be checked into Version Control Systems,
|
||||
# as it contains information specific to your local configuration.
|
||||
#
|
||||
# Location of the SDK. This is only used by Gradle.
|
||||
# For customization when using a Version Control System, please read the
|
||||
# header note.
|
||||
#Mon Apr 01 18:38:15 CEST 2024
|
||||
sdk.dir=/home/gwh/Android/Sdk
|
68
make-linux-compatible.sh
Executable file
68
make-linux-compatible.sh
Executable file
|
@ -0,0 +1,68 @@
|
|||
#!/bin/zsh
|
||||
|
||||
# This script depends on:
|
||||
# - fd
|
||||
# - sed
|
||||
# - grep
|
||||
# - dos2unix
|
||||
# - clang-format
|
||||
|
||||
set -eu
|
||||
|
||||
cd "$(dirname "$0")" || exit 1
|
||||
CWD=$(pwd)
|
||||
|
||||
cd ./app/src/main/cpp/core/ || exit 1
|
||||
|
||||
echo "> Correct filenames' case"
|
||||
for f in ./*; do
|
||||
dos2unix "$f" >/dev/null 2>&1
|
||||
|
||||
echo "$f" | grep -q "[A-Z]" && mv "$f" "$(echo "$f" | tr '[:upper:]' '[:lower:]')"
|
||||
done
|
||||
|
||||
cd "$CWD" || exit 1
|
||||
|
||||
echo "> fix includes for lowercase filenames"
|
||||
sed -i 's|Emu48\.h|emu48.h|g' $(grep -l "Emu48\.h[^t]" * -r)
|
||||
sed -i 's|Emu48Dll\.h|emu48dll.h|g' $(grep -l "Emu48Dll\.h" * -r)
|
||||
sed -i 's|Opcodes\.h|opcodes.h|g' $(grep -l "Opcodes\.h" * -r)
|
||||
sed -i 's|Ops\.h|ops.h|g' $(grep -l "Ops\.h" * -r)
|
||||
|
||||
echo "> make gradlew executable"
|
||||
chmod +x ./gradlew
|
||||
|
||||
echo "> gitignore secrets"
|
||||
echo "keystore.properties" >> .gitignore
|
||||
echo "keystore.kjs" >> .gitignore
|
||||
|
||||
echo "> patch app/build.gradle to add custom suffix to build"
|
||||
SUFFIX=${SUFFIX:-gwh}
|
||||
BUILD_SUFFIXES=" versionNameSuffix \"-${SUFFIX}\"\n versionName"
|
||||
ESCAPED_BUILD_SUFFIXES="$(echo "${BUILD_SUFFIXES}" | sed ':a;N;$!ba;s/\n/\\n/g' | sed 's/\$/\\$/g')"
|
||||
sed -i 's/ versionName/'"${ESCAPED_BUILD_SUFFIXES}"'/' app/build.gradle
|
||||
sed -i 's/Emu48-v$versionName/$applicationId-v$versionName$versionNameSuffix/' app/build.gradle
|
||||
|
||||
# not necessary but it makes code readable
|
||||
echo "> translitterate windows-encoded ß to 'ss'"
|
||||
sed -i 's/'$(echo "\0337")'/ss/g' ./app/src/main/cpp/core/*
|
||||
|
||||
echo "> remove those ugly ^M characters"
|
||||
fd -e c \
|
||||
-e h \
|
||||
-e C \
|
||||
-e H \
|
||||
-e java \
|
||||
-e kml \
|
||||
-e KML \
|
||||
-e kmi \
|
||||
-e htm \
|
||||
-e pro \
|
||||
-e xml \
|
||||
-e txt \
|
||||
-e gradle \
|
||||
-e properties \
|
||||
-x sed -i 's|
||g'
|
||||
|
||||
echo "> prettify all C code"
|
||||
clang-format -i $(fd -e c -e h)
|
61
pull-KMLs-and-ROMs.sh
Executable file
61
pull-KMLs-and-ROMs.sh
Executable file
|
@ -0,0 +1,61 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -eu
|
||||
|
||||
cd "$(dirname "$0")" || exit 1
|
||||
|
||||
cd ./app/src/main/assets/ || exit 1
|
||||
|
||||
[ -d ./calculators.bkp ] && rm -fr ./calculators.bkp
|
||||
cp -a ./calculators ./calculators.bkp
|
||||
|
||||
cd ./calculators || exit 1
|
||||
|
||||
rm -fr ./realcalcs* ./rom.* ./gxrom* ./sxrom* ./*.ico ./*.kml ./*.png ./*.kmi ./readme-rom.49g.txt
|
||||
|
||||
echo "Pulling Eric Rechlin's Real Calcs KML Scripts for Emu48 and Emu48+"
|
||||
wget -c "https://www.hpcalc.org/hp48/pc/emulators/realcalcs.zip"
|
||||
unzip realcalcs.zip
|
||||
rm realcalcs.zip
|
||||
mv ./docs ./realcalcs-docs
|
||||
mv ./skins/* ./
|
||||
rm -fr ./skins
|
||||
|
||||
wget -c "https://www.hpcalc.org/hp49/pc/emulators/realcalcsplus.zip"
|
||||
unzip realcalcsplus.zip
|
||||
rm realcalcsplus.zip
|
||||
mv ./docs ./realcalcsplus-docs
|
||||
mv ./skins/* ./
|
||||
rm -fr ./skins
|
||||
|
||||
echo " …removing the medium versions"
|
||||
rm ./*-m.kml ./*-m.png ./*-mc.kml ./*-mc.png ./*-muc.kml ./*-muc.png
|
||||
|
||||
echo "Pulling ROM for 38g"
|
||||
curl "https://www.hpcalc.org/hp38/pc/38grom.zip" --output - | funzip > "rom.38g"
|
||||
|
||||
echo "Pulling ROM for 39g"
|
||||
curl "https://www.hpcalc.org/hp39/pc/rom3940.zip" --output - | funzip > "rom.39g"
|
||||
|
||||
echo "Pulling ROM for 48S(X)"
|
||||
curl "https://www.hpcalc.org/hp48/pc/emulators/sxrom-a.zip" --output - | funzip > "sxrom-a"
|
||||
curl "https://www.hpcalc.org/hp48/pc/emulators/sxrom-b.zip" --output - | funzip > "sxrom-b"
|
||||
curl "https://www.hpcalc.org/hp48/pc/emulators/sxrom-c.zip" --output - | funzip > "sxrom-c"
|
||||
curl "https://www.hpcalc.org/hp48/pc/emulators/sxrom-d.zip" --output - | funzip > "sxrom-d"
|
||||
curl "https://www.hpcalc.org/hp48/pc/emulators/sxrom-e.zip" --output - | funzip > "sxrom-e"
|
||||
curl "https://www.hpcalc.org/hp48/pc/emulators/sxrom-j.zip" --output - | funzip > "sxrom-j"
|
||||
|
||||
echo "Pulling ROM for 48G(X)"
|
||||
curl "https://www.hpcalc.org/hp48/pc/emulators/gxrom-l.zip" --output - | funzip > "gxrom-l"
|
||||
curl "https://www.hpcalc.org/hp48/pc/emulators/gxrom-m.zip" --output - | funzip > "gxrom-m"
|
||||
curl "https://www.hpcalc.org/hp48/pc/emulators/gxrom-p.zip" --output - | funzip > "gxrom-p"
|
||||
curl "https://www.hpcalc.org/hp48/pc/emulators/gxrom-r.zip" --output - | funzip > "gxrom-r"
|
||||
|
||||
cp sxrom-j rom.48s
|
||||
cp gxrom-r rom.48g
|
||||
|
||||
echo "Pulling ROM for 49G(+) / 50g"
|
||||
wget -c "https://www.hpcalc.org/hp49/pc/rom/hp4950emurom.zip"
|
||||
unzip hp4950emurom.zip
|
||||
rm hp4950emurom.zip
|
||||
mv ./readme.txt ./readme-rom.49g.txt
|
33
pull-emu48plus-sources.sh
Executable file
33
pull-emu48plus-sources.sh
Executable file
|
@ -0,0 +1,33 @@
|
|||
#!/bin/zsh
|
||||
|
||||
set -eu
|
||||
|
||||
cd "$(dirname "$0")" || exit 1
|
||||
|
||||
cd ./app/src/main/cpp/ || exit 1
|
||||
|
||||
[ -d ./emu48plus.bkp ] && rm -fr ./emu48plus.bkp
|
||||
[ -d ./emu48plus ] && mv ./emu48plus ./emu48plus.bkp
|
||||
|
||||
echo "Pulling Emu48+ sources"
|
||||
wget -c "https://www.hpcalc.org/hp48/pc/emulators/e48sp65plus.zip"
|
||||
unzip e48sp65plus.zip source.zip
|
||||
unzip -d emu48plus source.zip
|
||||
rm e48sp65plus.zip source.zip
|
||||
|
||||
echo "Correct filenames' case"
|
||||
cd emu48plus || exit 1
|
||||
|
||||
sed -i 's/'$(echo "\0337")'/ss/g' ./*
|
||||
|
||||
for f in ./*; do
|
||||
dos2unix "$f"
|
||||
|
||||
echo "$f" | grep -q "[A-Z]" && mv "$f" "$(echo "$f" | tr '[:upper:]' '[:lower:]')"
|
||||
done
|
||||
sed -i 's|Emu48\.h|emu48.h|g' ./*
|
||||
sed -i 's|Emu48Dll\.h|emu48dll.h|g' ./*
|
||||
sed -i 's|Opcodes\.h|opcodes.h|g' ./*
|
||||
sed -i 's|Ops\.h|ops.h|g' ./*
|
||||
|
||||
clang-format -i ./*.c ./*.h
|
Loading…
Reference in a new issue