1# Makefile orchestrating CPAN
2
3include $(SRCROOT)/$(VERS).inc
4ifneq ($(wildcard $(SRCROOT)/Platforms/$(RC_TARGET_CONFIG)/$(VERS).inc),)
5include $(SRCROOT)/Platforms/$(RC_TARGET_CONFIG)/$(VERS).inc
6endif
7
8# These variables cause installation into the Extras directory, adds RC_CFLAGS
9# to the compile and linking arguments, and sets DESTDIR to DSTROOT
10installarchlib := $(shell perl -MConfig -e 'print $$Config::Config{installextrasarch}')
11installbin := $(shell perl -MConfig -e 'print $$Config::Config{installbin}')
12installprivlib := $(shell perl -MConfig -e 'print $$Config::Config{installextraslib}')
13EXTRASARCH := $(DSTROOT)/$(shell perl -MConfig -e 'print $$Config::Config{extrasarch}')
14EXTRASLIB := $(DSTROOT)/$(shell perl -MConfig -e 'print $$Config::Config{extraslib}')
15PLARGS := INSTALLDIRS=perl INSTALLARCHLIB='$(installarchlib)' INSTALLPRIVLIB='$(installprivlib)' INSTALLBIN='$(installbin)' INSTALLSCRIPT='$(installbin)'
16PLBARGS := --installdirs core --install_path arch='$(installarchlib)' --install_path lib='$(installprivlib)' --install_path bin='$(installbin)' --install_path script='$(installbin)'
17make := perl $(SRCROOT)/make.pl
18MAKEARGS := DESTDIR=$(DSTROOT)
19BUILDARGS := --destdir $(DSTROOT)
20export PERL5LIB := $(EXTRASLIB)
21export NO_PERL_PREPENDTOPATH := 1
22
23no_target:
24	@set -x && for i in $(PROJECTS); do \
25	    echo "===== $$i =====" && \
26	    $(make) -C Modules/$$i unpack installarchlib="$(installarchlib)" \
27		installprivlib="$(installprivlib)" PLARGS="$(PLARGS)" \
28		PLBARGS="$(PLBARGS)" BUILDARGS="$(BUILDARGS)"\
29		MAKEARGS="$(MAKEARGS)" && \
30	    $(make) -C Modules/$$i installarchlib="$(installarchlib)" \
31		installprivlib="$(installprivlib)" PLARGS="$(PLARGS)" \
32		PLBARGS="$(PLBARGS)" BUILDARGS="$(BUILDARGS)"\
33		MAKEARGS="$(MAKEARGS)" || exit 1; \
34	done
35
36install:
37	@set -x && for i in $(PROJECTS); do \
38	    echo "===== $$i =====" && \
39	    $(make) -C Modules/$$i unpack installarchlib="$(installarchlib)" \
40		installprivlib="$(installprivlib)" PLARGS="$(PLARGS)" \
41		PLBARGS="$(PLBARGS)" BUILDARGS="$(BUILDARGS)"\
42		MAKEARGS="$(MAKEARGS)" && \
43	    $(make) -C Modules/$$i install installarchlib="$(installarchlib)" \
44		installprivlib="$(installprivlib)" PLARGS="$(PLARGS)" \
45		PLBARGS="$(PLBARGS)" BUILDARGS="$(BUILDARGS)"\
46		MAKEARGS="$(MAKEARGS)" || exit 1; \
47	done
48	@echo ================ post-install fixups ================
49	@set -x && \
50	cd $(EXTRASARCH)/auto && \
51	for b in `find . -name \*.bundle | sed 's,^\./,,'`; do \
52	    rsync -R $$b $(SYMROOT) && \
53	    dsymutil $(SYMROOT)/$$b && \
54	    strip -x $$b || exit 1; \
55	done
56	@set -x && \
57	cd $(DSTROOT) && \
58	for b in usr/bin/*; do \
59	    if file $$b | fgrep -q Mach-O; then \
60		rsync -R $$b $(SYMROOT) && \
61		dsymutil $(SYMROOT)/$$b && \
62		strip -x $$b || exit 1; \
63	    fi \
64	done
65	rm -f $(EXTRASARCH)/perllocal.pod
66	find $(EXTRASARCH)/auto -name .packlist -print -delete
67