make-rules/makemaker.mk
branchs11u3-sru
changeset 7711 48f87ff8204e
parent 3996 20c0f21bbe1e
--- a/make-rules/makemaker.mk	Fri Mar 03 15:29:05 2017 -0800
+++ b/make-rules/makemaker.mk	Sat Mar 04 04:04:35 2017 +0000
@@ -18,35 +18,73 @@
 #
 # CDDL HEADER END
 #
-# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
+
+#
+# Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
 #
 
-# we only do 32 bit perl for now.
-BITS=32
+# makemaker.mk is used to build, install, test perl modules for
+# each version of perl.
+# Packaging these multiple versions is still handled by ips.mk.
+# Look under perl_modules for examples of usage.
 
-COMMON_PERL_ENV +=	MAKE=$(GMAKE)
-COMMON_PERL_ENV +=	PATH=$(dir $(CC)):$(SPRO_VROOT)/bin:$(PATH)
-COMMON_PERL_ENV +=	LANG=""
-COMMON_PERL_ENV +=	CC="$(CC)"
-COMMON_PERL_ENV +=	CFLAGS="$(PERL_OPTIMIZE)"
+# Multiple versions of perl processing is achieved by listing targets
+# for each version and adding BUILD_64/INSTALL_64 targets below.
+# Example:
+# $(BUILD_DIR)/$(MACH64)-5.24/.configured: PERL_VERSION=5.24
+# $(BUILD_DIR)/$(MACH64)-5.24/.configured: BITS=64
+# BUILD_64 +=     $(BUILD_DIR)/$(MACH64)-5.24/.built
+# INSTALL_64 +=   $(BUILD_DIR)/$(MACH64)-5.24/.installed
+# TEST_64 +=      $(BUILD_DIR)/$(MACH64)-5.24/.tested
+# TEST_64 +=      $(BUILD_DIR)/$(MACH64)-5.24/.tested-and-compared
+# and so on.
+
+COMMON_PERL_ENV += MAKE=$(GMAKE)
+COMMON_PERL_ENV += PATH=$(dir $(CC)):$(SPRO_VROOT)/bin:$(PATH)
+COMMON_PERL_ENV += LANG=""
+COMMON_PERL_ENV += CC="$(CC)"
+COMMON_PERL_ENV += CFLAGS="$(PERL_OPTIMIZE)"
 
 # Yes.  Perl is just scripts, for now, but we need architecture
 # directories so that it populates all architecture prototype
 # directories.
-PERLBD_ARCH = $(BUILD_DIR)/$(MACH32)
 
-$(PERLBD_ARCH)-5.8.4/.configured:		PERL_VERSION=5.8.4
-$(PERLBD_ARCH)-5.12/.configured:		PERL_VERSION=5.12
-$(PERLBD_ARCH)-5.12-mt/.configured:		PERL_VERSION=5.12-mt
+$(BUILD_DIR)/$(MACH32)-5.8.4/.configured:	PERL_VERSION=5.8.4
+$(BUILD_DIR)/$(MACH32)-5.8.4/.configured:	BITS=32
+$(BUILD_DIR)/$(MACH32)-5.12/.configured:	PERL_VERSION=5.12
+$(BUILD_DIR)/$(MACH32)-5.12/.configured:	BITS=32
+$(BUILD_DIR)/$(MACH32)-5.12-mt/.configured:	PERL_VERSION=5.12-mt
+$(BUILD_DIR)/$(MACH32)-5.12-mt/.configured:	BITS=32
+$(BUILD_DIR)/$(MACH64)-5.22/.configured:	PERL_VERSION=5.22
+$(BUILD_DIR)/$(MACH64)-5.22/.configured:	BITS=64
+
+$(BUILD_DIR)/$(MACH32)-5.8.4/.tested:		PERL_VERSION=5.8.4
+$(BUILD_DIR)/$(MACH32)-5.8.4/.tested:		BITS=32
+$(BUILD_DIR)/$(MACH32)-5.12/.tested:		PERL_VERSION=5.12
+$(BUILD_DIR)/$(MACH32)-5.12/.tested:		BITS=32
+$(BUILD_DIR)/$(MACH32)-5.12-mt/.tested:		PERL_VERSION=5.12-mt
+$(BUILD_DIR)/$(MACH32)-5.12-mt/.tested:		BITS=32
+$(BUILD_DIR)/$(MACH64)-5.22/.tested:		PERL_VERSION=5.22
+$(BUILD_DIR)/$(MACH64)-5.22/.tested:		BITS=64
 
