give makefile a concept of cross compiling, use conditionals to determin what it is, and if it can
This commit is contained in:
parent
c8692cc1b2
commit
24b534d436
34
Makefile
34
Makefile
|
@ -7,8 +7,17 @@ DEFAULT_GOAL: linux
|
||||||
|
|
||||||
all: linux android windows
|
all: linux android windows
|
||||||
|
|
||||||
|
ARCH := $(shell uname -m)
|
||||||
|
ARM_X_CC := aarch64-linux-gnu-gcc
|
||||||
|
|
||||||
|
# determine if the x64 cross arm64 compiler is available so we can add that target
|
||||||
|
LINUX_X_ARM=
|
||||||
|
ifneq (,$(shell which $(ARM_X_CC)))
|
||||||
|
LINUX_X_ARM = libCwtch.x.so
|
||||||
|
endif
|
||||||
|
|
||||||
linux: EXPERIMENTS ?= serverExperiment
|
linux: EXPERIMENTS ?= serverExperiment
|
||||||
linux: libCwtch.x64.so libCwtch.arm64.so
|
linux: libCwtch.so $(LINUX_X_ARM)
|
||||||
|
|
||||||
macos: EXPERIMENTS ?= serverExperiment
|
macos: EXPERIMENTS ?= serverExperiment
|
||||||
macos: libCwtch.x64.dylib libCwtch.arm64.dylib
|
macos: libCwtch.x64.dylib libCwtch.arm64.dylib
|
||||||
|
@ -20,24 +29,29 @@ windows: EXPERIMENTS ?= serverExperiment
|
||||||
windows: libCwtch.dll
|
windows: libCwtch.dll
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
lib.go: generate/generate_bindings.go spec
|
lib.go: generate/generate_bindings.go spec
|
||||||
go run generate/generate_bindings.go --experiments "$(EXPERIMENTS)"
|
go run generate/generate_bindings.go --experiments "$(EXPERIMENTS)"
|
||||||
|
|
||||||
|
|
||||||
libCwtch.x64.so: lib.go
|
libCwtch.so: lib.go
|
||||||
./switch-ffi.sh
|
./switch-ffi.sh
|
||||||
go build -trimpath -ldflags "-buildid=autobindings-$(shell git describe --tags) -X main.buildVer=autobindings-$(shell git describe --tags) -X main.buildDate=$(shell git log -1 --format=%cd --date=format:%G-%m-%d-%H-%M)" -buildmode c-shared -o libCwtch.x64.so
|
go build -trimpath -ldflags "-buildid=autobindings-$(shell git describe --tags) -X main.buildVer=autobindings-$(shell git describe --tags) -X main.buildDate=$(shell git log -1 --format=%cd --date=format:%G-%m-%d-%H-%M)" -buildmode c-shared -o libCwtch.so
|
||||||
mkdir -p build/linux
|
mkdir -p build/linux
|
||||||
mv libCwtch.x64.so build/linux/
|
ifeq ($(ARCH),x86_64)
|
||||||
mv libCwtch.x64.h build/linux/libCwtch.h
|
mv libCwtch.so build/linux/libCwtch.x64.so
|
||||||
|
else ifeq ($(ARCH),aarch64)
|
||||||
|
mv libCwtch.so build/linux/libCwtch.arm64.so
|
||||||
|
endif
|
||||||
|
mv libCwtch.h build/linux/libCwtch.h
|
||||||
|
|
||||||
libCwtch.arm64.so:
|
libCwtch.x.so: lib.go
|
||||||
./switch-ffi.sh
|
./switch-ffi.sh
|
||||||
env CGO_ENABLED=1 CC=aarch64-linux-gnu-gcc GOARCH=arm64 go build -trimpath -ldflags "-buildid=autobindings-v0.0.3-22-g20065b2 -X main.buildVer=autobindings-v0.0.3-22-g20065b2 -X main.buildDate=2023-05-01-21-41" -buildmode c-shared -o libCwtch.arm64.so
|
|
||||||
mkdir -p build/linux
|
mkdir -p build/linux
|
||||||
mv libCwtch.arm64.so build/linux/
|
ifeq ($(ARCH),x86_64)
|
||||||
mv libCwtch.arm64.h build/linux/libCwtch.h
|
env CGO_ENABLED=1 CC=$(ARM_X_CC) GOARCH=arm64 go build -trimpath -ldflags "-buildid=autobindings-v0.0.3-22-g20065b2 -X main.buildVer=autobindings-v0.0.3-22-g20065b2 -X main.buildDate=2023-05-01-21-41" -buildmode c-shared -o libCwtch.x.so
|
||||||
|
mv libCwtch.x.so build/linux/libCwtch.arm64.so
|
||||||
|
mv libCwtch.x.h build/linux/libCwtch.h
|
||||||
|
endif
|
||||||
|
|
||||||
libCwtch.x64.dylib: lib.go
|
libCwtch.x64.dylib: lib.go
|
||||||
./switch-ffi.sh
|
./switch-ffi.sh
|
||||||
|
|
|
@ -59,6 +59,10 @@ Other directives:
|
||||||
- `LD_LIBRARY_PATH` set to point to `libCwtch.so`
|
- `LD_LIBRARY_PATH` set to point to `libCwtch.so`
|
||||||
- or drop a symlink into `/usr/lib`
|
- or drop a symlink into `/usr/lib`
|
||||||
|
|
||||||
|
### Cross compile arm 64
|
||||||
|
|
||||||
|
Needs `sudo apt install gcc-aarch64-linux-gnu`
|
||||||
|
|
||||||
## Android
|
## Android
|
||||||
|
|
||||||
- copy `cwtch.aar` into `flutter_app/android/cwtch`
|
- copy `cwtch.aar` into `flutter_app/android/cwtch`
|
||||||
|
|
Loading…
Reference in New Issue