aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile111
1 files changed, 53 insertions, 58 deletions
diff --git a/Makefile b/Makefile
index 3a5c000..8888149 100644
--- a/Makefile
+++ b/Makefile
@@ -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)"
# --------------------------------------------------------------------------