1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
$NetBSD: patch-SConstruct,v 1.10 2021/12/27 09:36:10 nia Exp $
Add support for NetBSD and Dragonfly.
Fix locations.
Don't compile with debug info.
Don't mess with the linker.
Respect LDFLAGS and CXXFLAGS.
--- SConstruct.orig 2021-06-30 17:39:08.000000000 +0000
+++ SConstruct
@@ -1043,6 +1043,7 @@ envDict = dict(BUILD_ROOT=buildDir,
INSTALL_DIR=installDir,
CONFIG_HEADER_DEFINES={},
LIBDEPS_TAG_EXPANSIONS=[],
+ ENV=os.environ,
)
env = Environment(variables=env_vars, **envDict)
@@ -1193,7 +1194,9 @@ def CheckForProcessor(context, which_arc
os_macros = {
"windows": "defined(_WIN32)",
"solaris": "defined(__sun)",
+ "dragonfly": "defined(__DragonFly__)",
"freebsd": "defined(__FreeBSD__)",
+ "netbsd": "defined(__NetBSD__)",
"openbsd": "defined(__OpenBSD__)",
"iOS": "defined(__APPLE__) && TARGET_OS_IOS && !TARGET_OS_SIMULATOR",
"iOS-sim": "defined(__APPLE__) && TARGET_OS_IOS && TARGET_OS_SIMULATOR",
@@ -1590,7 +1593,7 @@ if env['_LIBDEPS'] == '$_LIBDEPS_LIBS':
if not env.TargetOSIs('solaris', 'darwin', 'windows', 'openbsd'):
env.Tool('thin_archive')
-if env.TargetOSIs('linux', 'freebsd', 'openbsd'):
+if env.TargetOSIs('linux', 'dragonfly', 'freebsd', 'netbsd', 'openbsd'):
env['LINK_LIBGROUP_START'] = '-Wl,--start-group'
env['LINK_LIBGROUP_END'] = '-Wl,--end-group'
# NOTE: The leading and trailing spaces here are important. Do not remove them.
@@ -1626,14 +1629,14 @@ if env.TargetOSIs('linux'):
elif env.TargetOSIs('solaris'):
env.Append( LIBS=["socket","resolv","lgrp"] )
-elif env.TargetOSIs('freebsd'):
+elif env.TargetOSIs('freebsd', 'dragonfly'):
env.Append( LIBS=[ "kvm" ] )
env.Append( CCFLAGS=[ "-fno-omit-frame-pointer" ] )
elif env.TargetOSIs('darwin'):
env.Append( LIBS=["resolv"] )
-elif env.TargetOSIs('openbsd'):
+elif env.TargetOSIs('netbsd', 'openbsd'):
env.Append( LIBS=[ "kvm" ] )
elif env.TargetOSIs('windows'):
@@ -1891,7 +1894,6 @@ if env.TargetOSIs('posix'):
# -Winvalid-pch Warn if a precompiled header (see Precompiled Headers) is found in the search path but can't be used.
env.Append( CCFLAGS=["-fno-omit-frame-pointer",
"-fno-strict-aliasing",
- "-ggdb" if not env.TargetOSIs('emscripten') else "-g",
"-pthread",
"-Wall",
"-Wsign-compare",
@@ -2533,9 +2535,9 @@ def doConfigure(myenv):
if usingLibStdCxx:
def CheckModernLibStdCxx(context):
test_body = """
- #if !__has_include(<experimental/filesystem>)
- #error "libstdc++ from GCC 5.3.0 or newer is required"
- #endif
+ //#if !__has_include(<experimental/filesystem>)
+ //#error "libstdc++ from GCC 5.3.0 or newer is required"
+ //#endif
"""
context.Message('Checking for libstdc++ 5.3.0 or better... ')
@@ -2779,7 +2781,7 @@ def doConfigure(myenv):
#
myenv.Append( CCFLAGS=["/Zc:inline"])
- if myenv.ToolchainIs('gcc', 'clang'):
+ if myenv.ToolchainIs('gcc', 'clang') and get_option('runtime-hardening') == "on":
# This tells clang/gcc to use the gold linker if it is available - we prefer the gold linker
# because it is much faster. Don't use it if the user has already configured another linker
# selection manually.
@@ -3021,8 +3023,9 @@ def doConfigure(myenv):
def checkOpenSSL(conf):
sslLibName = "ssl"
cryptoLibName = "crypto"
- sslLinkDependencies = ["crypto", "dl"]
- if conf.env.TargetOSIs('freebsd'):
+ if conf.env.TargetOSIs('linux', 'solaris'):
+ sslLinkDependencies = ["crypto", "dl"]
+ else:
sslLinkDependencies = ["crypto"]
if conf.env.TargetOSIs('windows'):
@@ -3368,7 +3371,7 @@ def doConfigure(myenv):
myenv.ConfError("Couldn't find SASL header/libraries")
# requires ports devel/libexecinfo to be installed
- if env.TargetOSIs('freebsd', 'openbsd'):
+ if env.TargetOSIs('dragonfly', 'freebsd', 'netbsd', 'openbsd'):
if not conf.CheckLib("execinfo"):
myenv.ConfError("Cannot find libexecinfo, please install devel/libexecinfo.")
|