-BUILD_32 =	$(PERL_VERSIONS:%=$(PERLBD_ARCH)-%/.built)
-INSTALL_32 =	$(BUILD_32:%/.built=%/.installed)
-TEST_32 =	$(BUILD_32:%/.built=%/.tested)
+# This macro is building this:
+# BUILD_64 = $(BUILD_DIR)/$(MACH64)-5.22/.built
+PERL_BUILD = $(BUILD_DIR)/MACHX-PERLVER/.built
+BUILD_32_and_64_PERL = $(foreach v,$(PERL_VERSIONS),$(shell echo $(PERL_BUILD) | sed -e 's/MACHX/$(PERL.$(v).BITS)/g' -e 's/-PERLVER/-$(v)/g'))
 
+# This macro is building this:
+# INSTALL_64 =$(BUILD_DIR)/$(MACH64)-5.22/.installed
+PERL_INSTALL = $(BUILD_DIR)/MACHX-PERLVER/.installed
+INSTALL_32_and_64_PERL = $(foreach v,$(PERL_VERSIONS),$(shell echo $(PERL_INSTALL) | sed -e 's/MACHX/$(PERL.$(v).BITS)/g' -e 's/-PERLVER/-$(v)/g'))
 
-COMPONENT_CONFIGURE_ENV +=	$(COMMON_PERL_ENV)
-COMPONENT_CONFIGURE_ENV +=	PERL="$(PERL)"
-$(PERLBD_ARCH)-%/.configured:	$(SOURCE_DIR)/.prep
+# This macro is building this:
+# TEST_64 = $(BUILD_DIR)/$(MACH64)-5.22/.tested
+PERL_TEST = $(BUILD_DIR)/MACHX-PERLVER/.tested
+TEST_32_and_64_PERL = $(foreach v,$(PERL_VERSIONS),$(shell echo $(PERL_TEST) | sed -e 's/MACHX/$(PERL.$(v).BITS)/g' -e 's/-PERLVER/-$(v)/g'))
+
+COMPONENT_CONFIGURE_ENV += $(COMMON_PERL_ENV)
+COMPONENT_CONFIGURE_ENV += PERL="$(PERL)"
+$(BUILD_DIR)/%/.configured:	$(SOURCE_DIR)/.prep
 	($(RM) -r $(@D) ; $(MKDIR) $(@D))
 	$(CLONEY) $(SOURCE_DIR) $(@D)
 	$(COMPONENT_PRE_CONFIGURE_ACTION)
@@ -57,7 +95,7 @@
 
 
 COMPONENT_BUILD_ENV +=	$(COMMON_PERL_ENV)
-$(PERLBD_ARCH)-%/.built:	$(PERLBD_ARCH)-%/.configured
+$(BUILD_DIR)/%/.built:	$(BUILD_DIR)/%/.configured
 	$(COMPONENT_PRE_BUILD_ACTION)
 	(cd $(@D) ; $(ENV) $(COMPONENT_BUILD_ENV) \
 		$(GMAKE) $(COMPONENT_BUILD_ARGS) $(COMPONENT_BUILD_TARGETS))
@@ -71,7 +109,7 @@
 COMPONENT_INSTALL_ARGS +=	DESTDIR="$(PROTO_DIR)"
 COMPONENT_INSTALL_TARGETS =	install_vendor
 COMPONENT_INSTALL_ENV +=	$(COMMON_PERL_ENV)
-$(PERLBD_ARCH)-%/.installed:	$(PERLBD_ARCH)-%/.built
+$(BUILD_DIR)/%/.installed:	$(BUILD_DIR)/%/.built
 	$(COMPONENT_PRE_INSTALL_ACTION)
 	(cd $(@D) ; $(ENV) $(COMPONENT_INSTALL_ENV) $(GMAKE) \
 			$(COMPONENT_INSTALL_ARGS) $(COMPONENT_INSTALL_TARGETS))
@@ -80,8 +118,8 @@
 
 
 COMPONENT_TEST_TARGETS =	check
-COMPONENT_TEST_ENV +=	$(COMMON_PERL_ENV)
-$(PERLBD_ARCH)-%/.tested:	$(PERLBD_ARCH)-%/.built
+COMPONENT_TEST_ENV +=		$(COMMON_PERL_ENV)
+$(BUILD_DIR)/%/.tested:	$(BUILD_DIR)/%/.built
 	$(COMPONENT_PRE_TEST_ACTION)
 	(cd $(@D) ; $(ENV) $(COMPONENT_TEST_ENV) $(GMAKE) \
 			$(COMPONENT_TEST_ARGS) $(COMPONENT_TEST_TARGETS))
@@ -107,3 +145,6 @@
 ifneq ($(findstring 5.8.4, $(PERL_VERSIONS)),)
 REQUIRED_PACKAGES += runtime/perl-584
 endif
+ifneq ($(findstring 5.22, $(PERL_VERSIONS)),)
+REQUIRED_PACKAGES += runtime/perl-522
+endif