diff Makefile @ 114:771b6c26008d

completely rewritten from scratch as Makefile
author Volker Grabsch <vog@notjusthosting.com>
date Sat, 08 Nov 2008 09:40:16 +0100
parents
children ff34f15ec142
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Makefile	Sat Nov 08 09:40:16 2008 +0100
@@ -0,0 +1,86 @@
+JOBS               := 4
+TARGET             := i386-mingw32msvc
+SOURCEFORGE_MIRROR := kent.dl.sourceforge.net
+
+VERSION := 2.0
+PREFIX  := $(PWD)/usr
+PKG_DIR := $(PWD)/pkg
+TMP_DIR  = $(PWD)/tmp-$(1)
+SED     := $(shell gsed --version >/dev/null 2>&1 && echo g)sed
+
+PKG_RULES := $(patsubst src/%.mk,%,$(wildcard src/*.mk))
+include src/*.mk
+
+ARCHIVE_CHECK = \
+    $(if $(filter %.tar.gz, $(1)),tar tfz '$(1)' >/dev/null 2>&1, \
+    $(if $(filter %.tar.bz2,$(1)),tar tfj '$(1)' >/dev/null 2>&1, \
+    $(if $(filter %.zip,    $(1)),unzip -t '$(1)' >/dev/null 2>&1, \
+    $(error Unknown archive format: $(1)))))
+
+ARCHIVE_UNPACK = \
+    $(if $(filter %.tar.gz, $(1)),tar xvzf '$(1)', \
+    $(if $(filter %.tar.bz2,$(1)),tar xvjf '$(1)', \
+    $(if $(filter %.zip,    $(1)),unzip '$(1)', \
+    $(error Unknown archive format: $(1)))))
+
+DOWNLOAD = \
+    $(if $(2),wget -t 3 -c '$(1)' || wget -c '$(2)',wget -c '$(1)')
+
+.PHONY: all
+all: $(PKG_RULES)
+
+.PHONY: clean
+clean:
+	rm -rf $(call TMP_DIR,*) $(PREFIX)/*
+
+define PKG_RULE
+.PHONY: $(1)
+$(1): $(PREFIX)/installed.$(1)
+$(PREFIX)/installed.$(1): $(addprefix $(PREFIX)/installed.,$($(1)_DEPS))
+	[ -z '$(PREFIX)' ] || mkdir -p '$(PREFIX)'
+	[ -z '$(PKG_DIR)' ] || mkdir -p '$(PKG_DIR)'
+	rm -rf   '$(2)'
+	mkdir -p '$(2)'
+	cd '$(PKG_DIR)' && ( \
+	    $(call ARCHIVE_CHECK,$($(1)_FILE)) || \
+	    $(call DOWNLOAD,$($(1)_URL),$($(1)_URL_2)) )
+	cd '$(2)' && \
+	    $(call ARCHIVE_UNPACK,$(PKG_DIR)/$($(1)_FILE))
+	$$(call $(1)_BUILD,$(1),$(2)/$($(1)_SUBDIR))
+	rm -rfv '$(2)'
+	touch '$$@'
+endef
+$(foreach PKG,$(PKG_RULES),$(eval $(call PKG_RULE,$(PKG),$(call TMP_DIR,$(PKG)))))
+
+define UPDATE
+        $(if $(2), \
+            $(SED) 's/^\([^ ]*_VERSION *:=\).*/\1 $(2)/' -i src/$(1).mk, \
+            $(error Unable to update version number: $(1)))
+
+endef
+.PHONY: update
+update:
+	$(foreach PKG,$(PKG_RULES),$(call UPDATE,$(PKG),$(shell $($(PKG)_UPDATE))))
+
+.PHONY: dist
+dist:
+	rm -rf 'mingw_cross_env-$(VERSION)'
+	mkdir  'mingw_cross_env-$(VERSION)'
+	mkdir  'mingw_cross_env-$(VERSION)/doc'
+	mkdir  'mingw_cross_env-$(VERSION)/src'
+	hg log -v --style changelog >'mingw_cross_env-$(VERSION)/doc/ChangeLog'
+	( \
+	    $(SED) -n '1,/^List/ { s/^\(MinGW cross.*\)/\1  ($(VERSION))/; p }' doc/README && \
+	    echo '================' && \
+	    echo && \
+	    ($(foreach PKG,$(PKG_RULES),echo '$(PKG)' '$($(PKG)_VERSION)';)) | \
+	        awk '{ printf "    %-12s  %s\n", $$1, $$2 }' && \
+	    echo && \
+	    echo && \
+	    $(SED) -n '/^Copyright/,$$ p' doc/README \
+	) >'mingw_cross_env-$(VERSION)/doc/README'
+	cp -p Makefile 'mingw_cross_env-$(VERSION)/'
+	cp -p src/*.mk 'mingw_cross_env-$(VERSION)/src/'
+	tar cvf - 'mingw_cross_env-$(VERSION)' | gzip -9 >'mingw_cross_env-$(VERSION).tar.gz'
+	rm -rf 'mingw_cross_env-$(VERSION)'
+