blob: d44293ff3a0d343331dbffd7540be675e84333d2 (
plain)
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
# file : libcurl/buildfile
# license : curl License; see accompanying COPYING file
# Version script.
#
define vsc: file
vsc{*}: extension = vers
import imp_libs = libssl%lib{ssl}
import imp_libs += libcrypto%lib{crypto}
import imp_libs += libz%lib{z}
lib{curl}: {h c}{**} $imp_libs
tclass = $c.target.class
tsys = $c.target.system
linux = ($tclass == 'linux')
bsd = ($tclass == 'bsd')
macos = ($tclass == 'macos')
windows = ($tclass == 'windows')
libs{curl}: vsc{libcurl}: include = ($linux || $bsd ? adhoc : false)
vsc{libcurl}: lib/in{libcurl}
{
in.symbol = '@'
CURL_LT_SHLIB_VERSIONED_FLAVOUR = 'OPENSSL_'
}
# Build options.
#
c.poptions += -DBUILDING_LIBCURL -DHAVE_CONFIG_H \
-DOS="\"$c.target\"" -DVERSION="\"$version.project_id\""
if! $windows
c.poptions += -DCURL_HIDDEN_SYMBOLS
# Note that the upstream package uses the -pthread compiler/linker option on
# Linux and FreeBSD. The option is unsupported by build2 so we pass
# -D_REENTRANT and -lpthread preprocessor/linker options instead.
#
switch $tclass, $tsys
{
case 'linux' | 'bsd'
c.poptions += -D_REENTRANT
case 'windows', 'win32-msvc'
c.poptions += -DWIN32
}
c.poptions =+ "-I$src_base" "-I$src_base/include" "-I$src_base/lib"
obja{*}: c.poptions += -DCURL_STATICLIB
if! $windows
c.coptions += -fvisibility=hidden
switch $c.class
{
case 'gcc'
{
# Disable warnings that pop up with -Wall -Wextra. Upstream doesn't seem
# to care about these and it is not easy to disable specific warnings in a
# way that works across compilers/version (some -Wno-* options are only
# recognized in newer versions).
#
c.coptions += -Wno-all -Wno-extra -Wno-deprecated-declarations
}
case 'msvc'
{
# Disable warnings that pop up with /W3.
#
c.coptions += /wd4028 /wd4996
}
}
switch $tclass, $tsys
{
case 'linux' | 'bsd'
{
# Make sure all symbols are resolvable.
#
c.loptions += -Wl,--no-undefined
c.loptions += "-Wl,--version-script=$out_base/libcurl.vers"
c.libs += -lpthread
}
case 'macos'
{
# Note that upstream generates the libcurl-symbols.expsym file on MacOS
# and passes it to linker via the -exported_symbols_list option. This
# looks redundant, since the __visibility__("default") attribute is also
# used for the API function declarations. Thus, we don't bother
# generating/passing the exported symbol list file.
#
c.libs += -framework CoreFoundation -framework Security
}
case 'windows', 'mingw32'
{
c.loptions += -Wl,--enable-auto-image-base
c.libs += -lws2_32 -lcrypt32
}
case 'windows'
{
c.libs += ws2_32.lib crypt32.lib normaliz.lib advapi32.lib
}
}
# Export options.
#
lib{curl}: cc.export.poptions = "-I$src_base/include"
liba{curl}: cc.export.poptions += -DCURL_STATICLIB
# See bootstrap.build for details.
#
if $version.pre_release
lib{curl}: bin.lib.version = @"-$version.project_id"
else
lib{curl}: bin.lib.version = @"-$abi_version_major" linux@"$abi_version"
# Install headers from the include/curl/ subdirectory only.
#
h{*}: install = false
include/curl/h{*}: install = include/curl/
|