iigs
2024-03-27 32d98a3796b058e946d5d41ed5637129c312a8e9
commit | author | age
19364b 1 #
99a872 2 # This file and its contents are supplied under the terms of the
AP 3 # Common Development and Distribution License ("CDDL"), version 1.0.
4 # You may only use this file in accordance with the terms of version
5 # 1.0 of the CDDL.
6 #
7 # A full copy of the text of the CDDL should have accompanied this
8 # source.  A copy of the CDDL is also available via the Internet at
9 # http://www.illumos.org/license/CDDL.
10 #
19364b 11
AP 12 #
a4af93 13 # Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved.
99a872 14 # Copyright 2015 OpenSXCE.org Martin Bochnig <opensxce@mail.ru>
97cb3f 15 # Copyright 2013-2017 Alexander Pyhalov
bae226 16 # Copyright 2019 Geoffrey Weiss
MN 17 # Copyright 2019 Michal Nowak
a4af93 18 # Copyright 2021 Carsten Grzemba
19364b 19 #
bae226 20
8d8ddb 21 USE_PARALLEL_BUILD = yes
f17a3d 22 include ../../../make-rules/shared-macros.mk
265190 23 ENV = /usr/bin/env
19364b 24
cc8af4 25 # ESR should be set to esr for esr build, or an empty string for other builds
595d33 26 ESR = 
AW 27
cc8af4 28 # CANDIDATE_BUILD is the build number found in the candidates directory.
AW 29 # CANDIDATE_BETA is the beta version found in the candidates directory.
e96c56 30 # CANDIDATE_NIGHTLY is the nightly release hosted on github
I 31 # Do not define any for final release build.
bb1764 32 # CANDIDATE_BUILD=1
a91401 33 # CANDIDATE_BETA=9
e96c56 34 # CANDIDATE_NIGHTLY=1
a4af93 35
CG 36 COMPONENT_NAME =    firefox
32d98a 37 COMPONENT_VERSION =    124.0
a4af93 38 COMPONENT_SUMMARY=      Mozilla Firefox Web browser
bc953f 39 COMPONENT_PROJECT_URL =    https://www.mozilla.com/firefox
a4af93 40 COMPONENT_SRC_NAME =    $(COMPONENT_NAME)-$(COMPONENT_VERSION)
e96c56 41
5f510f 42 ifdef CANDIDATE_BETA
CG 43 COMPONENT_ARCHIVE =    $(COMPONENT_NAME)-$(COMPONENT_VERSION)b$(CANDIDATE_BETA)$(ESR).source.tar.xz
44 else
a4af93 45 COMPONENT_ARCHIVE =    $(COMPONENT_SRC_NAME)$(ESR).source.tar.xz
e96c56 46 # CANDIDATE_BETA
5f510f 47 endif
e96c56 48
a4af93 49 ifndef CANDIDATE_BUILD
358672 50 MOZILLA_FTP =        https://ftp.mozilla.org/pub/$(COMPONENT_NAME)/releases/$(COMPONENT_VERSION)$(ESR)
bae226 51 else
5f510f 52   ifndef CANDIDATE_BETA
358672 53 MOZILLA_FTP =        https://ftp.mozilla.org/pub/$(COMPONENT_NAME)/candidates/$(COMPONENT_VERSION)$(ESR)-candidates/build$(CANDIDATE_BUILD)
5f510f 54   else
CG 55 MOZILLA_FTP =        https://ftp.mozilla.org/pub/$(COMPONENT_NAME)/candidates/$(COMPONENT_VERSION)b$(CANDIDATE_BETA)$(ESR)-candidates/build$(CANDIDATE_BUILD)
56   endif
bae226 57 endif
e96c56 58
I 59 ifdef CANDIDATE_NIGHTLY
32d98a 60 COMPONENT_GIT_HASH=     9dc5b89f7de66165e234e8d244c2796b2dfe9235
e96c56 61 COMPONENT_SRC=          gecko-dev-$(COMPONENT_GIT_HASH)
I 62 COMPONENT_ARCHIVE=      $(COMPONENT_GIT_HASH).tar.gz
63 COMPONENT_ARCHIVE_URL=  https://github.com/mozilla/gecko-dev/archive/$(COMPONENT_ARCHIVE)
64 else
65 COMPONENT_SRC =     $(COMPONENT_SRC_NAME)
a4af93 66 COMPONENT_ARCHIVE_URL =    $(MOZILLA_FTP)/source/$(COMPONENT_ARCHIVE)
e96c56 67 endif
I 68
32d98a 69 COMPONENT_ARCHIVE_HASH= sha256:345a1235123ad808cecdb4a9af09ea48bf52ad09d3d380fc704406e3dd13c9d8
bc953f 70 COMPONENT_PROJECT_URL = https://www.mozilla.com/en-US/firefox/
bae226 71 COMPONENT_FMRI=        web/browser/firefox
c13ffe 72
32d98a 73 RUST_VERSION = 1.76.0
19364b 74
d0b557 75 # TODO: use remote hashfile to verify
AW 76 ALLOW_UNVERIFIED_DOWNLOADS=yes
77 export ALLOW_UNVERIFIED_DOWNLOADS
78
a4af93 79 LANG_LIST= ach af an ar ast az be bg bn br bs ca-valencia ca cak cs cy da de dsb el en-CA en-GB \
72ef82 80  en-US eo es-AR es-CL es-ES es-MX et eu fa ff fi fr fur fy-NL ga-IE gd gl gn gu-IN he hi-IN hr hsb \
a4af93 81  hu hy-AM ia id is it ja ka kab kk km kn ko lij lt lv mk mr ms my nb-NO ne-NP nl nn-NO oc pa-IN \
f29852 82  pl pt-BR pt-PT rm ro ru sat sc sco si sk sl son sq sr sv-SE szl ta te tg th tl tr trs uk ur uz vi xh zh-CN zh-TW
a4af93 83
e96c56 84 ifdef CANDIDATE_NIGHTLY
I 85 FIREFOX_UPDATE_CHANNEL=nightly
86 else
87   ifdef CANDIDATE_BETA
bae226 88 LANG_FILES_LOCATION= \
5f510f 89     https://ftp.mozilla.org/pub/firefox/candidates/$(COMPONENT_VERSION)b$(CANDIDATE_BETA)$(ESR)-candidates/build$(CANDIDATE_BUILD)/linux-x86_64/xpi
595d33 90 FIREFOX_UPDATE_CHANNEL=beta
bae226 91 else
e96c56 92     ifdef CANDIDATE_BUILD
bae226 93 LANG_FILES_LOCATION= \
5f510f 94     https://ftp.mozilla.org/pub/firefox/candidates/$(COMPONENT_VERSION)$(ESR)-candidates/build$(CANDIDATE_BUILD)/linux-x86_64/xpi
595d33 95 FIREFOX_UPDATE_CHANNEL=default
e96c56 96     else
5f510f 97 LANG_FILES_LOCATION= \
CG 98     https://ftp.mozilla.org/pub/firefox/releases/$(COMPONENT_VERSION)$(ESR)/linux-x86_64/xpi
595d33 99 FIREFOX_UPDATE_CHANNEL=default
e96c56 100     endif
595d33 101   endif
AW 102 endif
103
104 # handle esr case to set FIREFOX_UPDATE_CHANNEL
105 ifdef ESR
106   ifeq ($(ESR), esr)
107     FIREFOX_UPDATE_CHANNEL=esr
5f510f 108   endif
bae226 109 endif
19364b 110
a4af93 111 CONFIGURE_DEFAULT_DIRS=no
de3ef7 112
a4af93 113 include $(WS_MAKE_RULES)/common.mk
bae226 114
60af70 115 RUSTUP_HOME = $(BUILD_DIR)/.rust_up
CG 116 CARGO_HOME  = $(BUILD_DIR)/.cargo
117
118 PATH = $(CARGO_HOME)/bin:$(PATH.gnu)
19364b 119
a4af93 120 MOZCONFIG = $(SOURCE_DIR)/mozconfig
60af70 121 GNU_ARCH= x86_64-unknown-illumos
19364b 122
a4af93 123 ifdef DEBUG
CG 124 # disable code optimization
125 CFLAGS =
126 CXXFLAGS =
19364b 127
a4af93 128 MOZCONFIG_DEBUG =    $(MOZCONFIG)
CG 129 MOZCONFIG_NON_DEBUG =    /dev/null
130 else
131 MOZCONFIG_DEBUG =    /dev/null
132 MOZCONFIG_NON_DEBUG =    $(MOZCONFIG)
133 endif
134
135 CONFIGURE_ENV=
136 CONFIGURE_OPTIONS=
137
138 # clang or gcc
139 CC_TYPE = gcc
140 COMPILER.gcc= gcc
141 COMPILER.clang= clang
142 COMPILER = $(COMPILER.$(CC_TYPE))
143
144 CXXFLAGS += -Wno-invalid-offsetof -fpermissive
60af70 145 # xpcom uses DEF XP_SOLARIS
CG 146 CXXFLAGS += -DXP_SOLARIS
a4af93 147 # type problem compiling ffvpx with clang 
CG 148 CFLAGS += -D__int8_t_defined
149
150 FIREFOX_LIBDIR =    $(CONFIGURE_LIBDIR.$(BITS))
151
152 COMPONENT_PRE_CONFIGURE_ACTION += \
153         rm -f  $(MOZCONFIG); \
154     echo "ac_add_options MOZILLA_OFFICIAL=1" >> $(MOZCONFIG) ; \
155     echo "ac_add_options PKG_CONFIG=/usr/bin/amd64/pkg-config" >> $(MOZCONFIG) ; \
156     echo "ac_add_options CC_TYPE=$(CC_TYPE)" >> $(MOZCONFIG) ; \
157     echo "ac_add_options CC=$(CC)" >> $(MOZCONFIG) ; \
158     echo "ac_add_options CXX=$(CXX)" >> $(MOZCONFIG) ; \
159     echo "ac_add_options --prefix=/usr" >> $(MOZCONFIG) ; \
160     echo "ac_add_options --libdir=$(FIREFOX_LIBDIR)" >> $(MOZCONFIG) ; \
161     echo "ac_add_options --disable-crashreporter" >> $(MOZCONFIG) ; \
162     echo "ac_add_options --disable-debug-symbols" >> $(MOZCONFIG_NON_DEBUG) ; \
163     echo "ac_add_options --disable-install-strip" >> $(MOZCONFIG_DEBUG) ; \
164     echo "ac_add_options --disable-optimize" >> $(MOZCONFIG_DEBUG) ; \
165     echo "ac_add_options --disable-tests" >> $(MOZCONFIG) ; \
cc8af4 166     echo "ac_add_options --disable-updater" >> $(MOZCONFIG) ; \
a4af93 167     echo "ac_add_options --enable-debug" >> $(MOZCONFIG_DEBUG) ; \
5f510f 168     echo "ac_add_options --enable-jemalloc" >> $(MOZCONFIG) ; \
a4af93 169     echo "ac_add_options --enable-js-shell" >> $(MOZCONFIG) ; \
CG 170     echo "ac_add_options --enable-official-branding" >> $(MOZCONFIG) ; \
171     echo "ac_add_options --enable-optimize" >> $(MOZCONFIG_NON_DEBUG) ; \
172     echo "ac_add_options --enable-pulseaudio" >> $(MOZCONFIG) ; \
5f510f 173     echo "ac_add_options --enable-replace-malloc" >> $(MOZCONFIG) ; \
a4af93 174     echo "ac_add_options --enable-system-pixman" >> $(MOZCONFIG) ; \
595d33 175     echo "ac_add_options --enable-update-channel=$(FIREFOX_UPDATE_CHANNEL)" >> $(MOZCONFIG) ; \
a4af93 176     echo "ac_add_options --with-intl-api" >> $(MOZCONFIG) ; \
CG 177     echo "ac_add_options --with-system-zlib" >> $(MOZCONFIG) ; \
178     echo "ac_add_options --host=$(GNU_ARCH)" >> $(MOZCONFIG) ; \
179     echo "ac_add_options --target=$(GNU_ARCH)" >> $(MOZCONFIG) ; \
5f510f 180     echo "ac_add_options --without-wasm-sandboxed-libraries" >> $(MOZCONFIG) ; \
595d33 181 #     echo "ac_add_options --enable-bootstrap" >> $(MOZCONFIG) ; \
AW 182 #    echo "ac_add_options --with-wasi-sysroot=" >> $(MOZCONFIG) ; \
a4af93 183
CG 184 LD_SECEXT_OPTIONS += $(SSBD_ENABLE)
185
186 # 28395728
187 LD_MAP_NOEXBSS.sparc=
188
189 # libmozgtk needs to link to gtk3 and others
190 LD_Z_IGNORE=
191
192 # missing symbols from gtk3 during Firefox start
193 LD_B_DIRECT=
194
195 # hope to get args data in stacks of core dumps
196 LD_OPTIONS += -msave-args
197
595d33 198 # use a local installed rust since the system version may not be compatible
a4af93 199 COMPONENT_PRE_CONFIGURE_ACTION += ( \
60af70 200     export RUSTUP_HOME=$(RUSTUP_HOME); \
CG 201     export CARGO_HOME=$(CARGO_HOME); \
202     export RUSTUP_INIT_SKIP_PATH_CHECK=yes; \
993694 203     curl https://sh.rustup.rs -sSf | bash -s -- -y --no-modify-path; \
60af70 204     source $(CARGO_HOME)/env; \
c13ffe 205     rustup install $(RUST_VERSION); \
CG 206     rustup default $(RUST_VERSION)-x86_64-unknown-illumos; \
60af70 207     rustup show; \
f29852 208     cargo install --root=$(CARGO_HOME) --vers 0.26.0 cbindgen; \
a4af93 209     );
CG 210
bae226 211 ENV +=    CFLAGS="$(CFLAGS)"
MN 212 ENV +=    CXXFLAGS="$(CXXFLAGS)"
a4af93 213 ENV += PKG_CONFIG=/usr/bin/amd64/pkg-config
60af70 214 ENV += RUSTUP_HOME=$(RUSTUP_HOME)
CG 215 ENV += CARGO_HOME=$(CARGO_HOME)
bae226 216
MN 217 COMPONENT_BUILD_ARGS += $(JOBS:%=-j%)
19364b 218
AP 219 CONFIGURE_ENV =    $(ENV)
220 COMPONENT_BUILD_ENV =    $(ENV)
844f55 221 COMPONENT_INSTALL_ENV += HOME=/tmp
19364b 222
e96c56 223 # language support is more complex on nightly release, support on beta and later
I 224 ifndef CANDIDATE_NIGHTLY
19364b 225 LANG_FILES=$(addsuffix .xpi,$(LANG_LIST))
AP 226
227 CLEAN_PATHS += $(LANG_FILES)
228
229 $(LANG_FILES): 
230     $(FETCH) --file $@  --url $(LANG_FILES_LOCATION)/$@
231
232 download prep:: $(LANG_FILES)
e96c56 233 endif
19364b 234
a4af93 235 COMPONENT_POST_BUILD_ACTION = \
CG 236     (cd $(@D)/browser/installer ; $(ENV) $(COMPONENT_BUILD_ENV) \
237         $(GMAKE) $(COMPONENT_BUILD_ARGS) $(COMPONENT_BUILD_TARGETS))
19364b 238
bae226 239 COMPONENT_POST_INSTALL_ACTION  = \
a4af93 240     for file in `find $(PROTO_DIR)$(FIREFOX_LIBDIR)/firefox/ -name "*.so"`; do \
CG 241         /usr/bin/elfedit -e 'dyn:value -s  RUNPATH "$(GCC_LIBDIR):$(FIREFOX_LIBDIR)/firefox:/usr/lib/mps/amd64"' $$file ; \
242         /usr/bin/elfedit -e 'dyn:value -s  RPATH   "$(GCC_LIBDIR):$(FIREFOX_LIBDIR)/firefox:/usr/lib/mps/amd64"' $$file ; \
595d33 243     done ; \
AW 244     unzip -c $(PROTOUSRLIBDIR64)/$(COMPONENT_NAME)/omni.ja chrome/toolkit/content/global/license.html \
245     | LC_ALL=en_US.UTF-8 lynx --display_charset=utf-8 -stdin --dump -nolist > $(COMPONENT_NAME).license ;
bae226 246
a4af93 247 COMPONENT_TEST_MASTER = $(COMPONENT_TEST_RESULTS_DIR)/results-$(MACH).master
edb3e9 248
a4af93 249 COMPONENT_TEST_DIR =    $(@D)/js/src
CG 250 COMPONENT_TEST_TARGETS=check-jit-test
251 COMPONENT_TEST_TRANSFORMS = \
252     '-e "/^PASSED ALL/,/Failed:/p" ' \
253     '-e "/^FAILURES:/,/Failed:/p" ' \
254     '-e "/.*/d" '
efffc7 255
595d33 256 # the license file is dynamically build, thus we need to remove it:
AW 257 clean::
258     $(RM) $(COMPONENT_LICENSE_FILE)
259
8a7279 260 # Build dependencies
84c467 261 PYTHON_REQUIRED_PACKAGES += runtime/python
595d33 262 PYTHON_REQUIRED_PACKAGES += library/python/psutil
de3ef7 263 REQUIRED_PACKAGES += developer/build/autoconf-213
edb3e9 264 REQUIRED_PACKAGES += library/audio/pulseaudio
828d85 265 REQUIRED_PACKAGES += system/header/header-audio
595d33 266 REQUIRED_PACKAGES += developer/lang/rustc
bae226 267 REQUIRED_PACKAGES += gnome/config/gconf
a4af93 268 REQUIRED_PACKAGES += database/sqlite-3
CG 269 REQUIRED_PACKAGES += library/http-parser
595d33 270 REQUIRED_PACKAGES += web/browser/lynx
c37c0d 271
8a7279 272 # Auto-generated dependencies
1d902b 273 REQUIRED_PACKAGES += $(GCC_RUNTIME_PKG)
CG 274 REQUIRED_PACKAGES += $(GXX_RUNTIME_PKG)
a4af93 275 REQUIRED_PACKAGES += library/c++/harfbuzz
edb3e9 276 REQUIRED_PACKAGES += library/desktop/atk
AP 277 REQUIRED_PACKAGES += library/desktop/cairo
278 REQUIRED_PACKAGES += library/desktop/gdk-pixbuf
bae226 279 REQUIRED_PACKAGES += library/desktop/gtk3
edb3e9 280 REQUIRED_PACKAGES += library/desktop/pango
AP 281 REQUIRED_PACKAGES += library/glib2
bae226 282 REQUIRED_PACKAGES += library/graphics/pixman
MN 283 REQUIRED_PACKAGES += library/zlib
edb3e9 284 REQUIRED_PACKAGES += system/library
AP 285 REQUIRED_PACKAGES += system/library/fontconfig
286 REQUIRED_PACKAGES += system/library/freetype-2
287 REQUIRED_PACKAGES += system/library/libdbus
288 REQUIRED_PACKAGES += system/library/math
289 REQUIRED_PACKAGES += x11/library/libx11
8a7279 290 REQUIRED_PACKAGES += x11/library/libxcb
edb3e9 291 REQUIRED_PACKAGES += x11/library/libxext
5f510f 292 REQUIRED_PACKAGES += x11/library/libxrandr