export SHELL := /bin/sh
export OS_VERSION := $(shell /usr/bin/sw_vers -buildVersion | sed -E 's/[A-Z][0-9]+[A-Za-z]*$$//g')
export OS_VERSIONS_SUPPORTED := 11 12 13
export PERL := /usr/bin/perl
export PERL_VERSIONS_FILE_PATH := /usr/local/versioner/perl/versions
export PERL_VERSIONS_AVAILABLE := $(sort $(shell grep -v '^DEFAULT = ' $(PERL_VERSIONS_FILE_PATH)))
PROJECTS = $(MAKEMAKER_PROJECTS) $(MODULE_BUILD_PROJECTS)
ifeq ($(findstring $(OS_VERSION), $(OS_VERSIONS_SUPPORTED)),)
$(error Makefile is being executed on an unsupported version of Mac OS X. Supported versions are $(OS_VERSIONS_SUPPORTED))
endif
include $(OS_VERSION)/Makefile
ARCHFLAGS = $(DEFAULT_ARCHFLAGS)
ifneq ($(RC_CFLAGS),)
$(info RC_FLAGS is set, overriding DEFAULT_ARCHFLAGS)
ARCHFLAGS = $(RC_CFLAGS)
endif
include_file_paths := $(OS_VERSION)/Perl/$(VERSIONER_PERL_VERSION)/Makefile
include $(include_file_paths)
export AUTOMATED_TESTING := 1
export PERL_AUTOINSTALL := --skipdeps
PERL_INSTALLDIRS := site
PERL_INSTALLSITEARCH := $(shell $(PERL) -MConfig -e 'print($$Config{installsitearch});')
PERL_INSTALLSITEBIN := $(shell $(PERL) -MConfig -e 'print($$Config{installsitebin});')
PERL_INSTALLSITELIB := $(shell $(PERL) -MConfig -e 'print($$Config{installsitelib});')
PERL_INSTALLSITEMAN1DIR := $(shell $(PERL) -MConfig -e 'print($$Config{installsiteman1dir});')
PERL_INSTALLSITEMAN3DIR := $(shell $(PERL) -MConfig -e 'print($$Config{installsiteman3dir});')
PERL_INSTALLSITESCRIPT := $(shell $(PERL) -MConfig -e 'print($$Config{installsitescript});')
PERL_PREPENDTOPATH := $(PERL_INSTALLSITELIB)PrependToPath
INSTALLPATH_PREPENDTOPATH := $(DSTROOT)$(PERL_INSTALLSITELIB)
PERL_INSTALLSITEARCH := /AppleInternal$(PERL_INSTALLSITEARCH)
PERL_INSTALLSITELIB := /AppleInternal$(PERL_INSTALLSITELIB)
PERL += -I$(DSTROOT)$(PERL_INSTALLSITEARCH)
PERL += -I$(DSTROOT)$(PERL_INSTALLSITELIB)
PERL_MB_OPT := \
--destdir=$(DSTROOT) \
--installdirs $(PERL_INSTALLDIRS) \
--install_path arch=$(PERL_INSTALLSITEARCH) \
--install_path bin=$(PERL_INSTALLSITEBIN) \
--install_path lib=$(PERL_INSTALLSITELIB) \
--install_path bindoc=$(PERL_INSTALLSITEMAN1DIR) \
--install_path libdoc=$(PERL_INSTALLSITEMAN3DIR) \
--install_path script=$(PERL_INSTALLSITESCRIPT)
PERL_MM_OPT := \
DESTDIR=$(DSTROOT) \
INSTALLDIRS=$(PERL_INSTALLDIRS) \
INSTALLSITEARCH=$(PERL_INSTALLSITEARCH) \
INSTALLSITEBIN=$(PERL_INSTALLSITEBIN) \
INSTALLSITELIB=$(PERL_INSTALLSITELIB) \
INSTALLSITEMAN1DIR=$(PERL_INSTALLSITEMAN1DIR) \
INSTALLSITEMAN3DIR=$(PERL_INSTALLSITEMAN3DIR) \
INSTALLSITESCRIPT=$(PERL_INSTALLSITESCRIPT)
export PERL_MM_USE_DEFAULT = 1
.PHONY: all
all: display-info $(MODULES) ConfigurationFiles remove-symbols
@echo "";
.PHONY: clean
clean:
.PHONY: display-info
display-info:
@echo ""; \
echo "##############################################################################"; \
echo "# Variables"; \
echo "##############################################################################"; \
echo ""; \
echo "ARCHFLAGS: $(ARCHFLAGS)"; \
echo "OS_VERSION: $(OS_VERSION)"; \
echo "OS_VERSIONS_SUPPORTED: $(OS_VERSIONS_SUPPORTED)"; \
echo "PERL_VERSIONS_AVAILABLE: $(PERL_VERSIONS_AVAILABLE)"; \
echo "PERL_INSTALLSITEARCH: $(PERL_INSTALLSITEARCH)"; \
echo "PERL_INSTALLSITEBIN: $(PERL_INSTALLSITEBIN)"; \
echo "PERL_INSTALLSITELIB: $(PERL_INSTALLSITELIB)"; \
echo "PERL_INSTALLSITEMAN1DIR: $(PERL_INSTALLSITEMAN1DIR)"; \
echo "PERL_INSTALLSITEMAN3DIR: $(PERL_INSTALLSITEMAN3DIR)"; \
echo "PERL_INSTALLSITESCRIPT: $(PERL_INSTALLSITESCRIPT)"; \
echo ""; \
echo "Makefiles: $(include_file_paths)"; \
echo ""; \
echo "##############################################################################"; \
echo "# Module::Build Variables"; \
echo "##############################################################################"; \
echo ""; \
echo "PERL_MB_OPT: $(PERL_MB_OPT)"; \
echo ""; \
echo "##############################################################################"; \
echo "# ExtUtils::MakeMaker Variables"; \
echo "##############################################################################"; \
echo ""; \
echo "PERL_MM_OPT: $(PERL_MM_OPT)"; \
echo "PERL_MM_USE_DEFAULT: $$PERL_MM_USE_DEFAULT"; \
echo ""; \
echo "##############################################################################"; \
echo "# Shell Environment Variables"; \
echo "##############################################################################"; \
echo ""; \
echo "PERL5LIB: $$PERL5LIB"; \
echo "VERSIONER_PERL_VERSION: $$VERSIONER_PERL_VERSION"; \
echo ""; \
echo "##############################################################################"; \
echo "# XBS Variables"; \
echo "##############################################################################"; \
echo ""; \
echo "DSTROOT: $(DSTROOT)"; \
echo "OBJROOT: $(OBJROOT)"; \
echo "OBJROOT_PERL: $(OBJROOT_PERL)"; \
echo "SRCROOT: $(SRCROOT)"; \
echo "SYMROOT: $(SYMROOT)"; \
echo "TMPDIR: $(TMPDIR)"; \
echo ""; \
echo "##############################################################################"; \
echo "# Projects"; \
echo "##############################################################################"; \
echo ""; \
echo "$(PROJECTS)"; \
echo ""
.PHONY: ConfigurationFiles
ConfigurationFiles:
@echo "=============== Making $@ ==================";
@echo "";
$(MAKE) -C $(OBJROOT_PERL)/$@ install;
.PHONY: prepend-to-path
prepend-to-path:
@mkdir -p $(INSTALLPATH_PREPENDTOPATH); \
echo $(PERL_INSTALLSITEARCH) > $(INSTALLPATH_PREPENDTOPATH)/PrependToPath; \
echo $(PERL_INSTALLSITELIB) >> $(INSTALLPATH_PREPENDTOPATH)/PrependToPath;
.PHONY: remove-symbols
remove-symbols:
@if [ -e $(DSTROOT) ]; then \
echo "Removing debugging symbol table entries from bundles ... "; \
find $(DSTROOT) -xdev -name '*.bundle' -print -exec strip -S {} \; ; \
echo ""; \
echo "Removing packlists ..."; \
find $(DSTROOT) -xdev -name '.packlist' -print -exec rm -f {} \; ; \
echo ""; \
fi
.PHONY: $(MAKEMAKER_PROJECTS)
$(MAKEMAKER_PROJECTS) :
@echo "=============== Making $@ =================="; \
echo ""; \
cd $(OBJROOT_PERL)/$@ && \
mv Makefile.PL Makefile.PL.orig && \
cat Makefile.PL.orig ../add_rc_constants.pl > Makefile.PL && \
$(PERL) Makefile.PL PERL="$(PERL)" $(PERL_MM_OPT) && \
$(MAKE) all test pure_install || exit 1; \
echo "";
.PHONY: $(MODULE_BUILD_PROJECTS)
$(MODULE_BUILD_PROJECTS) :
@echo "=============== Making $@ =================="; \
echo ""; \
cd $(OBJROOT_PERL)/$@ && \
$(PERL) Build.PL $(PERL_MB_OPT) && \
$(PERL) Build build $(PERL_MB_OPT) && \
$(PERL) Build test $(PERL_MB_OPT) && \
$(PERL) Build install $(PERL_MB_OPT) || exit 1; \
echo "";