2021-10-19 10:21:09 +02:00

49 lines
1.3 KiB
Makefile

.PHONY: build-lib
BUILD_PATH=$(realpath .)/build
ifeq ($(OS),Windows_NT) # is Windows_NT on XP, 2000, 7, Vista, 10...
detected_OS := Windows
else
detected_OS := $(strip $(shell uname))
endif
ifeq ($(detected_OS),Darwin)
LIB_EXT := dylib
ifeq ("$(shell sysctl -nq hw.optional.arm64)","1")
# Building on M1 is still not supported, so in the meantime we crosscompile to amd64
CGOFLAGS=CGO_ENABLED=1 GOOS=darwin GOARCH=amd64
endif
else ifeq ($(detected_OS),Windows)
LIB_EXT:= dll
LIBKEYCARD_EXT := dll
else
LIB_EXT := so
endif
build-lib:
mkdir -p $(BUILD_PATH)/libkeycard
@echo "Building static library..."
cd shared && \
$(CGOFLAGS) go build -buildmode=c-shared -o $(BUILD_PATH)/libkeycard/libkeycard.$(LIB_EXT) .
@echo "Static library built:"
@ls -la $(BUILD_PATH)/libkeycard/*
build-example-shared: build-lib
mkdir -p $(BUILD_PATH)
@echo "Building example-c..."
cd examples/example-shared && \
go build -o $(BUILD_PATH)/example-shared
run-example-shared: build-example-shared
LD_LIBRARY_PATH=$(BUILD_PATH)/libkeycard $(BUILD_PATH)/example-shared
build-example-go:
mkdir -p $(BUILD_PATH)
@echo "Building example-c..."
cd examples/example-go && \
go build -o $(BUILD_PATH)/example-go
run-example-go: build-example-go
$(BUILD_PATH)/example-go