20 |
20 |
21 # |
21 # |
22 # Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved. |
22 # Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved. |
23 # |
23 # |
24 BUILD_BITS= 64_and_32 |
24 BUILD_BITS= 64_and_32 |
|
25 COMPILER=gcc |
25 include ../../make-rules/shared-macros.mk |
26 include ../../make-rules/shared-macros.mk |
26 |
27 |
27 PATH=$(dir $(CC)):$(USRBINDIR):$(GNUBIN) |
28 PATH=$(dir $(CC)):$(USRBINDIR):$(GNUBIN) |
28 |
29 |
29 COMPONENT_NAME= gnump |
30 COMPONENT_NAME= gmp |
30 COMPONENT_VERSION= 4.3.2 |
31 COMPONENT_VERSION= 6.1.2 |
31 COMPONENT_PROJECT_URL= http://gmplib.org/ |
32 COMPONENT_PROJECT_URL= http://gmplib.org/ |
32 COMPONENT_SRC_NAME= gmp |
33 COMPONENT_ARCHIVE= $(COMPONENT_NAME)-$(COMPONENT_VERSION).tar.xz |
33 COMPONENT_ARCHIVE_HASH= \ |
34 COMPONENT_ARCHIVE_HASH= \ |
34 sha256:7be3ad1641b99b17f6a8be6a976f1f954e997c41e919ad7e0c418fe848c13c97 |
35 sha256:87b565e89a9a684fe4ebeeddb8399dce2599f9c9049854ca8c0dfbdea0e21912 |
35 COMPONENT_ARCHIVE_URL= http://ftp.gnu.org/gnu/gmp/$(COMPONENT_ARCHIVE) |
36 COMPONENT_ARCHIVE_URL= https://gmplib.org/download/gmp/$(COMPONENT_ARCHIVE) |
36 COMPONENT_BUGDB= library/gnump |
37 COMPONENT_BUGDB= library/gnump |
37 COMPONENT_ANITYA_ID= 1186 |
38 COMPONENT_ANITYA_ID= 1186 |
38 |
39 |
39 TPNO= 16955 |
40 TPNO= 33317 |
|
41 TPNO_4.3.2= 16955 |
|
42 |
|
43 COMPONENT_VERSION_1= 4.3.2 |
|
44 COMPONENT_SRC_1= $(COMPONENT_NAME)-$(COMPONENT_VERSION_1) |
|
45 COMPONENT_ARCHIVE_1= $(COMPONENT_SRC_1).tar.gz |
|
46 COMPONENT_ARCHIVE_HASH_1= \ |
|
47 sha256:7be3ad1641b99b17f6a8be6a976f1f954e997c41e919ad7e0c418fe848c13c97 |
|
48 COMPONENT_ARCHIVE_URL_1= http://ftp.gnu.org/gnu/gmp/$(COMPONENT_ARCHIVE_1) |
|
49 |
|
50 |
|
51 COMPONENT_PREP_ACTION = (cd $(@D) ; $(AUTORECONF) -fiv) |
40 |
52 |
41 # We need to build an extra static version of this library for |
53 # We need to build an extra static version of this library for |
42 # GRUB/Wanboot support. |
54 # GRUB/Wanboot support. |
43 |
55 |
44 ifeq ($(MACH),i386) |
56 WANBOOT_CONFIGURE.amd64 = $(BUILD_DIR)/wanboot-amd64/.configured |
|
57 WANBOOT_BUILD.amd64 = $(BUILD_DIR)/wanboot-amd64/.built |
|
58 WANBOOT_INSTALL.amd64 = $(BUILD_DIR)/wanboot-amd64/.installed |
45 |
59 |
46 WANBOOT_CONFIGURE = $(BUILD_DIR)/wanboot-amd64/.configured |
60 CONFIGURE_32_and_64 += $(WANBOOT_CONFIGURE.$(MACH64)) |
47 WANBOOT_BUILD = $(BUILD_DIR)/wanboot-amd64/.built |
61 BUILD_32_and_64 += $(WANBOOT_BUILD.$(MACH64)) |
48 WANBOOT_INSTALL = $(BUILD_DIR)/wanboot-amd64/.installed |
62 INSTALL_32_and_64 += $(WANBOOT_INSTALL.$(MACH64)) |
49 |
63 |
50 CONFIGURE_32_and_64 += $(WANBOOT_CONFIGURE) |
64 $(BUILD_DIR_64)/.installed: $(WANBOOT_INSTALL.$(MACH64)) |
51 BUILD_32_and_64 += $(WANBOOT_BUILD) |
|
52 INSTALL_32_and_64 += $(WANBOOT_INSTALL) |
|
53 |
65 |
54 endif |
|
55 |
66 |
56 CONFIGURE_TARGET= |
67 # Macros to configure, build, and install the old version so we can contiune |
57 BUILD_TARGET= |
68 # to deliver runtime support for GCC until a newer build of GCC built against |
58 INSTALL_TARGET= |
69 # the new GNU MP is part of the CBE. Once the newer GCC packages are |
|
70 # on the build systems, we can stop building and delivering the old version. |
|
71 BUILD_OLD_DIR_32 = $(COMPONENT_DIR)/build/$(COMPONENT_VERSION_1)-$(MACH32) |
|
72 BUILD_OLD_DIR_64 = $(COMPONENT_DIR)/build/$(COMPONENT_VERSION_1)-$(MACH64) |
|
73 |
|
74 $(BUILD_OLD_DIR_32)/.configured: CONFIGURE_SCRIPT = $(SOURCE_DIR_1)/configure |
|
75 $(BUILD_OLD_DIR_64)/.configured: CONFIGURE_SCRIPT = $(SOURCE_DIR_1)/configure |
|
76 $(BUILD_OLD_DIR_32)/.configured: BITS=32 |
|
77 $(BUILD_OLD_DIR_64)/.configured: BITS=64 |
|
78 |
|
79 CONFIGURE_32 += $(BUILD_OLD_DIR_32)/.configured |
|
80 CONFIGURE_64 += $(BUILD_OLD_DIR_64)/.configured |
|
81 |
|
82 BUILD_32 += $(BUILD_OLD_DIR_32)/.built |
|
83 BUILD_64 += $(BUILD_OLD_DIR_64)/.built |
|
84 |
|
85 INSTALL_32 += $(BUILD_OLD_DIR_32)/.installed |
|
86 INSTALL_64 += $(BUILD_OLD_DIR_64)/.installed |
|
87 |
|
88 # install the old version first |
|
89 $(BUILD_DIR_32)/.installed: $(BUILD_OLD_DIR_32)/.installed |
|
90 $(BUILD_DIR_64)/.installed: $(BUILD_OLD_DIR_64)/.installed |
|
91 # |
|
92 # End old version |
|
93 |
59 include $(WS_MAKE_RULES)/gnu-component.mk |
94 include $(WS_MAKE_RULES)/gnu-component.mk |
|
95 |
60 |
96 |
61 MCS = mcs |
97 MCS = mcs |
62 STRIP = strip |
98 STRIP = strip |
63 |
99 |
64 PATCH_LEVEL = 0 |
|
65 |
|
66 CLEAN_PATHS += libgmp.pc libgmpxx.pc |
|
67 |
|
68 CFLAGS.shared += -features=extinl,extensions |
|
69 CFLAGS.shared += -xustr=ascii_utf16_ushort -xcsi |
|
70 # -xthreadvar=%all: allow thread-local storage via __thread |
|
71 # qualifier for all types of variables (global, static and dynamic) |
|
72 CFLAGS.shared += -xthreadvar=%all $(CPP_C99_EXTENDED_MATH) |
|
73 CFLAGS.shared += $(studio_C99_ENABLE) $(CPP_XPG6MODE) |
|
74 CFLAGS.shared += $(studio_PIC) |
|
75 |
|
76 # Set the wanboot CFLAGS as needed for the wanboot compilation |
100 # Set the wanboot CFLAGS as needed for the wanboot compilation |
77 |
|
78 CFLAGS.wanboot += -D_BOOT |
101 CFLAGS.wanboot += -D_BOOT |
79 CFLAGS.wanboot += -g |
102 CFLAGS.wanboot += -g |
80 CFLAGS.wanboot += -falign-jumps=1 |
103 CFLAGS.wanboot += -falign-jumps=1 |
81 CFLAGS.wanboot += -falign-loops=1 |
104 CFLAGS.wanboot += -falign-loops=1 |
82 CFLAGS.wanboot += -falign-functions |
105 CFLAGS.wanboot += -falign-functions |
87 CFLAGS.wanboot += -fno-common |
110 CFLAGS.wanboot += -fno-common |
88 CFLAGS.wanboot += -mcmodel=large |
111 CFLAGS.wanboot += -mcmodel=large |
89 CFLAGS.wanboot += -fno-stack-protector |
112 CFLAGS.wanboot += -fno-stack-protector |
90 CFLAGS.wanboot += -mno-stack-arg-probe |
113 CFLAGS.wanboot += -mno-stack-arg-probe |
91 |
114 |
92 CXXFLAGS.shared = -mt -features=anachronisms,except,rtti,export,extensions,nestedaccess,tmplife,tmplrefstatic |
115 COMPONENT_TEST_MASTER = $(COMPONENT_TEST_RESULTS_DIR)/results-all.master |
93 CXXFLAGS.shared += -instances=global -template=geninlinefuncs |
|
94 CXXFLAGS.shared += -xbuiltin=%none -xinline=%auto -xlibmil |
|
95 CXXFLAGS.shared += -xustr=ascii_utf16_ushort -xlibmopt |
|
96 CXXFLAGS.shared += $(studio_cplusplus_C99_ENABLE) $(studio_PIC) |
|
97 CXXFLAGS.shared += $(CPP_XPG5MODE) |
|
98 # -Qoption ccfe -features=zla: allow VLA/ZLA in C++ (like in C99) |
|
99 CXXFLAGS.shared += -Qoption ccfe -features=zla |
|
100 CXXFLAGS.shared += -xF=%none -xthreadvar=%all |
|
101 CPPFLAGS.shared += $(CPP_POSIX) $(CPP_LARGEFILES) |
|
102 LDFLAGS += $(LD_Z_REDLOCSYM) $(LD_Z_RESCAN_NOW) |
|
103 |
116 |
104 CXX.studio.32 += -std=sun03 |
117 # We want to run tests in a stripped environment so nothing interferes |
105 CXX.studio.64 += -std=sun03 |
118 COMPONENT_TEST_ENV += -i |
106 |
119 |
107 COMPONENT_TEST_TRANSFORMS += \ |
120 COMPONENT_TEST_TRANSFORMS += \ |
108 '-e "/libtool/d"' \ |
121 '-e "s/^make\[[0-9]\{1,\}\]/make/g"' \ |
109 '-e "/-m32/d"' \ |
122 '-n ' \ |
110 '-e "/-m64/d"' \ |
123 '-e "/make:.*directory/p" ' \ |
111 '-e "/DEPDIR=/d"' \ |
124 '-e "/PASS/p" ' \ |
112 '-e "/ld: warning/d"' \ |
125 '-e "/FAIL/p" ' \ |
113 '-e "/creating /d"' \ |
126 '-e "/SKIP/p" ' \ |
114 '-e "/gm4 /d"' \ |
127 '-e "/ERROR/p" ' \ |
115 '-e "s/^make\[[0-9]\{1,\}\]/make/g"' |
128 '-e "/=====/p" ' \ |
|
129 '-e "/TOTAL/p" ' |
116 |
130 |
117 # assembler detection for GNU MP and GNU MPFR is done via MPN_PATH |
131 PARCH.32 = $(MACH:i386=i386-pc) |
118 # at ./configure time. GNU MPFR wants to know GNU MP's MPN_PATH. |
132 PARCH.64 = $(MACH:i386=x86_64-pc) |
119 MPN32_i386 = x86/pentium x86 generic |
133 GNU_TRIPLE.32 = $(PARCH.32:sparc=sparc-sun)-solaris$(SOLARIS_VERSION) |
120 MPN64_i386 = x86_64/pentium4 x86_64 generic |
134 GNU_TRIPLE.64 = $(PARCH.64:sparc=sparcv9-sun)-solaris$(SOLARIS_VERSION) |
121 MPN32_sparc = sparc32/v9 sparc32 generic |
|
122 MPN64_sparc = sparc64 generic |
|
123 MPN_32 = $(MPN32_$(MACH)) |
|
124 MPN_64 = $(MPN64_$(MACH)) |
|
125 GM4 = /usr/bin/gm4 |
|
126 |
135 |
127 CONFIGURE_ENV += LD="$(CC) $(CFLAGS) $(LDFLAGS)" |
136 CONFIGURE_OPTIONS += --host $(GNU_TRIPLE.$(BITS)) |
128 CONFIGURE_ENV += CXXLD="$(CXX) $(CC_BITS) $(CXXFLAGS) $(LDFLAGS)" |
|
129 CONFIGURE_ENV += CPP="$(CC) $(CPPFLAGS) $(CFLAGS) -E" |
|
130 CONFIGURE_ENV += CPP_FOR_BUILD="$(CC) $(CPPFLAGS) $(CFLAGS) -E" |
|
131 CONFIGURE_ENV += CXXCPP="$(CXX) $(CC_BITS) $(CPPFLAGS) $(CXXFLAGS) -E" |
|
132 CONFIGURE_ENV += INSTALL="$(INSTALL)" |
|
133 CONFIGURE_ENV += CC_FOR_BUILD="$(CC) $(CPPFLAGS) $(CFLAGS)" |
|
134 CONFIGURE_ENV += M4="$(GM4)" |
|
135 CONFIGURE_ENV += SED="$(GSED)" |
|
136 CONFIGURE_ENV += ABI="$(BITS)" |
|
137 CONFIGURE_ENV += "MPN_PATH=$(MPN_$(BITS))" |
|
138 |
137 |
139 CONFIGURE_OPTIONS += --includedir=$(USRINCDIR)/gmp |
|
140 CONFIGURE_OPTIONS += --localstatedir=$(VARDIR) |
|
141 CONFIGURE_OPTIONS.shared += --enable-shared |
138 CONFIGURE_OPTIONS.shared += --enable-shared |
142 CONFIGURE_OPTIONS.shared += --disable-static |
139 CONFIGURE_OPTIONS.shared += --disable-static |
143 CONFIGURE_OPTIONS += --disable-libtool-lock |
140 CONFIGURE_OPTIONS += --disable-libtool-lock |
144 CONFIGURE_OPTIONS += --disable-alloca |
141 CONFIGURE_OPTIONS += --disable-alloca |
145 CONFIGURE_OPTIONS.shared += --enable-cxx |
142 CONFIGURE_OPTIONS.shared += --enable-cxx |
146 CONFIGURE_OPTIONS += --enable-fft |
143 CONFIGURE_OPTIONS += --enable-fft |
147 CONFIGURE_OPTIONS += --enable-mpbsd |
|
148 CONFIGURE_OPTIONS += --disable-fat |
144 CONFIGURE_OPTIONS += --disable-fat |
149 CONFIGURE_OPTIONS.shared += --with-pic |
145 CONFIGURE_OPTIONS.shared += --with-pic |
150 |
146 |
151 # Set the wanboot configure options as needed for wanboot |
147 # Set the wanboot configure options as needed for wanboot |
152 |
148 |
159 CONFIGURE_OPTIONS.wanboot += --enable-static |
155 CONFIGURE_OPTIONS.wanboot += --enable-static |
160 CONFIGURE_OPTIONS.wanboot += --disable-libtool-lock |
156 CONFIGURE_OPTIONS.wanboot += --disable-libtool-lock |
161 CONFIGURE_OPTIONS.wanboot += --without-readline |
157 CONFIGURE_OPTIONS.wanboot += --without-readline |
162 CONFIGURE_OPTIONS.wanboot += --without-pic |
158 CONFIGURE_OPTIONS.wanboot += --without-pic |
163 |
159 |
164 PROTOUSRSHAREHTMLDIR = $(PROTOUSRSHAREDIR)/doc/gmp/html |
|
165 |
|
166 # libgmpxx.so.4 always gets built with unnecessary paths in RUNPATH/RPATH |
|
167 COMPONENT_POST_INSTALL_ACTION.shared = \ |
160 COMPONENT_POST_INSTALL_ACTION.shared = \ |
168 ( $(MKDIR) $(PROTOUSRSHAREHTMLDIR) ; \ |
161 (cd $(PROTOUSRINCDIR) ; $(MV) -f gmp.h gmp-$(BITS).h) |
169 $(MKDIR) $(PROTOUSRSHAREMAN3DIR) ; \ |
|
170 $(MKDIR) $(PROTOPKGCONFIGDIR) ; \ |
|
171 $(MKDIR) $(PROTOPKGCONFIGDIR64) ; \ |
|
172 $(ELFEDIT) -e "dyn:runpath $(USRLIBDIR)" \ |
|
173 $(PROTOUSRLIBDIR)/libgmpxx.so.4.1.2 ; \ |
|
174 $(ELFEDIT) -e "dyn:runpath $(USRLIBDIR64)" \ |
|
175 $(PROTOUSRLIBDIR64)/libgmpxx.so.4.1.2 ; \ |
|
176 $(ELFEDIT) -e "dyn:rpath $(USRLIBDIR)" \ |
|
177 $(PROTOUSRLIBDIR)/libgmpxx.so.4.1.2 ; \ |
|
178 $(ELFEDIT) -e "dyn:rpath $(USRLIBDIR64)" \ |
|
179 $(PROTOUSRLIBDIR64)/libgmpxx.so.4.1.2 ; \ |
|
180 $(GSED) -e "s/MACH64/$(MACH64)/g" \ |
|
181 $(COMPONENT_DIR)/Solaris/libgmp-64.pc > $(COMPONENT_DIR)/libgmp.pc ; \ |
|
182 $(GSED) -e "s/MACH64/$(MACH64)/g" \ |
|
183 $(COMPONENT_DIR)/Solaris/libgmpxx-64.pc > \ |
|
184 $(COMPONENT_DIR)/libgmpxx.pc ; \ |
|
185 $(MV) $(PROTOUSRINCDIR)/gmp.h $(PROTOUSRINCDIR)/gmp/ ; \ |
|
186 $(MV) $(PROTOUSRINCDIR)/mp.h $(PROTOUSRINCDIR)/gmp/ ; \ |
|
187 $(INSTALL) -m 0644 $(COMPONENT_DIR)/Solaris/index.html \ |
|
188 $(PROTOUSRSHAREHTMLDIR)/ ; \ |
|
189 $(INSTALL) -m 0644 $(COMPONENT_DIR)/Solaris/libgmp.pc \ |
|
190 $(PROTOPKGCONFIGDIR) ; \ |
|
191 $(INSTALL) -m 0644 $(COMPONENT_DIR)/Solaris/libgmpxx.pc \ |
|
192 $(PROTOPKGCONFIGDIR) ; \ |
|
193 $(INSTALL) -m 0644 $(COMPONENT_DIR)/libgmp.pc \ |
|
194 $(PROTOPKGCONFIGDIR64) ; \ |
|
195 $(INSTALL) -m 0644 $(COMPONENT_DIR)/libgmpxx.pc \ |
|
196 $(PROTOPKGCONFIGDIR64) ; \ |
|
197 $(INSTALL) -m 0644 $(COMPONENT_DIR)/Solaris/libgmp.3 \ |
|
198 $(PROTOUSRSHAREMAN3DIR)/ ) |
|
199 |
162 |
200 COMPONENT_POST_INSTALL_ACTION.wanboot = \ |
163 COMPONENT_POST_INSTALL_ACTION.wanboot = \ |
201 ( $(MKDIR) $(PROTOUSRLIBDIR)/grub/wanboot; \ |
164 ( $(MKDIR) $(PROTOUSRLIBDIR)/grub/wanboot; \ |
202 $(MV) $(PROTOUSRLIBDIR64)/libgmp.a $(PROTO_DIR)/usr/lib/grub/wanboot/libgmp.a; \ |
165 $(MV) $(PROTOUSRLIBDIR64)/libgmp.a $(PROTO_DIR)/usr/lib/grub/wanboot/libgmp.a; \ |
203 $(STRIP) -x $(PROTOUSRLIBDIR)/grub/wanboot/libgmp.a; \ |
166 $(STRIP) -x $(PROTOUSRLIBDIR)/grub/wanboot/libgmp.a; \ |
208 $(SKIP_TEST_AT_TOP_LEVEL) |
171 $(SKIP_TEST_AT_TOP_LEVEL) |
209 |
172 |
210 # common targets |
173 # common targets |
211 configure: $(CONFIGURE_32_and_64) |
174 configure: $(CONFIGURE_32_and_64) |
212 |
175 |
213 $(BUILD_DIR)/$(MACH32)/.configured: CPPFLAGS += $(CPPFLAGS.shared) |
|
214 $(BUILD_DIR)/$(MACH32)/.configured: CFLAGS += $(CFLAGS.shared) |
|
215 $(BUILD_DIR)/$(MACH32)/.configured: CXXFLAGS += $(CXXFLAGS.shared) |
|
216 $(BUILD_DIR)/$(MACH32)/.configured: CONFIGURE_OPTIONS += $(CONFIGURE_OPTIONS.shared) |
176 $(BUILD_DIR)/$(MACH32)/.configured: CONFIGURE_OPTIONS += $(CONFIGURE_OPTIONS.shared) |
217 $(BUILD_DIR)/$(MACH64)/.configured: CPPFLAGS += $(CPPFLAGS.shared) |
|
218 $(BUILD_DIR)/$(MACH64)/.configured: CFLAGS += $(CFLAGS.shared) |
|
219 $(BUILD_DIR)/$(MACH64)/.configured: CXXFLAGS += $(CXXFLAGS.shared) |
|
220 $(BUILD_DIR)/$(MACH64)/.configured: CONFIGURE_OPTIONS += $(CONFIGURE_OPTIONS.shared) |
177 $(BUILD_DIR)/$(MACH64)/.configured: CONFIGURE_OPTIONS += $(CONFIGURE_OPTIONS.shared) |
221 $(BUILD_DIR)/wanboot-amd64/.configured: BITS=64 |
178 $(BUILD_DIR)/wanboot-amd64/.configured: BITS=64 |
222 $(BUILD_DIR)/wanboot-amd64/.configured: COMPILER=gcc |
179 $(BUILD_DIR)/wanboot-amd64/.configured: COMPILER=gcc |
223 $(BUILD_DIR)/wanboot-amd64/.configured: CPPFLAGS += $(CPPFLAGS.wanboot) |
180 $(BUILD_DIR)/wanboot-amd64/.configured: CPPFLAGS += $(CPPFLAGS.wanboot) |
224 $(BUILD_DIR)/wanboot-amd64/.configured: CFLAGS += $(CFLAGS.wanboot) |
181 $(BUILD_DIR)/wanboot-amd64/.configured: CFLAGS += $(CFLAGS.wanboot) |