forked from pool/nodejs-electron
- nodejs-electron-devel: * Introduce /usr/libexec/electron-node wrapper scripts * Introduce `electron_rebuild`, `electron_check_native` and `electron_check_native_unstable` RPM macros to ease packaging Electron apps * Correct some injected compiler flags (common.gypi-compiler.patch) OBS-URL: https://build.opensuse.org/request/show/1173454 OBS-URL: https://build.opensuse.org/package/show/devel:languages:nodejs/nodejs-electron?expand=0&rev=146
52 lines
2.7 KiB
Diff
52 lines
2.7 KiB
Diff
--- src/third_party/electron_node/common.gypi.orig 2024-05-09 09:30:23.202414200 +0000
|
|
+++ src/third_party/electron_node/common.gypi 2024-05-10 17:53:01.801592000 +0000
|
|
@@ -428,10 +428,15 @@
|
|
'ldflags': [ '-pthread' ],
|
|
}],
|
|
[ 'OS in "linux freebsd openbsd solaris android aix os400 cloudabi"', {
|
|
- 'cflags': [ '-Wall', '-Wextra', '-Wno-unused-parameter', ],
|
|
+ # Add some useful flags which need to be specified on all modules anyway.
|
|
+ # `-fpic -fno-semantic-interposition` is the best relocation model for code that will live in a dlopened library
|
|
+ # If a downstream package needs capital `-fPIC` (unlikely) it can still override this (unlike CFLAGS which are injected at the very end)
|
|
+ # `-fvisibility=hidden` is something we're adding to fix downstream overzealous exports.
|
|
+ # The electron headers annotate their visibility correctly, but many third-party code does not which leads to bloated builds.
|
|
+ 'cflags': [ '-Wall', '-Wextra', '-Wno-unused-parameter', '-fpic', '-fno-semantic-interposition', '-fvisibility=hidden' ],
|
|
'cflags_cc': [ '-fno-rtti', '-fno-exceptions', '-std=gnu++17' ],
|
|
'defines': [ '__STDC_FORMAT_MACROS' ],
|
|
- 'ldflags': [ '-rdynamic' ],
|
|
+ #'ldflags': [ '-rdynamic' ], this is totally bogus — we are building a plugin, not a plugin host
|
|
'target_conditions': [
|
|
# The 1990s toolchain on SmartOS can't handle thin archives.
|
|
['_type=="static_library" and OS=="solaris"', {
|
|
@@ -608,29 +613,7 @@
|
|
'-Wl,--export-dynamic',
|
|
],
|
|
}],
|
|
- # if node is built as an executable,
|
|
- # the openssl mechanism for keeping itself "dload"-ed to ensure proper
|
|
- # atexit cleanup does not apply
|
|
- ['node_shared_openssl!="true" and node_shared!="true"', {
|
|
- 'defines': [
|
|
- # `OPENSSL_NO_PINSHARED` prevents openssl from dload
|
|
- # current node executable,
|
|
- # see https://github.com/nodejs/node/pull/21848
|
|
- # or https://github.com/nodejs/node/issues/27925
|
|
- 'OPENSSL_NO_PINSHARED'
|
|
- ],
|
|
- }],
|
|
- ['node_shared_openssl!="true"', {
|
|
- # `OPENSSL_THREADS` is defined via GYP for openSSL for all architectures.
|
|
- 'defines': [
|
|
- 'OPENSSL_THREADS',
|
|
- ],
|
|
- }],
|
|
- ['node_shared_openssl!="true" and openssl_no_asm==1', {
|
|
- 'defines': [
|
|
- 'OPENSSL_NO_ASM',
|
|
- ],
|
|
- }],
|
|
+ # Electron does not export its openssl fork (boringssl). Removing these defines which are bogus and can interfere with modules actually using openssl (signal-desktop is known to use it)
|
|
['OS == "zos"', {
|
|
'defines': [
|
|
'_XOPEN_SOURCE_EXTENDED',
|