Skip to content

Commit f77165b

Browse files
committed
---
yaml --- r: 2421 b: refs/heads/master c: 269550f h: refs/heads/master i: 2419: 5e9902c v: v3
1 parent b2a4428 commit f77165b

File tree

9 files changed

+75
-50
lines changed

9 files changed

+75
-50
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
---
2-
refs/heads/master: 7641142ce2a444f96f11ddbb16c08b2d3e19c1c3
2+
refs/heads/master: 269550f6736c911e28ec9f01e88d9afeb47f12ec

trunk/configure

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,12 +194,13 @@ putvar CFG_CPUTYPE
194194
putvar CFG_CONFIGURE_ARGS
195195

196196
step_msg "looking for build programs"
197-
probe_need CFG_GCC gcc
198197
probe_need CFG_GIT git
199198
probe_need CFG_PERL perl
200199
probe_need CFG_PYTHON python
201200
probe_need CFG_CURL curl
202201

202+
probe CFG_CLANG clang
203+
probe CFG_GCC gcc
203204
probe CFG_LLVM_CONFIG llvm-config
204205
probe CFG_VALGRIND valgrind
205206
probe CFG_OCAMLC ocamlc
@@ -211,6 +212,11 @@ probe CFG_MAKEINFO makeinfo
211212
probe CFG_TEXI2PDF texi2pdf
212213
probe CFG_TEX tex
213214

215+
if [ -z "$CFG_CLANG" -a -z "$CFG_GCC" ]
216+
then
217+
err "either clang or gcc is required"
218+
fi
219+
214220
# Valgrind is only reliable on Linux. On Windows it doesn't work at all, and
215221
# on the Mac the dynamic linker causes Valgrind to emit a huge stream of
216222
# errors.

trunk/mk/platform.mk

Lines changed: 49 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11

2-
CFG_GCC_CFLAGS := -fno-strict-aliasing
3-
CFG_GCC_LINK_FLAGS :=
2+
CFG_GCCISH_CFLAGS := -fno-strict-aliasing
3+
CFG_GCCISH_LINK_FLAGS :=
44

55
# On Darwin, we need to run dsymutil so the debugging information ends
66
# up in the right place. On other platforms, it automatically gets
@@ -9,11 +9,11 @@ CFG_DSYMUTIL := true
99

1010
ifeq ($(CFG_OSTYPE), FreeBSD)
1111
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
1414
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
1717
endif
1818
CFG_UNIXY := 1
1919
CFG_LDENV := LD_LIBRARY_PATH
@@ -22,14 +22,14 @@ endif
2222

2323
ifeq ($(CFG_OSTYPE), Linux)
2424
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
3030
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
3333
endif
3434
CFG_UNIXY := 1
3535
CFG_LDENV := LD_LIBRARY_PATH
@@ -40,16 +40,21 @@ ifeq ($(CFG_OSTYPE), Darwin)
4040
CFG_LIB_NAME=lib$(1).dylib
4141
CFG_UNIXY := 1
4242
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,
4545
# Darwin has a very blurry notion of "64 bit", and claims it's running
4646
# "on an i386" when the whole userspace is 64-bit and the compiler
4747
# emits 64-bit binaries by default. So we just force -m32 here. Smarter
4848
# approaches welcome!
4949
#
5050
# NB: Currently GCC's optimizer breaks rustrt (task-comm-1 hangs) on Darwin.
5151
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
5358
CFG_DSYMUTIL := dsymutil
5459
CFG_DEF_SUFFIX := .darwin.def
5560
endif
@@ -85,8 +90,8 @@ ifdef CFG_WINDOWSY
8590
ifdef CFG_FLEXLINK
8691
CFG_BOOT_NATIVE := 1
8792
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
9095
CFG_DEF_SUFFIX := .def
9196
endif
9297

@@ -112,16 +117,16 @@ ifdef CFG_UNIXY
112117
CFG_RUN_TEST=PATH=$(CFG_LDPATH):$(call CFG_TESTLIB,$(1)) $(1)
113118

114119
CFG_INFO := $(info cfg: mingw-cross)
115-
CFG_GCC_CROSS := i586-mingw32msvc-
120+
CFG_GCCISH_CROSS := i586-mingw32msvc-
116121
CFG_BOOT_FLAGS += -t win32-x86-pe
117122
ifdef CFG_VALGRIND
118123
CFG_VALGRIND += wine
119124
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
122127
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
125130
endif
126131
endif
127132
ifdef CFG_VALGRIND
@@ -132,14 +137,28 @@ ifdef CFG_UNIXY
132137
endif
133138
endif
134139

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
135151
ifdef CFG_GCC
136152
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)
143161
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
145164
endif

trunk/mk/rt.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ RUNTIME_HDR := rt/globals.h \
6464
RUNTIME_DEF := rt/rustrt$(CFG_DEF_SUFFIX)
6565
RUNTIME_INCS := -I $(S)src/rt/isaac -I $(S)src/rt/uthash
6666
RUNTIME_OBJS := $(RUNTIME_CS:.cpp=.o)
67-
RUNTIME_LIBS := $(CFG_GCC_POST_LIB_FLAGS)
67+
RUNTIME_LIBS := $(CFG_GCCISH_POST_LIB_FLAGS)
6868

6969

7070
rt/%.o: rt/%.cpp $(MKFILES)

trunk/mk/rustllvm.mk

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ rustllvm/$(CFG_RUSTLLVM): rustllvm/rustllvmbits.a $(RUSTLLVM_OBJS_OBJS) \
2929
$(MKFILES) $(RUSTLLVM_HDR) $(RUSTLLVM_DEF)
3030
@$(call E, link: $@)
3131
$(Q)$(call CFG_LINK_C,$@,$(RUSTLLVM_OBJS_OBJS) \
32-
$(CFG_GCC_PRE_LIB_FLAGS) $(CFG_LLVM_LIBS) \
33-
$(CFG_GCC_POST_LIB_FLAGS) rustllvm/rustllvmbits.a \
32+
$(CFG_GCCISH_PRE_LIB_FLAGS) $(CFG_LLVM_LIBS) \
33+
$(CFG_GCCISH_POST_LIB_FLAGS) rustllvm/rustllvmbits.a \
3434
$(CFG_LLVM_LIBS) \
3535
$(CFG_LLVM_LDFLAGS),$(RUSTLLVM_DEF))
3636

trunk/mk/stage1.mk

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ stage1/std.o: $(STDLIB_CRATE) $(STDLIB_INPUTS) \
66

77
stage1/$(CFG_STDLIB): stage1/std.o stage1/glue.o
88
@$(call E, link: $@)
9-
$(Q)gcc $(CFG_GCC_CFLAGS) stage1/glue.o $(CFG_GCC_LINK_FLAGS) -o $@ $< \
10-
-Lstage1 -Lrt -lrustrt
9+
$(Q)gcc $(CFG_GCCISH_CFLAGS) stage1/glue.o $(CFG_GCCISH_LINK_FLAGS) \
10+
-o $@ $< -Lstage1 -Lrt -lrustrt
1111

1212
stage1/rustc.o: $(COMPILER_CRATE) $(COMPILER_INPUTS) $(SREQ0)
1313
@$(call E, compile: $@)
@@ -30,11 +30,11 @@ stage1/intrinsics.bc: $(INTRINSICS_BC)
3030

3131
stage1/%.o: stage1/%.s
3232
@$(call E, assemble [gcc]: $@)
33-
$(Q)gcc $(CFG_GCC_CFLAGS) -o $@ -c $<
33+
$(Q)gcc $(CFG_GCCISH_CFLAGS) -o $@ -c $<
3434

3535
stage1/%$(X): stage1/%.o $(SREQ0)
3636
@$(call E, link [gcc]: $@)
37-
$(Q)gcc $(CFG_GCC_CFLAGS) stage1/glue.o -o $@ $< \
37+
$(Q)gcc $(CFG_GCCISH_CFLAGS) stage1/glue.o -o $@ $< \
3838
-Lstage1 -Lrustllvm -Lrt -lrustrt -lrustllvm -lstd -lm
3939
@# dsymutil sometimes fails or prints a warning, but the
4040
@# program still runs. Since it simplifies debugging other

trunk/mk/stage2.mk

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ stage2/std.o: $(STDLIB_CRATE) $(STDLIB_INPUTS) \
66

77
stage2/$(CFG_STDLIB): stage2/std.o stage2/glue.o
88
@$(call E, link: $@)
9-
$(Q)gcc $(CFG_GCC_CFLAGS) stage2/glue.o $(CFG_GCC_LINK_FLAGS) -o $@ $< \
10-
-Lstage2 -Lrt -lrustrt
9+
$(Q)gcc $(CFG_GCCISH_CFLAGS) stage2/glue.o $(CFG_GCCISH_LINK_FLAGS) -o \
10+
$@ $< -Lstage2 -Lrt -lrustrt
1111

1212
stage2/rustc.o: $(COMPILER_CRATE) $(COMPILER_INPUTS) $(SREQ1)
1313
@$(call E, compile: $@)
@@ -30,11 +30,11 @@ stage2/intrinsics.bc: $(INTRINSICS_BC)
3030

