-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathemscripten.jam
More file actions
105 lines (85 loc) · 3.7 KB
/
Copy pathemscripten.jam
File metadata and controls
105 lines (85 loc) · 3.7 KB
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
# Copyright Rene Rivera 2016
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt
# or copy at http://www.boost.org/LICENSE_1_0.txt)
import feature ;
import os ;
import toolset ;
import common ;
import gcc ;
import type ;
feature.feature embind : off on : propagated ;
feature.feature closure : off on full : propagated ;
feature.feature link-optimization : off on full : propagated ;
rule init ( version ? : command * : options * )
{
command = [ common.get-invocation-command emscripten
: emcc
: $(command) ] ;
# Determine the version
if $(command)
{
local command-string = \"$(command)\" ;
command-string = $(command-string:J=" ") ;
version ?= [ MATCH "([0-9.]+)"
: [ SHELL "$(command-string) --version" ] ] ;
}
local condition = [ common.check-init-parameters emscripten
: version $(version) ] ;
common.handle-options emscripten : $(condition) : $(command) : $(options) ;
}
feature.extend toolset : emscripten ;
toolset.inherit-generators emscripten <toolset>emscripten
: gcc
: gcc.mingw.link gcc.mingw.link.dll gcc.compile.c.pch gcc.compile.c++.pch
;
toolset.inherit-rules emscripten : gcc ;
toolset.inherit-flags emscripten : gcc
:
<optimization>off <optimization>speed <optimization>space
<profiling>off <profiling>on
<debug-symbols>off <debug-symbols>on
<rtti>off <rtti>on
;
type.set-generated-target-suffix EXE : <toolset>emscripten : "js" ;
type.set-generated-target-suffix OBJ : <toolset>emscripten : "bc" ;
type.set-generated-target-suffix STATIC_LIB : <toolset>emscripten : "a" ;
toolset.flags emscripten.compile OPTIONS <flags> ;
toolset.flags emscripten.compile OPTIONS <cflags> ;
toolset.flags emscripten.compile.c++ OPTIONS <cxxflags> ;
toolset.flags emscripten.compile OPTIONS <optimization>off : -O0 ;
toolset.flags emscripten.compile OPTIONS <optimization>speed : -O3 ;
toolset.flags emscripten.compile OPTIONS <optimization>space : -Oz ;
toolset.flags emscripten.link OPTIONS <optimization>off : -O0 ;
toolset.flags emscripten.link OPTIONS <optimization>speed : -O3 ;
toolset.flags emscripten.link OPTIONS <optimization>space : -O3 ;
toolset.flags emscripten.compile OPTIONS <profiling>on : --profiling-funcs ;
toolset.flags emscripten.compile OPTIONS <inlining>off : -fno-inline ;
toolset.flags emscripten.compile OPTIONS <inlining>on : -Wno-inline ;
toolset.flags emscripten.compile OPTIONS <inlining>full : -Wno-inline ;
toolset.flags emscripten OPTIONS <debug-symbols>off : -g0 ;
toolset.flags emscripten OPTIONS <debug-symbols>on : -g4 -s DEMANGLE_SUPPORT=1 ;
toolset.flags emscripten OPTIONS <rtti>off : -fno-rtti ;
toolset.flags emscripten.link OPTIONS <embind>on : --bind ;
toolset.flags emscripten.link OPTIONS <closure>on : --closure 1 ;
toolset.flags emscripten.link OPTIONS <closure>full : --closure 2 ;
toolset.flags emscripten.link OPTIONS <link-optimization>off : --llvm-lto 0 ;
toolset.flags emscripten.link OPTIONS <link-optimization>on : --llvm-lto 1 ;
toolset.flags emscripten.link OPTIONS <link-optimization>full : --llvm-lto 3 ;
actions compile.c
{
"$(CONFIG_COMMAND)" -x c $(OPTIONS) -D$(DEFINES) -I"$(INCLUDES)" -c -o "$(<)" "$(>)"
}
actions compile.c++
{
"$(CONFIG_COMMAND)" -matomics -s USE_PTHREADS=1 -x c++ $(OPTIONS) -D$(DEFINES) -I"$(INCLUDES)" -c -o "$(<)" "$(>)"
}
actions archive
{
"emar" $(AROPTIONS) qc "$(<)" "$(>)"
}
toolset.flags emscripten.link USER_OPTIONS <linkflags> ;
actions link bind LIBRARIES
{
"$(CONFIG_COMMAND)" $(USER_OPTIONS) -L"$(LINKPATH)" -o "$(<)" "$(>)" "$(LIBRARIES)" $(START-GROUP) $(FINDLIBS-ST-PFX) -l$(FINDLIBS-ST) $(FINDLIBS-SA-PFX) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS)
}