Merge tag 'v2.3.10' into testing
[cc0/argeo-build.git] / common.mk
index bc1bff95576d84bb30c74ea5b0009ac570348a7e..891f8f8d99347247cd9242a00138f1c060142298 100644 (file)
--- a/common.mk
+++ b/common.mk
@@ -6,8 +6,52 @@ ECJ_MAJOR=3
 BNDLIB_BRANCH=5.3
 SYSLOGGER_BRANCH=$(build-major).$(build-minor)
 
+# The following variables are found in the sdk.mk file which is generated by the configure script:
+# SDK_SRC_BASE      the base of the source code, typically the root of the cloned git repository
+# SDK_BUILD_BASE    the base of the output
+# JAVA_HOME         the base of the JDK used to build
+A2_OUTPUT = $(SDK_BUILD_BASE)/a2
+JVM ?= $(JAVA_HOME)/bin/java
+JAVADOC ?= $(JAVA_HOME)/bin/javadoc
+
 # GNU defaults
 prefix ?= /usr/local
 datarootdir ?= $(prefix)/share
+exec_prefix ?= $(prefix)
+libdir ?= $(exec_prefix)/lib
+
+A2_INSTALL_TARGET ?= $(DESTDIR)$(datarootdir)/a2
+A2_NATIVE_INSTALL_TARGET ?= $(DESTDIR)$(libdir)/a2
+
+# The following variables have default values which can be overriden
+# A2_BASE           the space-separated directories where already built a2 categories can be found
+A2_BASE ?=$(A2_OUTPUT) $(A2_INSTALL_TARGET) $(A2_NATIVE_INSTALL_TARGET) /usr/local/share/a2 /usr/local/lib/a2 /usr/share/a2 /usr/lib/a2
+
+# OS-speciific
+KNOWN_ARCHS ?= x86_64 aarch64
+TARGET_OS ?= linux
+TARGET_ARCH ?= $(shell uname -m)
+
+TARGET_OS_CATEGORY_PREFIX=lib/$(TARGET_OS)
+TARGET_ARCH_CATEGORY_PREFIX=$(TARGET_OS_CATEGORY_PREFIX)/$(TARGET_ARCH)
+PORTABLE_CATEGORIES=$(filter-out lib/%, $(CATEGORIES))
+ARCH_CATEGORIES=$(filter $(TARGET_ARCH_CATEGORY_PREFIX)/%, $(CATEGORIES))
+OS_CATEGORIES=$(filter-out $(foreach arch, $(KNOWN_ARCHS), $(TARGET_OS_CATEGORY_PREFIX)/$(arch)/%), $(filter $(TARGET_OS_CATEGORY_PREFIX)/%, $(CATEGORIES)))
+
+## Utilities
+# Install to a target directory without executable bit
+INSTALL=install -m644 -D --target-directory
+# Always try copy-on-write
+COPY=--reflink=auto
+# Recursively delete directories
+RMDIR=$(RM) -r
+
+# Make variables used to replace spaces by a separator, typically in order to generate classpaths
+# for example: CLASSPATH = $(subst $(space),$(pathsep),$(strip $(JARS)))
+null  :=
+space := $(null) #
+pathsep := :
+define LF
 
-A2_INSTALL_TARGET ?= $(DESTDIR)$(datarootdir)/a2
\ No newline at end of file
+$(null)
+endef