summaryrefslogtreecommitdiff
path: root/exports/common.mk
diff options
context:
space:
mode:
authorStevenWdV <stevenwdv@gmail.com>2022-02-04 01:18:12 +0100
committerStevenWdV <stevenwdv@gmail.com>2022-02-04 01:18:12 +0100
commitb60ecf2fe5ddfe506e02093286b3931873187e91 (patch)
treeb3804b1b95e70e96dec98cb0c2b571e0b895ebdd /exports/common.mk
parentbb85487e40b47d701e64085e7574cb477a431f1e (diff)
More Makefile cleanup, support building in folder with spaces
Diffstat (limited to 'exports/common.mk')
-rw-r--r--exports/common.mk44
1 files changed, 44 insertions, 0 deletions
diff --git a/exports/common.mk b/exports/common.mk
new file mode 100644
index 0000000..f2757c2
--- /dev/null
+++ b/exports/common.mk
@@ -0,0 +1,44 @@
+# Prevent executing `go env ...` multiple times for the same property
+# export is needed for this and also to pass the values on to the Go compiler
+ifndef GOOS
+export GOOS != go env GOHOSTOS
+endif
+ifndef GOARCH
+export GOARCH != go env GOHOSTARCH
+endif
+
+ifeq (windows,$(GOOS))
+LIB_PREFIX ?=
+LIB_SUFFIX ?= .dll
+else ifeq (darwin,$(GOOS))
+LIB_PREFIX ?= lib
+LIB_SUFFIX ?= .dylib
+else
+LIB_PREFIX ?= lib
+LIB_SUFFIX ?= .so
+endif
+
+# Library name without prefixes/suffixes
+LIB_NAME ?= eduvpn_common
+# Library file name
+LIB_FILE ?= $(LIB_PREFIX)$(LIB_NAME)$(LIB_SUFFIX)
+
+# Get exports/ directory when included from a wrapper
+EXPORTS_PATH = $(dir $(lastword $(MAKEFILE_LIST)))
+# Remove trailing slash
+EXPORTS_PATH := $(EXPORTS_PATH:/=)
+
+EXPORTS_LIB_PATH ?= $(EXPORTS_PATH)/lib
+EXPORTS_LIB_SUBFOLDER_PATH ?= $(EXPORTS_LIB_PATH)/$(GOOS)/$(GOARCH)
+
+# Add library to dynamic linker path for running tests
+ifeq (Windows_NT,$(OS))
+export PATH := $(abspath $(EXPORTS_LIB_SUBFOLDER_PATH)):$(PATH)
+else
+export LD_LIBRARY_PATH := $(abspath $(EXPORTS_LIB_SUBFOLDER_PATH)):$(LD_LIBRARY_PATH)
+endif
+
+.try_build_lib:
+ifneq ($(wildcard $(EXPORTS_PATH)/Makefile),)
+ $(MAKE) -C $(EXPORTS_PATH)
+endif