summaryrefslogtreecommitdiff
path: root/build.mk
blob: 8511eb94bb9f6009bd287494245265807eaac763 (plain)
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# Makefile to generate build tools
#
# Standard usage:
#        make -f build.mk
#
# To prepare a self-contained distribution:
#        make -f build.mk dist
#
#
# Written by Sascha Schumann
#
# $Id$ 

LT_TARGETS = ltconfig ltmain.sh config.guess config.sub

SUBDIRS = libzend TSRM

STAMP = buildmk.stamp

makefile_am_files = Makefile.am $(shell find ext sapi regex pear -name Makefile.am)
makefile_in_files = $(makefile_am_files:.am=.in)
makefile_files    = $(makefile_am_files:e.am=e)

config_h_in = php_config.h.in

config_h_files = \
	$(shell echo ext/*/config.h.stub sapi/*/config.h.stub)

config_m4_files = \
	$(shell echo ext/*/config.m4 sapi/*/config.m4)

acconfig_h_SOURCES = acconfig.h.in $(config_h_files)

targets = $(makefile_in_files) configure $(config_h_in)

all: $(targets)
	@for i in $(SUBDIRS); do \
		test -d $$i || (test -d ../$$i && ln -s ../$$i $$i); \
		(cd $$i>/dev/null && $(MAKE) -f build.mk AMFLAGS=$(AMFLAGS)); \
	done

all: $(STAMP)

$(STAMP): buildcheck.sh
	@./buildcheck.sh && touch $(STAMP)

dist:
	@rm -f $(SUBDIRS) 2>/dev/null || true
	@for i in $(SUBDIRS); do \
		test -d $$i || (test -d ../$$i && cp -rp ../$$i $$i); \
	done
	@find . -type l -exec rm {} \;
	$(MAKE) AMFLAGS=--copy -f build.mk

clean: 
	rm -f $(targets)
	@for i in $(SUBDIRS); do \
		(cd $$i && $(MAKE) -f build.mk clean); \
	done 

cvsclean:
	@for i in $(shell find . -follow -name .cvsignore); do \
		(cd `dirname $$i` && rm -rf `cat .cvsignore`); \
	done
	@rm -f $(SUBDIRS) 2>/dev/null || true

acconfig.h: $(acconfig_h_SOURCES)
	@echo rebuilding $@
	@cat $(acconfig_h_SOURCES) > $@

$(makefile_in_files): $(makefile_am_files) aclocal.m4
	@echo rebuilding Makefile.in\'s
	@for i in $(LT_TARGETS); do \
		if test -f "$$i"; then \
			mv $$i $$i.bak; \
			cp $$i.bak $$i; \
		fi; \
	done
	@automake -a -i $(AMFLAGS) $(makefile_files) 2>&1 \
		| grep -v PHP_OUTPUT_FILES || true >&2
	@for i in $(LT_TARGETS); do mv $$i.bak $$i; done

aclocal.m4: configure.in acinclude.m4
	aclocal

$(config_h_in): configure.in acconfig.h
# explicitly remove target since autoheader does not seem to work 
# correctly otherwise (timestamps are not updated)
	@rm -f $@
	autoheader

configure: aclocal.m4 configure.in $(config_m4_files)
	autoconf