Files
zen/bindings/uniffi/Makefile
T
stefan-gorules adf7cdf44a chore: add uniffi tests (#520)
* chore: add uniffi tests

* fix permissions in pipelines

* fix tests
2026-08-24 12:45:09 +02:00

80 lines
2.5 KiB
Makefile

TARGET_DIR ?= $(shell cargo metadata --format-version=1 --no-deps 2>/dev/null | sed -n 's/.*"target_directory":"\([^"]*\)".*/\1/p')
UNAME_S := $(shell uname -s)
UNAME_M := $(shell uname -m)
ifeq ($(UNAME_S),Darwin)
LIB_NAME := libzen_uniffi.dylib
ifeq ($(UNAME_M),arm64)
PLATFORM_DIR := darwin-aarch64
else
PLATFORM_DIR := darwin-x86-64
endif
else
LIB_NAME := libzen_uniffi.so
ifeq ($(UNAME_M),aarch64)
PLATFORM_DIR := linux-aarch64
else
PLATFORM_DIR := linux-x86-64
endif
endif
DEV_DIR := $(shell xcode-select -p 2>/dev/null)
ifeq ($(DEV_DIR),/Library/Developer/CommandLineTools)
TESTING_FRAMEWORKS := $(DEV_DIR)/Library/Developer/Frameworks
SWIFT_TEST_FLAGS := -Xswiftc -F$(TESTING_FRAMEWORKS) \
-Xlinker -F$(TESTING_FRAMEWORKS) \
-Xlinker -rpath -Xlinker $(TESTING_FRAMEWORKS) \
-Xlinker -rpath -Xlinker $(DEV_DIR)/Library/Developer/usr/lib
endif
build:
cargo build --lib --release
@mkdir -p build/generated/resources/$(PLATFORM_DIR)
cp -f $(TARGET_DIR)/release/$(LIB_NAME) build/generated/resources/$(LIB_NAME)
cp -f $(TARGET_DIR)/release/$(LIB_NAME) build/generated/resources/$(PLATFORM_DIR)/$(LIB_NAME)
generate-java:
uniffi-bindgen-java generate \
--library build/generated/resources/$(LIB_NAME) \
--out-dir build/generated/java
generate-kotlin:
cargo run --bin uniffi-bindgen generate \
--library build/generated/resources/$(LIB_NAME) \
--language kotlin \
--out-dir build/generated/kotlin
generate-csharp:
uniffi-bindgen-cs \
--library build/generated/resources/$(LIB_NAME) \
--config uniffi.toml \
--out-dir build/generated/csharp
generate-swift:
cargo run --bin uniffi-bindgen generate \
--library build/generated/resources/$(LIB_NAME) \
--language swift \
--out-dir build/generated/swift
test-java:
./gradlew testJava
test-kotlin:
./gradlew testKotlin
test-csharp:
dotnet test tests/csharp
test-swift:
@mkdir -p tests/swift/Sources/ZenUniffi tests/swift/Sources/zen_uniffiFFI
cp -f build/generated/swift/zen_uniffi.swift tests/swift/Sources/ZenUniffi/
cp -f build/generated/swift/zen_uniffiFFI.h tests/swift/Sources/zen_uniffiFFI/
cp -f build/generated/swift/zen_uniffiFFI.modulemap tests/swift/Sources/zen_uniffiFFI/module.modulemap
cd tests/swift && swift test $(SWIFT_TEST_FLAGS) -Xlinker $(abspath $(TARGET_DIR))/release/libzen_uniffi.a
all: build generate-java generate-kotlin generate-csharp generate-swift
test: test-java test-kotlin test-csharp test-swift
.PHONY: all build generate-java generate-kotlin generate-csharp generate-swift test test-java test-kotlin test-csharp test-swift