Skip to content

Commit da70aa9

Browse files
committed
compile hostprogram as static
1 parent e032e25 commit da70aa9

4 files changed

Lines changed: 124 additions & 0 deletions

File tree

b.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,9 @@ export CC=clang
118118
export LLVM=1
119119
fi
120120

121+
export PKG_CONFIG_PATH=$PWD/../lib
122+
export FORCE_STATIC_HOST=1
123+
121124
if [ "x$(which ccache)" != "x" ]; then
122125
echo "Found ccache !"
123126
export CCACHE_SLOPPINESS="locale,time_macros,include_file_mtime,file_stat_matches"

lib/libelf.a

256 KB
Binary file not shown.

lib/libelf.pc

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
libdir=${pcfiledir}
2+
3+
Name: libelf
4+
Description: elfutils libelf library to read and write ELF files
5+
Version: 0.195
6+
URL: http://elfutils.org/
7+
8+
Libs: -L${libdir} -lelf
9+
10+
Requires.private: zlib libzstd

patch/cp/static_h.patch

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
diff --git a/Makefile b/Makefile
2+
index f520fc513..31a837f38 100644
3+
--- a/Makefile
4+
+++ b/Makefile
5+
@@ -468,6 +468,23 @@ KBUILD_USERHOSTCFLAGS := -Wall -Wmissing-prototypes -Wstrict-prototypes \
6+
KBUILD_USERCFLAGS := $(KBUILD_USERHOSTCFLAGS) $(USERCFLAGS)
7+
KBUILD_USERLDFLAGS := $(USERLDFLAGS)
8+
9+
+HAVE_PKGCONFIG := 1
10+
+ifeq ($(shell command -v $(HOSTPKG_CONFIG) 2> /dev/null),)
11+
+HAVE_PKGCONFIG := 0
12+
+endif
13+
+
14+
+STATIC_FLG :=
15+
+STATIC_FLG_F :=
16+
+ifeq ($(FORCE_STATIC_HOST), 1)
17+
+ifeq ($(HAVE_PKGCONFIG), 1)
18+
+STATIC_FLG := -static
19+
+STATIC_FLG_F := -$(STATIC_FLG)
20+
+$(info TRY TO BUILD HOST BIN AS STATIC)
21+
+else
22+
+$(warning TRY TO BUILD HOST BIN AS STATIC BUT NO PKGCONF, IGNORED)
23+
+endif
24+
+endif
25+
+
26+
# These flags apply to all Rust code in the tree, including the kernel and
27+
# host programs.
28+
export rust_common_flags := --edition=2021 \
29+
@@ -500,13 +517,13 @@ export rust_common_flags := --edition=2021 \
30+
-Wrustdoc::missing_crate_level_docs \
31+
-Wrustdoc::unescaped_backticks
32+
33+
-KBUILD_HOSTCFLAGS := $(KBUILD_USERHOSTCFLAGS) $(HOST_LFS_CFLAGS) \
34+
+KBUILD_HOSTCFLAGS := -Os $(KBUILD_USERHOSTCFLAGS) $(HOST_LFS_CFLAGS) \
35+
$(HOSTCFLAGS) -I $(srctree)/scripts/include
36+
-KBUILD_HOSTCXXFLAGS := -Wall -O2 $(HOST_LFS_CFLAGS) $(HOSTCXXFLAGS) \
37+
+KBUILD_HOSTCXXFLAGS := -Wall -Os $(HOST_LFS_CFLAGS) $(HOSTCXXFLAGS) \
38+
-I $(srctree)/scripts/include
39+
KBUILD_HOSTRUSTFLAGS := $(rust_common_flags) -O -Cstrip=debuginfo \
40+
-Zallow-features= $(HOSTRUSTFLAGS)
41+
-KBUILD_HOSTLDFLAGS := $(HOST_LFS_LDFLAGS) $(HOSTLDFLAGS)
42+
+KBUILD_HOSTLDFLAGS := $(HOST_LFS_LDFLAGS) $(STATIC_FLG) $(HOSTLDFLAGS)
43+
KBUILD_HOSTLDLIBS := $(HOST_LFS_LIBS) $(HOSTLDLIBS)
44+
KBUILD_PROCMACROLDFLAGS := $(or $(PROCMACROLDFLAGS),$(KBUILD_HOSTLDFLAGS))
45+
46+
@@ -629,7 +646,7 @@ export RUSTC_BOOTSTRAP := 1
47+
# Allows finding `.clippy.toml` in out-of-srctree builds.
48+
export CLIPPY_CONF_DIR := $(srctree)
49+
50+
-export ARCH SRCARCH CONFIG_SHELL BASH HOSTCC KBUILD_HOSTCFLAGS CROSS_COMPILE LD CC HOSTPKG_CONFIG
51+
+export ARCH SRCARCH CONFIG_SHELL BASH HOSTCC KBUILD_HOSTCFLAGS CROSS_COMPILE LD CC HOSTPKG_CONFIG STATIC_FLG STATIC_FLG_F
52+
export RUSTC RUSTDOC RUSTFMT RUSTC_OR_CLIPPY_QUIET RUSTC_OR_CLIPPY BINDGEN
53+
export HOSTRUSTC KBUILD_HOSTRUSTFLAGS
54+
export CPP AR NM STRIP OBJCOPY OBJDUMP READELF PAHOLE RESOLVE_BTFIDS LEX YACC AWK INSTALLKERNEL
55+
diff --git a/certs/Makefile b/certs/Makefile
56+
index f6fa4d8d7..ef19f1d6f 100644
57+
--- a/certs/Makefile
58+
+++ b/certs/Makefile
59+
@@ -84,5 +84,5 @@ targets += x509_revocation_list
60+
61+
hostprogs := extract-cert
62+
63+
-HOSTCFLAGS_extract-cert.o = $(shell $(HOSTPKG_CONFIG) --cflags libcrypto 2> /dev/null) -I$(srctree)/scripts
64+
-HOSTLDLIBS_extract-cert = $(shell $(HOSTPKG_CONFIG) --libs libcrypto 2> /dev/null || echo -lcrypto)
65+
+HOSTCFLAGS_extract-cert.o = $(shell $(HOSTPKG_CONFIG) $(STATIC_FLG_F) --cflags libcrypto 2> /dev/null) -I$(srctree)/scripts
66+
+HOSTLDLIBS_extract-cert = $(shell $(HOSTPKG_CONFIG) $(STATIC_FLG_F) --libs libcrypto 2> /dev/null || echo -lcrypto)
67+
diff --git a/scripts/Makefile b/scripts/Makefile
68+
index 46f860529..ab9f2bed2 100644
69+
--- a/scripts/Makefile
70+
+++ b/scripts/Makefile
71+
@@ -28,8 +28,8 @@ rustdoc_test_gen-rust := y
72+
HOSTCFLAGS_sorttable.o = -I$(srctree)/tools/include
73+
HOSTLDLIBS_sorttable = -lpthread
74+
HOSTCFLAGS_asn1_compiler.o = -I$(srctree)/include
75+
-HOSTCFLAGS_sign-file.o = $(shell $(HOSTPKG_CONFIG) --cflags libcrypto 2> /dev/null)
76+
-HOSTLDLIBS_sign-file = $(shell $(HOSTPKG_CONFIG) --libs libcrypto 2> /dev/null || echo -lcrypto)
77+
+HOSTCFLAGS_sign-file.o = $(shell $(HOSTPKG_CONFIG) $(STATIC_FLG_F) --cflags libcrypto 2> /dev/null)
78+
+HOSTLDLIBS_sign-file = $(shell $(HOSTPKG_CONFIG) $(STATIC_FLG_F) --libs libcrypto 2> /dev/null || echo -lcrypto)
79+
80+
ifdef CONFIG_UNWINDER_ORC
81+
ifeq ($(ARCH),x86_64)
82+
diff --git a/tools/bpf/resolve_btfids/Makefile b/tools/bpf/resolve_btfids/Makefile
83+
index ce1b556df..05dc65d7d 100644
84+
--- a/tools/bpf/resolve_btfids/Makefile
85+
+++ b/tools/bpf/resolve_btfids/Makefile
86+
@@ -62,8 +62,8 @@ $(BPFOBJ): $(wildcard $(LIBBPF_SRC)/*.[ch] $(LIBBPF_SRC)/Makefile) | $(LIBBPF_OU
87+
DESTDIR=$(LIBBPF_DESTDIR) $(HOST_OVERRIDES) prefix= subdir= \
88+
$(abspath $@) install_headers
89+
90+
-LIBELF_FLAGS := $(shell $(HOSTPKG_CONFIG) libelf --cflags 2>/dev/null)
91+
-LIBELF_LIBS := $(shell $(HOSTPKG_CONFIG) libelf --libs 2>/dev/null || echo -lelf)
92+
+LIBELF_FLAGS := $(shell $(HOSTPKG_CONFIG) libelf $(STATIC_FLG_F) --cflags 2>/dev/null)
93+
+LIBELF_LIBS := $(shell $(HOSTPKG_CONFIG) libelf $(STATIC_FLG_F) --libs 2>/dev/null || echo -lelf)
94+
95+
HOSTCFLAGS_resolve_btfids += -g \
96+
-I$(srctree)/tools/include \
97+
diff --git a/tools/objtool/Makefile b/tools/objtool/Makefile
98+
index b436656cd..e89143b8e 100644
99+
--- a/tools/objtool/Makefile
100+
+++ b/tools/objtool/Makefile
101+
@@ -20,8 +20,8 @@ LIBSUBCMD = $(LIBSUBCMD_OUTPUT)/libsubcmd.a
102+
OBJTOOL := $(OUTPUT)objtool
103+
OBJTOOL_IN := $(OBJTOOL)-in.o
104+
105+
-LIBELF_FLAGS := $(shell $(HOSTPKG_CONFIG) libelf --cflags 2>/dev/null)
106+
-LIBELF_LIBS := $(shell $(HOSTPKG_CONFIG) libelf --libs 2>/dev/null || echo -lelf)
107+
+LIBELF_FLAGS := $(shell $(HOSTPKG_CONFIG) libelf $(STATIC_FLG_F) --cflags 2>/dev/null)
108+
+LIBELF_LIBS := $(shell $(HOSTPKG_CONFIG) libelf $(STATIC_FLG_F) --libs 2>/dev/null || echo -lelf)
109+
110+
all: $(OBJTOOL)
111+

0 commit comments

Comments
 (0)