1 #
2 # CDDL HEADER START
3 #
4 # The contents of this file are subject to the terms of the
5 # Common Development and Distribution License (the "License").
6 # You may not use this file except in compliance with the License.
7 #
8 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 # or http://www.opensolaris.org/os/licensing.
10 # See the License for the specific language governing permissions
11 # and limitations under the License.
12 #
13 # When distributing Covered Code, include this CDDL HEADER in each
14 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 # If applicable, add the following below this CDDL HEADER, with the
16 # fields enclosed by brackets "[]" replaced with your own identifying
17 # information: Portions Copyright [yyyy] [name of copyright owner]
18 #
19 # CDDL HEADER END
20 #
21 #
22 # Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
23 #
24
25 include ../../Makefile.cmd
26
27 # To turn KEEP_STATE off the following two environment variables must be unset.
28 KEEP_STATE_OFF = unset KEEP_STATE SUNPRO_DEPENDENCIES
29
30 # Perl installs files we don't want to ship, so we install to a
31 # staging area to postprocess and install the result to $(ROOT)
32 STAGE = $(SRC)/cmd/perl/$(PERL_VERSION)/staging
33
34 PERL=/usr/perl5/$(PERL_VERSION)/bin/perl
35
36 PERL_MM_ARGS = INSTALLDIRS=perl CC='$(CC)' LD='$(CC)'
37
38 # Prefix for Solaris-specific extensions that are maintained by
39 # Sun/Oracle.
40 SUN_SOLARIS = Sun/Solaris
41
42 # Add any XS extensions here.
43 PERL_DYNAMIC_EXT = \
44 $(SUN_SOLARIS)/Utils \
45 $(SUN_SOLARIS)/Kstat \
46 $(SUN_SOLARIS)/Intrs \
47 $(SUN_SOLARIS)/Project \
48 $(SUN_SOLARIS)/Task \
49 $(SUN_SOLARIS)/Exacct \
50 $(SUN_SOLARIS)/Privilege \
51 $(SUN_SOLARIS)/Lgrp \
52 $(SUN_SOLARIS)/Ucred
53
54 # Add any pure-perl extensions here.
55 PERL_NONXS_EXT = \
56 $(SUN_SOLARIS)/BSM \
57 $(SUN_SOLARIS)/PerlGcc \
58 $(SUN_SOLARIS)/Pg
59
60 PERL_EXT = $(PERL_DYNAMIC_EXT) $(PERL_NONXS_EXT)
61 PERL_EXT_MAKEFILES = $(PERL_EXT:%=%/Makefile)
62
63 all: copy_contrib $(PERL_EXT_MAKEFILES) $(PERL_EXT)
64
65 .PARALLEL: $(PERL_EXT_MAKEFILES) $(PERL_EXT)
66
67 install: all
68 for ext in $(PERL_EXT); do \
69 if [ -d $$ext ]; then \
70 ( \
71 cd $$ext; pwd; \
72 $(KEEP_STATE_OFF); $(MAKE) $(PERL_MM_ARGS) \
73 DESTDIR=$(STAGE) install; \
74 cd $(STAGE); \
75 find . \( -name ".packlist" -o -name "perllocal.pod" \) \
76 -exec $(RM) {} \; ; \
77 /usr/bin/pax -rw -pe ./* ${ROOT} ; \
78 ) \
79 else \
80 /bin/false; \
81 fi \
82 done
83
84 #
85 # copy_contrib copies the clearfiles from ../contrib to here.
86 #
87 copy_contrib:
88 @ $(KSH93) ../contrib/copy_contrib.sh ../contrib . $(PERL_EXT)
89
90 clean:
91 for ext in $(PERL_EXT); do \
92 if [ -d $$ext ]; then \
93 ( \
94 cd $$ext; pwd; \
95 $(KEEP_STATE_OFF); $(MAKE) clean; \
96 ) \
97 fi \
98 done
99
100 # Remove Sun/Solaris
101 clobber:
102 @ $(RM) -r Sun
103
104 test: all
105 for ext in $(PERL_EXT); do \
106 ( \
107 cd $$ext; pwd; \
108 $(KEEP_STATE_OFF); $(MAKE) test; \
109 ) \
110 done
111
112 #
113 # Ensure that the extension's makefile is built before
114 # trying to build the extension
115 #
116 %/Makefile: %/Makefile.PL $(PERL_CONFIGDEP)
117 @ cd $(@D); pwd; $(PERL) $(<F) $(PERL_MM_ARGS) 2>&1 /dev/null
118
119 # Pattern-matching rule for extensions.
120 $(SUN_SOLARIS)/%: $(SUN_SOLARIS)/%/Makefile FRC
121 @ cd $@; pwd; $(KEEP_STATE_OFF) ; \
122 $(PERL_MM_ARGS) $(MAKE) DESTDIR=$(STAGE) all
123
124 FRC: