blob: b9d2823e425174660da2dae6e7eea8f852747682 (
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
|
# -*- jam -*-
# configuration for curlpp
# I haven't been able to wrap my mind around bjam yet, so chances are
# there's a much better way to do things.
module curlppvars { } # this stores the variables we want to keep
if [ option.get "no-curlpp" : : yes ]
{
rule curlpp ( what ? ) { } # never return anything
}
else
{
local version ;
local prefix ;
# check if a non-standard location for curl is given
local curlpp = [ option.get "with-curlpp" ] ;
if ! $(curlpp) # maybe via environment variable CURLPP_ROOT ?
{
local where = [ os.environ "CURLPP_ROOT" ] ;
if $(where)
{
option.set "with-curlpp" : $(where) ;
local msg = "CURLPP: setting --with-curlpp=$(where) via environment" ;
echo "$(msg) variable CURLPP_ROOT" ;
}
curlpp = [ option.get "with-curlpp" ] ;
}
local config ;
if $(curlpp)
{
config = $(curlpp)/bin/curlpp-config ;
}
else # is curlpp-config in the path ?
{
local curlpp-check = [ _shell "curlpp-config >/dev/null" : exit-status ] ;
if $(curlpp-check[2]) = 0 { config = curlpp-config ; }
}
if $(config)
{
prefix = [ shell_or_die "$(config) --prefix" ] ;
version = [ shell_or_die "$(config) --version" ] ;
version = [ SPLIT_BY_CHARACTERS $(version) : " " ] ;
version = [ trim-nl $(version[2]) ] ;
modules.poke curlppvars : prefix : $(prefix) ;
modules.poke curlppvars : version : $(version) ;
requirements += <define>HAVE_CURLPP ;
local cpp-cflags = [ shell_or_die "$(config) --cflags" ] ;
for local i in [ SPLIT_BY_CHARACTERS $(cpp-cflags) : " " ]
{
local incpath = [ MATCH "-I(.*)" : $(i) ] ;
if $(incpath)
{
# echo "CURLPP: $(i)" ;
requirements += <cxxflags>"-isystem $(incpath)" ;
# requirements += <include>$(incpath) ;
}
}
local cpp-libs = [ shell_or_die "$(config) --libs" ] ;
local cpp-prefix = [ shell_or_die "$(config) --prefix" ] ;
for local i in [ SPLIT_BY_CHARACTERS $(cpp-libs) : " " ]
{
local libpath = [ MATCH "^-L(.*)" : $(i) ] ;
if $(libpath) { requirements += <library-path>$(libpath) ; }
local libname = [ MATCH "^-l(.*)" : $(i) ] ;
if $(libname)
{
# local curl = [ MATCH "^-l(.*pp)" : $(i) ] ;
# if [ path.exists $(cpp-prefix)/lib/lib$(libname).a ]
# {
# echo "CURLPP: STATIC LINKING FOR LIBRARY: $(libname)" ;
# lib $(libname) : : <link>static ;
# }
# else
# {
external-lib $(libname) ;
# }
requirements += <library>$(libname)/<link>shared ;
}
else
{
requirements += <linkflags>$(i) ;
}
# requirements += <library-path>/usr/lib/x86_64-linux-gnu ;
# for local xtra in idn rtmp ssl crypto ssl crypto ldap rt
# {
# external-lib $(xtra) : /usr/lib/x86_64-linux-gnu ;
# requirements += <library>$(xtra) ;
# }
}
# the rule curlpp provides access to all the variables defined in this file
# if none argument is given, it returns $(version), which should only be
# defined if curl is available
rule curlpp ( what ? )
{
if $(what)
{
retval = [ modules.peek curlppvars : $(what) ] ;
if $(retval) { return $(retval) ; }
}
else { return "yes" ; }
}
}
else { rule curlpp { } }
}
if [ curlpp ]
{
local prefix = [ curlpp prefix ] ;
local version = [ curlpp version ] ;
echo "CULRPP: USING VERSION $(version) FROM $(prefix)" ;
}
|