tinycc-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Tinycc-devel] [PATCH] build: add option for statically linked tcc


From: noneofyourbusiness
Subject: [Tinycc-devel] [PATCH] build: add option for statically linked tcc
Date: Sat, 10 Aug 2024 23:57:04 +0200

From: noneofyourbusiness <noneofyourbusiness@danwin1210.de>

simply using --extra-ldflags=-static regressed in 
da0d43903b2b31b935188847d6739306ab998e13

Signed-off-by: noneofyourbusiness <noneofyourbusiness@danwin1210.de>
---
 Makefile  | 4 ++++
 configure | 3 +++
 tccrun.c  | 5 +++++
 3 files changed, 12 insertions(+)

diff --git a/Makefile b/Makefile
index 13260d07..4a28a810 100644
--- a/Makefile
+++ b/Makefile
@@ -274,6 +274,10 @@ CFLAGS += -g
 LDFLAGS += -g
 endif
 
+ifeq ($(CONFIG_static-tcc),yes)
+CFLAGS += -DSTATIC_TCC
+endif
+
 # convert "include/tccdefs.h" to "tccdefs_.h"
 %_.h : include/%.h conftest.c
        $S$(CC) -DC2STR $(filter %.c,$^) -o c2str.exe && ./c2str.exe $< $@
diff --git a/configure b/configure
index e7735a4e..483bb0b1 100755
--- a/configure
+++ b/configure
@@ -123,6 +123,8 @@ for opt do
   ;;
   --enable-static) confvars="$confvars static"
   ;;
+  --enable-static-tcc) confvars="$confvars static-tcc"
+  ;;
   --disable-rpath) confvars="$confvars rpath=no"
   ;;
   --debug) confvars="$confvars debug"
@@ -174,6 +176,7 @@ Advanced options (experts only):
   --debug                  include debug info with resulting binaries
   --disable-static         make libtcc.so instead of libtcc.a
   --enable-static          make libtcc.a instead of libtcc.dll (win32)
+  --enable-static-tcc      create a statically linked tcc
   --disable-rpath          disable use of -rpath with libtcc.so
   --with-libgcc            use libgcc_s.so.1 instead of libtcc1.a
   --with-selinux           use mmap for executable memory (tcc -run)
diff --git a/tccrun.c b/tccrun.c
index b0cb4dba..593cb9db 100644
--- a/tccrun.c
+++ b/tccrun.c
@@ -213,6 +213,11 @@ LIBTCCAPI int tcc_run(TCCState *s1, int argc, char **argv)
     char **envp = environ;
 #endif
 
+#ifdef STATIC_TCC
+    /* dlopen() won't work */
+    s1->static_link = 1;
+#endif
+
     /* tcc -dt -run ... nothing to do if no main() */
     if ((s1->dflag & 16) && (addr_t)-1 == get_sym_addr(s1, "main", 0, 1))
         return 0;
-- 
2.46.0




reply via email to

[Prev in Thread] Current Thread [Next in Thread]