|
@@ -19,20 +19,43 @@ PREFIX := /usr
|
|
SBINDIR := $(PREFIX)/sbin
|
|
SBINDIR := $(PREFIX)/sbin
|
|
SLIBDIR := $(PREFIX)/lib
|
|
SLIBDIR := $(PREFIX)/lib
|
|
DESTDIR :=
|
|
DESTDIR :=
|
|
|
|
+CARGO_BUILD_ENV :=
|
|
SMARTDNS_SRC_DIR=../../src
|
|
SMARTDNS_SRC_DIR=../../src
|
|
-
|
|
|
|
|
|
+
|
|
ifeq ($(origin CC), environment)
|
|
ifeq ($(origin CC), environment)
|
|
- ARCH_TARGET:=$(shell $(CC) -dumpmachine | sed 's/-[^-]*-linux-/-linux-/')
|
|
|
|
- ARCH=$(shell echo $(ARCH_TARGET) | cut -d - -f 1)
|
|
|
|
- ABI=$(shell echo $(ARCH_TARGET) | cut -d - -f 3)
|
|
|
|
- ifneq ($(ABI),)
|
|
|
|
- RUST_ARCH_TARGET:=$(shell rustc --print target-list | grep $(ARCH) | grep linux | grep $(ABI) | head -n 1)
|
|
|
|
|
|
+ ifeq ($(CARGO_BUILD_ARGS),)
|
|
|
|
+ # find default target by compiler
|
|
|
|
+ ARCH_TARGET:=$(shell $(CC) -dumpmachine)
|
|
|
|
+ RUST_ARCH_TARGET:=$(shell rustc --print target-list | grep $(ARCH_TARGET) | head -n 1)
|
|
|
|
+
|
|
|
|
+ ifeq ($(RUST_ARCH_TARGET),)
|
|
|
|
+ # not found, try to find target by compiler
|
|
|
|
+ ARCH_TARGET:=$(shell $(CC) -dumpmachine | sed 's/-[^-]*-linux-/-linux-/')
|
|
|
|
+ ARCH=$(shell echo $(ARCH_TARGET) | cut -d - -f 1)
|
|
|
|
+ ABI=$(shell echo $(ARCH_TARGET) | cut -d - -f 3)
|
|
|
|
+ ifneq ($(ABI),)
|
|
|
|
+ # force set target to $(ARCH)-unknown-linux-$(ABI)
|
|
|
|
+ RUST_ARCH_TARGET:=$(shell rustc --print target-list | grep $(ARCH) | grep linux | grep $(ABI) | grep unknown | head -n 1)
|
|
|
|
+ endif
|
|
|
|
+ endif
|
|
|
|
+
|
|
|
|
+ ifneq ($(RUST_ARCH_TARGET),)
|
|
|
|
+ ARCH_TARGET_PATH=$(RUST_ARCH_TARGET)/
|
|
|
|
+ override CARGO_RUSTFLAGS=-C linker=$(CC)
|
|
|
|
+ CARGO_BUILD_ARGS +=--target=$(RUST_ARCH_TARGET)
|
|
|
|
+ endif
|
|
endif
|
|
endif
|
|
|
|
|
|
- ifneq ($(RUST_ARCH_TARGET),)
|
|
|
|
- ARCH_TARGET_PATH=$(RUST_ARCH_TARGET)/
|
|
|
|
- override CARGO_RUSTFLAGS=-C linker=$(CC)
|
|
|
|
- CARGO_BUILD_ARGS +=--target=$(RUST_ARCH_TARGET)
|
|
|
|
|
|
+ # find sysroot
|
|
|
|
+ SYSROOT:=$(shell $(CC) -print-sysroot)
|
|
|
|
+ ifeq ($(SYSROOT),)
|
|
|
|
+ # if sysroot is not set, try find sysroot from compiler default include path
|
|
|
|
+ SYSROOT:=$(shell $(CC) -xc /dev/null -E -Wp,-v 2>&1 | sed -n 's,^ ,,p' | head -n 1)
|
|
|
|
+ ifneq ($(SYSROOT),)
|
|
|
|
+ # find sysroot, add sysroot to BINDGEN_EXTRA_CLANG_ARGS
|
|
|
|
+ SYSROOT:=$(SYSROOT)/..
|
|
|
|
+ override CARGO_BUILD_ENV += BINDGEN_EXTRA_CLANG_ARGS="--sysroot=$(SYSROOT)"
|
|
|
|
+ endif
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
|
|
@@ -64,7 +87,7 @@ test-prepare:
|
|
$(MAKE) -C $(SMARTDNS_SRC_DIR) libsmartdns-test.a
|
|
$(MAKE) -C $(SMARTDNS_SRC_DIR) libsmartdns-test.a
|
|
|
|
|
|
$(BIN):
|
|
$(BIN):
|
|
- MAKEFLAGS= RUSTFLAGS="$(CARGO_RUSTFLAGS) $(RUSTFLAGS)" cargo build $(CARGO_BUILD_ARGS) --features "build-release"
|
|
|
|
|
|
+ MAKEFLAGS= RUSTFLAGS="$(CARGO_RUSTFLAGS) $(RUSTFLAGS)" $(CARGO_BUILD_ENV) cargo build $(CARGO_BUILD_ARGS) --features "build-release"
|
|
cp $(CARGO_BUILD_PATH)/libsmartdns_ui.so target/
|
|
cp $(CARGO_BUILD_PATH)/libsmartdns_ui.so target/
|
|
|
|
|
|
install: $(BIN)
|
|
install: $(BIN)
|