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 import os | 6 import os |
7 | 7 |
8 # pylint: disable=C0301 | 8 # pylint: disable=C0301 |
9 # This file contains lines longer than 80 | 9 # This file contains lines longer than 80 |
10 | 10 |
11 # | 11 # |
12 # Default macros for various platforms. | 12 # Default macros for various platforms. |
13 # | 13 # |
14 NEWLIB_DEFAULTS = """ | 14 NEWLIB_DEFAULTS = """ |
15 NEWLIB_CC?=$(TC_PATH)/$(OSNAME)_x86_newlib/bin/i686-nacl-gcc -c | 15 NEWLIB_CC?=$(TC_PATH)/$(OSNAME)_x86_newlib/bin/i686-nacl-gcc -c |
16 NEWLIB_CXX?=$(TC_PATH)/$(OSNAME)_x86_newlib/bin/i686-nacl-g++ -c -std=gnu++98 | 16 NEWLIB_CXX?=$(TC_PATH)/$(OSNAME)_x86_newlib/bin/i686-nacl-g++ -c |
17 NEWLIB_LINK?=$(TC_PATH)/$(OSNAME)_x86_newlib/bin/i686-nacl-g++ -Wl,-as-needed | 17 NEWLIB_LINK?=$(TC_PATH)/$(OSNAME)_x86_newlib/bin/i686-nacl-g++ -Wl,-as-needed |
18 NEWLIB_LIB?=$(TC_PATH)/$(OSNAME)_x86_newlib/bin/i686-nacl-ar r | 18 NEWLIB_LIB?=$(TC_PATH)/$(OSNAME)_x86_newlib/bin/i686-nacl-ar r |
19 NEWLIB_DUMP?=$(TC_PATH)/$(OSNAME)_x86_newlib/x86_64-nacl/bin/objdump | 19 NEWLIB_DUMP?=$(TC_PATH)/$(OSNAME)_x86_newlib/x86_64-nacl/bin/objdump |
20 NEWLIB_CCFLAGS?=-MMD -pthread $(NACL_WARNINGS) -idirafter $(NACL_SDK_ROOT)/inclu
de | 20 NEWLIB_CCFLAGS?=-MMD -pthread $(NACL_WARNINGS) -idirafter $(NACL_SDK_ROOT)/inclu
de |
21 NEWLIB_LDFLAGS?=-pthread | 21 NEWLIB_LDFLAGS?=-pthread |
22 """ | 22 """ |
23 | 23 |
24 GLIBC_DEFAULTS = """ | 24 GLIBC_DEFAULTS = """ |
25 GLIBC_CC?=$(TC_PATH)/$(OSNAME)_x86_glibc/bin/i686-nacl-gcc -c | 25 GLIBC_CC?=$(TC_PATH)/$(OSNAME)_x86_glibc/bin/i686-nacl-gcc -c |
26 GLIBC_CXX?=$(TC_PATH)/$(OSNAME)_x86_glibc/bin/i686-nacl-g++ -c -std=gnu++98 | 26 GLIBC_CXX?=$(TC_PATH)/$(OSNAME)_x86_glibc/bin/i686-nacl-g++ -c |
27 GLIBC_LINK?=$(TC_PATH)/$(OSNAME)_x86_glibc/bin/i686-nacl-g++ -Wl,-as-needed | 27 GLIBC_LINK?=$(TC_PATH)/$(OSNAME)_x86_glibc/bin/i686-nacl-g++ -Wl,-as-needed |
28 GLIBC_LIB?=$(TC_PATH)/$(OSNAME)_x86_glibc/bin/i686-nacl-ar r | 28 GLIBC_LIB?=$(TC_PATH)/$(OSNAME)_x86_glibc/bin/i686-nacl-ar r |
29 GLIBC_DUMP?=$(TC_PATH)/$(OSNAME)_x86_glibc/x86_64-nacl/bin/objdump | 29 GLIBC_DUMP?=$(TC_PATH)/$(OSNAME)_x86_glibc/x86_64-nacl/bin/objdump |
30 GLIBC_PATHS:=-L $(TC_PATH)/$(OSNAME)_x86_glibc/x86_64-nacl/lib32 | 30 GLIBC_PATHS:=-L $(TC_PATH)/$(OSNAME)_x86_glibc/x86_64-nacl/lib32 |
31 GLIBC_PATHS+=-L $(TC_PATH)/$(OSNAME)_x86_glibc/x86_64-nacl/lib | 31 GLIBC_PATHS+=-L $(TC_PATH)/$(OSNAME)_x86_glibc/x86_64-nacl/lib |
32 GLIBC_CCFLAGS?=-MMD -pthread $(NACL_WARNINGS) -idirafter $(NACL_SDK_ROOT)/includ
e | 32 GLIBC_CCFLAGS?=-MMD -pthread $(NACL_WARNINGS) -idirafter $(NACL_SDK_ROOT)/includ
e |
33 GLIBC_LDFLAGS?=-pthread | 33 GLIBC_LDFLAGS?=-pthread |
34 """ | 34 """ |
35 | 35 |
36 PNACL_DEFAULTS = """ | 36 PNACL_DEFAULTS = """ |
37 PNACL_CC?=$(TC_PATH)/$(OSNAME)_x86_pnacl/newlib/bin/pnacl-clang -c | 37 PNACL_CC?=$(TC_PATH)/$(OSNAME)_x86_pnacl/newlib/bin/pnacl-clang -c |
38 PNACL_CXX?=$(TC_PATH)/$(OSNAME)_x86_pnacl/newlib/bin/pnacl-clang++ -c -std=gnu++
98 | 38 PNACL_CXX?=$(TC_PATH)/$(OSNAME)_x86_pnacl/newlib/bin/pnacl-clang++ -c |
39 PNACL_LINK?=$(TC_PATH)/$(OSNAME)_x86_pnacl/newlib/bin/pnacl-clang++ | 39 PNACL_LINK?=$(TC_PATH)/$(OSNAME)_x86_pnacl/newlib/bin/pnacl-clang++ |
40 PNACL_LIB?=$(TC_PATH)/$(OSNAME)_x86_pnacl/newlib/bin/pnacl-ar r | 40 PNACL_LIB?=$(TC_PATH)/$(OSNAME)_x86_pnacl/newlib/bin/pnacl-ar r |
41 PNACL_DUMP?=$(TC_PATH)/$(OSNAME)_x86_pnacl/newlib/bin/objdump | 41 PNACL_DUMP?=$(TC_PATH)/$(OSNAME)_x86_pnacl/newlib/bin/objdump |
42 PNACL_CCFLAGS?=-MMD -pthread $(NACL_WARNINGS) -idirafter $(NACL_SDK_ROOT)/includ
e | 42 PNACL_CCFLAGS?=-MMD -pthread $(NACL_WARNINGS) -idirafter $(NACL_SDK_ROOT)/includ
e |
43 PNACL_LDFLAGS?=-pthread | 43 PNACL_LDFLAGS?=-pthread |
44 TRANSLATE:=$(TC_PATH)/$(OSNAME)_x86_pnacl/newlib/bin/pnacl-translate | 44 TRANSLATE:=$(TC_PATH)/$(OSNAME)_x86_pnacl/newlib/bin/pnacl-translate |
45 """ | 45 """ |
46 | 46 |
47 LINUX_DEFAULTS = """ | 47 LINUX_DEFAULTS = """ |
48 LINUX_CC?=gcc -c | 48 LINUX_CC?=gcc -c |
49 LINUX_CXX?=g++ -c -std=gnu++98 | 49 LINUX_CXX?=g++ -c |
50 LINUX_LINK?=g++ | 50 LINUX_LINK?=g++ |
51 LINUX_LIB?=ar r | 51 LINUX_LIB?=ar r |
52 LINUX_CCFLAGS=-I$(NACL_SDK_ROOT)/include -I$(NACL_SDK_ROOT)/include/linux | 52 LINUX_CCFLAGS=-I$(NACL_SDK_ROOT)/include -I$(NACL_SDK_ROOT)/include/linux |
53 """ | 53 """ |
54 | 54 |
55 WIN_DEFAULTS = """ | 55 WIN_DEFAULTS = """ |
56 WIN_CC?=cl.exe /nologo | 56 WIN_CC?=cl.exe /nologo /WX |
57 WIN_CXX?=cl.exe /nologo | 57 WIN_CXX?=cl.exe /nologo /EHsc /WX |
58 WIN_LINK?=link.exe /nologo | 58 WIN_LINK?=link.exe /nologo |
59 WIN_LIB?=lib.exe /nologo | 59 WIN_LIB?=lib.exe /nologo |
60 WIN_CCFLAGS=/I$(NACL_SDK_ROOT)/include /I$(NACL_SDK_ROOT)/include/win -D WIN32 -
D _WIN32 -D PTW32_STATIC_LIB | 60 WIN_CCFLAGS=/I$(NACL_SDK_ROOT)\\include /I$(NACL_SDK_ROOT)\\include\\win -D WIN3
2 -D _WIN32 -D PTW32_STATIC_LIB |
61 """ | 61 """ |
62 | 62 |
63 # | 63 # |
64 # Compile rules for various platforms. | 64 # Compile rules for various platforms. |
65 # | 65 # |
66 NACL_CC_RULES = { | 66 NACL_CC_RULES = { |
67 'Debug': '<TAB>$(<CC>) -o $@ $< -g -O0 <MACH> $(<TC>_CCFLAGS) $(<PROJ>_<EXT>FL
AGS) <DEFLIST> <INCLIST>', | 67 'Debug': '<TAB>$(<CC>) -o $@ $< -g -O0 <MACH> $(<TC>_CCFLAGS) $(<PROJ>_<EXT>FL
AGS) <DEFLIST> <INCLIST>', |
68 'Release': '<TAB>$(<CC>) -o $@ $< -O2 <MACH> $(<TC>_CCFLAGS) $(<PROJ>_<EXT>FLA
GS) <DEFLIST> <INCLIST>', | 68 'Release': '<TAB>$(<CC>) -o $@ $< -O2 <MACH> $(<TC>_CCFLAGS) $(<PROJ>_<EXT>FLA
GS) <DEFLIST> <INCLIST>', |
69 } | 69 } |
70 | 70 |
71 SO_CC_RULES = { | 71 SO_CC_RULES = { |
72 'Debug': '<TAB>$(<CC>) -o $@ $< -g -O0 <MACH> -fPIC $(<TC>_CCFLAGS) $(<PROJ>_<
EXT>FLAGS) <DEFLIST> <INCLIST>', | 72 'Debug': '<TAB>$(<CC>) -o $@ $< -g -O0 <MACH> -fPIC $(<TC>_CCFLAGS) $(<PROJ>_<
EXT>FLAGS) <DEFLIST> <INCLIST>', |
73 'Release': '<TAB>$(<CC>) -o $@ $< -O2 <MACH> -fPIC $(<TC>_CCFLAGS) $(<PROJ>_<E
XT>FLAGS) <DEFLIST> <INCLIST>' | 73 'Release': '<TAB>$(<CC>) -o $@ $< -O2 <MACH> -fPIC $(<TC>_CCFLAGS) $(<PROJ>_<E
XT>FLAGS) <DEFLIST> <INCLIST>' |
74 } | 74 } |
75 | 75 |
76 WIN_CC_RULES = { | 76 WIN_CC_RULES = { |
77 'Debug': '<TAB>$(<CC>) /Od /Fo$@ /MTd /Zi /c $< $(WIN_CCFLAGS) <DEFLIST> <INCL
IST>', | 77 'Debug': '<TAB>$(<CC>) /Od /Fo$@ /MTd /Z7 /c $< $(WIN_CCFLAGS) <DEFLIST> <INCL
IST>', |
78 'Release': '<TAB>$(<CC>) /O2 /Fo$@ /MT /c $< $(WIN_CCFLAGS) <DEFLIST> <INCLIST
>' | 78 'Release': '<TAB>$(<CC>) /O2 /Fo$@ /MT /c $< $(WIN_CCFLAGS) <DEFLIST> <INCLIST
>' |
79 } | 79 } |
80 | 80 |
81 # | 81 # |
82 # Link rules for various platforms. | 82 # Link rules for various platforms. |
83 # | 83 # |
84 NEXE_LINK_RULES = { | 84 NEXE_LINK_RULES = { |
85 'Debug': '<TAB>$(<LINK>) -o $@ $^ -g <MACH> $(<TC>_LDFLAGS) $(<PROJ>_LDFLAGS)
-L$(NACL_SDK_ROOT)/lib/$(OSNAME)_<ARCH>_<tc>/<config> -Wl,--start-group <LIBLIST
> -Wl,--end-group', | 85 'Debug': '<TAB>$(<LINK>) -o $@ $^ -g <MACH> $(<TC>_LDFLAGS) $(<PROJ>_LDFLAGS)
-L$(NACL_SDK_ROOT)/lib/$(OSNAME)_<ARCH>_<tc>/<config> -Wl,--start-group <LIBLIST
> -Wl,--end-group', |
86 'Release': '<TAB>$(<LINK>) -o $@ $^ <MACH> $(<TC>_LDFLAGS) $(<PROJ>_LDFLAGS) -
L$(NACL_SDK_ROOT)/lib/$(OSNAME)_<ARCH>_<tc>/<config> -Wl,--start-group <LIBLIST
> -Wl,--end-group' | 86 'Release': '<TAB>$(<LINK>) -o $@ $^ <MACH> $(<TC>_LDFLAGS) $(<PROJ>_LDFLAGS) -
L$(NACL_SDK_ROOT)/lib/$(OSNAME)_<ARCH>_<tc>/<config> -Wl,--start-group <LIBLIST
> -Wl,--end-group' |
87 } | 87 } |
(...skipping 17 matching lines...) Expand all Loading... |
105 | 105 |
106 <tc>/<config>/<proj>_arm.nexe : <tc>/<config>/<proj>.pexe | 106 <tc>/<config>/<proj>_arm.nexe : <tc>/<config>/<proj>.pexe |
107 <TAB>$(TRANSLATE) -arch arm $< -o $@""" | 107 <TAB>$(TRANSLATE) -arch arm $< -o $@""" |
108 | 108 |
109 PEXE_LINK_RULES = { | 109 PEXE_LINK_RULES = { |
110 'Debug': '<TAB>$(<LINK>) -o $@ $^ -g $(<TC>_LDFLAGS) $(<PROJ>_LDFLAGS) -L$(NAC
L_SDK_ROOT)/lib/$(OSNAME)_<ARCH>_<tc>/<config> <LIBLIST>\n' + PEXE_TRANSLATE_RUL
E, | 110 'Debug': '<TAB>$(<LINK>) -o $@ $^ -g $(<TC>_LDFLAGS) $(<PROJ>_LDFLAGS) -L$(NAC
L_SDK_ROOT)/lib/$(OSNAME)_<ARCH>_<tc>/<config> <LIBLIST>\n' + PEXE_TRANSLATE_RUL
E, |
111 'Release': '<TAB>$(<LINK>) -o $@ $^ $(<TC>_LDFLAGS) $(<PROJ>_LDFLAGS) -L$(NACL
_SDK_ROOT)/lib/$(OSNAME)_<ARCH>_<tc>/<config> <LIBLIST>\n' + PEXE_TRANSLATE_RULE
, | 111 'Release': '<TAB>$(<LINK>) -o $@ $^ $(<TC>_LDFLAGS) $(<PROJ>_LDFLAGS) -L$(NACL
_SDK_ROOT)/lib/$(OSNAME)_<ARCH>_<tc>/<config> <LIBLIST>\n' + PEXE_TRANSLATE_RULE
, |
112 } | 112 } |
113 | 113 |
114 WIN_LINK_RULES = { | 114 WIN_LINK_RULES = { |
115 'Debug': '<TAB>$(<LINK>) /DLL /OUT:$@ /PDG:$@.pdb /Zi $(<PROJ>_LDFLAGS) /DEBUG
/LIBPATH:$(NACL_SDK_ROOT)/lib/win_x86_32_host/Debug $^ <LIBLIST> $(WIN_LDFLAGS)
', | 115 'Debug': '<TAB>$(<LINK>) /DLL /OUT:$@ /PDB:$@.pdb $(<PROJ>_LDFLAGS) /DEBUG /LI
BPATH:$(NACL_SDK_ROOT)/lib/win_x86_32_host/Debug $^ <LIBLIST> $(WIN_LDFLAGS)', |
116 'Release': '<TAB>$(<LINK>) /DLL /OUT:$@ $(<PROJ>_LDFLAGS) /LIBPATH:$(NACL_SDK_
ROOT)/lib/win_x86_32_host/Release $^ <LIBLIST> $(WIN_LDFLAGS)' | 116 'Release': '<TAB>$(<LINK>) /DLL /OUT:$@ $(<PROJ>_LDFLAGS) /LIBPATH:$(NACL_SDK_
ROOT)/lib/win_x86_32_host/Release $^ <LIBLIST> $(WIN_LDFLAGS)' |
117 } | 117 } |
118 | 118 |
119 | 119 |
120 # | 120 # |
121 # Lib rules for various platforms. | 121 # Lib rules for various platforms. |
122 # | 122 # |
123 POSIX_LIB_RULES = { | 123 POSIX_LIB_RULES = { |
124 'Debug': | 124 'Debug': |
125 '<TAB>$(MKDIR) -p $(dir $@)\n' | 125 '<TAB>$(MKDIR) -p $(dir $@)\n' |
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
332 rules = '\n#\n# Rules for %s toolchain\n#\n%s:\n\t$(MKDIR) %s\n' % ( | 332 rules = '\n#\n# Rules for %s toolchain\n#\n%s:\n\t$(MKDIR) %s\n' % ( |
333 tc, tc, tc) | 333 tc, tc, tc) |
334 for cfg in configs: | 334 for cfg in configs: |
335 rules += '%s/%s: | %s\n\t$(MKDIR) %s/%s\n' % (tc, cfg, tc, tc, cfg) | 335 rules += '%s/%s: | %s\n\t$(MKDIR) %s/%s\n' % (tc, cfg, tc, tc, cfg) |
336 | 336 |
337 rules += '\n# Include header dependency files.\n' | 337 rules += '\n# Include header dependency files.\n' |
338 for cfg in configs: | 338 for cfg in configs: |
339 rules += '-include %s/%s/*.d\n' % (tc, cfg) | 339 rules += '-include %s/%s/*.d\n' % (tc, cfg) |
340 return rules + '\n' | 340 return rules + '\n' |
341 | 341 |
342 def BuildCompileRule(self, EXT, src): | 342 def BuildCompileRule(self, ext, src): |
343 self.vars['<EXT>'] = EXT | 343 self.vars['<EXT>'] = ext |
344 out = '<tc>/<config>/%s_<ARCH>.o : %s $(THIS_MAKE) | <tc>/<config>\n' % ( | 344 out = '<tc>/<config>/%s_<ARCH>.o : %s $(THIS_MAKE) | <tc>/<config>\n' % ( |
345 os.path.splitext(src)[0], src) | 345 os.path.splitext(src)[0], src) |
346 out += BUILD_RULES[self.tc][EXT][self.cfg] + '\n\n' | 346 rule = BUILD_RULES[self.tc][ext][self.cfg] |
| 347 if ext == 'CXX': |
| 348 rule = rule.replace('<CC>', '<CXX>') |
| 349 out += rule + '\n\n' |
347 return self.Replace(out) | 350 return self.Replace(out) |
348 | 351 |
349 def BuildLinkRule(self): | 352 def BuildLinkRule(self): |
350 target = BUILD_RULES[self.tc]['TOOL'][self.ptype.upper()] | 353 target = BUILD_RULES[self.tc]['TOOL'][self.ptype.upper()] |
351 out = '' | 354 out = '' |
352 if self.ptype == 'lib': | 355 if self.ptype == 'lib': |
353 out = 'ALL_TARGETS+=%s\n' % target | 356 out = 'ALL_TARGETS+=%s\n' % target |
354 out += target + ' : $(<PROJ>_<TC>_<CONFIG>_<ARCH>_O)\n' | 357 out += target + ' : $(<PROJ>_<TC>_<CONFIG>_<ARCH>_O)\n' |
355 out += BUILD_RULES[self.tc][self.ptype.upper()][self.cfg] + '\n\n' | 358 out += BUILD_RULES[self.tc][self.ptype.upper()][self.cfg] + '\n\n' |
356 return self.Replace(out) | 359 return self.Replace(out) |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
485 } | 488 } |
486 for dll in dlls: | 489 for dll in dlls: |
487 replace['<proj>'] = dll | 490 replace['<proj>'] = dll |
488 nmf_targets.append(Replace(dll_target, replace)) | 491 nmf_targets.append(Replace(dll_target, replace)) |
489 replace['<proj>'] = main | 492 replace['<proj>'] = main |
490 nmf_targets.append(Replace(target, replace)) | 493 nmf_targets.append(Replace(target, replace)) |
491 | 494 |
492 replace['<NMF_TARGETS>'] = ' '.join(nmf_targets) | 495 replace['<NMF_TARGETS>'] = ' '.join(nmf_targets) |
493 rules = Replace(BUILD_RULES[tc]['NMF'], replace) | 496 rules = Replace(BUILD_RULES[tc]['NMF'], replace) |
494 return '\nALL_TARGETS+=%s/%s/%s.nmf' % (tc, cfg, main) + rules + '\n' | 497 return '\nALL_TARGETS+=%s/%s/%s.nmf' % (tc, cfg, main) + rules + '\n' |
OLD | NEW |