2025-09-11 14:30:08 +02:00
|
|
|
.PHONY: libsds deps
|
2025-05-29 16:48:53 +05:30
|
|
|
|
2025-06-17 09:59:46 +02:00
|
|
|
LINK_PCRE := 0
|
|
|
|
|
|
2025-05-29 16:48:53 +05:30
|
|
|
# default target, because it's the first one that doesn't start with '.'
|
|
|
|
|
all: | libsds
|
|
|
|
|
|
|
|
|
|
clean:
|
|
|
|
|
rm -rf build
|
|
|
|
|
|
2025-06-17 09:59:46 +02:00
|
|
|
## Git version
|
|
|
|
|
GIT_VERSION ?= $(shell git describe --abbrev=6 --always --tags)
|
|
|
|
|
## Compilation parameters. If defined in the CLI the assignments won't be executed
|
|
|
|
|
NIM_PARAMS := $(NIM_PARAMS) -d:git_version=\"$(GIT_VERSION)\"
|
|
|
|
|
|
|
|
|
|
ifeq ($(DEBUG), 0)
|
|
|
|
|
NIM_PARAMS := $(NIM_PARAMS) -d:release
|
|
|
|
|
else
|
|
|
|
|
NIM_PARAMS := $(NIM_PARAMS) -d:debug
|
|
|
|
|
endif
|
|
|
|
|
|
2025-05-29 16:48:53 +05:30
|
|
|
STATIC ?= 0
|
|
|
|
|
|
2025-09-11 14:30:08 +02:00
|
|
|
detected_OS ?= Linux
|
|
|
|
|
ifeq ($(OS),Windows_NT)
|
|
|
|
|
detected_OS := Windows
|
|
|
|
|
else
|
|
|
|
|
detected_OS := $(shell uname -s)
|
|
|
|
|
endif
|
|
|
|
|
|
2025-10-24 20:59:08 +02:00
|
|
|
BUILD_COMMAND ?= libsdsDynamic
|
2025-11-07 11:20:17 +01:00
|
|
|
ifeq ($(STATIC), 1)
|
|
|
|
|
BUILD_COMMAND = libsdsStatic
|
|
|
|
|
endif
|
2025-10-24 20:59:08 +02:00
|
|
|
|
|
|
|
|
ifeq ($(detected_OS),Windows)
|
2025-11-07 11:20:17 +01:00
|
|
|
BUILD_COMMAND := $(BUILD_COMMAND)Windows
|
2025-10-24 20:59:08 +02:00
|
|
|
else ifeq ($(detected_OS),Darwin)
|
2025-11-07 11:20:17 +01:00
|
|
|
BUILD_COMMAND := $(BUILD_COMMAND)Mac
|
2025-11-27 23:01:39 +01:00
|
|
|
export IOS_SDK_PATH := $(shell xcrun --sdk iphoneos --show-sdk-path)
|
2025-10-24 20:59:08 +02:00
|
|
|
else ifeq ($(detected_OS),Linux)
|
2025-11-07 11:20:17 +01:00
|
|
|
BUILD_COMMAND := $(BUILD_COMMAND)Linux
|
2025-08-24 23:56:14 +02:00
|
|
|
endif
|
|
|
|
|
|
2026-01-31 15:43:46 +01:00
|
|
|
libsds:
|
2026-01-31 16:07:05 +01:00
|
|
|
nimble $(BUILD_COMMAND) $(NIM_PARAMS) sds.nimble
|
2025-10-24 20:59:08 +02:00
|
|
|
|
2025-08-24 23:56:14 +02:00
|
|
|
#####################
|
|
|
|
|
## Mobile Bindings ##
|
|
|
|
|
#####################
|
|
|
|
|
.PHONY: libsds-android \
|
|
|
|
|
libsds-android-precheck \
|
|
|
|
|
libsds-android-arm64 \
|
|
|
|
|
libsds-android-amd64 \
|
|
|
|
|
libsds-android-x86 \
|
|
|
|
|
libsds-android-arm \
|
|
|
|
|
build-libsds-for-android-arch
|
|
|
|
|
|
|
|
|
|
ANDROID_TARGET ?= 30
|
|
|
|
|
ifeq ($(detected_OS),Darwin)
|
2025-11-28 19:34:51 +01:00
|
|
|
ANDROID_TOOLCHAIN_DIR := $(ANDROID_NDK_ROOT)/toolchains/llvm/prebuilt/darwin-x86_64
|
2025-08-24 23:56:14 +02:00
|
|
|
else
|
2025-11-28 19:34:51 +01:00
|
|
|
ANDROID_TOOLCHAIN_DIR := $(ANDROID_NDK_ROOT)/toolchains/llvm/prebuilt/linux-x86_64
|
2025-08-24 23:56:14 +02:00
|
|
|
endif
|
2025-10-15 11:17:02 +02:00
|
|
|
# Fixes "clang: not found" errors
|
|
|
|
|
PATH := $(ANDROID_TOOLCHAIN_DIR)/bin:$(PATH)
|
2025-08-24 23:56:14 +02:00
|
|
|
|
|
|
|
|
libsds-android-precheck:
|
2025-11-28 19:34:51 +01:00
|
|
|
ifndef ANDROID_NDK_ROOT
|
|
|
|
|
$(error ANDROID_NDK_ROOT is not set)
|
2025-08-24 23:56:14 +02:00
|
|
|
endif
|
|
|
|
|
|
2025-08-28 01:47:05 +02:00
|
|
|
build-libsds-for-android-arch: NIM_PARAMS := $(NIM_PARAMS) --passC="--sysroot=$(ANDROID_TOOLCHAIN_DIR)/sysroot"
|
|
|
|
|
build-libsds-for-android-arch: NIM_PARAMS := $(NIM_PARAMS) --passL="--sysroot=$(ANDROID_TOOLCHAIN_DIR)/sysroot"
|
|
|
|
|
build-libsds-for-android-arch: NIM_PARAMS := $(NIM_PARAMS) --passC="--target=$(ANDROID_ARCH)$(ANDROID_TARGET)"
|
|
|
|
|
build-libsds-for-android-arch: NIM_PARAMS := $(NIM_PARAMS) --passL="--target=$(ANDROID_ARCH)$(ANDROID_TARGET)"
|
|
|
|
|
build-libsds-for-android-arch: NIM_PARAMS := $(NIM_PARAMS) --passC="-I$(ANDROID_TOOLCHAIN_DIR)/sysroot/usr/include"
|
2025-08-28 00:55:20 +02:00
|
|
|
build-libsds-for-android-arch: NIM_PARAMS := $(NIM_PARAMS) --passC="-I$(ANDROID_TOOLCHAIN_DIR)/sysroot/usr/include/$(ARCH_DIRNAME)"
|
|
|
|
|
build-libsds-for-android-arch: NIM_PARAMS := $(NIM_PARAMS) --passL="-L$(ANDROID_TOOLCHAIN_DIR)/sysroot/usr/lib/$(ARCH_DIRNAME)/$(ANDROID_TARGET)"
|
2025-08-24 23:56:14 +02:00
|
|
|
build-libsds-for-android-arch:
|
2025-10-15 17:01:36 +02:00
|
|
|
CC=$(ANDROID_TOOLCHAIN_DIR)/bin/$(ANDROID_ARCH)$(ANDROID_TARGET)-clang \
|
2025-12-22 18:10:45 +00:00
|
|
|
ARCH=$(ARCH) ABIDIR=$(ABIDIR) \
|
2025-08-28 01:12:07 +02:00
|
|
|
ARCH_DIRNAME=$(ARCH_DIRNAME) \
|
|
|
|
|
ANDROID_ARCH=$(ANDROID_ARCH) \
|
2025-10-15 17:01:36 +02:00
|
|
|
ANDROID_TOOLCHAIN_DIR=$(ANDROID_TOOLCHAIN_DIR) \
|
|
|
|
|
$(ENV_SCRIPT) \
|
2026-01-31 16:07:05 +01:00
|
|
|
nimble libsdsAndroid $(NIM_PARAMS) sds.nimble
|
2025-08-24 23:56:14 +02:00
|
|
|
|
|
|
|
|
libsds-android-arm64: ANDROID_ARCH=aarch64-linux-android
|
2025-12-22 18:10:45 +00:00
|
|
|
libsds-android-arm64: ARCH=arm64
|
2025-08-24 23:56:14 +02:00
|
|
|
libsds-android-arm64: ABIDIR=arm64-v8a
|
2025-08-28 00:55:20 +02:00
|
|
|
libsds-android-arm64: ARCH_DIRNAME=aarch64-linux-android
|
2025-08-24 23:56:14 +02:00
|
|
|
libsds-android-arm64: | libsds-android-precheck build deps
|
2025-10-15 17:01:36 +02:00
|
|
|
$(MAKE) build-libsds-for-android-arch ANDROID_ARCH=$(ANDROID_ARCH) \
|
2025-12-22 18:10:45 +00:00
|
|
|
ARCH=$(ARCH) ABIDIR=$(ABIDIR) ARCH_DIRNAME=$(ARCH_DIRNAME)
|
2025-08-24 23:56:14 +02:00
|
|
|
|
|
|
|
|
libsds-android-amd64: ANDROID_ARCH=x86_64-linux-android
|
2025-12-22 18:10:45 +00:00
|
|
|
libsds-android-amd64: ARCH=amd64
|
2025-08-24 23:56:14 +02:00
|
|
|
libsds-android-amd64: ABIDIR=x86_64
|
2025-08-28 00:55:20 +02:00
|
|
|
libsds-android-amd64: ARCH_DIRNAME=x86_64-linux-android
|
2025-08-24 23:56:14 +02:00
|
|
|
libsds-android-amd64: | libsds-android-precheck build deps
|
2025-10-15 17:01:36 +02:00
|
|
|
$(MAKE) build-libsds-for-android-arch ANDROID_ARCH=$(ANDROID_ARCH) \
|
2025-12-22 18:10:45 +00:00
|
|
|
ARCH=$(ARCH) ABIDIR=$(ABIDIR) ARCH_DIRNAME=$(ARCH_DIRNAME)
|
2025-08-24 23:56:14 +02:00
|
|
|
|
|
|
|
|
libsds-android-x86: ANDROID_ARCH=i686-linux-android
|
2025-12-22 18:10:45 +00:00
|
|
|
libsds-android-x86: ARCH=i386
|
2025-08-24 23:56:14 +02:00
|
|
|
libsds-android-x86: ABIDIR=x86
|
2025-08-28 00:55:20 +02:00
|
|
|
libsds-android-x86: ARCH_DIRNAME=i686-linux-android
|
2025-08-24 23:56:14 +02:00
|
|
|
libsds-android-x86: | libsds-android-precheck build deps
|
2025-10-15 17:01:36 +02:00
|
|
|
$(MAKE) build-libsds-for-android-arch ANDROID_ARCH=$(ANDROID_ARCH) \
|
2025-12-22 18:10:45 +00:00
|
|
|
ARCH=$(ARCH) ABIDIR=$(ABIDIR) ARCH_DIRNAME=$(ARCH_DIRNAME)
|
2025-08-24 23:56:14 +02:00
|
|
|
|
|
|
|
|
libsds-android-arm: ANDROID_ARCH=armv7a-linux-androideabi
|
2025-12-22 18:10:45 +00:00
|
|
|
libsds-android-arm: ARCH=arm
|
2025-08-24 23:56:14 +02:00
|
|
|
libsds-android-arm: ABIDIR=armeabi-v7a
|
2025-08-28 00:55:20 +02:00
|
|
|
libsds-android-arm: ARCH_DIRNAME=arm-linux-androideabi
|
2025-08-24 23:56:14 +02:00
|
|
|
libsds-android-arm: | libsds-android-precheck build deps
|
|
|
|
|
# cross-rs target architecture name does not match the one used in android
|
2025-08-27 19:55:08 +02:00
|
|
|
$(MAKE) build-libsds-for-android-arch ANDROID_ARCH=$(ANDROID_ARCH) \
|
2025-12-22 18:10:45 +00:00
|
|
|
ARCH=$(ARCH) ABIDIR=$(ABIDIR) ARCH_DIRNAME=$(ARCH_DIRNAME) \
|
2025-10-15 17:01:36 +02:00
|
|
|
|
2025-08-24 23:56:14 +02:00
|
|
|
libsds-android:
|
2025-08-28 14:44:59 +02:00
|
|
|
ifeq ($(ARCH),arm64)
|
|
|
|
|
$(MAKE) libsds-android-arm64
|
|
|
|
|
else ifeq ($(ARCH),amd64)
|
2025-08-28 11:55:04 +02:00
|
|
|
$(MAKE) libsds-android-amd64
|
2025-08-28 14:44:59 +02:00
|
|
|
else ifeq ($(ARCH),x86)
|
|
|
|
|
$(MAKE) libsds-android-x86
|
|
|
|
|
# else ifeq ($(ARCH),arm)
|
|
|
|
|
# $(MAKE) libsds-android-arm
|
2025-08-24 23:56:14 +02:00
|
|
|
# This target is disabled because on recent versions of cross-rs complain with the following error
|
|
|
|
|
# relocation R_ARM_THM_ALU_PREL_11_0 cannot be used against symbol 'stack_init_trampoline_return'; recompile with -fPIC
|
|
|
|
|
# It's likely this architecture is not used so we might just not support it.
|
2025-08-28 14:44:59 +02:00
|
|
|
else
|
|
|
|
|
$(error Unsupported ARCH '$(ARCH)'. Please set ARCH to one of: arm64, arm, amd64, x86)
|
|
|
|
|
endif
|
2025-10-24 20:59:08 +02:00
|
|
|
|
2025-11-27 23:01:39 +01:00
|
|
|
# Target iOS
|
|
|
|
|
|
|
|
|
|
libsds-ios: | deps
|
2026-01-31 16:07:05 +01:00
|
|
|
$(ENV_SCRIPT) nimble libsdsIOS $(NIM_PARAMS) sds.nimble
|
2025-11-27 23:01:39 +01:00
|
|
|
|