84 # the localizable publisher. |
84 # the localizable publisher. |
85 CONSOLIDATION = userland |
85 CONSOLIDATION = userland |
86 PUBLISHER ?= nightly |
86 PUBLISHER ?= nightly |
87 PUBLISHER_LOCALIZABLE ?= $(CONSOLIDATION)-localizable |
87 PUBLISHER_LOCALIZABLE ?= $(CONSOLIDATION)-localizable |
88 |
88 |
|
89 # Defines $(space) as a single blank space, so we can use it to convert |
|
90 # space-separated paths to colon-separated paths in variables with |
|
91 # $(subst $(space),:,$(strip $(SPATHS))) |
|
92 empty := |
|
93 space := $(empty) $(empty) |
|
94 |
89 ROOT = / |
95 ROOT = / |
90 |
96 |
91 # The changset and external source repo used in building the packages. |
97 # The changset and external source repo used in building the packages. |
92 CONSOLIDATION_CHANGESET=$(shell hg identify -i) |
98 CONSOLIDATION_CHANGESET=$(shell hg identify -i) |
93 CONSOLIDATION_REPOSITORY_URL=https://hg.java.net/hg/solaris-userland~gate |
99 CONSOLIDATION_REPOSITORY_URL=https://hg.java.net/hg/solaris-userland~gate |
110 endif |
116 endif |
111 |
117 |
112 include $(WS_MAKE_RULES)/ips-buildinfo.mk |
118 include $(WS_MAKE_RULES)/ips-buildinfo.mk |
113 |
119 |
114 COMPILER ?= studio |
120 COMPILER ?= studio |
115 BITS = 32 |
121 BITS ?= 32 |
|
122 |
|
123 # The values of BITS changes during the build process for components that |
|
124 # are built 32-bit and 64-bit. This macro makes it possible to determine |
|
125 # which components are only built 64-bit and allow other make-rules files |
|
126 # to adjust accordingly. |
|
127 INITIAL_BITS= $(BITS) |
116 |
128 |
117 # The default version should go last. |
129 # The default version should go last. |
118 PYTHON_VERSION = 2.7 |
130 PYTHON_VERSION = 2.7 |
119 PYTHON2_VERSIONS = 2.7 |
131 PYTHON2_VERSIONS = 2.7 |
120 PYTHON3_VERSIONS = 3.4 3.5 |
132 PYTHON3_VERSIONS = 3.4 3.5 |
138 ETCDIR = /etc |
150 ETCDIR = /etc |
139 USRDIR = /usr |
151 USRDIR = /usr |
140 BINDIR = /bin |
152 BINDIR = /bin |
141 SBINDIR = /sbin |
153 SBINDIR = /sbin |
142 LIBDIR = /lib |
154 LIBDIR = /lib |
|
155 VARDIR = /var |
143 USRBINDIR = $(USRDIR)/bin |
156 USRBINDIR = $(USRDIR)/bin |
144 USRBINDIR64 = $(USRDIR)/bin/$(MACH64) |
157 USRBINDIR64 = $(USRDIR)/bin/$(MACH64) |
145 USRSBINDIR = $(USRDIR)/sbin |
158 USRSBINDIR = $(USRDIR)/sbin |
146 USRLIBDIR = $(USRDIR)/lib |
159 USRLIBDIR = $(USRDIR)/lib |
147 USRSHAREDIR = $(USRDIR)/share |
160 USRSHAREDIR = $(USRDIR)/share |
148 USRINCDIR = $(USRDIR)/include |
161 USRINCDIR = $(USRDIR)/include |
149 USRSHARELOCALEDIR = $(USRSHAREDIR)/locale |
162 USRSHARELOCALEDIR = $(USRSHAREDIR)/locale |
150 USRSHAREMANDIR = $(USRSHAREDIR)/man |
163 USRSHAREMANDIR = $(USRSHAREDIR)/man |
151 USRSHAREDOCDIR = $(USRSHAREDIR)/doc |
164 USRSHAREDOCDIR = $(USRSHAREDIR)/doc |
|
165 USRSHAREFONTSDIR = $(USRSHAREDIR)/fonts |
|
166 USRSHARETTFONTSDIR = $(USRSHAREFONTSDIR)/TrueType |
152 USRSHARELIBDIR = $(USRSHAREDIR)/lib |
167 USRSHARELIBDIR = $(USRSHAREDIR)/lib |
153 USRSHAREMAN1DIR = $(USRSHAREMANDIR)/man1 |
168 USRSHAREMAN1DIR = $(USRSHAREMANDIR)/man1 |
154 USRSHAREMAN1MDIR = $(USRSHAREMANDIR)/man1m |
169 USRSHAREMAN1MDIR = $(USRSHAREMANDIR)/man1m |
155 USRSHAREMAN3DIR = $(USRSHAREMANDIR)/man3 |
170 USRSHAREMAN3DIR = $(USRSHAREMANDIR)/man3 |
156 USRSHAREMAN4DIR = $(USRSHAREMANDIR)/man4 |
171 USRSHAREMAN4DIR = $(USRSHAREMANDIR)/man4 |
159 PROTOBINDIR = $(PROTO_DIR)/$(BINDIR) |
174 PROTOBINDIR = $(PROTO_DIR)/$(BINDIR) |
160 PROTOETCDIR = $(PROTO_DIR)/$(ETCDIR) |
175 PROTOETCDIR = $(PROTO_DIR)/$(ETCDIR) |
161 PROTOETCSECDIR = $(PROTO_DIR)/$(ETCDIR)/security |
176 PROTOETCSECDIR = $(PROTO_DIR)/$(ETCDIR)/security |
162 PROTOUSRDIR = $(PROTO_DIR)/$(USRDIR) |
177 PROTOUSRDIR = $(PROTO_DIR)/$(USRDIR) |
163 PROTOLIBDIR = $(PROTO_DIR)/$(LIBDIR) |
178 PROTOLIBDIR = $(PROTO_DIR)/$(LIBDIR) |
|
179 PROTOSVCMANIFESTDIR = $(PROTOLIBDIR)/svc/manifest |
|
180 PROTOSVCMETHODDIR = $(PROTOLIBDIR)/svc/method |
164 PROTOUSRBINDIR = $(PROTO_DIR)/$(USRBINDIR) |
181 PROTOUSRBINDIR = $(PROTO_DIR)/$(USRBINDIR) |
165 PROTOUSRBINDIR64 = $(PROTO_DIR)/$(USRBINDIR64) |
182 PROTOUSRBINDIR64 = $(PROTO_DIR)/$(USRBINDIR64) |
166 PROTOUSRSBINDIR = $(PROTO_DIR)/$(USRSBINDIR) |
183 PROTOUSRSBINDIR = $(PROTO_DIR)/$(USRSBINDIR) |
167 PROTOUSRLIBDIR = $(PROTO_DIR)/$(USRLIBDIR) |
184 PROTOUSRLIBDIR = $(PROTO_DIR)/$(USRLIBDIR) |
168 PROTOUSRLIBDIR64 = $(PROTO_DIR)/$(USRLIBDIR64) |
185 PROTOUSRLIBDIR64 = $(PROTO_DIR)/$(USRLIBDIR64) |
|
186 PROTOPKGCONFIGDIR = $(PROTOUSRLIBDIR)/pkgconfig |
|
187 PROTOPKGCONFIGDIR64 = $(PROTOUSRLIBDIR64)/pkgconfig |
169 PROTOUSRINCDIR = $(PROTO_DIR)/$(USRINCDIR) |
188 PROTOUSRINCDIR = $(PROTO_DIR)/$(USRINCDIR) |
170 PROTOUSRSHAREDIR = $(PROTO_DIR)/$(USRSHAREDIR) |
189 PROTOUSRSHAREDIR = $(PROTO_DIR)/$(USRSHAREDIR) |
171 PROTOUSRSHARELIBDIR = $(PROTO_DIR)/$(USRSHARELIBDIR) |
190 PROTOUSRSHARELIBDIR = $(PROTO_DIR)/$(USRSHARELIBDIR) |
|
191 PROTOUSRSHAREDOCDIR = $(PROTO_DIR)/$(USRSHAREDOCDIR) |
|
192 PROTOUSRSHAREINFODIR = $(PROTOUSRSHAREDIR)/info |
172 PROTOUSRSHAREMANDIR = $(PROTO_DIR)/$(USRSHAREMANDIR) |
193 PROTOUSRSHAREMANDIR = $(PROTO_DIR)/$(USRSHAREMANDIR) |
173 PROTOUSRSHAREDOCDIR = $(PROTO_DIR)/$(USRSHAREDOCDIR) |
|
174 PROTOUSRSHAREMAN1DIR = $(PROTO_DIR)/$(USRSHAREMAN1DIR) |
194 PROTOUSRSHAREMAN1DIR = $(PROTO_DIR)/$(USRSHAREMAN1DIR) |
175 PROTOUSRSHAREMAN1MDIR = $(PROTO_DIR)/$(USRSHAREMAN1MDIR) |
195 PROTOUSRSHAREMAN1MDIR = $(PROTO_DIR)/$(USRSHAREMAN1MDIR) |
176 PROTOUSRSHAREMAN3DIR = $(PROTO_DIR)/$(USRSHAREMAN3DIR) |
196 PROTOUSRSHAREMAN3DIR = $(PROTO_DIR)/$(USRSHAREMAN3DIR) |
177 PROTOUSRSHAREMAN4DIR = $(PROTO_DIR)/$(USRSHAREMAN4DIR) |
197 PROTOUSRSHAREMAN4DIR = $(PROTO_DIR)/$(USRSHAREMAN4DIR) |
178 PROTOUSRSHAREMAN5DIR = $(PROTO_DIR)/$(USRSHAREMAN5DIR) |
198 PROTOUSRSHAREMAN5DIR = $(PROTO_DIR)/$(USRSHAREMAN5DIR) |
499 |
519 |
500 USRBIN.32 = /usr/bin |
520 USRBIN.32 = /usr/bin |
501 USRBIN.64 = /usr/bin/$(MACH64) |
521 USRBIN.64 = /usr/bin/$(MACH64) |
502 USRBIN = $(USRBIN.$(BITS)) |
522 USRBIN = $(USRBIN.$(BITS)) |
503 |
523 |
|
524 USRLIB.32 = $(USRLIBDIR) |
|
525 USRLIB.64 = $(USRLIBDIR64) |
|
526 USRLIB = $(USRLIB.$(BITS)) |
|
527 |
504 PYTHON.2.7.32 = $(USRBIN.32)/python2.7 |
528 PYTHON.2.7.32 = $(USRBIN.32)/python2.7 |
505 PYTHON.2.7.64 = $(USRBIN.64)/python2.7 |
529 PYTHON.2.7.64 = $(USRBIN.64)/python2.7 |
506 PYTHON.2.7 = $(USRBIN)/python2.7 |
530 PYTHON.2.7 = $(USRBIN)/python2.7 |
507 |
531 |
508 # Although we build Python 3 64-bit only, the BUILD_NO_ARCH macro is written |
532 # Although we build Python 3 64-bit only, the BUILD_NO_ARCH macro is written |
605 TEE = /usr/bin/tee |
629 TEE = /usr/bin/tee |
606 |
630 |
607 INS.dir= $(INSTALL) -d $@ |
631 INS.dir= $(INSTALL) -d $@ |
608 INS.file= $(INSTALL) -m 444 $< $(@D) |
632 INS.file= $(INSTALL) -m 444 $< $(@D) |
609 |
633 |
|
634 # |
|
635 # To simplify adding directories to PKG_CONFIG_PATH, since += adds spaces, not : |
|
636 # use PKG_CONFIG_PATHS += ... and the following will convert to the : form |
|
637 # |
610 PKG_CONFIG_PATH.32 = /usr/lib/pkgconfig |
638 PKG_CONFIG_PATH.32 = /usr/lib/pkgconfig |
611 PKG_CONFIG_PATH.64 = /usr/lib/$(MACH64)/pkgconfig |
639 PKG_CONFIG_PATH.64 = /usr/lib/$(MACH64)/pkgconfig |
612 PKG_CONFIG_PATH = $(PKG_CONFIG_PATH.$(BITS)) |
640 PKG_CONFIG_DEFAULT = $(PKG_CONFIG_PATH.$(BITS)) |
613 |
641 PKG_CONFIG_PATH = $(subst $(space),:,$(strip \ |
|
642 $(PKG_CONFIG_PATHS) $(PKG_CONFIG_DEFAULT))) |
614 |
643 |
615 # |
644 # |
616 # C preprocessor flag sets to ease feature selection. Add the required |
645 # C preprocessor flag sets to ease feature selection. Add the required |
617 # feature to your Makefile with CPPFLAGS += $(FEATURE_MACRO) and add to |
646 # feature to your Makefile with CPPFLAGS += $(FEATURE_MACRO) and add to |
618 # the component build with CONFIGURE_OPTIONS += CPPFLAGS="$(CPPFLAGS)" or |
647 # the component build with CONFIGURE_OPTIONS += CPPFLAGS="$(CPPFLAGS)" or |
666 studio_XBITS.i386.64 = -xchip=generic -Ui386 -U__i386 |
695 studio_XBITS.i386.64 = -xchip=generic -Ui386 -U__i386 |
667 studio_XBITS = $(studio_XBITS.$(MACH).$(BITS)) |
696 studio_XBITS = $(studio_XBITS.$(MACH).$(BITS)) |
668 |
697 |
669 # Turn on recognition of supported C99 language features and enable the 1999 C |
698 # Turn on recognition of supported C99 language features and enable the 1999 C |
670 # standard library semantics of routines that appear in both the 1990 and |
699 # standard library semantics of routines that appear in both the 1990 and |
671 # 1999 C standard. To use set studio_C99MODE=$(studio_99_ENABLE) in your |
700 # 1999 C standard. To use set studio_C99MODE=$(studio_C99_ENABLE) in your |
672 # component Makefile. |
701 # component Makefile. |
673 studio_C99_ENABLE = -xc99=all |
702 studio_C99_ENABLE = -xc99=all |
674 |
703 |
675 # Turn off recognition of C99 language features, and do not enable the 1999 C |
704 # Turn off recognition of C99 language features, and do not enable the 1999 C |
676 # standard library semantics of routines that appeared in both the 1990 and |
705 # standard library semantics of routines that appeared in both the 1990 and |
677 # 1999 C standard. To use set studio_C99MODE=$(studio_99_DISABLE) in your |
706 # 1999 C standard. To use set studio_C99MODE=$(studio_C99_DISABLE) in your |
678 # component Makefile. |
707 # component Makefile. |
679 studio_C99_DISABLE = -xc99=none |
708 studio_C99_DISABLE = -xc99=none |
680 |
709 |
681 # Use the compiler default 'xc99=all,no_lib' |
710 # Use the compiler default 'xc99=all,no_lib' |
682 studio_C99MODE = |
711 studio_C99MODE = |
694 # Allow zero-sized struct/union declarations and void functions with return |
723 # Allow zero-sized struct/union declarations and void functions with return |
695 # statements. |
724 # statements. |
696 studio_FEATURES_EXTENSIONS = -features=extensions |
725 studio_FEATURES_EXTENSIONS = -features=extensions |
697 |
726 |
698 # Control the Studio optimization level. |
727 # Control the Studio optimization level. |
699 studio_OPT.sparc.32 = -xO4 |
728 studio_OPT.sparc.32 ?= -xO4 |
700 studio_OPT.sparc.64 = -xO4 |
729 studio_OPT.sparc.64 ?= -xO4 |
701 studio_OPT.i386.32 = -xO4 |
730 studio_OPT.i386.32 ?= -xO4 |
702 studio_OPT.i386.64 = -xO4 |
731 studio_OPT.i386.64 ?= -xO4 |
703 studio_OPT = $(studio_OPT.$(MACH).$(BITS)) |
732 studio_OPT ?= $(studio_OPT.$(MACH).$(BITS)) |
704 |
733 |
705 # Studio PIC code generation. Use CC_PIC instead to select PIC code generation. |
734 # Studio PIC code generation. Use CC_PIC instead to select PIC code generation. |
706 studio_PIC = -KPIC -DPIC |
735 studio_PIC = -KPIC -DPIC |
707 |
736 |
708 # The Sun Studio 11 compiler has changed the behaviour of integer |
737 # The Sun Studio 11 compiler has changed the behaviour of integer |
756 # configure environment. |
785 # configure environment. |
757 CFLAGS.studio += $(studio_OPT) $(studio_XBITS) $(studio_XREGS) \ |
786 CFLAGS.studio += $(studio_OPT) $(studio_XBITS) $(studio_XREGS) \ |
758 $(studio_IROPTS) $(studio_C99MODE) $(studio_ALIGN) \ |
787 $(studio_IROPTS) $(studio_C99MODE) $(studio_ALIGN) \ |
759 $(studio_MT) |
788 $(studio_MT) |
760 |
789 |
|
790 # Default Studio C++ compiler flags. Add the required feature to your Makefile |
|
791 # with CXXFLAGS += $(FEATURE_MACRO) and add to the component build with |
|
792 # CONFIGURE_OPTIONS += CXXFLAGS="$(CXXFLAGS)" or similiar. In most cases, it |
|
793 # should not be necessary to add CXXFLAGS to any environment other than the |
|
794 # configure environment. |
|
795 CXXFLAGS.studio += $(studio_OPT) $(studio_XBITS) $(studio_XREGS) \ |
|
796 $(studio_IROPTS) $(studio_ALIGN) |
|
797 |
761 # |
798 # |
762 # GNU C compiler flag sets to ease feature selection. Add the required |
799 # GNU C compiler flag sets to ease feature selection. Add the required |
763 # feature to your Makefile with CFLAGS += $(FEATURE_MACRO) and add to the |
800 # feature to your Makefile with CFLAGS += $(FEATURE_MACRO) and add to the |
764 # component build with CONFIGURE_OPTIONS += CFLAGS="$(CFLAGS)" or similiar. |
801 # component build with CONFIGURE_OPTIONS += CFLAGS="$(CFLAGS)" or similiar. |
765 # |
802 # |
766 |
803 |
767 # GCC Compiler optimization flag |
804 # GCC Compiler optimization flag |
768 gcc_OPT = -O3 |
805 gcc_OPT.sparc.32 ?= -O3 |
|
806 gcc_OPT.sparc.64 ?= -O3 |
|
807 gcc_OPT.i386.32 ?= -O3 |
|
808 gcc_OPT.i386.64 ?= -O3 |
|
809 gcc_OPT ?= $(gcc_OPT.$(MACH).$(BITS)) |
769 |
810 |
770 # GCC PIC code generation. Use CC_PIC instead to select PIC code generation. |
811 # GCC PIC code generation. Use CC_PIC instead to select PIC code generation. |
771 gcc_PIC = -fPIC -DPIC |
812 gcc_PIC = -fPIC -DPIC |
772 |
813 |
773 # Generic macro for PIC code generation. Use this macro instead of the |
814 # Generic macro for PIC code generation. Use this macro instead of the |
774 # compiler specific variant. |
815 # compiler-specific variant. |
775 CC_PIC = $($(COMPILER)_PIC) |
816 CC_PIC = $($(COMPILER)_PIC) |
776 |
817 |
777 |
818 |
778 # Default GNU C compiler flags. Add the required feature to your Makefile |
819 # Default GNU C compiler flags. Add the required feature to your Makefile |
779 # with CFLAGS += $(FEATURE_MACRO) and add to the component build with |
820 # with CFLAGS += $(FEATURE_MACRO) and add to the component build with |
783 CFLAGS.gcc += $(gcc_OPT) |
824 CFLAGS.gcc += $(gcc_OPT) |
784 CFLAGS.gcc += $(gcc_XREGS) |
825 CFLAGS.gcc += $(gcc_XREGS) |
785 CFLAGS.gcc3 += $(gcc_OPT) |
826 CFLAGS.gcc3 += $(gcc_OPT) |
786 CFLAGS.gcc3 += $(gcc_XREGS) |
827 CFLAGS.gcc3 += $(gcc_XREGS) |
787 |
828 |
|
829 # Default GNU C++ compiler flags. Add the required feature to your Makefile |
|
830 # with CXXFLAGS += $(FEATURE_MACRO) and add to the component build with |
|
831 # CONFIGURE_OPTIONS += CXXFLAGS="$(CXXFLAGS)" or similiar. In most cases, it |
|
832 # should not be necessary to add CXXFLAGS to any environment other than the |
|
833 # configure environment. |
|
834 CXXFLAGS.gcc += $(gcc_OPT) |
|
835 CXXFLAGS.gcc += $(gcc_XREGS) |
|
836 CXXFLAGS.gcc3 += $(gcc_OPT) |
|
837 CXXFLAGS.gcc3 += $(gcc_XREGS) |
788 |
838 |
789 # Build 32 or 64 bit objects. |
839 # Build 32 or 64 bit objects. |
790 CFLAGS += $(CC_BITS) |
840 CFLAGS += $(CC_BITS) |
791 |
841 |
792 # Add compiler specific 'default' features |
842 # Add compiler-specific 'default' features |
793 CFLAGS += $(CFLAGS.$(COMPILER)) |
843 CFLAGS += $(CFLAGS.$(COMPILER)) |
794 |
844 CFLAGS += $(CFLAGS.$(COMPILER).$(BITS)) |
795 |
845 |
796 # Studio C++ requires -norunpath to avoid adding its location into the RUNPATH |
846 # Studio C++ requires -norunpath to avoid adding its location into the RUNPATH |
797 # to C++ applications. |
847 # to C++ applications. |
798 studio_NORUNPATH = -norunpath |
848 studio_NORUNPATH = -norunpath |
799 |
849 |
819 # linker flags. We never want the Studio location added to the RUNPATH. |
869 # linker flags. We never want the Studio location added to the RUNPATH. |
820 CXXFLAGS += $($(COMPILER)_NORUNPATH) |
870 CXXFLAGS += $($(COMPILER)_NORUNPATH) |
821 |
871 |
822 # Build 32 or 64 bit objects in C++ as well. |
872 # Build 32 or 64 bit objects in C++ as well. |
823 CXXFLAGS += $(CC_BITS) |
873 CXXFLAGS += $(CC_BITS) |
|
874 |
|
875 # Add compiler-specific 'default' features |
|
876 CXXFLAGS += $(CXXFLAGS.$(COMPILER)) |
|
877 CXXFLAGS += $(CXXFLAGS.$(COMPILER).$(BITS)) |
824 |
878 |
825 # |
879 # |
826 # Solaris linker flag sets to ease feature selection. Add the required |
880 # Solaris linker flag sets to ease feature selection. Add the required |
827 # feature to your Makefile with LDFLAGS += $(FEATURE_MACRO) and add to the |
881 # feature to your Makefile with LDFLAGS += $(FEATURE_MACRO) and add to the |
828 # component build with CONFIGURE_OPTIONS += LDFLAGS="$(LDFLAGS)" or similiar. |
882 # component build with CONFIGURE_OPTIONS += LDFLAGS="$(LDFLAGS)" or similiar. |