Merge pull request #2150 from tenzap/001-build_system
Build system improvements (Makefile, github workflow)
This commit is contained in:
138
.github/workflows/build.yml
vendored
138
.github/workflows/build.yml
vendored
@@ -13,6 +13,24 @@ jobs:
|
||||
- name: Fetch submodules
|
||||
run: git submodule init && git submodule update
|
||||
|
||||
- name: Cache Gradle packages
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: |
|
||||
~/.gradle/caches
|
||||
~/.gradle/wrapper
|
||||
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-gradle-
|
||||
|
||||
- name: Cache NuGet packages
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ~/.nuget/packages
|
||||
key: ${{ runner.os }}-nuget-${{ hashFiles('src/**/*.csproj', 'src/**/packages.config') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-nuget-
|
||||
|
||||
# As per https://github.com/actions/runner-images/blob/main/images/macos/macos-12-Readme.md#visual-studio-for-mac
|
||||
- name: Switch to Visual Studio 2019
|
||||
if: ${{ false }} # Not needed. We stay with the default 'Visual Studio 2022' of macos-12 runner.
|
||||
@@ -64,8 +82,8 @@ jobs:
|
||||
sed -i '' '/TargetFrameworkVersion/ s|v9.0|v11.0|' src/SamsungPass/Xamarin.SamsungPass/SamsungPass/SamsungPass.csproj
|
||||
sed -i '' 's|<ReleaseVersion>1.0</ReleaseVersion>|<ReleaseVersion>1.0</ReleaseVersion><AndroidClassParser>class-parse</AndroidClassParser>|' src/SamsungPass/Xamarin.SamsungPass/SamsungPass/SamsungPass.csproj
|
||||
|
||||
- name: Install NuGet dependencies
|
||||
run: make nuget
|
||||
- name: Install NuGet dependencies (net)
|
||||
run: make nuget Flavor=Net
|
||||
|
||||
- name: Build keepass2android (net)
|
||||
run: |
|
||||
@@ -82,6 +100,9 @@ jobs:
|
||||
path: |
|
||||
src/keepass2android/bin/*/*-Signed.apk
|
||||
|
||||
- name: Install NuGet dependencies (nonet)
|
||||
run: make nuget Flavor=NoNet
|
||||
|
||||
- name: Build keepass2android (nonet)
|
||||
run: |
|
||||
make msbuild Flavor=NoNet
|
||||
@@ -104,12 +125,52 @@ jobs:
|
||||
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
env:
|
||||
# Build Artifact of xamarin.android-oss dated 2021-02-02, master branch (= version 11.2.99) - *.deb cannot be installed because "lxd" package is not anymore shipped in current ubuntu version
|
||||
#xamarin_url: https://artprodcus3.artifacts.visualstudio.com/Ad0adf05a-e7d7-4b65-96fe-3f3884d42038/6fd3d886-57a5-4e31-8db7-52a1b47c07a8/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL3hhbWFyaW4vcHJvamVjdElkLzZmZDNkODg2LTU3YTUtNGUzMS04ZGI3LTUyYTFiNDdjMDdhOC9idWlsZElkLzM0NTE3L2FydGlmYWN0TmFtZS9JbnN0YWxsZXJzKy0rTGludXg1/content?format=zip
|
||||
|
||||
# Build Artifact of xamarin.android-oss dated 2021-03-23, d16-9 branch (= version 11.2.2) - *.deb cannot be installed because "lxd" package is not anymore shipped in current ubuntu version
|
||||
#xamarin_url: https://artprodcus3.artifacts.visualstudio.com/Ad0adf05a-e7d7-4b65-96fe-3f3884d42038/6fd3d886-57a5-4e31-8db7-52a1b47c07a8/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL3hhbWFyaW4vcHJvamVjdElkLzZmZDNkODg2LTU3YTUtNGUzMS04ZGI3LTUyYTFiNDdjMDdhOC9idWlsZElkLzM3Njg0L2FydGlmYWN0TmFtZS9JbnN0YWxsZXJzKy0rTGludXg1/content?format=zip
|
||||
|
||||
# Build Artifact of xamarin.android-oss dated 2021-07-21, master branch (= version 11.4.99)
|
||||
xamarin_url: https://artprodcus3.artifacts.visualstudio.com/Ad0adf05a-e7d7-4b65-96fe-3f3884d42038/6fd3d886-57a5-4e31-8db7-52a1b47c07a8/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL3hhbWFyaW4vcHJvamVjdElkLzZmZDNkODg2LTU3YTUtNGUzMS04ZGI3LTUyYTFiNDdjMDdhOC9idWlsZElkLzQzNjU5L2FydGlmYWN0TmFtZS9pbnN0YWxsZXJzLXVuc2lnbmVkKy0rTGludXg1/content?format=zip
|
||||
|
||||
# Build Artifact of xamarin.android-oss dated 2022-02-16, master branch (= version 12.2.99) - Build fails with this version as of 2022-12-02 because there is some issue with SamsungPass. Removing SamsungPass would make the build succeed.
|
||||
#xamarin_url: https://artprodcus3.artifacts.visualstudio.com/Ad0adf05a-e7d7-4b65-96fe-3f3884d42038/6fd3d886-57a5-4e31-8db7-52a1b47c07a8/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL3hhbWFyaW4vcHJvamVjdElkLzZmZDNkODg2LTU3YTUtNGUzMS04ZGI3LTUyYTFiNDdjMDdhOC9idWlsZElkLzU0OTUzL2FydGlmYWN0TmFtZS9pbnN0YWxsZXJzLXVuc2lnbmVkKy0rTGludXg1/content?format=zip
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Fetch submodules
|
||||
run: git submodule init && git submodule update
|
||||
|
||||
- name: Cache Gradle packages
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: |
|
||||
~/.gradle/caches
|
||||
~/.gradle/wrapper
|
||||
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-gradle-
|
||||
|
||||
- name: Cache NuGet packages
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ~/.nuget/packages
|
||||
key: ${{ runner.os }}-nuget-${{ hashFiles('src/**/*.csproj', 'src/**/packages.config') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-nuget-
|
||||
|
||||
- name: Cache Xamarin.Android packages
|
||||
id: xamarin_cache
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ~/xamarin.android-oss
|
||||
key: ${{ runner.os }}-xamarin.android-oss-${{ env.xamarin_url }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-xamarin.android-oss-${{ env.xamarin_url }}
|
||||
|
||||
- name: Install Mono
|
||||
if: ${{ false }} # disable for now since it is already installed on the runner which uses the same repo https://github.com/actions/runner-images/blob/main/images/linux/Ubuntu2204-Readme.md#language-and-runtime
|
||||
run: |
|
||||
@@ -119,29 +180,22 @@ jobs:
|
||||
sudo apt update &&
|
||||
sudo apt-get -y -t stable-focal install mono-complete
|
||||
|
||||
- name: Install Xamarin.Android
|
||||
- name: Download & unpack Xamarin.Android
|
||||
if: steps.xamarin_cache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
set -x
|
||||
cd $HOME
|
||||
|
||||
# Build Artifact of xamarin.android-oss dated 2021-02-02, master branch (= version 11.2.99) - *.deb cannot be installed because "lxd" package is not anymore shipped in current ubuntu version
|
||||
#wget -O "installers-unsigned - Linux.zip" https://artprodcus3.artifacts.visualstudio.com/Ad0adf05a-e7d7-4b65-96fe-3f3884d42038/6fd3d886-57a5-4e31-8db7-52a1b47c07a8/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL3hhbWFyaW4vcHJvamVjdElkLzZmZDNkODg2LTU3YTUtNGUzMS04ZGI3LTUyYTFiNDdjMDdhOC9idWlsZElkLzM0NTE3L2FydGlmYWN0TmFtZS9JbnN0YWxsZXJzKy0rTGludXg1/content?format=zip &&
|
||||
|
||||
# Build Artifact of xamarin.android-oss dated 2021-03-23, d16-9 branch (= version 11.2.2) - *.deb cannot be installed because "lxd" package is not anymore shipped in current ubuntu version
|
||||
#wget -O "installers-unsigned - Linux.zip" https://artprodcus3.artifacts.visualstudio.com/Ad0adf05a-e7d7-4b65-96fe-3f3884d42038/6fd3d886-57a5-4e31-8db7-52a1b47c07a8/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL3hhbWFyaW4vcHJvamVjdElkLzZmZDNkODg2LTU3YTUtNGUzMS04ZGI3LTUyYTFiNDdjMDdhOC9idWlsZElkLzM3Njg0L2FydGlmYWN0TmFtZS9JbnN0YWxsZXJzKy0rTGludXg1/content?format=zip &&
|
||||
|
||||
# Build Artifact of xamarin.android-oss dated 2021-07-21, master branch (= version 11.4.99)
|
||||
wget -O "installers-unsigned - Linux.zip" https://artprodcus3.artifacts.visualstudio.com/Ad0adf05a-e7d7-4b65-96fe-3f3884d42038/6fd3d886-57a5-4e31-8db7-52a1b47c07a8/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL3hhbWFyaW4vcHJvamVjdElkLzZmZDNkODg2LTU3YTUtNGUzMS04ZGI3LTUyYTFiNDdjMDdhOC9idWlsZElkLzQzNjU5L2FydGlmYWN0TmFtZS9pbnN0YWxsZXJzLXVuc2lnbmVkKy0rTGludXg1/content?format=zip &&
|
||||
|
||||
# Build Artifact of xamarin.android-oss dated 2022-02-16, master branch (= version 12.2.99) - Build fails with this version as of 2022-12-02 because there is some issue with SamsungPass. Removing SamsungPass would make the build succeed.
|
||||
#wget -O "installers-unsigned - Linux.zip" https://artprodcus3.artifacts.visualstudio.com/Ad0adf05a-e7d7-4b65-96fe-3f3884d42038/6fd3d886-57a5-4e31-8db7-52a1b47c07a8/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL3hhbWFyaW4vcHJvamVjdElkLzZmZDNkODg2LTU3YTUtNGUzMS04ZGI3LTUyYTFiNDdjMDdhOC9idWlsZElkLzU0OTUzL2FydGlmYWN0TmFtZS9pbnN0YWxsZXJzLXVuc2lnbmVkKy0rTGludXg1/content?format=zip &&
|
||||
|
||||
cd $HOME &&
|
||||
wget -O "installers-unsigned - Linux.zip" ${{ env.xamarin_url }} &&
|
||||
unzip "installers-unsigned - Linux.zip" &&
|
||||
mkdir -p xamarin.android-oss &&
|
||||
DIR=$(unzip -Z -1 installers-unsigned\ -\ Linux.zip | cut -d '/' -f1 | sort -u) &&
|
||||
tar -xvf "$DIR"/xamarin.android-oss-*.tar.* --strip-components=1 -C xamarin.android-oss &&
|
||||
sudo apt install -y ./"$DIR"/*.deb
|
||||
mv "$DIR"/*.deb xamarin.android-oss
|
||||
|
||||
- name: Setup Xamarin.Android
|
||||
run: |
|
||||
cd $HOME &&
|
||||
sudo apt install -y ./xamarin.android-oss/*.deb &&
|
||||
echo "$HOME/xamarin.android-oss/bin/Release/bin" >> $GITHUB_PATH
|
||||
|
||||
- name: Switch to JDK-8
|
||||
@@ -174,8 +228,8 @@ jobs:
|
||||
sed -i '/TargetFrameworkVersion/ s|v9.0|v11.0|' src/SamsungPass/Xamarin.SamsungPass/SamsungPass/SamsungPass.csproj
|
||||
sed -i 's|<ReleaseVersion>1.0</ReleaseVersion>|<ReleaseVersion>1.0</ReleaseVersion><AndroidClassParser>class-parse</AndroidClassParser>|' src/SamsungPass/Xamarin.SamsungPass/SamsungPass/SamsungPass.csproj
|
||||
|
||||
- name: Install NuGet dependencies
|
||||
run: make nuget
|
||||
- name: Install NuGet dependencies (net)
|
||||
run: make nuget Flavor=Net
|
||||
|
||||
- name: Build keepass2android (net)
|
||||
run: |
|
||||
@@ -192,6 +246,9 @@ jobs:
|
||||
path: |
|
||||
src/keepass2android/bin/*/*-Signed.apk
|
||||
|
||||
- name: Install NuGet dependencies (nonet)
|
||||
run: make nuget Flavor=NoNet
|
||||
|
||||
- name: Build keepass2android (nonet)
|
||||
run: |
|
||||
make msbuild Flavor=NoNet
|
||||
@@ -231,6 +288,24 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Cache Gradle packages
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: |
|
||||
~/.gradle/caches
|
||||
~/.gradle/wrapper
|
||||
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-gradle-
|
||||
|
||||
- name: Cache NuGet packages
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ~/.nuget/packages
|
||||
key: ${{ runner.os }}-nuget-${{ hashFiles('src/**/*.csproj', 'src/**/packages.config') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-nuget-
|
||||
|
||||
- name: Fetch submodules
|
||||
run: git submodule init && git submodule update
|
||||
|
||||
@@ -264,6 +339,9 @@ jobs:
|
||||
sed -i '/TargetFrameworkVersion/ s|v9.0|v11.0|' src/SamsungPass/Xamarin.SamsungPass/SamsungPass/SamsungPass.csproj
|
||||
sed -i 's|<ReleaseVersion>1.0</ReleaseVersion>|<ReleaseVersion>1.0</ReleaseVersion><AndroidClassParser>class-parse</AndroidClassParser>|' src/SamsungPass/Xamarin.SamsungPass/SamsungPass/SamsungPass.csproj
|
||||
|
||||
- name: Install NuGet dependencies (net)
|
||||
run: make nuget Flavor=Net
|
||||
|
||||
- name: Build keepass2android (net)
|
||||
run: |
|
||||
make msbuild Flavor=Net
|
||||
@@ -279,6 +357,9 @@ jobs:
|
||||
path: |
|
||||
src/keepass2android/bin/*/*-Signed.apk
|
||||
|
||||
- name: Install NuGet dependencies (nonet)
|
||||
run: make nuget Flavor=NoNet
|
||||
|
||||
- name: Build keepass2android (nonet)
|
||||
run: |
|
||||
make msbuild Flavor=NoNet
|
||||
@@ -296,3 +377,20 @@ jobs:
|
||||
|
||||
- name: Perform "make distclean"
|
||||
run: make distclean
|
||||
|
||||
# Stop gradle daemon so as to be able to save the Gradle cache
|
||||
# Otherwise, error is: tar.exe: Couldn't open C:/Users/runneradmin/.gradle/caches/transforms-2/transforms-2.lock: Permission denied
|
||||
- name: Stop gradle daemon
|
||||
shell: cmd
|
||||
run: |
|
||||
echo on
|
||||
call src\java\JavaFileStorageTest-AS\gradlew.bat --stop
|
||||
echo on
|
||||
call src\java\KP2ASoftkeyboard_AS\gradlew.bat --stop
|
||||
echo on
|
||||
call src\java\Keepass2AndroidPluginSDK2\gradlew.bat --stop
|
||||
echo on
|
||||
call src\java\KP2AKdbLibrary\gradlew.bat --stop
|
||||
echo on
|
||||
call src\java\PluginQR\gradlew.bat --stop
|
||||
echo on
|
||||
|
||||
4
.gitignore
vendored
4
.gitignore
vendored
@@ -7,7 +7,9 @@ PCtest
|
||||
bin
|
||||
obj
|
||||
|
||||
allow_git_clean
|
||||
# Makefile-related files
|
||||
/allow_git_clean
|
||||
/stamp.nuget_*
|
||||
|
||||
Resource.designer.cs
|
||||
R.java
|
||||
|
||||
92
Makefile
92
Makefile
@@ -25,7 +25,8 @@
|
||||
# - clean: all clean_* targets below
|
||||
# - clean_native: clean native lib
|
||||
# - clean_java: call clean target of java libs
|
||||
# - msbuild_clean: call clean target of java libs
|
||||
# - clean_nuget: cleanup the 'nuget restore'
|
||||
# - clean_msbuild: call clean target of msbuild
|
||||
#
|
||||
#
|
||||
#
|
||||
@@ -34,6 +35,7 @@ ifeq ($(OS),Windows_NT) # is Windows_NT on XP, 2000, 7, Vista, 10...
|
||||
detected_OS := Windows
|
||||
WHICH := where
|
||||
RM := RMDIR /S /Q
|
||||
RMFILE := DEL
|
||||
CP := copy
|
||||
GRADLEW := gradlew.bat
|
||||
# Force use of cmd shell (don't use POSIX shell because the user may not have one installed)
|
||||
@@ -42,6 +44,7 @@ else
|
||||
detected_OS := $(shell uname)
|
||||
WHICH := which
|
||||
RM := rm -rf
|
||||
RMFILE := $(RM)
|
||||
CP := cp
|
||||
GRADLEW := ./gradlew
|
||||
endif
|
||||
@@ -118,15 +121,27 @@ else
|
||||
endif
|
||||
|
||||
ifeq ($(detected_OS),Windows)
|
||||
define remove
|
||||
define to_win_path
|
||||
$(subst /,\,$(1))
|
||||
endef
|
||||
define remove_dir
|
||||
if exist $(1) ( $(RM) $(1) )
|
||||
endef
|
||||
define remove_files
|
||||
$(foreach file,$(call to_win_path,$(1)), IF EXIST $(file) ( $(RMFILE) $(file) ) & )
|
||||
endef
|
||||
else
|
||||
define remove
|
||||
define remove_dir
|
||||
$(RM) $(1)
|
||||
endef
|
||||
define remove_files
|
||||
$(RMFILE) $(1)
|
||||
endef
|
||||
endif
|
||||
|
||||
# Recursive wildcard: https://stackoverflow.com/a/18258352
|
||||
rwildcard=$(foreach d,$(wildcard $(1:=/*)),$(call rwildcard,$d,$2) $(filter $(subst *,%,$2),$d))
|
||||
|
||||
$(info MSBUILD_PARAM: $(MSBUILD_PARAM))
|
||||
$(info nuget path: $(shell $(WHICH) nuget))
|
||||
$(info )
|
||||
@@ -152,17 +167,37 @@ JAVA_CLEAN_TARGETS := \
|
||||
clean_KP2AKdbLibrary \
|
||||
clean_PluginQR
|
||||
|
||||
OUTPUT_JavaFileStorageTest-AS = src/java/JavaFileStorage/app/build/outputs/aar/JavaFileStorage-debug.aar src/java/android-filechooser-AS/app/build/outputs/aar/android-filechooser-release.aar
|
||||
OUTPUT_KP2ASoftkeyboard_AS =src/java/KP2ASoftkeyboard_AS/app/build/outputs/aar/app-debug.aar
|
||||
OUTPUT_Keepass2AndroidPluginSDK2 = src/java/Keepass2AndroidPluginSDK2/app/build/outputs/aar/app-release.aar
|
||||
OUTPUT_KP2AKdbLibrary = src/java/KP2AKdbLibrary/app/build/outputs/aar/app-debug.aar
|
||||
OUTPUT_PluginQR = src/java/Keepass2AndroidPluginSDK2/app/build/outputs/aar/Keepass2AndroidPluginSDK2-release.aar src/java/PluginQR/app/build/outputs/apk/debug/app-debug.apk
|
||||
INPUT_JavaFileStorageTest-AS = $(call rwildcard,src/java/android-filechooser-AS/app/src,*) $(call rwildcard,src/java/JavaFileStorage/app/src,*) $(call rwildcard,src/java/JavaFileStorageTest-AS/app/src,*.java)
|
||||
OUTPUT_JavaFileStorageTest-AS = src/java/android-filechooser-AS/app/build/outputs/aar/android-filechooser-debug.aar \
|
||||
src/java/android-filechooser-AS/app/build/outputs/aar/android-filechooser-release.aar \
|
||||
src/java/JavaFileStorage/app/build/outputs/aar/JavaFileStorage-debug.aar \
|
||||
src/java/JavaFileStorage/app/build/outputs/aar/JavaFileStorage-release.aar \
|
||||
src/java/JavaFileStorageTest-AS/app/build/outputs/apk/debug/app-debug.apk \
|
||||
src/java/JavaFileStorageTest-AS/app/build/outputs/apk/release/app-release-unsigned.apk
|
||||
|
||||
INPUT_KP2ASoftkeyboard_AS = $(call rwildcard,src/java/KP2ASoftkeyboard_AS/app/src,*)
|
||||
OUTPUT_KP2ASoftkeyboard_AS = src/java/KP2ASoftkeyboard_AS/app/build/outputs/aar/app-debug.aar \
|
||||
src/java/KP2ASoftkeyboard_AS/app/build/outputs/aar/app-release.aar
|
||||
|
||||
INPUT_Keepass2AndroidPluginSDK2 = $(call rwildcard,src/java/Keepass2AndroidPluginSDK2/app/src,*)
|
||||
OUTPUT_Keepass2AndroidPluginSDK2 = src/java/Keepass2AndroidPluginSDK2/app/build/outputs/aar/app-debug.aar \
|
||||
src/java/Keepass2AndroidPluginSDK2/app/build/outputs/aar/app-release.aar
|
||||
|
||||
INPUT_KP2AKdbLibrary = $(call rwildcard,src/java/KP2AKdbLibrary/app/src,*)
|
||||
OUTPUT_KP2AKdbLibrary = src/java/KP2AKdbLibrary/app/build/outputs/aar/app-debug.aar \
|
||||
src/java/KP2AKdbLibrary/app/build/outputs/aar/app-release.aar
|
||||
|
||||
INPUT_PluginQR = $(call rwildcard,src/java/PluginQR/app/src,*)
|
||||
OUTPUT_PluginQR = src/java/Keepass2AndroidPluginSDK2/app/build/outputs/aar/Keepass2AndroidPluginSDK2-debug.aar \
|
||||
src/java/Keepass2AndroidPluginSDK2/app/build/outputs/aar/Keepass2AndroidPluginSDK2-release.aar \
|
||||
src/java/PluginQR/app/build/outputs/apk/debug/app-debug.apk \
|
||||
src/java/PluginQR/app/build/outputs/apk/debug/app-release-unsigned.apk
|
||||
|
||||
##### Targets definition
|
||||
|
||||
.PHONY: native $(NATIVE_COMPONENTS) clean_native $(NATIVE_CLEAN_TARGETS) \
|
||||
.PHONY: native $(NATIVE_COMPONENTS) clean_native $(NATIVE_CLEAN_TARGETS) \
|
||||
java $(JAVA_COMPONENTS) clean_java $(JAVA_CLEAN_TARGETS) \
|
||||
nuget \
|
||||
nuget clean_nuget \
|
||||
msbuild clean_msbuild \
|
||||
apk all clean
|
||||
|
||||
@@ -173,7 +208,7 @@ all: apk
|
||||
native: $(NATIVE_COMPONENTS)
|
||||
|
||||
argon2: $(OUTPUT_argon2)
|
||||
$(OUTPUT_argon2):
|
||||
$(OUTPUT_argon2): $(wildcard src/java/argon2/phc-winner-argon2/src/*) $(wildcard src/java/argon2/phc-winner-argon2/src/blake2/*)
|
||||
cd src/java/argon2 && $(ANDROID_NDK_ROOT)/ndk-build
|
||||
|
||||
##### Java Dependencies
|
||||
@@ -186,25 +221,34 @@ Keepass2AndroidPluginSDK2: $(OUTPUT_Keepass2AndroidPluginSDK2)
|
||||
KP2AKdbLibrary: $(OUTPUT_KP2AKdbLibrary)
|
||||
PluginQR: $(OUTPUT_PluginQR)
|
||||
|
||||
$(OUTPUT_JavaFileStorageTest-AS):
|
||||
$(OUTPUT_JavaFileStorageTest-AS): $(INPUT_JavaFileStorageTest-AS)
|
||||
$(call remove_files,$(OUTPUT_JavaFileStorageTest-AS))
|
||||
cd src/java/JavaFileStorageTest-AS && $(GRADLEW) assemble
|
||||
$(OUTPUT_KP2ASoftkeyboard_AS):
|
||||
$(OUTPUT_KP2ASoftkeyboard_AS): $(INPUT_KP2ASoftkeyboard_AS)
|
||||
$(call remove_files,$(OUTPUT_KP2ASoftkeyboard_AS))
|
||||
cd src/java/KP2ASoftkeyboard_AS && $(GRADLEW) assemble
|
||||
$(OUTPUT_Keepass2AndroidPluginSDK2):
|
||||
$(OUTPUT_Keepass2AndroidPluginSDK2): $(INPUT_Keepass2AndroidPluginSDK2)
|
||||
$(call remove_files,$(OUTPUT_Keepass2AndroidPluginSDK2))
|
||||
cd src/java/Keepass2AndroidPluginSDK2 && $(GRADLEW) assemble
|
||||
$(OUTPUT_KP2AKdbLibrary):
|
||||
$(OUTPUT_KP2AKdbLibrary): $(INPUT_KP2AKdbLibrary)
|
||||
$(call remove_files,$(OUTPUT_KP2AKdbLibrary))
|
||||
cd src/java/KP2AKdbLibrary && $(GRADLEW) assemble
|
||||
$(OUTPUT_PluginQR):
|
||||
$(OUTPUT_PluginQR): $(INPUT_PluginQR)
|
||||
$(call remove_files,$(OUTPUT_PluginQR))
|
||||
cd src/java/PluginQR && $(GRADLEW) assemble
|
||||
|
||||
|
||||
##### Nuget Dependencies
|
||||
|
||||
nuget:
|
||||
nuget: stamp.nuget_$(Flavor)
|
||||
stamp.nuget_$(Flavor): src/KeePass.sln $(wildcard src/*/*.csproj) $(wildcard src/*/packages.config) src/.nuget/packages.config
|
||||
ifeq ($(shell $(WHICH) nuget),)
|
||||
$(error "nuget" command not found. Check it is in your PATH)
|
||||
endif
|
||||
$(RMFILE) stamp.nuget_*
|
||||
nuget restore src/KeePass.sln
|
||||
$(MSBUILD) src/KeePass.sln -t:restore $(MSBUILD_PARAM) -p:RestorePackagesConfig=true
|
||||
@echo "" > stamp.nuget_$(Flavor)
|
||||
|
||||
#####
|
||||
src/Kp2aBusinessLogic/Io/DropboxFileStorageKeys.cs:
|
||||
@@ -240,10 +284,22 @@ clean_KP2AKdbLibrary:
|
||||
clean_PluginQR:
|
||||
cd src/java/PluginQR && $(GRADLEW) clean
|
||||
|
||||
# https://learn.microsoft.com/en-us/nuget/consume-packages/package-restore-troubleshooting#other-potential-conditions
|
||||
clean_nuget:
|
||||
cd src && $(call remove_dir,packages)
|
||||
ifeq ($(detected_OS),Windows)
|
||||
DEL /S src\project.assets.json
|
||||
DEL /S src\*.nuget.*
|
||||
else
|
||||
$(RM) src/*/obj/project.assets.json
|
||||
$(RM) src/*/obj/*.nuget.*
|
||||
endif
|
||||
$(RMFILE) stamp.nuget_*
|
||||
|
||||
clean_msbuild:
|
||||
$(MSBUILD) src/KeePass.sln -target:clean $(MSBUILD_PARAM)
|
||||
|
||||
clean: clean_native clean_java clean_msbuild
|
||||
clean: clean_native clean_java clean_nuget clean_msbuild
|
||||
|
||||
distclean: clean
|
||||
ifneq ("$(wildcard ./allow_git_clean)","")
|
||||
|
||||
@@ -24,6 +24,7 @@ By using the command line, you can build on Windows, macOS or Linux.
|
||||
- Install Visual Studio (for example 2019) with Xamarin.Android (ie. with capability to build Android apps). This should provide the needed tools like
|
||||
- Xamarin.Android
|
||||
- MSBuild
|
||||
- Java JDK
|
||||
- If you plan to build also from the command line:
|
||||
- Install the MSVC build tools of visual studio. They provide the `vcvarsall.bat` file which among other things adds MSBuild to the PATH.
|
||||
- Install [NuGet](https://www.nuget.org/downloads) to build also with "make". Alternatively, on Windows, if you use [chocolatey](https://chocolatey.org), run as administrator:
|
||||
@@ -34,9 +35,12 @@ By using the command line, you can build on Windows, macOS or Linux.
|
||||
- On macOS, it is usually only installed if you have developer command line tools installed or if you use [homebrew](https://brew.sh) or [macports](https://www.macports.org/). As an alternative it may be available in the Android NDK at `%ANDROID_NDK_ROOT%/prebuilt/darwin-x86_64/bin/make`.
|
||||
|
||||
### On Linux
|
||||
- Install Java's JDK
|
||||
- On Debian, for example: `apt install default-jdk-headless`.
|
||||
|
||||
- Install [Mono](https://www.mono-project.com/)
|
||||
- This should provide `msbuild` & `xabuild` binary
|
||||
- On Debian, after having added the repo from above, install with `apt install -t <repo_name> mono-complete`. A value for `<repo_name>` could be `stable-buster` for example, depending on which one you chose.
|
||||
- On Debian, after having added the repo from above, install with `apt install -t <repo_name> mono-devel msbuild`. A value for `<repo_name>` could be `stable-buster` for example, depending on which one you chose. You could also install the `mono-complete` package if you prefer.
|
||||
|
||||
- Install Xamarin.Android
|
||||
- Option 1: Use the mono-project [CI builds](https://dev.azure.com/xamarin/public/_build/latest?definitionId=48&branchName=main&stageName=Linux)
|
||||
@@ -45,8 +49,9 @@ By using the command line, you can build on Windows, macOS or Linux.
|
||||
- Install NuGet package of your distribution
|
||||
- On Debian/Ubuntu: `apt install nuget`
|
||||
|
||||
- Install [libzip](https://libzip.org/) for your distribution.
|
||||
- Note: Xamarin seems to require `libzip4`.
|
||||
- Install [libzip](https://libzip.org/) for your distribution for some Xamarin.Android versions
|
||||
- This may not be relevant anymore: for example, with Xamarin.Android 11.4.99. this is not needed.
|
||||
- Some versions of Xamarin may require `libzip4`. If you are in this case:
|
||||
- On Debian/Ubuntu, install it with `apt install libzip4`.
|
||||
- Other distributions ship only `libzip5`. As a dirty workaround, it's possible to symlink `libzip.so.5` to `libzip.so.4`. Luckily, it appears to be working. For example:
|
||||
- `sudo ln -s /usr/lib/libzip.so.5 /usr/lib/libzip.so.4`
|
||||
@@ -54,7 +59,7 @@ By using the command line, you can build on Windows, macOS or Linux.
|
||||
|
||||
## Building the required components:
|
||||
|
||||
This is done on the command line and requires the Android SDK & NDK.
|
||||
This is done on the command line and requires the Android SDK & NDK and Java JDK.
|
||||
|
||||
### On Windows
|
||||
- Setup your environment:
|
||||
|
||||
Reference in New Issue
Block a user