File 0001-Build-shared-and-static-libraries.patch of Package tcc
diff --git a/Makefile b/Makefile index 13260d07..2a7175d4 100644 --- a/Makefile +++ b/Makefile @@ -16,7 +16,8 @@ ifeq (-$(GCC_MAJOR)-$(findstring $(GCC_MINOR),56789)-,-4--) CFLAGS += -D_FORTIFY_SOURCE=0 endif -LIBTCC = libtcc.a +LIBTCCA = libtcc.a +LIBTCCS = libtcc.so.1.0 LIBTCC1 = libtcc1.a LINK_LIBTCC = LIBS = @@ -47,32 +48,12 @@ else LIBS+=-lpthread endif # make libtcc as static or dynamic library? - ifeq ($(CONFIG_static),no) LIBTCC=libtcc$(DLLSUF) export LD_LIBRARY_PATH := $(CURDIR)/$(TOP) ifneq ($(CONFIG_rpath),no) - ifndef CONFIG_OSX - LINK_LIBTCC += -Wl,-rpath,"$(libdir)" - else - # macOS doesn't support env-vars libdir out of the box - which we need for - # `make test' when libtcc.dylib is used (configure --disable-static), so - # we bake a relative path into the binary. $libdir is used after install. - LINK_LIBTCC += -Wl,-rpath,"@executable_path/$(TOP)" -Wl,-rpath,"$(libdir)" - # -current/compatibility_version must not contain letters. - MACOS_DYLIB_VERSION := $(firstword $(subst rc, ,$(VERSION))) - DYLIBVER += -current_version $(MACOS_DYLIB_VERSION) - DYLIBVER += -compatibility_version $(MACOS_DYLIB_VERSION) - endif + LINK_LIBTCC += -Wl,-rpath,"$(libdir)" endif - endif NATIVE_TARGET = $(ARCH) - ifdef CONFIG_OSX - NATIVE_TARGET = $(ARCH)-osx - ifneq ($(CC_NAME),tcc) - LDFLAGS += -flat_namespace -undefined warning - endif - export MACOSX_DEPLOYMENT_TARGET := 10.6 - endif -LTCC = -ltcc endif @@ -154,7 +135,7 @@ ifeq ($(INCLUDED),no) # running top Makefile PROGS = tcc$(EXESUF) -TCCLIBS = $(LIBTCCDEF) $(LIBTCC) $(LIBTCC1) +TCCLIBS = $(LIBTCCDEF) $(LIBTCCA) $(LIBTCCS) $(LIBTCC1) TCCDOCS = tcc.1 tcc-doc.html tcc-doc.info all: $(PROGS) $(TCCLIBS) $(TCCDOCS) @@ -287,7 +268,7 @@ $(X)tcc.o : tcctools.c $(X)tcc.o : DEFINES += $(DEF_GITHASH) # Host Tiny C Compiler -tcc$(EXESUF): tcc.o $(LIBTCC) +tcc$(EXESUF): tcc.o $(LIBTCCS) $S$(CC) -o $@ $^ $(LIBS) $(LDFLAGS) $(LINK_LIBTCC) # Cross Tiny C Compilers @@ -308,23 +289,23 @@ tcc_p$(EXESUF): $($T_FILES) $S$(CC) -o $@ $< $(DEFINES) $(CFLAGS_P) $(LIBS_P) $(LDFLAGS_P) # static libtcc library -libtcc.a: $(LIBTCC_OBJ) +$(LIBTCCA): $(LIBTCC_OBJ) $S$(AR) rcs $@ $^ # dynamic libtcc library -libtcc.so: $(LIBTCC_OBJ) +$(LIBTCCS): $(LIBTCC_OBJ) $S$(CC) -shared -Wl,-soname,$@ -o $@ $^ $(LIBS) $(LDFLAGS) -libtcc.so: CFLAGS+=-fPIC -libtcc.so: LDFLAGS+=-fPIC +$(LIBTCCS): CFLAGS+=-fPIC +$(LIBTCCS): LDFLAGS+=-fPIC # OSX dynamic libtcc library libtcc.dylib: $(LIBTCC_OBJ) - $S$(CC) -dynamiclib $(DYLIBVER) -install_name @rpath/$@ -o $@ $^ $(LDFLAGS) + $S$(CC) -dynamiclib $(DYLIBVER) -install_name @rpath/$@ -o $@ $^ $(LDFLAGS) # OSX libtcc.dylib (without rpath/ prefix) libtcc.osx: $(LIBTCC_OBJ) - $S$(CC) -shared -install_name libtcc.dylib -o libtcc.dylib $^ $(LDFLAGS) + $S$(CC) -shared -install_name libtcc.dylib -o libtcc.dylib $^ $(LDFLAGS) # windows dynamic libtcc library libtcc.dll : $(LIBTCC_OBJ) @@ -395,7 +376,13 @@ install-unx: $(call IBw,$(PROGS) *-tcc,"$(bindir)") $(call IFw,$(LIBTCC1) $(EXTRA_O) $(LIBTCC1_U),"$(tccdir)") $(call IF,$(TOPSRC)/include/*.h $(TOPSRC)/tcclib.h,"$(tccdir)/include") - $(call $(if $(findstring .so,$(LIBTCC)),IBw,IFw),$(LIBTCC),"$(libdir)") + #$(call $(if $(findstring .so,$(LIBTCC)),IBw,IFw),$(LIBTCC),"$(libdir)") + $(call IBw,$(LIBTCCS),"$(libdir)") + ln -sf "$(ln_libdir)/$(LIBTCCS)" "$(libdir)/libtcc.so.1" + ln -sf "$(ln_libdir)/$(LIBTCCS)" "$(libdir)/libtcc.so" +ifneq ($(CONFIG_static),no) + $(call IFw,$(LIBTCCA),"$(libdir)") +endif $(call IF,$(TOPSRC)/libtcc.h,"$(includedir)") $(call IFw,tcc.1,"$(mandir)/man1") $(call IFw,tcc-doc.info,"$(infodir)") @@ -409,43 +396,12 @@ endif # uninstall uninstall-unx: @rm -fv $(addprefix "$(bindir)/",$(PROGS) $(PROGS_CROSS)) - @rm -fv $(addprefix "$(libdir)/", libtcc*.a libtcc*.so libtcc.dylib,$P) + @rm -fv $(addprefix "$(libdir)/", libtcc*.a libtcc*.so* libtcc.dylib,$P) @rm -fv $(addprefix "$(includedir)/", libtcc.h) @rm -fv "$(mandir)/man1/tcc.1" "$(infodir)/tcc-doc.info" @rm -fv "$(docdir)/tcc-doc.html" @rm -frv "$(tccdir)" -# install progs & libs on windows -install-win: - $(call BINCHECK) - $(call IBw,$(PROGS) *-tcc.exe libtcc.dll,"$(bindir)") - $(call IF,$(TOPSRC)/win32/lib/*.def,"$(tccdir)/lib") - $(call IFw,libtcc1.a $(EXTRA_O) $(LIBTCC1_W),"$(tccdir)/lib") - $(call IF,$(TOPSRC)/include/*.h $(TOPSRC)/tcclib.h,"$(tccdir)/include") - $(call IR,$(TOPSRC)/win32/include,"$(tccdir)/include") - $(call IR,$(TOPSRC)/win32/examples,"$(tccdir)/examples") - $(call IF,$(TOPSRC)/tests/libtcc_test.c,"$(tccdir)/examples") - $(call IFw,$(TOPSRC)/libtcc.h libtcc.def libtcc.a,"$(libdir)") - $(call IFw,$(TOPSRC)/win32/tcc-win32.txt tcc-doc.html,"$(docdir)") -ifneq "$(wildcard $(LIBTCC1_U))" "" - $(call IFw,$(LIBTCC1_U),"$(tccdir)/lib") - $(call IF,$(TOPSRC)/include/*.h $(TOPSRC)/tcclib.h,"$(tccdir)/lib/include") -endif - -# uninstall on windows -uninstall-win: - @rm -fv $(foreach P,libtcc*.dll $(PROGS) *-tcc.exe,"$(bindir)"/$P) - @rm -fr $(foreach P,doc examples include lib libtcc,"$(tccdir)"/$P/*) - @rm -frv $(foreach P,doc examples include lib libtcc,"$(tccdir)"/$P) - -# the msys-git shell works to configure && make except it does not have install -ifeq ($(OS),Windows_NT) -ifeq ($(shell $(call WHICH,install) || echo no),no) -INSTALL = cp -INSTALLBIN = cp -endif -endif - # -------------------------------------------------------------------------- # other stuff diff --git a/configure b/configure index e7735a4e..ef1f9671 100755 --- a/configure +++ b/configure @@ -537,6 +537,7 @@ prefix=$prefix bindir=\$(DESTDIR)$bindir tccdir=\$(DESTDIR)$tccdir libdir=\$(DESTDIR)$libdir +ln_libdir=$libdir includedir=\$(DESTDIR)$includedir mandir=\$(DESTDIR)$mandir infodir=\$(DESTDIR)$infodir