1
1
2
- CFG_GCC_CFLAGS := -fno-strict-aliasing
3
- CFG_GCC_LINK_FLAGS :=
2
+ CFG_GCCISH_CFLAGS := -fno-strict-aliasing
3
+ CFG_GCCISH_LINK_FLAGS :=
4
4
5
5
# On Darwin, we need to run dsymutil so the debugging information ends
6
6
# up in the right place. On other platforms, it automatically gets
@@ -9,11 +9,11 @@ CFG_DSYMUTIL := true
9
9
10
10
ifeq ($(CFG_OSTYPE ) , FreeBSD)
11
11
CFG_LIB_NAME =lib$(1 ) .so
12
- CFG_GCC_CFLAGS += -fPIC -march=i686 -I/usr/local/include -O2
13
- CFG_GCC_LINK_FLAGS += -shared -fPIC -lpthread -lrt
12
+ CFG_GCCISH_CFLAGS += -fPIC -march=i686 -I/usr/local/include -O2
13
+ CFG_GCCISH_LINK_FLAGS += -shared -fPIC -lpthread -lrt
14
14
ifeq ($(CFG_CPUTYPE), x86_64)
15
- CFG_GCC_CFLAGS += -m32
16
- CFG_GCC_LINK_FLAGS += -m32
15
+ CFG_GCCISH_CFLAGS += -m32
16
+ CFG_GCCISH_LINK_FLAGS += -m32
17
17
endif
18
18
CFG_UNIXY := 1
19
19
CFG_LDENV := LD_LIBRARY_PATH
@@ -22,14 +22,14 @@ endif
22
22
23
23
ifeq ($(CFG_OSTYPE ) , Linux)
24
24
CFG_LIB_NAME =lib$(1 ) .so
25
- CFG_GCC_CFLAGS += -fPIC -march=i686 -O2
26
- CFG_GCC_LINK_FLAGS += -shared -fPIC -ldl -lpthread -lrt
27
- CFG_GCC_DEF_FLAG := -Wl,--export-dynamic,--dynamic-list=
28
- CFG_GCC_PRE_LIB_FLAGS := -Wl,-whole-archive
29
- CFG_GCC_POST_LIB_FLAGS := -Wl,-no-whole-archive
25
+ CFG_GCCISH_CFLAGS += -fPIC -march=i686 -O2
26
+ CFG_GCCISH_LINK_FLAGS += -shared -fPIC -ldl -lpthread -lrt
27
+ CFG_GCCISH_DEF_FLAG := -Wl,--export-dynamic,--dynamic-list=
28
+ CFG_GCCISH_PRE_LIB_FLAGS := -Wl,-whole-archive
29
+ CFG_GCCISH_POST_LIB_FLAGS := -Wl,-no-whole-archive
30
30
ifeq ($(CFG_CPUTYPE), x86_64)
31
- CFG_GCC_CFLAGS += -m32
32
- CFG_GCC_LINK_FLAGS += -m32
31
+ CFG_GCCISH_CFLAGS += -m32
32
+ CFG_GCCISH_LINK_FLAGS += -m32
33
33
endif
34
34
CFG_UNIXY := 1
35
35
CFG_LDENV := LD_LIBRARY_PATH
@@ -40,16 +40,21 @@ ifeq ($(CFG_OSTYPE), Darwin)
40
40
CFG_LIB_NAME =lib$(1 ) .dylib
41
41
CFG_UNIXY := 1
42
42
CFG_LDENV := DYLD_LIBRARY_PATH
43
- CFG_GCC_LINK_FLAGS += -dynamiclib -lpthread
44
- CFG_GCC_DEF_FLAG := -Wl,-exported_symbols_list,
43
+ CFG_GCCISH_LINK_FLAGS += -dynamiclib -lpthread
44
+ CFG_GCCISH_DEF_FLAG := -Wl,-exported_symbols_list,
45
45
# Darwin has a very blurry notion of "64 bit", and claims it's running
46
46
# "on an i386" when the whole userspace is 64-bit and the compiler
47
47
# emits 64-bit binaries by default. So we just force -m32 here. Smarter
48
48
# approaches welcome!
49
49
#
50
50
# NB: Currently GCC's optimizer breaks rustrt (task-comm-1 hangs) on Darwin.
51
51
CFG_GCC_CFLAGS += -m32 -O0
52
- CFG_GCC_LINK_FLAGS += -m32
52
+ CFG_CLANG_CFLAGS += -m32 -O2
53
+ ifeq ($(CFG_CPUTYPE), x86_64)
54
+ CFG_GCCISH_CFLAGS += -arch i386
55
+ CFG_GCCISH_LINK_FLAGS += -arch i386
56
+ endif
57
+ CFG_GCCISH_LINK_FLAGS += -m32
53
58
CFG_DSYMUTIL := dsymutil
54
59
CFG_DEF_SUFFIX := .darwin.def
55
60
endif
@@ -85,8 +90,8 @@ ifdef CFG_WINDOWSY
85
90
ifdef CFG_FLEXLINK
86
91
CFG_BOOT_NATIVE := 1
87
92
endif
88
- CFG_GCC_CFLAGS += -march=i686 -O2
89
- CFG_GCC_LINK_FLAGS += -shared -fPIC
93
+ CFG_GCCISH_CFLAGS += -march=i686 -O2
94
+ CFG_GCCISH_LINK_FLAGS += -shared -fPIC
90
95
CFG_DEF_SUFFIX := .def
91
96
endif
92
97
@@ -112,16 +117,16 @@ ifdef CFG_UNIXY
112
117
CFG_RUN_TEST=PATH =$(CFG_LDPATH ) :$(call CFG_TESTLIB,$(1 ) ) $(1 )
113
118
114
119
CFG_INFO := $(info cfg: mingw-cross)
115
- CFG_GCC_CROSS := i586-mingw32msvc-
120
+ CFG_GCCISH_CROSS := i586-mingw32msvc-
116
121
CFG_BOOT_FLAGS += -t win32-x86-pe
117
122
ifdef CFG_VALGRIND
118
123
CFG_VALGRIND += wine
119
124
endif
120
- CFG_GCC_CFLAGS := -march=i686
121
- CFG_GCC_LINK_FLAGS := -shared
125
+ CFG_GCCISH_CFLAGS := -march=i686
126
+ CFG_GCCISH_LINK_FLAGS := -shared
122
127
ifeq ($(CFG_CPUTYPE), x86_64)
123
- CFG_GCC_CFLAGS += -m32
124
- CFG_GCC_LINK_FLAGS += -m32
128
+ CFG_GCCISH_CFLAGS += -m32
129
+ CFG_GCCISH_LINK_FLAGS += -m32
125
130
endif
126
131
endif
127
132
ifdef CFG_VALGRIND
@@ -132,14 +137,28 @@ ifdef CFG_UNIXY
132
137
endif
133
138
endif
134
139
140
+ ifdef CFG_CLANG
141
+ CFG_INFO := $(info cfg: using clang)
142
+ CFG_GCCISH_CFLAGS += -Wall -Werror -fno-rtti -fno-exceptions -g
143
+ CFG_GCCISH_LINK_FLAGS += -g
144
+ CFG_COMPILE_C = $(CFG_GCCISH_CROSS ) clang++ $(CFG_GCCISH_CFLAGS ) \
145
+ $(CFG_CLANG_CFLAGS ) -c -o $(1 ) $(2 )
146
+ CFG_DEPEND_C = $(CFG_GCCISH_CROSS ) clang++ $(CFG_GCCISH_CFLAGS ) -MT "$(1 ) " \
147
+ -MM $(2 )
148
+ CFG_LINK_C = $(CFG_GCCISH_CROSS ) clang++ $(CFG_GCCISH_LINK_FLAGS ) -o $(1 ) \
149
+ $(CFG_GCCISH_DEF_FLAG )$(3 ) $(2 )
150
+ else
135
151
ifdef CFG_GCC
136
152
CFG_INFO := $(info cfg: using gcc)
137
- CFG_GCC_CFLAGS += -Wall -Werror -fno-rtti -fno-exceptions -g
138
- CFG_GCC_LINK_FLAGS += -g
139
- CFG_COMPILE_C = $(CFG_GCC_CROSS ) g++ $(CFG_GCC_CFLAGS ) -c -o $(1 ) $(2 )
140
- CFG_DEPEND_C = $(CFG_GCC_CROSS ) g++ $(CFG_GCC_CFLAGS ) -MT "$(1 ) " -MM $(2 )
141
- CFG_LINK_C = $(CFG_GCC_CROSS ) g++ $(CFG_GCC_LINK_FLAGS ) -o $(1 ) \
142
- $(CFG_GCC_DEF_FLAG )$(3 ) $(2 )
153
+ CFG_GCCISH_CFLAGS += -Wall -Werror -fno-rtti -fno-exceptions -g
154
+ CFG_GCCISH_LINK_FLAGS += -g
155
+ CFG_COMPILE_C = $(CFG_GCCISH_CROSS ) g++ $(CFG_GCCISH_CFLAGS ) \
156
+ $(CFG_GCC_CFLAGS ) -c -o $(1 ) $(2 )
157
+ CFG_DEPEND_C = $(CFG_GCCISH_CROSS ) g++ $(CFG_GCCISH_CFLAGS ) -MT "$(1 ) " \
158
+ -MM $(2 )
159
+ CFG_LINK_C = $(CFG_GCCISH_CROSS ) g++ $(CFG_GCCISH_LINK_FLAGS ) -o $(1 ) \
160
+ $(CFG_GCCISH_DEF_FLAG )$(3 ) $(2 )
143
161
else
144
- CFG_ERR := $(error please try on a system with gcc)
162
+ CFG_ERR := $(error please try on a system with gcc or clang)
163
+ endif
145
164
endif
0 commit comments