3131
stage2/%.o: stage2/%.s
3232
@$(call E, assemble [gcc]: $@)
33-
$(Q)gcc $(CFG_GCC_CFLAGS) -o $@ -c $<
33+
$(Q)gcc $(CFG_GCCISH_CFLAGS) -o $@ -c $<
3434

3535
stage2/%$(X): stage2/%.o $(SREQ1)
3636
@$(call E, link [gcc]: $@)
37-
$(Q)gcc $(CFG_GCC_CFLAGS) stage2/glue.o -o $@ $< \
37+
$(Q)gcc $(CFG_GCCISH_CFLAGS) stage2/glue.o -o $@ $< \
3838
-Lstage2 -Lrustllvm -Lrt -lrustrt -lrustllvm -lstd -lm
3939
@# dsymutil sometimes fails or prints a warning, but the
4040
@# program still runs. Since it simplifies debugging other

trunk/mk/stage3.mk

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ stage3/std.o: $(STDLIB_CRATE) $(STDLIB_INPUTS) \
66

77
stage3/$(CFG_STDLIB): stage3/std.o stage3/glue.o
88
@$(call E, link: $@)
9-
$(Q)gcc $(CFG_GCC_CFLAGS) stage3/glue.o $(CFG_GCC_LINK_FLAGS) -o $@ $< \
10-
-Lstage3 -Lrt -lrustrt
9+
$(Q)gcc $(CFG_GCCISH_CFLAGS) stage3/glue.o $(CFG_GCCISH_LINK_FLAGS) -o \
10+
$@ $< -Lstage3 -Lrt -lrustrt
1111

1212
stage3/rustc.o: $(COMPILER_CRATE) $(COMPILER_INPUTS) $(SREQ2)
1313
@$(call E, compile: $@)
@@ -30,11 +30,11 @@ stage3/intrinsics.bc: $(INTRINSICS_BC)
3030

3131
stage3/%.o: stage3/%.s
3232
@$(call E, assemble [gcc]: $@)
33-
$(Q)gcc $(CFG_GCC_CFLAGS) -o $@ -c $<
33+
$(Q)gcc $(CFG_GCCISH_CFLAGS) -o $@ -c $<
3434

3535
stage3/%$(X): stage3/%.o $(SREQ2)
3636
@$(call E, link [gcc]: $@)
37-
$(Q)gcc $(CFG_GCC_CFLAGS) stage3/glue.o -o $@ $< \
37+
$(Q)gcc $(CFG_GCCISH_CFLAGS) stage3/glue.o -o $@ $< \
3838
-Lstage3 -Lrustllvm -Lrt -lrustrt -lrustllvm -lstd -lm
3939
@# dsymutil sometimes fails or prints a warning, but the
4040
@# program still runs. Since it simplifies debugging other

trunk/mk/tests.mk

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ compile-check: tidy \
185185

186186
%.stage0$(X): %.stage0.o $(SREQ0)
187187
@$(call E, link [gcc]: $@)
188-
$(Q)gcc $(CFG_GCC_CFLAGS) stage1/glue.o -o $@ $< \
188+
$(Q)gcc $(CFG_GCCISH_CFLAGS) stage1/glue.o -o $@ $< \
189189
-Lstage1 -Lrt -lrustrt -lstd -lm
190190
@# dsymutil sometimes fails or prints a warning, but the
191191
@# program still runs. Since it simplifies debugging other
@@ -194,7 +194,7 @@ compile-check: tidy \
194194

195195
%.stage1$(X): %.stage1.o $(SREQ1)
196196
@$(call E, link [gcc]: $@)
197-
$(Q)gcc $(CFG_GCC_CFLAGS) stage2/glue.o -o $@ $< \
197+
$(Q)gcc $(CFG_GCCISH_CFLAGS) stage2/glue.o -o $@ $< \
198198
-Lstage2 -Lrt -lrustrt -lstd -lm
199199
@# dsymutil sometimes fails or prints a warning, but the
200200
@# program still runs. Since it simplifies debugging other
@@ -203,7 +203,7 @@ compile-check: tidy \
203203

204204
%.stage2$(X): %.stage2.o $(SREQ2)
205205
@$(call E, link [gcc]: $@)
206-
$(Q)gcc $(CFG_GCC_CFLAGS) stage3/glue.o -o $@ $< \
206+
$(Q)gcc $(CFG_GCCISH_CFLAGS) stage3/glue.o -o $@ $< \
207207
-Lstage3 -Lrt -lrustrt -lstd -lm
208208
@# dsymutil sometimes fails or prints a warning, but the
209209
@# program still runs. Since it simplifies debugging other

0 commit comments

Comments
 (0)