OLD | NEW |
1 Description := Static runtime libraries for clang/NaCl. | 1 Description := Static runtime libraries for clang/NaCl. |
2 | 2 |
3 ### | 3 ### |
4 | 4 |
5 CC := clang | 5 CC := clang |
6 Arch := unknown | 6 Arch := unknown |
7 Configs := | 7 Configs := |
8 | 8 |
9 # We don't currently have any general purpose way to target architectures other | 9 # We don't currently have any general purpose way to target architectures other |
10 # than the compiler defaults (because there is no generalized way to invoke | 10 # than the compiler defaults (because there is no generalized way to invoke |
11 # cross compilers). For now, we just find the target architecture of the compile
r | 11 # cross compilers). For now, we just find the target architecture of the compile
r |
12 # and only define configurations we know that compiler can generate. | 12 # and only define configurations we know that compiler can generate. |
13 CompilerTargetTriple := $(shell \ | 13 CompilerTargetTriple := $(shell \ |
14 $(CC) $(EXTRA_CFLAGS) -v 2>&1 | grep 'Target:' | cut -d' ' -f2) | 14 $(CC) $(EXTRA_CFLAGS) -v 2>&1 | grep 'Target:' | cut -d' ' -f2) |
15 ifneq ($(DEBUGMAKE),) | 15 ifneq ($(DEBUGMAKE),) |
16 ifeq ($(CompilerTargetTriple),) | 16 ifeq ($(CompilerTargetTriple),) |
17 $(error "unable to infer compiler target triple for $(CC)") | 17 $(error "unable to infer compiler target triple for $(CC)") |
18 endif | 18 endif |
19 endif | 19 endif |
20 | 20 |
21 CompilerTargetArch := $(firstword $(subst -, ,$(CompilerTargetTriple))) | 21 CompilerTargetArch := $(firstword $(subst -, ,$(CompilerTargetTriple))) |
22 $(call CheckValue,CompilerTargetTriple) | 22 $(call CheckValue,CompilerTargetTriple) |
23 # Only define configs if we detected a nacl target. | |
24 ifneq ($(findstring -nacl,$(CompilerTargetTriple)),) | |
25 | 23 |
26 ifneq ($(findstring pnacl-clang,$(CC)),) | 24 ifneq ($(findstring pnacl-clang,$(CC)),) |
27 # pnacl-clang already uses the integrated assembler and does not support the | 25 # pnacl-clang already uses the integrated assembler and does not support the |
28 # integrated-as flag | 26 # integrated-as flag |
29 INTEGRATED_AS := | 27 INTEGRATED_AS := |
30 else | 28 else |
31 INTEGRATED_AS := -integrated-as | 29 INTEGRATED_AS := -integrated-as |
32 endif | 30 endif |
33 | 31 |
34 # Configurations which just include all the runtime functions. | 32 # Configurations which just include all the runtime functions. |
35 ifeq ($(call contains,i686,$(CompilerTargetArch)),true) | 33 ifeq ($(call contains,i686,$(CompilerTargetArch)),true) |
36 Configs += full-i386 | 34 Configs += full-i386 |
37 Arch.full-i386 := i386 | 35 Arch.full-i386 := i386 |
38 else | 36 else |
39 ifeq ($(call contains,x86_64,$(CompilerTargetArch)),true) | 37 ifeq ($(call contains,x86_64,$(CompilerTargetArch)),true) |
40 Configs += full-x86_64 | 38 Configs += full-x86_64 |
41 Arch.full-x86_64 := x86_64 | 39 Arch.full-x86_64 := x86_64 |
42 else | 40 else |
43 ifeq ($(call contains,arm,$(CompilerTargetArch)),true) | 41 ifeq ($(call contains,arm armv7 armv7a,$(CompilerTargetArch)),true) |
44 # arm-nacl-clang reports this target | |
45 Configs += full-arm | 42 Configs += full-arm |
46 Arch.full-arm := armv7 | 43 Arch.full-arm := armv7 |
47 else | 44 else |
48 ifeq ($(call contains,armv7,$(CompilerTargetArch)),true) | |
49 # pnacl-clang with arm bias (used for arm-nonsfi) reports this target | |
50 Configs += full-arm | |
51 Arch.full-arm := armv7 | |
52 else | |
53 ifeq ($(call contains,le32,$(CompilerTargetArch)),true) | 45 ifeq ($(call contains,le32,$(CompilerTargetArch)),true) |
54 # This is really for mips, but mips uses le32 bitcode | 46 # This is really for mips, but mips uses le32 bitcode |
55 # TODO(petarj): Remove this if possible. | 47 # TODO(petarj): Remove this if possible. |
56 Configs += full-mips32 | 48 Configs += full-mips32 |
57 Arch.full-mips32 := mips32 | 49 Arch.full-mips32 := mips32 |
58 else | 50 else |
59 ifeq ($(call contains,mipsel,$(CompilerTargetArch)),true) | 51 ifeq ($(call contains,mipsel,$(CompilerTargetArch)),true) |
60 # This is for mips d2n | 52 # This is for mips d2n |
61 Configs += full-mips32 | 53 Configs += full-mips32 |
62 Arch.full-mips32 := mips32 | 54 Arch.full-mips32 := mips32 |
63 endif | 55 endif |
64 endif | 56 endif |
65 endif | 57 endif |
66 endif | 58 endif |
67 endif | 59 endif |
68 endif | |
69 | 60 |
70 endif | 61 endif |
71 | 62 |
72 ### | 63 ### |
73 | 64 |
74 $(call CheckValue,CFLAGS) | 65 $(call CheckValue,CFLAGS) |
75 CFLAGS := -Wall -Werror -O3 -fomit-frame-pointer $(EXTRA_CFLAGS) | 66 CFLAGS := -Wall -Werror -O3 -fomit-frame-pointer $(EXTRA_CFLAGS) |
76 $(call CheckValue,CFLAGS) | 67 $(call CheckValue,CFLAGS) |
77 # Use the integrated assembler on x86-64 to ensure sandbox base-address hiding. | 68 # Use the integrated assembler on x86-64 to ensure sandbox base-address hiding. |
78 | 69 |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
171 | 162 |
172 nacltest-x86-32: | 163 nacltest-x86-32: |
173 test/builtins/Unit/nacltest.py $(TCROOT)/bin/i686-nacl-clang \ | 164 test/builtins/Unit/nacltest.py $(TCROOT)/bin/i686-nacl-clang \ |
174 $(FUNCTIONS.full-i386) | 165 $(FUNCTIONS.full-i386) |
175 nacltest-x86-64: | 166 nacltest-x86-64: |
176 test/builtins/Unit/nacltest.py $(TCROOT)/bin/x86_64-nacl-clang \ | 167 test/builtins/Unit/nacltest.py $(TCROOT)/bin/x86_64-nacl-clang \ |
177 $(FUNCTIONS.full-x86_64) | 168 $(FUNCTIONS.full-x86_64) |
178 nacltest-arm: | 169 nacltest-arm: |
179 test/builtins/Unit/nacltest.py $(TCROOT)/bin/arm-nacl-clang \ | 170 test/builtins/Unit/nacltest.py $(TCROOT)/bin/arm-nacl-clang \ |
180 $(FUNCTIONS.full-arm) | 171 $(FUNCTIONS.full-arm) |
OLD | NEW |