summaryrefslogtreecommitdiffstats
path: root/Makefile
diff options
context:
space:
mode:
authorVolker Grabsch <vog@notjusthosting.com>2012-04-12 15:23:12 (GMT)
committerVolker Grabsch <vog@notjusthosting.com>2012-04-12 15:23:12 (GMT)
commit1f86817ee82b162a1a5bd495886183ca81a68ba7 (patch)
tree3116df65f83174295af8c6315a36583f460fe9e0 /Makefile
parent0f01e5e88f720fe5073c88f5cf1803d5c283904d (diff)
parente513258770cdc39c0d6a904437f191aa61b3175c (diff)
downloadmxe-2.22.zip
mxe-2.22.tar.gz
mxe-2.22.tar.bz2
Merge all well-tested changes into the stable branchv2.22
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile151
1 files changed, 62 insertions, 89 deletions
diff --git a/Makefile b/Makefile
index 795115b..06767f0 100644
--- a/Makefile
+++ b/Makefile
@@ -1,34 +1,36 @@
-# This file is part of mingw-cross-env.
-# See doc/index.html for further information.
+# This file is part of MXE.
+# See index.html for further information.
JOBS := 1
TARGET := i686-pc-mingw32
SOURCEFORGE_MIRROR := kent.dl.sourceforge.net
PWD := $(shell pwd)
-PREFIX := $(PWD)/usr
-LOG_DIR := $(PWD)/log
-TIMESTAMP := $(shell date +%Y%m%d_%H%M%S)
-PKG_DIR := $(PWD)/pkg
-DIST_DIR := $(PWD)/dist
-TMP_DIR = $(PWD)/tmp-$(1)
-MAKEFILE := $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
-TOP_DIR := $(patsubst %/,%,$(dir $(MAKEFILE)))
-PATH := $(PREFIX)/bin:$(PATH)
SHELL := bash
+
INSTALL := $(shell ginstall --help >/dev/null 2>&1 && echo g)install
LIBTOOL := $(shell glibtool --help >/dev/null 2>&1 && echo g)libtool
LIBTOOLIZE := $(shell glibtoolize --help >/dev/null 2>&1 && echo g)libtoolize
PATCH := $(shell gpatch --help >/dev/null 2>&1 && echo g)patch
SED := $(shell gsed --help >/dev/null 2>&1 && echo g)sed
-VERSION := $(shell $(SED) -n 's,^.*<span id="latest-version">\([^<]*\)</span>.*$$,\1,p' '$(TOP_DIR)/doc/index.html')
REQUIREMENTS := autoconf automake bash bison bzip2 cmake flex \
gcc intltoolize $(LIBTOOL) $(LIBTOOLIZE) \
$(MAKE) openssl $(PATCH) $(PERL) pkg-config \
scons $(SED) unzip wget xz yasm
-CMAKE_TOOLCHAIN_FILE := $(PREFIX)/$(TARGET)/share/cmake/mingw-cross-env-conf.cmake
+PREFIX := $(PWD)/usr
+LOG_DIR := $(PWD)/log
+TIMESTAMP := $(shell date +%Y%m%d_%H%M%S)
+PKG_DIR := $(PWD)/pkg
+DIST_DIR := $(PWD)/dist
+TMP_DIR = $(PWD)/tmp-$(1)
+MAKEFILE := $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
+TOP_DIR := $(patsubst %/,%,$(dir $(MAKEFILE)))
+PKGS := $(shell $(SED) -n 's/^.* id="\([^"]*\)-package".*$$/\1/p' '$(TOP_DIR)/index.html')
+PATH := $(PREFIX)/bin:$(PATH)
+
+CMAKE_TOOLCHAIN_FILE := $(PREFIX)/$(TARGET)/share/cmake/mxe-conf.cmake
# unexport any environment variables that might cause trouble
unexport AR CC CFLAGS C_INCLUDE_PATH CPATH CPLUS_INCLUDE_PATH CPP
@@ -39,9 +41,6 @@ unexport OBJC_INCLUDE_PATH PKG_CONFIG QMAKESPEC RANLIB STRIP
SHORT_PKG_VERSION = \
$(word 1,$(subst ., ,$($(1)_VERSION))).$(word 2,$(subst ., ,$($(1)_VERSION)))
-PKGS := $(sort $(patsubst $(TOP_DIR)/src/%.mk,%,$(wildcard $(TOP_DIR)/src/*.mk)))
-include $(TOP_DIR)/src/*.mk
-
UNPACK_ARCHIVE = \
$(if $(filter %.tgz, $(1)),tar xzf '$(1)', \
$(if $(filter %.tar.gz, $(1)),tar xzf '$(1)', \
@@ -79,7 +78,19 @@ define CHECK_REQUIREMENT
echo; \
echo 'Missing requirement: $(1)'; \
echo; \
- echo 'Please have a look at "doc/index.html" to ensure'; \
+ echo 'Please have a look at "index.html" to ensure'; \
+ echo 'that your system meets all requirements.'; \
+ echo; \
+ exit 1; \
+ fi
+
+endef
+define CHECK_REQUIREMENT_VERSION
+ @if ! $(1) --version | head -1 | grep ' \($(2)\)$$' >/dev/null; then \
+ echo; \
+ echo 'Wrong version of requirement: $(1)'; \
+ echo; \
+ echo 'Please have a look at "index.html" to ensure'; \
echo 'that your system meets all requirements.'; \
echo; \
exit 1; \
@@ -90,9 +101,23 @@ check-requirements: $(PREFIX)/installed/check-requirements
$(PREFIX)/installed/check-requirements: $(MAKEFILE)
@echo '[check requirements]'
$(foreach REQUIREMENT,$(REQUIREMENTS),$(call CHECK_REQUIREMENT,$(REQUIREMENT)))
+ $(call CHECK_REQUIREMENT_VERSION,autoconf,2\.6[4-9]\|2\.[7-9][0-9])
+ $(call CHECK_REQUIREMENT_VERSION,automake,1\.[1-9][0-9]\.[0-9]\+)
@[ -d '$(PREFIX)/installed' ] || mkdir -p '$(PREFIX)/installed'
@touch '$@'
+define newline
+
+
+endef
+$(eval $(subst #,$(newline),$(shell \
+ $(SED) -n \
+ 's/^.* id="\([A-Za-z0-9_+-]*\)-version">\([^<]*\)<.*$$/\1_VERSION := \2#/p' \
+ '$(TOP_DIR)/index.html' \
+)))
+
+include $(patsubst %,$(TOP_DIR)/src/%.mk,$(PKGS))
+
.PHONY: download
download: $(addprefix download-,$(PKGS))
@@ -154,6 +179,7 @@ build-only-$(1):
$(foreach PKG_PATCH,$(sort $(wildcard $(TOP_DIR)/src/$(1)-*.patch)),
(cd '$(2)/$($(1)_SUBDIR)' && $(PATCH) -p1 -u) < $(PKG_PATCH))
$$(call $(1)_BUILD,$(2)/$($(1)_SUBDIR),$(TOP_DIR)/src/$(1)-test)
+ (du -k -d 0 '$(2)' 2>/dev/null || du -k --max-depth 0 '$(2)') | $(SED) -n 's/^\(\S*\).*/du: \1 KiB/p'
rm -rfv '$(2)'
,)
[ -d '$(PREFIX)/installed' ] || mkdir -p '$(PREFIX)/installed'
@@ -161,30 +187,6 @@ build-only-$(1):
endef
$(foreach PKG,$(PKGS),$(eval $(call PKG_RULE,$(PKG),$(call TMP_DIR,$(PKG)))))
-.PHONY: strip
-strip:
- rm -rf \
- '$(PREFIX)/include' \
- '$(PREFIX)/info' \
- '$(PREFIX)/lib/libiberty.a' \
- '$(PREFIX)/man' \
- '$(PREFIX)/share' \
- '$(PREFIX)/$(TARGET)/etc' \
- '$(PREFIX)/$(TARGET)/doc' \
- '$(PREFIX)/$(TARGET)/info' \
- '$(PREFIX)/$(TARGET)/lib'/*.def \
- '$(PREFIX)/$(TARGET)/man' \
- '$(PREFIX)/$(TARGET)/sbin'
- -strip -Sx \
- '$(PREFIX)/bin'/* \
- '$(PREFIX)/libexec/gcc/$(TARGET)'/*/* \
- '$(PREFIX)/$(TARGET)/bin'/*
- -$(TARGET)-strip -S \
- '$(PREFIX)/lib/gcc/$(TARGET)'/*/*.a \
- '$(PREFIX)/lib/gcc/$(TARGET)'/*/*.o \
- '$(PREFIX)/$(TARGET)/lib'/*.a \
- '$(PREFIX)/$(TARGET)/lib'/*.o
-
.PHONY: clean
clean:
rm -rf $(call TMP_DIR,*) $(PREFIX)/*
@@ -204,9 +206,9 @@ define UPDATE
$(if $(filter $(2),$($(1)_VERSION)),
$(info . $(1) $(2)),
$(info NEW $(1) $($(1)_VERSION) --> $(2))
- $(SED) 's/^\([^ ]*_VERSION *:=\).*/\1 $(2)/' -i '$(TOP_DIR)/src/$(1).mk'
+ $(SED) -i 's/\( id="$(1)-version"\)>[^<]*/\1>$(2)/' '$(TOP_DIR)/index.html'
$(MAKE) -f '$(MAKEFILE)' 'update-checksum-$(1)' \
- || { $(SED) 's/^\([^ ]*_VERSION *:=\).*/\1 $($(1)_VERSION)/' -i '$(TOP_DIR)/src/$(1).mk'; \
+ || { $(SED) -i 's/\( id="$(1)-version"\)>[^<]*/\1>$($(1)_VERSION)/' '$(TOP_DIR)/index.html'; \
exit 1; })),
$(error Unable to update version number of package $(1)))
@@ -216,50 +218,21 @@ update:
update-checksum-%:
$(call DOWNLOAD_PKG_ARCHIVE,$*)
- $(SED) 's/^\([^ ]*_CHECKSUM *:=\).*/\1 '"`$(call PKG_CHECKSUM,$*)`"'/' -i '$(TOP_DIR)/src/$*.mk'
-
-.PHONY: dist
-dist:
- rm -rf '$(DIST_DIR)'
- mkdir -p '$(DIST_DIR)'
- mkdir '$(DIST_DIR)/mingw-cross-env-$(VERSION)'
- mkdir '$(DIST_DIR)/mingw-cross-env-$(VERSION)/doc'
- mkdir '$(DIST_DIR)/mingw-cross-env-$(VERSION)/src'
- ( \
- $(SED) -n '1,/<table id="package-list"/ p' '$(TOP_DIR)/doc/index.html' && \
- ($(foreach PKG,$(PKGS), \
- echo ' <tr><td><a href="$($(PKG)_WEBSITE)">$(PKG)</a></td><td>$($(PKG)_VERSION)</td></tr>';)) && \
- $(SED) -n '/<table id="package-list"/,/<ul id="authors-list"/ p' '$(TOP_DIR)/doc/index.html' | \
- $(SED) '1d' && \
- (LC_ALL=en_US.UTF-8 hg log | $(SED) -n 's,^\(user: *\([^<]*\) <.*\|.*(by \([^)]*\)).*\)$$,\2\3,p' | \
- sort | uniq -c | sort -nr | \
- $(SED) 's,^ *[0-9]* *\(.*\)$$, <li>\1</li>,') && \
- $(SED) '1,/<ul id="authors-list"/ d' '$(TOP_DIR)/doc/index.html' \
- ) \
- | $(SED) 's,\(<span class="version">\)[^<]*\(</span>\),\1$(VERSION)\2,g' \
- | $(SED) 's,\(<span class="target">\)[^<]*\(</span>\),\1$(TARGET)\2,g' \
- | $(SED) 's,\(<span class="target-underscore">\)[^<]*\(</span>\),\1$(subst -,_,$(TARGET))\2,g' \
- | $(SED) 's;\(<span class="years">\)[^<]*\(</span>\);\1'"`LC_ALL=en_US.UTF-8 hg log | $(SED) -n 's,^date:.*\s\([0-9]\{4\}\)\s.*$$,\1,p' | sort -nu | $(SED) -n '1 h; 2,$$ H; $$ {x; s/\n/, /gp}'`"'\2;g' \
- >'$(DIST_DIR)/mingw-cross-env-$(VERSION)/doc/index.html'
- cp -p '$(TOP_DIR)/doc'/screenshot-* '$(DIST_DIR)/mingw-cross-env-$(VERSION)/doc/'
- cp -p '$(TOP_DIR)/Makefile' '$(DIST_DIR)/mingw-cross-env-$(VERSION)/'
- cp -p '$(TOP_DIR)/src'/*.mk '$(DIST_DIR)/mingw-cross-env-$(VERSION)/src/'
- cp -p '$(TOP_DIR)/src'/*.patch '$(DIST_DIR)/mingw-cross-env-$(VERSION)/src/'
- cp -p '$(TOP_DIR)/src'/*-test* '$(DIST_DIR)/mingw-cross-env-$(VERSION)/src/'
- (cd '$(DIST_DIR)' && tar cvf - 'mingw-cross-env-$(VERSION)' | gzip -9) >'$(DIST_DIR)/mingw-cross-env-$(VERSION).tar.gz'
- @echo
- @echo 'Upload will start in 5 seconds. Last chance to cancel! (Ctrl+C)'
- @echo
- @sleep 5
- mkdir '$(DIST_DIR)/web'
- cd '$(DIST_DIR)/web' && cvs -d :ext:cvs.savannah.nongnu.org:/web/mingw-cross-env co mingw-cross-env
- cp -p '$(DIST_DIR)/mingw-cross-env-$(VERSION)/doc'/* '$(DIST_DIR)/web/mingw-cross-env/'
- cd '$(DIST_DIR)/web/mingw-cross-env' && cvs add * || echo 'Errors on "cvs add" ignored.'
- cd '$(DIST_DIR)/web/mingw-cross-env' && cvs commit -m 'upload'
- sleep 2 # wait for the "triggered webpages update" to complete
- x-www-browser \
- 'http://validator.w3.org/unicorn/check?ucn_uri=http://mingw-cross-env.nongnu.org/' \
- 'http://mingw-cross-env.nongnu.org/#latest-release' \
- 'https://bitbucket.org/vog/mingw-cross-env/downloads#new-download-form' \
- 'http://freshmeat.net/projects/mingw_cross_env/releases/new'
+ $(SED) -i 's/^\([^ ]*_CHECKSUM *:=\).*/\1 '"`$(call PKG_CHECKSUM,$*)`"'/' '$(TOP_DIR)/src/$*.mk'
+
+cleanup-style:
+ @$(foreach FILE,$(wildcard $(addprefix $(TOP_DIR)/,Makefile index.html CNAME src/*.mk src/*test.* tools/*)),\
+ $(SED) ' \
+ s/\r//g; \
+ s/[ \t]\+$$//; \
+ s,^#!/bin/bash$$,#!/usr/bin/env bash,; \
+ $(if $(filter %Makefile,$(FILE)),,\
+ s/\t/ /g; \
+ ) \
+ ' < $(FILE) > $(TOP_DIR)/tmp-cleanup-style; \
+ diff -u $(FILE) $(TOP_DIR)/tmp-cleanup-style >/dev/null \
+ || { echo '[cleanup] $(FILE)'; \
+ cp $(TOP_DIR)/tmp-cleanup-style $(FILE); }; \
+ rm -f $(TOP_DIR)/tmp-cleanup-style; \
+ )