From 4105ebb6ed85aaffec5e4469a939945fb9eea066 Mon Sep 17 00:00:00 2001 From: athenian200 Date: Tue, 1 Oct 2019 18:28:10 -0500 Subject: MoonchildProductions#1251 - Part 4: Core build system changes, lots of libevent/IPC junk. This is mostly ifdefs, but as you can see, Solaris is actually a lot like Linux. They're both more SysV than BSD at core, and most of the differences have more to do with Solaris not using glibc than anything else. I still need to audit a lot of these changes and understand why they're needed and what the alternative approaches are. After this patch, most of the core functionality needed to build Solaris is here. --- config/external/nspr/pr/moz.build | 14 ++++++++++++++ config/external/nspr/prcpucfg.h | 2 ++ 2 files changed, 16 insertions(+) (limited to 'config/external/nspr') diff --git a/config/external/nspr/pr/moz.build b/config/external/nspr/pr/moz.build index af710f850..02811aae8 100644 --- a/config/external/nspr/pr/moz.build +++ b/config/external/nspr/pr/moz.build @@ -51,6 +51,19 @@ elif CONFIG['OS_TARGET'] == 'Darwin': ] if not CONFIG['MOZ_IOS']: DEFINES['HAVE_CRT_EXTERNS_H'] = True +elif CONFIG['OS_TARGET'] == 'SunOS': + DEFINES.update( + HAVE_FCNTL_FILE_LOCKING=True, + HAVE_SOCKLEN_T=True, + _PR_HAVE_OFF64_T=True, + _PR_INET6=True, + ) + DEFINES['SOLARIS'] = True + SOURCES += ['/nsprpub/pr/src/md/unix/solaris.c'] + if CONFIG['CPU_ARCH'] == 'x86_64': + SOURCES += ['/nsprpub/pr/src/md/unix/os_SunOS_x86_64.s'] + elif CONFIG['CPU_ARCH'] == 'x86': + SOURCES += ['/nsprpub/pr/src/md/unix/os_SunOS/x86.s'] elif CONFIG['OS_TARGET'] == 'WINNT': OS_LIBS += [ 'advapi32', @@ -224,6 +237,7 @@ EXPORTS.nspr.md += [ '/nsprpub/pr/include/md/_linux.cfg', '/nsprpub/pr/include/md/_netbsd.cfg', '/nsprpub/pr/include/md/_openbsd.cfg', + '/nsprpub/pr/include/md/_solaris.cfg', '/nsprpub/pr/include/md/_win95.cfg', ] diff --git a/config/external/nspr/prcpucfg.h b/config/external/nspr/prcpucfg.h index 5f7962733..8769abeeb 100644 --- a/config/external/nspr/prcpucfg.h +++ b/config/external/nspr/prcpucfg.h @@ -22,6 +22,8 @@ #include "md/_openbsd.cfg" #elif defined(__linux__) #include "md/_linux.cfg" +#elif defined(__sun__) +#include "md/_solaris.cfg" #else #error "Unsupported platform!" #endif -- cgit v1.2.3 From 575f51a27d6b3627ae5675cc8e920c8dcae073bd Mon Sep 17 00:00:00 2001 From: athenian200 Date: Fri, 4 Oct 2019 04:37:51 -0500 Subject: Fix a bunch of dumb typos and omissions. --- config/external/nspr/pr/moz.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'config/external/nspr') diff --git a/config/external/nspr/pr/moz.build b/config/external/nspr/pr/moz.build index 02811aae8..84d6e7903 100644 --- a/config/external/nspr/pr/moz.build +++ b/config/external/nspr/pr/moz.build @@ -63,7 +63,7 @@ elif CONFIG['OS_TARGET'] == 'SunOS': if CONFIG['CPU_ARCH'] == 'x86_64': SOURCES += ['/nsprpub/pr/src/md/unix/os_SunOS_x86_64.s'] elif CONFIG['CPU_ARCH'] == 'x86': - SOURCES += ['/nsprpub/pr/src/md/unix/os_SunOS/x86.s'] + SOURCES += ['/nsprpub/pr/src/md/unix/os_SunOS_x86.s'] elif CONFIG['OS_TARGET'] == 'WINNT': OS_LIBS += [ 'advapi32', -- cgit v1.2.3 From 2f4488521db663520c703a9a836d5549d679266c Mon Sep 17 00:00:00 2001 From: athenian200 Date: Thu, 10 Oct 2019 15:38:27 -0500 Subject: MoonchildProductions#1251 - Part 23: Allow AMD64 build to work. https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions/Compiling_32-bit_Firefox_on_a_Linux_64-bit_OS Setting this up turned out to be easier than I thought it would be. All I had to do was apply these instructions in reverse and add the following to my .mozconfig file: CC="gcc -m64" CXX="g++ -m64" AS="gas --64" ac_add_options --target=x86_64-pc-solaris2.11 export PKG_CONFIG_PATH=/usr/lib/amd64/pkgconfig ac_add_options --libdir=/usr/lib/amd64 ac_add_options --x-libraries=/usr/lib/amd64 Most of these changes were fairly trivial, just requiring me to make a few of the changes I made earlier conditional on a 32-bit build. The biggest challenge was figuring out why the JavaScript engine triggered a segfault everytime it tried to allocate memory. But this patch fixes it: https://github.com/OpenIndiana/oi-userland/blob/oi/hipster/components/web/firefox/patches/patch-js_src_gc_Memory.cpp.patch Turns out that Solaris on AMD64 handles memory management in a fairly unusual way with a segmented memory model, but it's not that different from what we see on other 64-bit processors. In fact, I saw a SPARC crash for a similar reason, and noticed that it looked just like mine except the numbers in the first segment were reversed. Having played around with hex editors before, I had a feeling I might be dealing with a little-endian version of a big-endian problem, but I didn't expect that knowledge to actually yield an easy solution. https://bugzilla.mozilla.org/show_bug.cgi?id=577056 https://www.oracle.com/technetwork/server-storage/solaris10/solaris-memory-135224.html As far as I can tell, this was the last barrier to an AMD64 Solaris build of Pale Moon. --- config/external/nspr/pr/moz.build | 1 + 1 file changed, 1 insertion(+) (limited to 'config/external/nspr') diff --git a/config/external/nspr/pr/moz.build b/config/external/nspr/pr/moz.build index 84d6e7903..1d2df3099 100644 --- a/config/external/nspr/pr/moz.build +++ b/config/external/nspr/pr/moz.build @@ -62,6 +62,7 @@ elif CONFIG['OS_TARGET'] == 'SunOS': SOURCES += ['/nsprpub/pr/src/md/unix/solaris.c'] if CONFIG['CPU_ARCH'] == 'x86_64': SOURCES += ['/nsprpub/pr/src/md/unix/os_SunOS_x86_64.s'] + DEFINES['USE_64'] = True elif CONFIG['CPU_ARCH'] == 'x86': SOURCES += ['/nsprpub/pr/src/md/unix/os_SunOS_x86.s'] elif CONFIG['OS_TARGET'] == 'WINNT': -- cgit v1.2.3