diff options
| author | grischka <grischka> | 2017-10-11 18:13:43 +0200 |
|---|---|---|
| committer | grischka <grischka> | 2017-10-11 18:13:43 +0200 |
| commit | da8c62f75d893449e232944fc62566c020b4d010 (patch) | |
| tree | 977fec8d53d90ceb8c718f07f47c2bc9cbd6edfc /Makefile | |
| parent | faa9744f5d13c94c7298bf08e8d1eedca5db88a9 (diff) | |
| download | tinycc-da8c62f75d893449e232944fc62566c020b4d010.tar.gz tinycc-da8c62f75d893449e232944fc62566c020b4d010.tar.bz2 | |
various stuff
win32/Makefile ("for cygwin") removed
- On cygwin, the normal ./configure && make can be used with either
cygwin's "GCC for Win32 Toolchain"
./configure --cross-prefix=i686-w64-mingw32-
or with an existing tcc:
./configure --cc=<old-tccdir>/tcc.exe
tcctest.c:
- exclude test_high_clobbers() on _WIN64 (does not work)
tests2/95_bitfield.c:
- use 'signed char' for ARM (where default 'char' is unsigned)
tests:
- remove -I "expr" diff option to allow tests with
busybox-diff.
libtcc.c, tcc.c:
- removed -iwithprefix option. It is supposed to be
combined with -iprefix which we don't have either.
tccgen.c:
- fix assignments and return of 'void', as in
void f() {
void *p, *q;
*p = *q:
return *p;
}
This appears to be allowed but should do nothing.
tcc.h, libtcc.c, tccpp.c:
- Revert "Introduce VIP sysinclude paths which are always searched first"
This reverts commit 1d5e386b0a78393ac6b670c209a185849ec798a1.
The patch was giving tcc's system includes priority over -I which
is not how it should be.
tccelf.c:
- add DT_TEXTREL tag only if text relocations are actually
used (which is likely not the case on x86_64)
- prepare_dynamic_rel(): avoid relocation of unresolved
(weak) symbols
tccrun.c:
- for HAVE_SELINUX, use two mappings to the same (real) file.
(it was so once except the RX mapping wasn't used at all).
tccpe.c:
- fix relocation constant used for x86_64 (by Andrei E. Warentin)
- #ifndef _WIN32 do "chmod 755 ..." to get runnable exes on cygwin.
tccasm.c:
- keep forward asm labels static, otherwise they will endup
in dynsym eventually.
configure, Makefile:
- mingw32: respect ./configure options --bindir --docdir --libdir
- allow overriding tcc when building libtcc1.a and libtcc.def with
make XTCC=<tcc program to use>
- use $(wildcard ...) for install to allow installing just
a cross compiler for example
make cross-arm
make install
- use name <target>-libtcc1.a
build-tcc.bat:
- add options: -clean, -b bindir
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 111 |
1 files changed, 53 insertions, 58 deletions
@@ -98,16 +98,17 @@ TCC_X = i386 x86_64 i386-win32 x86_64-win32 x86_64-osx arm arm64 arm-wince c67 LIBTCC1_X = i386 x86_64 i386-win32 x86_64-win32 x86_64-osx arm arm64 arm-wince PROGS_CROSS = $(foreach X,$(TCC_X),$X-tcc$(EXESUF)) -LIBTCC1_CROSS = $(foreach X,$(LIBTCC1_X),libtcc1-$X.a) +LIBTCC1_CROSS = $(foreach X,$(LIBTCC1_X),$X-libtcc1.a) # build cross compilers & libs cross: $(LIBTCC1_CROSS) $(PROGS_CROSS) # build specific cross compiler & lib -cross-%: %-tcc$(EXESUF) libtcc1-%.a ; +cross-%: %-tcc$(EXESUF) %-libtcc1.a ; -install: install$(CFGWIN) -uninstall: uninstall$(CFGWIN) +install: ; @$(MAKE) --no-print-directory install$(CFGWIN) +install-strip: ; @$(MAKE) --no-print-directory install$(CFGWIN) CONFIG_strip=yes +uninstall: ; @$(MAKE) --no-print-directory uninstall$(CFGWIN) ifdef CONFIG_cross all : cross @@ -143,10 +144,10 @@ DEFINES += $(DEF-$(or $(findstring win,$T),unx)) ifneq ($(X),) ifeq ($(CONFIG_WIN32),yes) -DEF-win += -DTCC_LIBTCC1="\"libtcc1-$T.a\"" -DEF-unx += -DTCC_LIBTCC1="\"lib/libtcc1-$T.a\"" +DEF-win += -DTCC_LIBTCC1="\"$(X)libtcc1.a\"" +DEF-unx += -DTCC_LIBTCC1="\"lib/$(X)libtcc1.a\"" else -DEF-all += -DTCC_LIBTCC1="\"libtcc1-$T.a\"" +DEF-all += -DTCC_LIBTCC1="\"$(X)libtcc1.a\"" DEF-win += -DCONFIG_TCCDIR="\"$(tccdir)/win32\"" endif endif @@ -217,21 +218,22 @@ libtcc.so: LDFLAGS+=-fPIC # windows dynamic libtcc library libtcc.dll : $(LIBTCC_OBJ) $(CC) -shared -o $@ $^ $(LDFLAGS) +libtcc.dll : DEFINES += -DLIBTCC_AS_DLL +# import file for windows libtcc.dll libtcc.def : libtcc.dll tcc$(EXESUF) - ./tcc$(EXESUF) -impdef $< -o $@ - -libtcc.dll : DEFINES += -DLIBTCC_AS_DLL + $(XTCC) -impdef $< -o $@ +XTCC ?= ./tcc$(EXESUF) # TinyCC runtime libraries libtcc1.a : tcc$(EXESUF) FORCE - @$(MAKE) -C lib DEFINES="$(DEF-$T)" + @$(MAKE) -C lib DEFINES='$(DEF-$T)' # Cross libtcc1.a -libtcc1-%.a : %-tcc$(EXESUF) FORCE - @$(MAKE) -C lib DEFINES="$(DEF-$*)" CROSS_TARGET=$* +%-libtcc1.a : %-tcc$(EXESUF) FORCE + @$(MAKE) -C lib DEFINES='$(DEF-$*)' CROSS_TARGET=$* -.PRECIOUS: libtcc1-%.a +.PRECIOUS: %-libtcc1.a FORCE: # -------------------------------------------------------------------------- @@ -252,35 +254,29 @@ tcc-doc.info: tcc-doc.texi INSTALL = install -m644 INSTALLBIN = install -m755 $(STRIP_$(CONFIG_strip)) STRIP_yes = -s -install-strip: install -install-strip: CONFIG_strip = yes -TRY-INSTALL = $(if $(wildcard $1),mkdir -p $2 && $(INSTALL) $1 $2) -LIBTCC1_W = $(wildcard $(filter %-win32.a %-wince.a,$(LIBTCC1_CROSS))) -LIBTCC1_U = $(wildcard $(filter-out $(LIBTCC1_W),$(LIBTCC1_CROSS))) -PROGS_X = $(wildcard $(PROGS_CROSS)) +LIBTCC1_W = $(filter %-win32-libtcc1.a %-wince-libtcc1.a,$(LIBTCC1_CROSS)) +LIBTCC1_U = $(filter-out $(LIBTCC1_W),$(LIBTCC1_CROSS)) +IB = $(if $1,mkdir -p $2 && $(INSTALLBIN) $1 $2) +IBw = $(call IB,$(wildcard $1),$2) +IF = $(if $1,mkdir -p $2 && $(INSTALL) $1 $2) +IFw = $(call IF,$(wildcard $1),$2) +IR = mkdir -p $2 && cp -r $1/. $2 # install progs & libs install-unx: - mkdir -p "$(bindir)" - $(INSTALLBIN) $(PROGS) $(PROGS_X) "$(bindir)" - mkdir -p "$(tccdir)" - $(INSTALL) $(LIBTCC1) $(LIBTCC1_U) "$(tccdir)" - mkdir -p "$(tccdir)/include" - $(INSTALL) $(TOPSRC)/include/*.h $(TOPSRC)/tcclib.h "$(tccdir)/include" - mkdir -p "$(libdir)" - $(INSTALL) $(LIBTCC) "$(libdir)" - mkdir -p "$(includedir)" - $(INSTALL) $(TOPSRC)/libtcc.h "$(includedir)" - $(call TRY-INSTALL,tcc.1,"$(mandir)/man1") - $(call TRY-INSTALL,tcc-doc.info,"$(infodir)") - $(call TRY-INSTALL,tcc-doc.html,"$(docdir)") -ifneq "$(LIBTCC1_W)" "" - mkdir -p "$(tccdir)/win32/lib" - $(INSTALL) $(TOPSRC)/win32/lib/*.def $(LIBTCC1_W) "$(tccdir)/win32/lib" - mkdir -p "$(tccdir)/win32/include" - cp -r $(TOPSRC)/win32/include/. "$(tccdir)/win32/include" - $(INSTALL) $(TOPSRC)/include/*.h $(TOPSRC)/tcclib.h "$(tccdir)/win32/include" + $(call IBw,$(PROGS) $(PROGS_CROSS),"$(bindir)") + $(call IFw,$(LIBTCC1) $(LIBTCC1_U),"$(tccdir)") + $(call IF,$(TOPSRC)/include/*.h $(TOPSRC)/tcclib.h,"$(tccdir)/include") + $(call $(if $(findstring .so,$(LIBTCC)),IBw,IFw),$(LIBTCC),"$(libdir)") + $(call IF,$(TOPSRC)/libtcc.h,"$(includedir)") + $(call IFw,tcc.1,"$(mandir)/man1") + $(call IFw,tcc-doc.info,"$(infodir)") + $(call IFw,tcc-doc.html,"$(docdir)") +ifneq "$(wildcard $(LIBTCC1_W))" "" + $(call IFw,$(TOPSRC)/win32/lib/*.def $(LIBTCC1_W),"$(tccdir)/win32/lib") + $(call IR,$(TOPSRC)/win32/include,"$(tccdir)/win32/include") + $(call IF,$(TOPSRC)/include/*.h $(TOPSRC)/tcclib.h,"$(tccdir)/win32/include") endif # uninstall @@ -293,32 +289,31 @@ uninstall-unx: # install progs & libs on windows install-win: - mkdir -p "$(tccdir)" - $(INSTALL) $(PROGS) $(subst libtcc.a,,$(LIBTCC)) $(PROGS_X) "$(tccdir)" - mkdir -p "$(tccdir)/lib" - $(INSTALL) $(TOPSRC)/win32/lib/*.def "$(tccdir)/lib" - $(INSTALL) libtcc1.a $(LIBTCC1_W) "$(tccdir)/lib" - mkdir -p "$(tccdir)/include" - cp -r $(TOPSRC)/win32/include/. "$(tccdir)/include" - $(INSTALL) $(TOPSRC)/include/*.h $(TOPSRC)/tcclib.h "$(tccdir)/include" - mkdir -p "$(tccdir)/examples" - cp -r $(TOPSRC)/win32/examples/. "$(tccdir)/examples" - $(INSTALL) $(TOPSRC)/tests/libtcc_test.c "$(tccdir)/examples" - mkdir -p "$(tccdir)/libtcc" - $(INSTALL) $(TOPSRC)/libtcc.h $(subst .dll,.def,$(LIBTCC)) "$(tccdir)/libtcc" - mkdir -p "$(tccdir)/doc" - $(INSTALL) $(TOPSRC)/win32/tcc-win32.txt $(wildcard tcc-doc.html) "$(tccdir)/doc" -ifneq "$(LIBTCC1_U)" "" - $(INSTALL) $(LIBTCC1_U) "$(tccdir)/lib" - mkdir -p "$(tccdir)/lib/include"; - $(INSTALL) $(TOPSRC)/include/*.h $(TOPSRC)/tcclib.h "$(tccdir)/lib/include" + $(call IBw,$(PROGS) $(PROGS_CROSS) $(subst libtcc.a,,$(LIBTCC)),"$(bindir)") + $(call IF,$(TOPSRC)/win32/lib/*.def,"$(tccdir)/lib") + $(call IFw,libtcc1.a $(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 $(subst .dll,.def,$(LIBTCC)),"$(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 # the msys-git shell works to configure && make except it does not have install +ifeq ($(CONFIG_WIN32)-$(shell which install >/dev/null 2>&1 || echo no),yes-no) install-win : INSTALL = cp +install-win : INSTALLBIN = cp +endif # uninstall on windows uninstall-win: + @rm -fv $(foreach P,$(PROGS) $(PROGS_CROSS) libtcc.dll,"$(bindir)/$P") + @rm -fv $(foreach F,tcc-doc.html tcc-win32.txt,"$(docdir)/$F") + @rm -fv $(foreach F,libtcc.h libtcc.def libtcc.a,"$(libdir)/$F") rm -r "$(tccdir)" # -------------------------------------------------------------------------- |
