Răsfoiți Sursa

makefile: update make for smartdns-ui plugin

Nick Peng 6 luni în urmă
părinte
comite
361dc7e34a
2 a modificat fișierele cu 42 adăugiri și 11 ștergeri
  1. 8 0
      package/openwrt/files/etc/init.d/smartdns
  2. 34 11
      plugin/smartdns-ui/Makefile

+ 8 - 0
package/openwrt/files/etc/init.d/smartdns

@@ -856,6 +856,14 @@ load_service()
 
 	config_foreach load_IP_rule_list "ip-rule-list"
 
+	config_get_bool ui "$section" "ui" '0'
+
+	[ "$ui" = "1" ] && {
+		conf_append "plugin" "/usr/lib/libsmartdns_ui.so"
+		conf_append "smartdns-ui.www-root" "/usr/share/smartdns/wwwroot"
+		conf_append "data-dir" "/etc/smartdns/data"
+	}
+
 	{
 		echo "conf-file $ADDRESS_CONF"
 		echo "conf-file $BLACKLIST_IP_CONF"

+ 34 - 11
plugin/smartdns-ui/Makefile

@@ -19,20 +19,43 @@ PREFIX := /usr
 SBINDIR := $(PREFIX)/sbin
 SLIBDIR := $(PREFIX)/lib
 DESTDIR :=
+CARGO_BUILD_ENV :=
 SMARTDNS_SRC_DIR=../../src
-
+ 
 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
 
-  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
 
@@ -64,7 +87,7 @@ test-prepare:
 	$(MAKE) -C $(SMARTDNS_SRC_DIR) libsmartdns-test.a
 
 $(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/ 
 
 install: $(BIN)