summaryrefslogtreecommitdiff
path: root/build.mk
blob: 8341a47a871c6cf4008ef8383aeacedd18aa06b0 (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
# 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 = ltmain.sh ltconfig
LT_PATCHES = patch-aa patch-ab

SUBDIRS = libzend TSRM

makefile_am_files = Makefile.am $(shell find ext sapi regex -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) $(LT_TARGETS) configure $(config_h_in)

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

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) > $@

$(LT_TARGETS): $(LT_PATCHES)
	rm -f $(LT_TARGETS)
	libtoolize --automake -c -f
	patch ltconfig < patch-aa
	patch ltmain.sh < patch-ab
	@grep compile_rpath ltconfig >/dev/null 2>&1 || (\
			echo "patching libtool components failed."; \
			exit 1)
			

$(makefile_in_files): $(makefile_am_files) aclocal.m4
	@echo rebuilding Makefile.in\'s
	@automake -a -i $(AMFLAGS) $(makefile_files) 2>&1 \
		| grep -v PHP_OUTPUT_FILES || true >&2

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