OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 | 6 |
7 # | 7 # |
8 # Default macros for various platforms. | 8 # Default macros for various platforms. |
9 # | 9 # |
10 NEWLIB_DEFAULTS = """ | 10 NEWLIB_DEFAULTS = """ |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
49 WIN_LDFLAGS=/LIBPATH:$(NACL_SDK_ROOT)/lib/win_x86_32_host | 49 WIN_LDFLAGS=/LIBPATH:$(NACL_SDK_ROOT)/lib/win_x86_32_host |
50 """ | 50 """ |
51 | 51 |
52 # | 52 # |
53 # Compile rules for various platforms. | 53 # Compile rules for various platforms. |
54 # | 54 # |
55 NACL_CC_RULE = """ | 55 NACL_CC_RULE = """ |
56 <OBJS>:=$(patsubst %.<ext>, <tc>/%_<ARCH>.o,$(<PROJ>_<EXT>)) | 56 <OBJS>:=$(patsubst %.<ext>, <tc>/%_<ARCH>.o,$(<PROJ>_<EXT>)) |
57 DEPFILES+=$(<OBJS>:.o=.d) | 57 DEPFILES+=$(<OBJS>:.o=.d) |
58 $(<OBJS>) : <tc>/%_<ARCH>.o : %.<ext> $(THIS_MAKE) | <tc> | 58 $(<OBJS>) : <tc>/%_<ARCH>.o : %.<ext> $(THIS_MAKE) | <tc> |
59 <TAB>$(<CC>) -o $@ $< <MACH> $(<PROJ>_<EXT>FLAGS) -DTCNAME=<tc> $(<TC>_CCFLAGS)
<DEFLIST> | 59 <TAB>$(<CC>) -o $@ $< <MACH> -DTCNAME=<tc> $(<TC>_CCFLAGS) $(<PROJ>_<EXT>FLAGS)
<DEFLIST> <INCLUDELIST> |
60 """ | 60 """ |
61 | 61 |
62 SO_CC_RULE = """ | 62 SO_CC_RULE = """ |
63 <OBJS>:=$(patsubst %.<ext>, <tc>/%_<ARCH>.o,$(<PROJ>_<EXT>)) | 63 <OBJS>:=$(patsubst %.<ext>, <tc>/%_<ARCH>.o,$(<PROJ>_<EXT>)) |
64 DEPFILES+=$(<OBJS>:.o=.d) | 64 DEPFILES+=$(<OBJS>:.o=.d) |
65 $(<OBJS>) : <tc>/%_<ARCH>.o : %.<ext> $(THIS_MAKE) | <tc> | 65 $(<OBJS>) : <tc>/%_<ARCH>.o : %.<ext> $(THIS_MAKE) | <tc> |
66 <TAB>$(<CC>) -o $@ $< <MACH> -fPIC $(<PROJ>_<EXT>FLAGS) -DTCNAME=<tc> $(<TC>_CCF
LAGS) <DEFLIST> | 66 <TAB>$(<CC>) -o $@ $< <MACH> -fPIC -DTCNAME=<tc> $(<TC>_CCFLAGS) $(<PROJ>_<EXT>F
LAGS) <DEFLIST> <INCLUDELIST> |
67 """ | 67 """ |
68 | 68 |
69 WIN_CC_RULE = """ | 69 WIN_CC_RULE = """ |
70 <OBJS>:=$(patsubst %.<ext>, <tc>/%.obj,$(<PROJ>_<EXT>)) | 70 <OBJS>:=$(patsubst %.<ext>, <tc>/%.obj,$(<PROJ>_<EXT>)) |
71 $(<OBJS>) : <tc>/%.obj : %.<ext> $(THIS_MAKE) | <tc> | 71 $(<OBJS>) : <tc>/%.obj : %.<ext> $(THIS_MAKE) | <tc> |
72 <TAB>$(<CC>) /Fo$@ /c $< -DTCNAME=host $(WIN_CCFLAGS) <DEFLIST> | 72 <TAB>$(<CC>) /Fo$@ /c $< -DTCNAME=host $(WIN_CCFLAGS) <DEFLIST> <INCLUDELIST> |
73 """ | 73 """ |
74 | 74 |
75 # | 75 # |
76 # Link rules for various platforms. | 76 # Link rules for various platforms. |
77 # | 77 # |
78 NEXE_LINK_RULE = """ | 78 NEXE_LINK_RULE = """ |
79 <tc>/<proj>_<ARCH>.nexe : <OBJS> | 79 <tc>/<proj>_<ARCH>.nexe : <OBJS> |
80 <TAB>$(<LINK>) -o $@ $^ <MACH> $(<PROJ>_LDFLAGS) $(<TC>_LDFLAGS) <LIBLIST> | 80 <TAB>$(<LINK>) -o $@ $^ <MACH> $(<PROJ>_LDFLAGS) $(<TC>_LDFLAGS) <LIBLIST> |
81 <TC>_NMF+=<tc>/<proj>_<ARCH>.nexe | 81 <TC>_NMF+=<tc>/<proj>_<ARCH>.nexe |
82 """ | 82 """ |
(...skipping 28 matching lines...) Expand all Loading... |
111 HOST_ARGS:=--register-pepper-plugins=$(abspath win/<proj>.dll);application/x-nac
l | 111 HOST_ARGS:=--register-pepper-plugins=$(abspath win/<proj>.dll);application/x-nac
l |
112 LAUNCH_HOST: CHECK_FOR_CHROME all | 112 LAUNCH_HOST: CHECK_FOR_CHROME all |
113 <TAB>$(CHROME_PATH) $(HOST_ARGS) "localhost:5103/index_win.html" | 113 <TAB>$(CHROME_PATH) $(HOST_ARGS) "localhost:5103/index_win.html" |
114 """ | 114 """ |
115 | 115 |
116 # | 116 # |
117 # Lib rules for various platforms. | 117 # Lib rules for various platforms. |
118 # | 118 # |
119 POSIX_LIB_RULE = """ | 119 POSIX_LIB_RULE = """ |
120 $(NACL_SDK_ROOT)/lib/$(OSNAME)_<ARCH>_<tc>/lib<proj>.a : <OBJS> | 120 $(NACL_SDK_ROOT)/lib/$(OSNAME)_<ARCH>_<tc>/lib<proj>.a : <OBJS> |
121 <TAB>$(MKDIR) $(dir $@) | 121 <TAB>$(MKDIR) -p $(dir $@) |
122 <TAB>$(<LIB>) $@ $^ | 122 <TAB>$(<LIB>) $@ $^ |
123 """ | 123 """ |
124 | 124 |
125 WIN_LIB_RULE = """ | 125 WIN_LIB_RULE = """ |
126 $(NACL_SDK_ROOT)/lib/win_<ARCH>_host/<proj>.lib : <OBJS> | 126 $(NACL_SDK_ROOT)/lib/win_<ARCH>_host/<proj>.lib : <OBJS> |
127 <TAB>$(<LIB>) /OUT:$@ $^ $(<PROJ>_<EXT>FLAGS) <LIBLIST> | 127 <TAB>$(<LIB>) /OUT:$@ $^ $(<PROJ>_<EXT>FLAGS) <LIBLIST> |
128 """ | 128 """ |
129 | 129 |
130 | 130 |
131 | 131 |
(...skipping 13 matching lines...) Expand all Loading... |
145 """ | 145 """ |
146 | 146 |
147 | 147 |
148 EXT_MAP = { | 148 EXT_MAP = { |
149 'c': 'CC', | 149 'c': 'CC', |
150 'cc': 'CXX' | 150 'cc': 'CXX' |
151 } | 151 } |
152 | 152 |
153 WIN_TOOL = { | 153 WIN_TOOL = { |
154 'DEFINE': '-D%s', | 154 'DEFINE': '-D%s', |
| 155 'INCLUDE': '/I%s', |
155 'LIBRARY': '%s.lib', | 156 'LIBRARY': '%s.lib', |
156 'main': '<tc>/<proj>.dll', | 157 'main': '<tc>/<proj>.dll', |
157 'nmf': '<tc>/<proj>.nmf', | 158 'nmf': '<tc>/<proj>.nmf', |
158 'so': None, | 159 'so': None, |
159 'lib': '$(NACL_SDK_ROOT)/lib/win_<ARCH>_host/<proj>.lib', | 160 'lib': '$(NACL_SDK_ROOT)/lib/win_<ARCH>_host/<proj>.lib', |
160 } | 161 } |
161 | 162 |
162 NACL_TOOL = { | 163 NACL_TOOL = { |
163 'DEFINE': '-D%s', | 164 'DEFINE': '-D%s', |
| 165 'INCLUDE': '-I%s', |
164 'LIBRARY': '-l%s', | 166 'LIBRARY': '-l%s', |
165 'main': '<tc>/<proj>_<ARCH>.nexe', | 167 'main': '<tc>/<proj>_<ARCH>.nexe', |
166 'nmf': '<tc>/<proj>.nmf', | 168 'nmf': '<tc>/<proj>.nmf', |
167 'so': '<tc>/<proj>_<ARCH>.so', | 169 'so': '<tc>/<proj>_<ARCH>.so', |
168 'lib': '$(NACL_SDK_ROOT)/lib/$(OSNAME)_<ARCH>_<tc>/lib<proj>.a', | 170 'lib': '$(NACL_SDK_ROOT)/lib/$(OSNAME)_<ARCH>_<tc>/lib<proj>.a', |
169 } | 171 } |
170 | 172 |
171 | 173 |
172 # | 174 # |
173 # Various Architectures | 175 # Various Architectures |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
239 'SO': None, | 241 'SO': None, |
240 'TOOL': WIN_TOOL | 242 'TOOL': WIN_TOOL |
241 } | 243 } |
242 } | 244 } |
243 | 245 |
244 | 246 |
245 def GetBuildRule(tool, ext): | 247 def GetBuildRule(tool, ext): |
246 return BUILD_RULES[tool][ext] | 248 return BUILD_RULES[tool][ext] |
247 | 249 |
248 | 250 |
| 251 def BuildList(tool, key, items): |
| 252 pattern = BUILD_RULES[tool]['TOOL'][key] |
| 253 items = [(pattern % name) for name in items] |
| 254 return ' '.join(items) |
| 255 |
249 def BuildDefineList(tool, defs): | 256 def BuildDefineList(tool, defs): |
250 pattern = BUILD_RULES[tool]['TOOL']['DEFINE'] | 257 return BuildList(tool, 'DEFINE', defs) |
251 defines = [(pattern % name) for name in defs] | 258 |
252 return ' '.join(defines) | 259 |
| 260 def BuildIncludeList(tool, includes): |
| 261 return BuildList(tool, 'INCLUDE', includes) |
253 | 262 |
254 | 263 |
255 def BuildLibList(tool, libs): | 264 def BuildLibList(tool, libs): |
256 pattern = BUILD_RULES[tool]['TOOL']['LIBRARY'] | 265 return BuildList(tool, 'LIBRARY', libs) |
257 libraries = [(pattern % name) for name in libs] | |
258 return ' '.join(libraries) | |
259 | 266 |
260 | 267 |
261 def BuildToolDict(toolchain, project, arch = {}, ext='nexe', **kwargs): | 268 def BuildToolDict(toolchain, project, arch = {}, ext='nexe', **kwargs): |
262 tc = toolchain | 269 tc = toolchain |
263 TC = toolchain.upper() | 270 TC = toolchain.upper() |
264 proj = project | 271 proj = project |
265 PROJ = proj.upper() | 272 PROJ = proj.upper() |
266 EXT = EXT_MAP.get(ext, ext.upper()) | 273 EXT = EXT_MAP.get(ext, ext.upper()) |
267 | 274 |
268 replace = { | 275 replace = { |
(...skipping 18 matching lines...) Expand all Loading... |
287 for key in kwargs: | 294 for key in kwargs: |
288 replace['<%s>' % key] = kwargs[key] | 295 replace['<%s>' % key] = kwargs[key] |
289 | 296 |
290 if '<OBJS>' not in replace: | 297 if '<OBJS>' not in replace: |
291 if replace.get('<ARCH>', ''): | 298 if replace.get('<ARCH>', ''): |
292 replace['<OBJS>'] = '%s_%s_%s_%s_O' % (TC, PROJ, replace['<ARCH>'], EXT) | 299 replace['<OBJS>'] = '%s_%s_%s_%s_O' % (TC, PROJ, replace['<ARCH>'], EXT) |
293 else: | 300 else: |
294 replace['<OBJS>'] = '%s_%s_%s_O' % (TC, PROJ, EXT) | 301 replace['<OBJS>'] = '%s_%s_%s_O' % (TC, PROJ, EXT) |
295 return replace | 302 return replace |
296 | 303 |
OLD | NEW |