-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
52 lines (41 loc) · 2.2 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
export GNU_MAKE_VERSION=4.1
.PHONY: all clean patch tests src/monmakeamoi.a precompile
all : tests
tests: dist/bin/monmakeamoi-${GNU_MAKE_VERSION}
$(realpath $<) -C tests
precompile : src/monmakeamoi.a
@echo -n "*********\n*\n* You can now 'cd' to $(realpath gnumake/make-${GNU_MAKE_VERSION}-patched ) and\n* run ./configure to make and install the patched version of MAKE\n*\n*********\n"
dist/bin/monmakeamoi-${GNU_MAKE_VERSION} : src/monmakeamoi.a
$(MAKE) -C gnumake/make-${GNU_MAKE_VERSION}-patched make && \
$(MAKE) -C gnumake/make-${GNU_MAKE_VERSION}-patched install
src/monmakeamoi.a : gnumake/make-${GNU_MAKE_VERSION}-patched/config.h
$(MAKE) -C $(dir $@)
#
# ./configure if needed
#
gnumake/make-${GNU_MAKE_VERSION}-patched/config.h : gnumake/make-${GNU_MAKE_VERSION}-patched/Makefile.am
mkdir -p dist && \
(cd gnumake/make-${GNU_MAKE_VERSION}-patched && autoreconf && ./configure --prefix=$(realpath $(dir $(lastword $(MAKEFILE_LIST))))/dist --program-transform-name='s/make/monmakeamoi-${GNU_MAKE_VERSION}/' )
#
# Download original GNU-Make and apply-patch if needed
#
$(addprefix gnumake/make-${GNU_MAKE_VERSION}-, patched/Makefile.am original/Makefile.am) :
mkdir -p gnumake && \
rm -rf $(dir $@) gnumake/make-${GNU_MAKE_VERSION} && \
wget -O gnumake/make-${GNU_MAKE_VERSION}.tar.gz "http:https://ftp.gnu.org/gnu/make/make-${GNU_MAKE_VERSION}.tar.gz" && \
tar xf gnumake/make-${GNU_MAKE_VERSION}.tar.gz -C gnumake && \
mv gnumake/make-${GNU_MAKE_VERSION} $(dir $@) && \
rm gnumake/make-${GNU_MAKE_VERSION}.tar.gz && \
touch --no-create $(addprefix $(dir $@), configure.ac aclocal.m4 configure Makefile.am Makefile.in configure ) \
$(if $(findstring patched,$@),&& (cd $(dir $@) && patch -p2 --backup --input=$(realpath src/${GNU_MAKE_VERSION}.patch ) --batch ) )
#
# Create patch
#
patch : src/${GNU_MAKE_VERSION}.patch.tmp
src/${GNU_MAKE_VERSION}.patch.tmp : $(addprefix gnumake/make-${GNU_MAKE_VERSION}-, patched/Makefile.am original/Makefile.am)
-mkdir -p $(dir $@) && \
rm -f $@ \
$(foreach F,function.c Makefile.am main.c, ; diff -C5 $(addprefix gnumake/make-${GNU_MAKE_VERSION}-, original/${F} patched/${F} ) >> $@ )
@echo "You can now copy $@ to $(basename $@)"
clean:
rm -rf gnumake dist tests/*.txt