deu / palemoon-overlay

Unofficial Gentoo overlay for the Pale Moon (http://www.palemoon.org/) web browser.
34 stars 12 forks source link

Feature request: make it able to compile on ~alpha architecture #128

Open cyborgyn opened 2 years ago

cyborgyn commented 2 years ago

Since Alpha architecture is missing newer compilers, like LLVM, clang, rust and others are not available for it, thus most if not all modern browsers are non-compilable on that architecture. PaleMoon can be made to compile on Alpha with some fixes / hacks. So here are my findings:

cyborgyn commented 2 years ago
--- palemoon-31.2.0.1/platform/python/mozbuild/mozbuild/configure/constants.py.old  2022-09-14 14:11:27.144895727 +0200
+++ palemoon-31.2.0.1/platform/python/mozbuild/mozbuild/configure/constants.py  2022-09-14 14:11:39.944983623 +0200
@@ -41,7 +41,7 @@

 CPU_bitness = {
     'aarch64': 64,
-    'Alpha': 32,
+    'Alpha': 64,
     'arm': 32,
     'hppa': 32,
     'ia64': 64,
cyborgyn commented 2 years ago

For some reason this didn't solve the issue, thus it needed the above CFLAGS hack:

--- palemoon-31.2.0.1/platform/security/nss/coreconf/config.gypi.old    2022-09-14 21:51:04.246159520 +0200
+++ palemoon-31.2.0.1/platform/security/nss/coreconf/config.gypi    2022-09-14 21:52:16.054649046 +0200
@@ -203,7 +203,7 @@
           },
         },
       }],
-      [ 'target_arch=="arm64" or target_arch=="aarch64" or target_arch=="sparc64" or target_arch=="ppc64" or target_arch=="ppc64le" or target_arch=="s390x" or target_arch=="mips64"', {
+      [ 'target_arch=="arm64" or target_arch=="aarch64" or target_arch=="sparc64" or target_arch=="ppc64" or target_arch=="ppc64le" or target_arch=="s390x" or target_arch=="mips64" or target_arch=="alpha"', {
         'defines': [
           'NSS_USE_64',
         ],
--- palemoon-31.2.0.1/platform/security/nss/coreconf/config.mk.old  2022-09-15 10:11:26.028775469 +0200
+++ palemoon-31.2.0.1/platform/security/nss/coreconf/config.mk  2022-09-15 10:12:26.084178924 +0200
@@ -219,6 +219,10 @@
 DEFINES += -DNSS_DISABLE_ALTIVEC
 endif

+ifdef NSS_USE_64
+DEFINES += -DNSS_USE_64
+endif
+
 # This allows all library and tools code to use the util function
 # implementations directly from libnssutil3, rather than the wrappers
 # in libnss3 which are present for binary compatibility only
cyborgyn commented 2 years ago

An other patch is also needed for jemalloc, for not to compile static page sizes, as it will not work with alpha:

--- palemoon-31.2.0.1/platform/memory/mozjemalloc/jemalloc.c.old    2022-09-17 13:29:51.086653752 +0200
+++ palemoon-31.2.0.1/platform/memory/mozjemalloc/jemalloc.c    2022-09-17 13:30:50.726051146 +0200
@@ -897,7 +897,7 @@
  * controlling the malloc behavior are defined as compile-time constants
  * for best performance and cannot be altered at runtime.
  */
-#if !defined(__ia64__) && !defined(__sparc__) && !defined(__mips__) && !defined(__aarch64__)
+#if !defined(__ia64__) && !defined(__sparc__) && !defined(__mips__) && !defined(__aarch64__) && !defined(__alpha__)
 #define MALLOC_STATIC_SIZES 1
 #endif
CaseOf commented 2 years ago

Hello, I think it would be best to ask for this upstream on forums.