diff --git a/Makefile b/Makefile index 50cc9f3c..589a498a 100644 --- a/Makefile +++ b/Makefile @@ -121,15 +121,27 @@ else endif ifeq ($(detected_OS),Windows) + 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_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 ) @@ -155,16 +167,35 @@ 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 clean_nuget \ msbuild clean_msbuild \ @@ -177,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 @@ -190,15 +221,20 @@ 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