xref: /onnv-gate/usr/src/cmd/perl/contrib/Sun/Solaris/Exacct/Object/Makefile.PL (revision 12388:1bc8d55b0dfd)
1#
2# Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
3#
4
5#
6# Makefile.PL for ::Exacct::Object
7#
8
9# See ../Makefile.PL for an explanation of the linker flag manipulations.
10
11require 5.8.4;
12use strict;
13use warnings;
14use ExtUtils::MakeMaker;
15
16#
17# Some later versions of ExtUtils::MakeMaker are broken,
18# and complain about function redefinitions in the child Makefile.PLs.
19# Stop the warnings.
20#
21no warnings qw(redefine);
22
23our (@defines, @man3pods);
24
25#
26# MakeMaker overrides.
27#
28package MY;
29no warnings qw(once);
30
31#
32# Overrides that are common to both the ON and non-ON build environments.
33#
34
35#
36# Suppress the setting of LD_RUN_PATH, as it isn't necessary.
37#
38
39sub const_loadlibs
40{
41	my $self = shift(@_);
42	delete($self->{LD_RUN_PATH});
43	return($self->SUPER::const_loadlibs(@_));
44}
45
46sub dynamic_lib
47{
48	my $self = shift(@_);
49	my $txt = $self->SUPER::dynamic_lib(@_);
50	$txt =~ s/LD_RUN_PATH=\S*\s*//;
51	return($txt);
52}
53
54#
55# ON-specific overrides.
56#
57if (exists($ENV{CODEMGR_WS}) && exists($ENV{ENVCPPFLAGS1})) {
58	#
59	# Override postamble and replace it with one that explicitly records
60	# the dependency between Object.c (generated from Object.xs by xsubpp)
61	# and the ObjectDefs.xi file (generated from sys/exacct.h by
62	# extract_defines).  Note we have to mimic the -I processing done by cc
63	# to find the correct version of the file, as we want the copy from the
64	# proto area rather than /usr/include.  This ensures that the constant
65	# values exported by the perl module stay up-to date with the
66	# corresponding #defines.
67	#
68	*postamble = sub {
69		return <<'EOF';
70EXACCT_H:sh= \
71	for dir in $ENVCPPFLAGS1 $ENVCPPFLAGS2 $ENVCPPFLAGS3 $ENVCPPFLAGS4 \
72	    /usr/include; do \
73		dir=`expr $dir : '^-I\(.*\)$' \| $dir`; \
74		file="$dir/sys/exacct.h"; \
75		test -f $file && echo $file && break; \
76	done;
77
78Object.c:	ObjectDefs.xi
79
80ObjectDefs.xi:	../extract_defines $(EXACCT_H)
81	$(PERL) ../extract_defines Object $@ $(EXACCT_H)
82EOF
83	};
84
85	# Enable/disable debugging as required.
86	@main::defines = ( DEFINE => '-DEXACCT_DEBUG' )
87	    if (! exists($ENV{RELEASE_BUILD}));
88
89	# Don't install POD pages for ON.
90	@main::man3pods = ( MAN3PODS => {} );
91
92#
93# Non-ON overrides.
94#
95} else {
96	#
97	# Override postamble and replace it with one that explicitly records
98	# the dependency between Object.c (generated from Object.xs by xsubpp)
99	# and the ObjectDefs.xi file (generated from /usr/include/sys/exacct.h
100	# by # extract_defines).  This ensures # that the constant values
101	# exported by the perl module stay up-to date with the corresponding
102	# #defines.
103	#
104	*postamble = sub {
105		return <<'EOF';
106EXACCT_H = /usr/include/sys/exacct.h
107
108Object.c:	ObjectDefs.xi
109
110ObjectDefs.xi:	../extract_defines $(EXACCT_H)
111	$(PERL) ../extract_defines Object $@ $(EXACCT_H)
112EOF
113	};
114
115	# Install the POD documentation for non-ON builds.
116	my $man3pfx = '$(INST_MAN3DIR)/Sun::Solaris::Exacct';
117	@main::man3pods = ( MAN3PODS => {
118	    '../pod/Object.pod' => $man3pfx . '::Object.$(MAN3EXT)',
119	    '../pod/Item.pod' => $man3pfx . '::Object::Item.$(MAN3EXT)',
120	    '../pod/Group.pod' => $man3pfx . '::Object::Group.$(MAN3EXT)'
121	});
122}
123
124#
125# Having set everything up, write the Makefile.
126#
127package main;
128
129WriteMakefile(
130    NAME         => 'Sun::Solaris::Exacct::Object',
131    VERSION_FROM => 'Object.pm',
132    H            => [ '../exacct_common.xh' ],
133    TYPEMAPS     => [ '../typemap' ],
134    @defines,
135    @man3pods,
136    dynamic_lib  => { OTHERLDFLAGS =>
137        '-h $(DLBASE).$(DLEXT) ' .
138        '-R\$$ORIGIN/.. $(INST_ARCHAUTODIR)/../Exacct.so'
139	},
140    realclean    => { FILES => 'ObjectDefs.xi' },
141);
142