41 MODTYPE_PREFIX_DEFAULT = $(MODTYPE_PREFIX_SET:yes=$(POUND_SIGN)) |
41 MODTYPE_PREFIX_DEFAULT = $(MODTYPE_PREFIX_SET:yes=$(POUND_SIGN)) |
42 $(MODTYPE_PREFIX_DEFAULT) MODTYPE_PREFIX=$(X11_DIR) |
42 $(MODTYPE_PREFIX_DEFAULT) MODTYPE_PREFIX=$(X11_DIR) |
43 MODULE_PREFIX_DEFAULT = $(MODULE_PREFIX_SET:yes=$(POUND_SIGN)) |
43 MODULE_PREFIX_DEFAULT = $(MODULE_PREFIX_SET:yes=$(POUND_SIGN)) |
44 $(MODULE_PREFIX_DEFAULT) MODULE_PREFIX=$(MODTYPE_PREFIX) |
44 $(MODULE_PREFIX_DEFAULT) MODULE_PREFIX=$(MODTYPE_PREFIX) |
45 |
45 |
|
46 # Where to install documentation files |
|
47 MODTYPE_DOC_DIR_DEFAULT = $(MODTYPE_DOC_DIR_SET:yes=$(POUND_SIGN)) |
|
48 $(MODTYPE_DOC_DIR_DEFAULT) MODTYPE_DOC_DIR=$(MODULE_PREFIX)/share/doc/$(MODULE_NAME) |
|
49 MODULE_DOC_DIR_DEFAULT = $(MODULE_DOC_DIR_SET:yes=$(POUND_SIGN)) |
|
50 $(MODULE_DOC_DIR_DEFAULT) MODULE_DOC_DIR=$(MODTYPE_DOC_DIR) |
|
51 |
46 # Where to install pkgconfig files |
52 # Where to install pkgconfig files |
47 MODTYPE_PKGCONFIG_DIR_DEFAULT = $(MODTYPE_PKGCONFIG_DIR_SET:yes=$(POUND_SIGN)) |
53 MODTYPE_PKGCONFIG_DIR_DEFAULT = $(MODTYPE_PKGCONFIG_DIR_SET:yes=$(POUND_SIGN)) |
48 $(MODTYPE_PKGCONFIG_DIR_DEFAULT) MODTYPE_PKGCONFIG_DIR=$(PKGCONFIG_DIR) |
54 $(MODTYPE_PKGCONFIG_DIR_DEFAULT) MODTYPE_PKGCONFIG_DIR=$(PKGCONFIG_DIR) |
49 MODULE_PKGCONFIG_DIR_DEFAULT = $(MODULE_PKGCONFIG_DIR_SET:yes=$(POUND_SIGN)) |
55 MODULE_PKGCONFIG_DIR_DEFAULT = $(MODULE_PKGCONFIG_DIR_SET:yes=$(POUND_SIGN)) |
50 $(MODULE_PKGCONFIG_DIR_DEFAULT) MODULE_PKGCONFIG_DIR=$(MODTYPE_PKGCONFIG_DIR) |
56 $(MODULE_PKGCONFIG_DIR_DEFAULT) MODULE_PKGCONFIG_DIR=$(MODTYPE_PKGCONFIG_DIR) |
|
57 |
|
58 # Package files will be delivered in |
|
59 MODTYPE_PKGHIER_DEFAULT = $(MODTYPE_PKGHIER_SET:yes=$(POUND_SIGN)) |
|
60 $(MODTYPE_PKGHIER_DEFAULT) MODTYPE_PKGHIER=x11/$(MODTYPE) |
|
61 MODULE_PKGTAIL_DEFAULT = $(MODULE_PKGTAIL_SET:yes=$(POUND_SIGN)) |
|
62 $(MODULE_PKGTAIL_DEFAULT) MODULE_PKGTAIL_CMD=print $(MODULE_NAME) | \ |
|
63 tr '[:upper:]' '[:lower:]' |
|
64 $(MODULE_PKGTAIL_DEFAULT) MODULE_PKGTAIL=$(MODULE_PKGTAIL_CMD:sh) |
|
65 MODULE_PKGNAME_DEFAULT = $(MODULE_PKGNAME_SET:yes=$(POUND_SIGN)) |
|
66 $(MODULE_PKGNAME_DEFAULT) MODULE_PKGNAME=$(MODTYPE_PKGHIER)/$(MODULE_PKGTAIL) |
|
67 |
|
68 # Package manifest file |
|
69 PKG_SRC_DIR = $(TOP)/pkg |
|
70 PKG_MANIFEST_DIR = $(PKG_SRC_DIR)/manifests |
|
71 PKG_LICENSE_DIR = $(PKG_SRC_DIR)/license_files |
|
72 MODULE_PKG_MANIFEST_NAME_CMD = print $(MODULE_PKGNAME) | tr '/' '-' |
|
73 MODULE_PKG_MANIFEST_NAME = $(MODULE_PKG_MANIFEST_NAME_CMD:sh) |
|
74 MODULE_PKG_MANIFEST = $(PKG_MANIFEST_DIR)/$(MODULE_PKG_MANIFEST_NAME).mf |
|
75 |
|
76 # Package classification - must be a valid value recognized by pkg gui |
|
77 MODULE_PKGCLASS_DEFAULT = $(MODULE_PKGCLASS_SET:yes=$(POUND_SIGN)) |
|
78 $(MODULE_PKGCLASS_DEFAULT) MODULE_PKGCLASS=System/X11 |
51 |
79 |
52 # Directory created by unpacking source, if not set in module makefile |
80 # Directory created by unpacking source, if not set in module makefile |
53 SOURCE_DIRNAME_DEFAULT = $(SOURCE_DIRNAME_SET:yes=$(POUND_SIGN)) |
81 SOURCE_DIRNAME_DEFAULT = $(SOURCE_DIRNAME_SET:yes=$(POUND_SIGN)) |
54 $(SOURCE_DIRNAME_DEFAULT) SOURCE_DIRNAME=$(MODULE_NAME)-$(MODULE_VERSION) |
82 $(SOURCE_DIRNAME_DEFAULT) SOURCE_DIRNAME=$(MODULE_NAME)-$(MODULE_VERSION) |
55 |
83 |
568 $(PERL) -p $(UNINSTALLED_PC_OPS) $$pc.pc > \ |
597 $(PERL) -p $(UNINSTALLED_PC_OPS) $$pc.pc > \ |
569 $(PROTODIR)$(MODULE_PKGCONFIG_DIR)/$${pcu} ) ; \ |
598 $(PROTODIR)$(MODULE_PKGCONFIG_DIR)/$${pcu} ) ; \ |
570 done ; \ |
599 done ; \ |
571 fi |
600 fi |
572 |
601 |
|
602 # Add links if needed from /usr/X11/* to new locations in /usr/* |
|
603 X11_BINCOMPAT_DIR = $(PROTODIR)/usr/X11/bin |
|
604 X11_BINCOMPAT_LINKS = $(MODULE_X11_BINCOMPAT_LINKS:%=$(X11_BINCOMPAT_DIR)/%) |
|
605 X11_LIBCOMPAT_DIR = $(PROTODIR)/usr/X11/lib$(ARCHLIBSUBDIR) |
|
606 X11_LIBCOMPAT_LINKS = $(MODULE_X11_LIBCOMPAT_LINKS:%=$(X11_LIBCOMPAT_DIR)/%) |
|
607 |
|
608 $(X11_BINCOMPAT_DIR) $(X11_LIBCOMPAT_DIR): |
|
609 mkdir -p $@ |
|
610 |
|
611 $(X11_BINCOMPAT_LINKS): $(X11_BINCOMPAT_DIR) |
|
612 @rm -f $@ |
|
613 ln -s ../../bin/$(@F) $@ |
|
614 |
|
615 $(X11_LIBCOMPAT_LINKS): $(X11_LIBCOMPAT_DIR) |
|
616 @rm -f $@ |
|
617 @if [[ -z "$(ARCHLIBSUBDIR)" ]] ; then \ |
|
618 TARGETDIR=../../lib ; \ |
|
619 else \ |
|
620 TARGETDIR=../../../lib$(ARCHLIBSUBDIR) ; \ |
|
621 fi ; $(START_CMD_ECHO) ; \ |
|
622 ln -s $${TARGETDIR}/$(@F) $@ |
|
623 |
|
624 install_X11_compat_links: $(X11_BINCOMPAT_LINKS) $(X11_LIBCOMPAT_LINKS) |
|
625 |
573 # Set comments in ELF binaries to help identify versions/builds |
626 # Set comments in ELF binaries to help identify versions/builds |
574 ELF_COMMENTS = $(MODULE_NAME) $(MODULE_VERSION) |
627 ELF_COMMENTS = $(MODULE_NAME) $(MODULE_VERSION) |
575 ELF_COMMENTS += $(MODTYPE_ELF_COMMENTS)$(MODULE_ELF_COMMENTS) |
628 ELF_COMMENTS += $(MODTYPE_ELF_COMMENTS)$(MODULE_ELF_COMMENTS) |
576 |
629 |
577 $(BUILD_DEBUG:yes=) DEBUG_ELF_COMMENTS=(DEBUG) |
630 $(BUILD_DEBUG:yes=) DEBUG_ELF_COMMENTS=(DEBUG) |
580 |
633 |
581 set-elf-comments: $(BUILD_TARGETS:set-elf-comments=) |
634 set-elf-comments: $(BUILD_TARGETS:set-elf-comments=) |
582 $(TOP)/open-src/common/set-elf-comments.pl -B 'hg id' \ |
635 $(TOP)/open-src/common/set-elf-comments.pl -B 'hg id' \ |
583 -M '$(ELF_COMMENTS)' $(SOURCE_DIR) |
636 -M '$(ELF_COMMENTS)' $(SOURCE_DIR) |
584 |
637 |
|
638 # Help generate templates for package manifests |
|
639 DEFAULT_LICENSE=$(PKG_LICENSE_DIR)/cr_Oracle $(PKG_LICENSE_DIR)/lic_X11 |
|
640 |
|
641 MANIFEST_DEST=$(PWD)/tmp-proto-$(MACH) |
|
642 MANIFEST_TMP=$(PWD)/tmp.mf |
|
643 |
|
644 PKGFMT=/usr/bin/pkgfmt |
|
645 |
|
646 MANIFEST_TARGETS_DEFAULT = $(MANIFEST_TARGETS_SET:yes=$(POUND_SIGN)) |
|
647 $(MANIFEST_TARGETS_DEFAULT) MANIFEST_TARGETS=$(MODULE_PKG_MANIFEST) |
|
648 |
|
649 manifest: $(MANIFEST_TARGETS) |
|
650 |
|
651 manifest-per-type: $(MODULE_PKG_MANIFEST) |
|
652 |
|
653 MANIFEST_INSTALL_RULES = PROTOTOOLSDIR="$(PROTODIR)" \ |
|
654 PROTODIR="$(MANIFEST_DEST)" |
|
655 |
|
656 $(MANIFEST_DEST): install |
|
657 /usr/xpg4/bin/make $(MAKEFLAGS) install $(MANIFEST_INSTALL_RULES) \ |
|
658 || (rm -rf $(MANIFEST_DEST) ; exit 1) |
|
659 |
|
660 $(MANIFEST_TMP): $(MANIFEST_DEST) $(PKGFMT) |
|
661 $(PERL) $(TOP)/open-src/common/pkg-manifest-generate.pl \ |
|
662 input_manifest='$(MODULE_PKG_MANIFEST)' \ |
|
663 manifest_license='$(PKG_LICENSE_DIR)/cr_Oracle' \ |
|
664 manifest_license='$(PKG_LICENSE_DIR)/lic_X11' \ |
|
665 pkg_name='$(MODULE_PKGNAME)' \ |
|
666 source_dir='$(SOURCE_DIRNAME)' \ |
|
667 arch_64='$(ARCH64)' subdir_64='$(SUBDIR64)' \ |
|
668 proto_area='$(MANIFEST_DEST)' \ |
|
669 pkgfmt='$(PKGFMT)' \ |
|
670 > $(MANIFEST_TMP) |
|
671 -rm -rf $(MANIFEST_DEST) |
|
672 |
|
673 $(MODULE_PKG_MANIFEST): $(MANIFEST_TMP) $(PKG_MANIFEST_DIR) |
|
674 mv -f $(MANIFEST_TMP) $@ |
|
675 |
|
676 $(PKG_MANIFEST_DIR): |
|
677 mkdir -p $(PKG_MANIFEST_DIR) |
585 |
678 |
586 ### Other tools/dependencies needed to build |
679 ### Other tools/dependencies needed to build |
587 |
680 |
588 # Some modules (such as FreeType 2) require GNU make |
681 # Some modules (such as FreeType 2) require GNU make |
589 $(GNUMAKE): |
682 $(GNUMAKE): |
630 >> new/$$p ; \ |
723 >> new/$$p ; \ |
631 CUR_LIST="$${CUR_LIST} new/$$p" ; \ |
724 CUR_LIST="$${CUR_LIST} new/$$p" ; \ |
632 done |
725 done |
633 rm -rf tmp-regen |
726 rm -rf tmp-regen |
634 |
727 |
635 # Derive directory name relative to open-src |
|
636 THIS_MODULE:sh=echo ${PWD} | sed 's|.*/open-src/||' |
|
637 |
|
638 # Allows running "make list-patches" to get a list of all patches we |
728 # Allows running "make list-patches" to get a list of all patches we |
639 # currently apply in our builds |
729 # currently apply in our builds |
640 list-patches: |
730 list-patches: |
641 @if [[ "$(SOURCE_PATCHES)" != "" ]] ; then \ |
731 @if [[ "$(SOURCE_PATCHES)" != "" ]] ; then \ |
|
732 THIS_MODULE="$${PWD##*/open-src/}" ; \ |
642 for p in $(SOURCE_PATCHES) x ; do \ |
733 for p in $(SOURCE_PATCHES) x ; do \ |
643 if [[ "$$p" != "x" ]] ; then \ |
734 if [[ "$$p" != "x" ]] ; then \ |
644 print "$(THIS_MODULE)/$${p%,*}" ; \ |
735 print "$${THIS_MODULE}/$${p%,*}" ; \ |
645 fi ; \ |
736 fi ; \ |
646 done ; \ |
737 done ; \ |
647 fi |
738 fi |
648 |
739 |
649 ### Licensing files |
740 ### Metadata used in packaging |
|
741 |
|
742 MODULE_PKG_METADATA_DIR = $(PROTOMETA)/$(MODULE_PKG_MANIFEST_NAME) |
|
743 |
|
744 $(MODULE_PKG_METADATA_DIR): |
|
745 mkdir -p $@ |
|
746 |
|
747 METADATA_TARGETS = $(MODULE_PKG_METADATA_DIR) |
|
748 |
|
749 # Base URL for ARC cases used in opensolaris.arc_url metadata |
|
750 # Set to '$(ARC_URL)' here, resolved by pkgmogrify to the URL |
|
751 # set in pkg/Makefile during the package building process |
|
752 ARC_URL_BASE = $$(ARC_URL) |
|
753 |
|
754 # Metadata about upstream |
|
755 UPSTREAM_NONE = NONE |
|
756 UPSTREAM_NONE_SET = yes |
|
757 |
|
758 UPSTREAM_xorg = X.Org Foundation |
|
759 UPSTREAM_URL_xorg = http://www.x.org/ |
|
760 |
|
761 UPSTREAM_DEFAULT = $(UPSTREAM_SET:yes=$(POUND_SIGN)) |
|
762 $(UPSTREAM_DEFAULT) UPSTREAM = $(UPSTREAM_$(SOURCE_TARBALL_NAME)) |
|
763 $(UPSTREAM_DEFAULT) UPSTREAM_SET_YET = $(UPSTREAM_$(SOURCE_TARBALL_NAME)_SET) |
|
764 $(UPSTREAM_DEFAULT) UPSTREAM_NOTFOUND = $(UPSTREAM_SET_YET:yes=$(POUND_SIGN)) |
|
765 $(UPSTREAM_NOTFOUND) $(SOURCE_URL_DEFAULT) UPSTREAM = $(UPSTREAM_xorg) |
|
766 $(UPSTREAM_NOTFOUND) $(SOURCE_URL_DEFAULT) UPSTREAM_URL = $(UPSTREAM_URL_xorg) |
|
767 |
|
768 ## Attributes files |
|
769 |
|
770 ATTRDATA_FILE_NAME = attributes_$(MODULE_NAME).mf |
|
771 ATTRDATA_FILE = $(MODULE_PKG_METADATA_DIR)/$(ATTRDATA_FILE_NAME) |
|
772 |
|
773 METADATA_TARGETS += $(ATTRDATA_FILE) |
|
774 |
|
775 # $${MODVERS//\.+(0)(\d)/.\2} - ksh93 pattern substitution to remove leading |
|
776 # 0's from package version number components, to meet pkg(5) fmri requirements |
|
777 %/$(ATTRDATA_FILE_NAME): % |
|
778 -rm -f $@ |
|
779 @if [[ "$(SOURCE_TARBALL_NAME)" != "NONE" ]] ; then \ |
|
780 $(START_CMD_ECHO) ; \ |
|
781 print 'set name=info.source_url value="$(SOURCE_URL)"' >> $@ ; \ |
|
782 fi |
|
783 @if [[ "$(UPSTREAM)" != "NONE" ]] ; then \ |
|
784 $(START_CMD_ECHO) ; \ |
|
785 print 'set name=info.upstream value="$(UPSTREAM)"' >> $@ ; \ |
|
786 print 'set name=info.upstream_url value="$(UPSTREAM_URL)"' >> $@ ; \ |
|
787 fi |
|
788 @if [[ ! -z "$(MODULE_ARC_CASES)" ]] ; then \ |
|
789 $(START_CMD_ECHO) ; \ |
|
790 print 'set name=opensolaris.arc_url' \ |
|
791 '$(MODULE_ARC_CASES:%=value="$(ARC_URL_BASE)%/")' >> $@ ; \ |
|
792 fi |
|
793 @if [[ ! -z "$(MODULE_PKGCLASS)" ]] ; then \ |
|
794 $(START_CMD_ECHO) ; \ |
|
795 print 'set name=info.classification' \ |
|
796 'value="org.opensolaris.category.2008:$(MODULE_PKGCLASS)"' \ |
|
797 >> $@ ; \ |
|
798 fi |
|
799 @ MODVERS="$(MODULE_VERSION)" ; $(START_CMD_ECHO) ; \ |
|
800 printf '<transform set -> edit value __version:$(MODULE_NAME)__ %s>\n' \ |
|
801 "$${MODVERS//\.+(0)(\d)/.\2}" >> $@ |
|
802 $(MODTYPE_ATTRDATA_COMMANDS) |
|
803 $(MODULE_ATTRDATA_COMMANDS) |
|
804 |
|
805 ## License files |
650 |
806 |
651 # Default license file name is COPYING (X.Org & GNU autoconf default) |
807 # Default license file name is COPYING (X.Org & GNU autoconf default) |
652 # For other license file names, set LICENSE_FILE to the file name |
808 # For other license file names, set LICENSE_FILE to the file name |
653 # and set LICENSE_FILE_SET=yes |
809 # and set LICENSE_FILE_SET=yes |
654 # A file in the same directory as the Makefile takes precedence |
810 # A file in the same directory as the Makefile takes precedence |
655 # over one that is delivered in the package. |
811 # over one that is delivered in the package. |
656 LICENSE_FILE_DEFAULT = $(LICENSE_FILE_SET:yes=$(POUND_SIGN)) |
812 LICENSE_FILE_DEFAULT = $(LICENSE_FILE_SET:yes=$(POUND_SIGN)) |
657 $(LICENSE_FILE_DEFAULT) LICENSE_FILE=COPYING |
813 $(LICENSE_FILE_DEFAULT) LICENSE_FILE=COPYING |
658 |
814 |
659 MODULE_LICENSE_DESTDIR = $(LICENSE_DEST)/$(THIS_MODULE) |
815 LICENSE_FILE_NAME = license_$(MODULE_NAME) |
660 |
816 LICENSE_FILE_DEST = $(MODULE_PKG_METADATA_DIR)/$(LICENSE_FILE_NAME) |
661 install_license: $(MODULE_LICENSE_DESTDIR)/COPYING |
817 LICENSE_ATTR_FILE = $(MODULE_PKG_METADATA_DIR)/$(LICENSE_FILE_NAME).mf |
662 |
818 |
663 $(MODULE_LICENSE_DESTDIR): |
819 MODULE_LICENSE_DEFAULT = $(MODULE_LICENSE_SET:yes=$(POUND_SIGN)) |
664 mkdir -p $@ |
820 $(MODULE_LICENSE_DEFAULT) MODULE_LICENSE = MIT License ($(MODULE_NAME)) |
665 |
821 |
666 $(MODULE_LICENSE_DESTDIR)/COPYING: $(MODULE_LICENSE_DESTDIR) $(SOURCE_TARGETS) |
822 install_license: $(LICENSE_FILE_DEST) |
|
823 METADATA_TARGETS += $(LICENSE_FILE_DEST) |
|
824 |
|
825 %/$(LICENSE_FILE_NAME): % $(SOURCE_TARGETS) |
667 @ $(START_CMD_ECHO) ; \ |
826 @ $(START_CMD_ECHO) ; \ |
668 if [[ -f $(LICENSE_FILE) ]] ; then \ |
827 if [[ -f "$(LICENSE_FILE)" ]] ; then \ |
669 LICENSE_TO_COPY="$(LICENSE_FILE)" ; \ |
828 LICENSE_TO_COPY="$(LICENSE_FILE)" ; \ |
670 elif [[ -f $(SOURCE_DIR)/$(LICENSE_FILE) ]] ; then \ |
829 elif [[ -f "$(SOURCE_DIR)/$(LICENSE_FILE)" ]] ; then \ |
671 LICENSE_TO_COPY="$(SOURCE_DIR)/$(LICENSE_FILE)" ; \ |
830 LICENSE_TO_COPY="$(SOURCE_DIR)/$(LICENSE_FILE)" ; \ |
672 fi ; \ |
831 fi ; \ |
673 if [[ "$${LICENSE_TO_COPY}" != "" ]] ; then \ |
832 if [[ "$${LICENSE_TO_COPY}" != "" ]] ; then \ |
674 rm -f $@ ; \ |
833 rm -f $@ ; \ |
675 cp -pf $${LICENSE_TO_COPY} $@ ; \ |
834 cp -pf $${LICENSE_TO_COPY} $@ ; \ |
676 fi |
835 print 'license license_$(MODULE_NAME) license="$(MODULE_LICENSE)"' > [email protected] ; \ |
|
836 fi |
|
837 |
|
838 install_metadata: $(METADATA_TARGETS) |