From 15c0c35352720efd32bcfc5f4ae05b95f05cd1c0 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Thu, 21 Feb 2013 16:15:01 -0800 Subject: [PATCH 01/16] mk: Split target triples into bulid triple + host triples + target triples For cross compiling to targets that don't want to build a compiler --- Makefile.in | 56 ++++++++++++++++++----------- configure | 23 ++++++------ mk/clean.mk | 16 ++++----- mk/docs.mk | 2 +- mk/host.mk | 2 +- mk/install.mk | 12 +++---- mk/llvm.mk | 4 +-- mk/perf.mk | 8 ++--- mk/platform.mk | 6 ++-- mk/pp.mk | 4 +-- mk/rt.mk | 2 +- mk/rustllvm.mk | 4 +-- mk/snap.mk | 8 ++--- mk/stage0.mk | 30 ++++++++-------- mk/target.mk | 67 +++++++++++++++++++---------------- mk/tests.mk | 63 +++++++++++++++++++------------- mk/tools.mk | 10 +++--- src/librustc/driver/driver.rs | 4 +-- 18 files changed, 176 insertions(+), 145 deletions(-) diff --git a/Makefile.in b/Makefile.in index 30aefd02cd2..fedcd4f3129 100644 --- a/Makefile.in +++ b/Makefile.in @@ -70,16 +70,22 @@ include config.mk ALL_OBJ_FILES := MKFILE_DEPS := config.stamp $(call rwildcard,$(CFG_SRC_DIR)mk/,*) -NON_HOST_TRIPLES = $(filter-out $(CFG_HOST_TRIPLE),$(CFG_TARGET_TRIPLES)) +NON_BUILD_HOST_TRIPLES = $(filter-out $(CFG_BUILD_TRIPLE),$(CFG_HOST_TRIPLES)) +NON_BUILD_TARGET_TRIPLES = $(filter-out $(CFG_BUILD_TRIPLE),$(CFG_TARGET_TRIPLES)) ifneq ($(MAKE_RESTARTS),) CFG_INFO := $(info cfg: make restarts: $(MAKE_RESTARTS)) endif -CFG_INFO := $(info cfg: shell host triple $(CFG_HOST_TRIPLE)) +CFG_INFO := $(info cfg: build triple $(CFG_BUILD_TRIPLE)) +CFG_INFO := $(info cfg: host triples $(CFG_HOST_TRIPLES)) +CFG_INFO := $(info cfg: target triples $(CFG_TARGET_TRIPLES)) -ifneq ($(wildcard $(NON_HOST_TRIPLES)),) -CFG_INFO := $(info cfg: non host triples $(NON_HOST_TRIPLES)) +ifneq ($(wildcard $(NON_BUILD_HOST_TRIPLES)),) +CFG_INFO := $(info cfg: non-build host triples $(NON_BUILD_HOST_TRIPLES)) +endif +ifneq ($(wildcard $(NON_BUILD_TARGET_TRIPLES)),) +CFG_INFO := $(info cfg: non-build target triples $(NON_BUILD_TARGET_TRIPLES)) endif CFG_RUSTC_FLAGS := $(RUSTFLAGS) @@ -272,8 +278,8 @@ LLC_$(1)=$$(CFG_LLVM_INST_DIR_$(1))/bin/llc$$(X) endef -$(foreach target,$(CFG_TARGET_TRIPLES), \ - $(eval $(call DEF_LLVM_VARS,$(target)))) +$(foreach host,$(CFG_HOST_TRIPLES), \ + $(eval $(call DEF_LLVM_VARS,$(host)))) ###################################################################### # Exports for sub-utilities @@ -285,7 +291,7 @@ $(foreach target,$(CFG_TARGET_TRIPLES), \ export CFG_SRC_DIR export CFG_BUILD_DIR export CFG_VERSION -export CFG_HOST_TRIPLE +export CFG_BUILD_TRIPLE export CFG_LLVM_ROOT export CFG_ENABLE_MINGW_CROSS export CFG_PREFIX @@ -409,7 +415,7 @@ CFGFLAG$(1)_T_$(2)_H_$(3) = stage$(1) # if you're building a cross config, the host->* parts are # effectively stage1, since it uses the just-built stage0. ifeq ($(1),0) -ifneq ($(strip $(CFG_HOST_TRIPLE)),$(strip $(3))) +ifneq ($(strip $(CFG_BUILD_TRIPLE)),$(strip $(3))) CFGFLAG$(1)_T_$(2)_H_$(3) = stage1 endif endif @@ -430,7 +436,7 @@ PERF_STAGE$(1)_T_$(2)_H_$(3) := \ endef -$(foreach build,$(CFG_TARGET_TRIPLES), \ +$(foreach build,$(CFG_HOST_TRIPLES), \ $(eval $(foreach target,$(CFG_TARGET_TRIPLES), \ $(eval $(foreach stage,$(STAGES), \ $(eval $(call SREQ,$(stage),$(target),$(build)))))))) @@ -451,13 +457,13 @@ rustc-stage$(2)-H-$(1): \ endef -$(foreach host,$(CFG_TARGET_TRIPLES), \ +$(foreach host,$(CFG_HOST_TRIPLES), \ $(eval $(foreach stage,1 2 3, \ $(eval $(call DEF_RUSTC_STAGE_TARGET,$(host),$(stage)))))) -rustc-stage1: rustc-stage1-H-$(CFG_HOST_TRIPLE) -rustc-stage2: rustc-stage2-H-$(CFG_HOST_TRIPLE) -rustc-stage3: rustc-stage3-H-$(CFG_HOST_TRIPLE) +rustc-stage1: rustc-stage1-H-$(CFG_BUILD_TRIPLE) +rustc-stage2: rustc-stage2-H-$(CFG_BUILD_TRIPLE) +rustc-stage3: rustc-stage3-H-$(CFG_BUILD_TRIPLE) define DEF_RUSTC_TARGET # $(1) == architecture @@ -468,12 +474,12 @@ endef $(foreach host,$(CFG_TARGET_TRIPLES), \ $(eval $(call DEF_RUSTC_TARGET,$(host)))) -rustc-stage1: rustc-stage1-H-$(CFG_HOST_TRIPLE) -rustc-stage2: rustc-stage2-H-$(CFG_HOST_TRIPLE) -rustc-stage3: rustc-stage3-H-$(CFG_HOST_TRIPLE) -rustc: rustc-H-$(CFG_HOST_TRIPLE) +rustc-stage1: rustc-stage1-H-$(CFG_BUILD_TRIPLE) +rustc-stage2: rustc-stage2-H-$(CFG_BUILD_TRIPLE) +rustc-stage3: rustc-stage3-H-$(CFG_BUILD_TRIPLE) +rustc: rustc-H-$(CFG_BUILD_TRIPLE) -rustc-H-all: $(foreach host,$(CFG_TARGET_TRIPLES),rustc-H-$(host)) +rustc-H-all: $(foreach host,$(CFG_HOST_TRIPLES),rustc-H-$(host)) ###################################################################### # Entrypoint rule @@ -489,19 +495,27 @@ CFG_INFO := $(info cfg: *** stage2 and later will not be built ***) CFG_INFO := $(info cfg:) #XXX This is surely busted -all: $(SREQ1$(CFG_HOST_TRIPLE)) $(GENERATED) docs +all: $(SREQ1$(CFG_BUILD_TRIPLE)) $(GENERATED) docs else define ALL_TARGET_N +ifneq ($$(findstring $(1),$$(CFG_HOST_TRIPLES)),) +# This is a host all-target-$(1)-host-$(2): $$(CSREQ2_T_$(1)_H_$(2)) +else +# This is a target only +all-target-$(1)-host-$(2): $$(SREQ2_T_$(1)_H_$(2)) +endif endef $(foreach target,$(CFG_TARGET_TRIPLES), \ - $(eval $(call ALL_TARGET_N,$(target),$(CFG_HOST_TRIPLE)))) + $(foreach host,$(CFG_HOST_TRIPLES), \ + $(eval $(call ALL_TARGET_N,$(target),$(host))))) ALL_TARGET_RULES = $(foreach target,$(CFG_TARGET_TRIPLES), \ - all-target-$(target)-host-$(CFG_HOST_TRIPLE)) + $(foreach host,$(CFG_HOST_TRIPLES), \ + all-target-$(target)-host-$(host))) all: $(ALL_TARGET_RULES) $(GENERATED) docs diff --git a/configure b/configure index d9f2db8e110..5249058fe0c 100755 --- a/configure +++ b/configure @@ -301,7 +301,7 @@ then fi -DEFAULT_HOST_TRIPLE="${CFG_CPUTYPE}-${CFG_OSTYPE}" +DEFAULT_BUILD_TRIPLE="${CFG_CPUTYPE}-${CFG_OSTYPE}" CFG_SRC_DIR="$(cd $(dirname $0) && pwd)/" CFG_BUILD_DIR="$(pwd)/" @@ -346,8 +346,9 @@ opt pax-flags 0 "apply PaX flags to rustc binaries (required for GRSecurity/PaX- valopt prefix "/usr/local" "set installation prefix" valopt local-rust-root "/usr/local" "set prefix for local rust binary" valopt llvm-root "" "set LLVM root" -valopt host-triple "${DEFAULT_HOST_TRIPLE}" "LLVM host triple" -valopt target-triples "${CFG_HOST_TRIPLE}" "LLVM target triples" +valopt build-triple "${DEFAULT_BUILD_TRIPLE}" "LLVM build triple" +valopt host-triples "${CFG_BUILD_TRIPLE}" "LLVM host triples" +valopt target-triples "${CFG_HOST_TRIPLES}" "LLVM target triples" # Validate Options step_msg "validating $CFG_SELF args" @@ -532,10 +533,6 @@ fi CFG_PREFIX=${CFG_PREFIX%/} CFG_TARGET_TRIPLES="$(echo $CFG_TARGET_TRIPLES | tr ',' ' ')" -case $CFG_TARGET_TRIPLES in - (*$CFG_HOST_TRIPLE*) ;; - (*) err "Host triple is not among the target triples." ;; -esac if [ -z "$CFG_ENABLE_CLANG" -a -z "$CFG_GCC" ] then @@ -562,13 +559,13 @@ do done make_dir llvm -for t in $CFG_TARGET_TRIPLES +for t in $CFG_HOST_TRIPLES do make_dir llvm/$t done make_dir rustllvm -for t in $CFG_TARGET_TRIPLES +for t in $CFG_HOST_TRIPLES do make_dir rustllvm/$t done @@ -593,7 +590,7 @@ then CFG_LIBDIR=bin fi -for h in $CFG_TARGET_TRIPLES +for h in $CFG_HOST_TRIPLES do for t in $CFG_TARGET_TRIPLES do @@ -669,7 +666,7 @@ fi # Configure llvm, only if necessary step_msg "looking at LLVM" CFG_LLVM_SRC_DIR=${CFG_SRC_DIR}src/llvm/ -for t in $CFG_TARGET_TRIPLES +for t in $CFG_HOST_TRIPLES do do_reconfigure=1 @@ -819,6 +816,8 @@ putvar CFG_OSTYPE putvar CFG_CPUTYPE putvar CFG_CONFIGURE_ARGS putvar CFG_PREFIX +putvar CFG_BUILD_TRIPLE +putvar CFG_HOST_TRIPLES putvar CFG_TARGET_TRIPLES putvar CFG_C_COMPILER putvar CFG_LIBDIR @@ -854,7 +853,7 @@ fi putvar CFG_LLVM_ROOT putvar CFG_LLVM_SRC_DIR -for t in $CFG_TARGET_TRIPLES +for t in $CFG_HOST_TRIPLES do CFG_LLVM_BUILD_DIR=$(echo CFG_LLVM_BUILD_DIR_${t} | tr - _) CFG_LLVM_INST_DIR=$(echo CFG_LLVM_INST_DIR_${t} | tr - _) diff --git a/mk/clean.mk b/mk/clean.mk index f02e2427a0c..00feb18b0d2 100644 --- a/mk/clean.mk +++ b/mk/clean.mk @@ -14,7 +14,7 @@ CLEAN_STAGE_RULES = \ $(foreach stage, $(STAGES), \ - $(foreach host, $(CFG_TARGET_TRIPLES), \ + $(foreach host, $(CFG_HOST_TRIPLES), \ clean$(stage)_H_$(host) \ $(foreach target, $(CFG_TARGET_TRIPLES), \ clean$(stage)_T_$(target)_H_$(host)))) @@ -33,7 +33,7 @@ clean: clean-misc $(CLEAN_STAGE_RULES) clean-misc: @$(call E, cleaning) - $(Q)find rustllvm rt $(CFG_HOST_TRIPLE)/test \ + $(Q)find rustllvm rt $(CFG_BUILD_TRIPLE)/test \ -name '*.[odasS]' -o \ -name '*.so' -o \ -name '*.dylib' -o \ @@ -41,7 +41,7 @@ clean-misc: -name '*.def' -o \ -name '*.bc' \ | xargs rm -f - $(Q)find rustllvm rt $(CFG_HOST_TRIPLE)\ + $(Q)find rustllvm rt $(CFG_BUILD_TRIPLE)\ -name '*.dSYM' \ | xargs rm -Rf $(Q)rm -f $(RUNTIME_OBJS) $(RUNTIME_DEF) @@ -93,7 +93,7 @@ clean$(1)_H_$(2): endef -$(foreach host, $(CFG_TARGET_TRIPLES), \ +$(foreach host, $(CFG_HOST_TRIPLES), \ $(eval $(foreach stage, $(STAGES), \ $(eval $(call CLEAN_HOST_STAGE_N,$(stage),$(host)))))) @@ -127,12 +127,12 @@ clean$(1)_T_$(2)_H_$(3): $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/run_pass_stage* # For windows endef -$(foreach host, $(CFG_TARGET_TRIPLES), \ +$(foreach host, $(CFG_HOST_TRIPLES), \ $(eval $(foreach target, $(CFG_TARGET_TRIPLES), \ $(eval $(foreach stage, 0 1 2 3, \ $(eval $(call CLEAN_TARGET_STAGE_N,$(stage),$(target),$(host)))))))) -define DEF_CLEAN_LLVM_TARGET +define DEF_CLEAN_LLVM_HOST ifeq ($(CFG_LLVM_ROOT),) clean-llvm$(1): $$(Q)$$(MAKE) -C $$(CFG_LLVM_BUILD_DIR_$(1)) clean @@ -142,5 +142,5 @@ clean-llvm$(1): ; endif endef -$(foreach target, $(CFG_TARGET_TRIPLES), \ - $(eval $(call DEF_CLEAN_LLVM_TARGET,$(target)))) +$(foreach host, $(CFG_HOST_TRIPLES), \ + $(eval $(call DEF_CLEAN_LLVM_HOST,$(host)))) diff --git a/mk/docs.mk b/mk/docs.mk index 36e8bee7f7a..db04fd8a92b 100644 --- a/mk/docs.mk +++ b/mk/docs.mk @@ -171,7 +171,7 @@ ifeq ($(CFG_PANDOC),) else # The rustdoc executable -RUSTDOC = $(HBIN2_H_$(CFG_HOST_TRIPLE))/rustdoc$(X) +RUSTDOC = $(HBIN2_H_$(CFG_BUILD_TRIPLE))/rustdoc$(X) # The library documenting macro # $(1) - The output directory diff --git a/mk/host.mk b/mk/host.mk index 9dc5210cf00..08a300e71e1 100644 --- a/mk/host.mk +++ b/mk/host.mk @@ -115,7 +115,7 @@ $$(HLIB$(2)_H_$(4))/$$(CFG_RUSTLLVM): \ endef -$(foreach t,$(CFG_TARGET_TRIPLES), \ +$(foreach t,$(CFG_HOST_TRIPLES), \ $(eval $(call CP_HOST_STAGE_N,0,1,$(t),$(t))) \ $(eval $(call CP_HOST_STAGE_N,1,2,$(t),$(t))) \ $(eval $(call CP_HOST_STAGE_N,2,3,$(t),$(t)))) diff --git a/mk/install.mk b/mk/install.mk index ebbe5f007f1..07c45db1fe7 100644 --- a/mk/install.mk +++ b/mk/install.mk @@ -67,24 +67,24 @@ install-target-$(1)-host-$(2): $$(CSREQ$$(ISTAGE)_T_$(1)_H_$(2)) endef $(foreach target,$(CFG_TARGET_TRIPLES), \ - $(eval $(call INSTALL_TARGET_N,$(target),$(CFG_HOST_TRIPLE)))) + $(eval $(call INSTALL_TARGET_N,$(target),$(CFG_BUILD_TRIPLE)))) INSTALL_TARGET_RULES = $(foreach target,$(CFG_TARGET_TRIPLES), \ - install-target-$(target)-host-$(CFG_HOST_TRIPLE)) + install-target-$(target)-host-$(CFG_BUILD_TRIPLE)) install: all install-host install-targets # Shorthand for build/stageN/bin -HB = $(HBIN$(ISTAGE)_H_$(CFG_HOST_TRIPLE)) -HB2 = $(HBIN2_H_$(CFG_HOST_TRIPLE)) +HB = $(HBIN$(ISTAGE)_H_$(CFG_BUILD_TRIPLE)) +HB2 = $(HBIN2_H_$(CFG_BUILD_TRIPLE)) # Shorthand for build/stageN/lib -HL = $(HLIB$(ISTAGE)_H_$(CFG_HOST_TRIPLE)) +HL = $(HLIB$(ISTAGE)_H_$(CFG_BUILD_TRIPLE)) # Shorthand for the prefix bin directory PHB = $(PREFIX_BIN) # Shorthand for the prefix bin directory PHL = $(PREFIX_LIB) -install-host: $(CSREQ$(ISTAGE)_T_$(CFG_HOST_TRIPLE)_H_$(CFG_HOST_TRIPLE)) +install-host: $(CSREQ$(ISTAGE)_T_$(CFG_BUILD_TRIPLE)_H_$(CFG_BUILD_TRIPLE)) $(Q)mkdir -p $(PREFIX_BIN) $(Q)mkdir -p $(PREFIX_LIB) $(Q)mkdir -p $(PREFIX_ROOT)/share/man/man1 diff --git a/mk/llvm.mk b/mk/llvm.mk index d02ca633c9f..77b6b4d96f3 100644 --- a/mk/llvm.mk +++ b/mk/llvm.mk @@ -30,5 +30,5 @@ endif endef -$(foreach target,$(CFG_TARGET_TRIPLES), \ - $(eval $(call DEF_LLVM_RULES,$(target)))) +$(foreach host,$(CFG_HOST_TRIPLES), \ + $(eval $(call DEF_LLVM_RULES,$(host)))) diff --git a/mk/perf.mk b/mk/perf.mk index 276ead1884f..1997e0f4fe7 100644 --- a/mk/perf.mk +++ b/mk/perf.mk @@ -10,16 +10,16 @@ ifdef CFG_PERF_TOOL -rustc-perf$(X): $(CFG_HOST_TRIPLE)/stage2/bin/rustc$(X) +rustc-perf$(X): $(CFG_BUILD_TRIPLE)/stage2/bin/rustc$(X) @$(call E, perf compile: $@) - $(PERF_STAGE2_T_$(CFG_HOST_TRIPLE)_H_$(CFG_HOST_TRIPLE)) \ + $(PERF_STAGE2_T_$(CFG_BUILD_TRIPLE)_H_$(CFG_BUILD_TRIPLE)) \ -o $@ $(COMPILER_CRATE) >rustc-perf.err 2>&1 $(Q)rm -f $(LIBRUSTC_GLOB) else -rustc-perf$(X): $(CFG_HOST_TRIPLE)/stage2/bin/rustc$(X) +rustc-perf$(X): $(CFG_BUILD_TRIPLE)/stage2/bin/rustc$(X) $(Q)touch $@ endif perf: check-stage2-perf rustc-perf$(X) - $(Q)find $(CFG_HOST_TRIPLE)/test/perf -name \*.err | xargs cat + $(Q)find $(CFG_BUILD_TRIPLE)/test/perf -name \*.err | xargs cat $(Q)cat rustc-perf.err diff --git a/mk/platform.mk b/mk/platform.mk index 0488f2f8cde..51e6f088e4b 100644 --- a/mk/platform.mk +++ b/mk/platform.mk @@ -136,7 +136,7 @@ CFG_TESTLIB=$(CFG_BUILD_DIR)/$(2)/$(strip \ stage2/$(CFG_LIBDIR), \ $(if $(findstring stage3,$(1)), \ stage3/$(CFG_LIBDIR), \ - )))))/rustc/$(CFG_HOST_TRIPLE)/$(CFG_LIBDIR) + )))))/rustc/$(CFG_BUILD_TRIPLE)/$(CFG_LIBDIR) ifdef CFG_UNIXY CFG_INFO := $(info cfg: unix-y environment) @@ -200,7 +200,7 @@ else CFG_LDPATH := CFG_RUN=$(2) endif - CFG_RUN_TARG=$(call CFG_RUN,$(HLIB$(1)_H_$(CFG_HOST_TRIPLE)),$(2)) + CFG_RUN_TARG=$(call CFG_RUN,$(HLIB$(1)_H_$(CFG_BUILD_TRIPLE)),$(2)) CFG_RUN_TEST=$(call CFG_RUN,$(call CFG_TESTLIB,$(1),$(3)),$(1)) CFG_LIBUV_LINK_FLAGS=-lWs2_32 -lpsapi -liphlpapi @@ -318,7 +318,7 @@ endif # .cfi pseudo-ops on mac define CFG_MAKE_ASSEMBLER CFG_ASSEMBLE_$(1)=$$(CPP) $$(CFG_DEPEND_FLAGS) $$(2) | \ - $$(LLVM_MC_$$(CFG_HOST_TRIPLE)) \ + $$(LLVM_MC_$$(CFG_BUILD_TRIPLE)) \ -assemble \ -filetype=obj \ -triple=$(1) \ diff --git a/mk/pp.mk b/mk/pp.mk index 653cabfce5f..b2668f201af 100644 --- a/mk/pp.mk +++ b/mk/pp.mk @@ -26,10 +26,10 @@ else "no-reformat\|xfail-pretty\|xfail-test") endif -reformat: $(SREQ1$(CFG_HOST_TRIPLE)) +reformat: $(SREQ1$(CFG_BUILD_TRIPLE)) @$(call E, reformat [stage1]: $@) for i in $(PP_INPUTS_FILTERED); \ - do $(call CFG_RUN_TARG,1,$(CFG_HOST_TRIPLE)/stage1/rustc$(X)) \ + do $(call CFG_RUN_TARG,1,$(CFG_BUILD_TRIPLE)/stage1/rustc$(X)) \ --pretty normal $$i >$$i.tmp; \ if [ $$? -ne 0 ]; \ then echo failed to print $$i; rm $$i.tmp; \ diff --git a/mk/rt.mk b/mk/rt.mk index e6e0f1e0cd7..3a566f3beb1 100644 --- a/mk/rt.mk +++ b/mk/rt.mk @@ -127,7 +127,7 @@ rt/$(1)/%.o: rt/%.c $$(MKFILE_DEPS) $$(SNAP_DEFINES)) $$< rt/$(1)/%.o: rt/%.S $$(MKFILE_DEPS) \ - $$(LLVM_CONFIG_$$(CFG_HOST_TRIPLE)) + $$(LLVM_CONFIG_$$(CFG_BUILD_TRIPLE)) @$$(call E, compile: $$@) $$(Q)$$(call CFG_ASSEMBLE_$(1),$$@,$$<) diff --git a/mk/rustllvm.mk b/mk/rustllvm.mk index f707c6a5538..b9ceedb696e 100644 --- a/mk/rustllvm.mk +++ b/mk/rustllvm.mk @@ -46,5 +46,5 @@ rustllvm/$(1)/%.o: rustllvm/%.cpp $$(MKFILE_DEPS) $$(LLVM_CONFIG_$(1)) endef # Instantiate template for all stages -$(foreach target,$(CFG_TARGET_TRIPLES), \ - $(eval $(call DEF_RUSTLLVM_TARGETS,$(target)))) +$(foreach host,$(CFG_HOST_TRIPLES), \ + $(eval $(call DEF_RUSTLLVM_TARGETS,$(host)))) diff --git a/mk/snap.mk b/mk/snap.mk index 21bdc3b80d8..ee52ed655ef 100644 --- a/mk/snap.mk +++ b/mk/snap.mk @@ -22,12 +22,12 @@ endif endef -$(foreach host,$(CFG_TARGET_TRIPLES), \ +$(foreach host,$(CFG_HOST_TRIPLES), \ $(eval $(foreach stage,1 2 3, \ $(eval $(call DEF_SNAP_FOR_STAGE_H,$(stage),$(host)))))) -snap-stage1: snap-stage1-H-$(CFG_HOST_TRIPLE) +snap-stage1: snap-stage1-H-$(CFG_BUILD_TRIPLE) -snap-stage2: snap-stage2-H-$(CFG_HOST_TRIPLE) +snap-stage2: snap-stage2-H-$(CFG_BUILD_TRIPLE) -snap-stage3: snap-stage3-H-$(CFG_HOST_TRIPLE) +snap-stage3: snap-stage3-H-$(CFG_BUILD_TRIPLE) diff --git a/mk/stage0.mk b/mk/stage0.mk index e1a83c18f4d..a858134194e 100644 --- a/mk/stage0.mk +++ b/mk/stage0.mk @@ -2,16 +2,16 @@ -$(HBIN0_H_$(CFG_HOST_TRIPLE))/rustc$(X): \ +$(HBIN0_H_$(CFG_BUILD_TRIPLE))/rustc$(X): \ $(S)src/snapshots.txt \ $(S)src/etc/get-snapshot.py $(MKFILE_DEPS) @$(call E, fetch: $@) # Note: the variable "SNAPSHOT_FILE" is generally not set, and so # we generally only pass one argument to this script. ifdef CFG_ENABLE_LOCAL_RUST - $(Q)$(S)src/etc/local_stage0.sh $(CFG_HOST_TRIPLE) $(CFG_LOCAL_RUST_ROOT) + $(Q)$(S)src/etc/local_stage0.sh $(CFG_BUILD_TRIPLE) $(CFG_LOCAL_RUST_ROOT) else - $(Q)$(CFG_PYTHON) $(S)src/etc/get-snapshot.py $(CFG_HOST_TRIPLE) $(SNAPSHOT_FILE) + $(Q)$(CFG_PYTHON) $(S)src/etc/get-snapshot.py $(CFG_BUILD_TRIPLE) $(SNAPSHOT_FILE) ifdef CFG_ENABLE_PAX_FLAGS @$(call E, apply PaX flags: $@) @"$(CFG_PAXCTL)" -cm "$@" @@ -21,24 +21,24 @@ endif # Host libs will be extracted by the above rule -$(HLIB0_H_$(CFG_HOST_TRIPLE))/$(CFG_RUNTIME): \ - $(HBIN0_H_$(CFG_HOST_TRIPLE))/rustc$(X) +$(HLIB0_H_$(CFG_BUILD_TRIPLE))/$(CFG_RUNTIME): \ + $(HBIN0_H_$(CFG_BUILD_TRIPLE))/rustc$(X) $(Q)touch $@ -$(HLIB0_H_$(CFG_HOST_TRIPLE))/$(CFG_CORELIB): \ - $(HBIN0_H_$(CFG_HOST_TRIPLE))/rustc$(X) +$(HLIB0_H_$(CFG_BUILD_TRIPLE))/$(CFG_CORELIB): \ + $(HBIN0_H_$(CFG_BUILD_TRIPLE))/rustc$(X) $(Q)touch $@ -$(HLIB0_H_$(CFG_HOST_TRIPLE))/$(CFG_STDLIB): \ - $(HBIN0_H_$(CFG_HOST_TRIPLE))/rustc$(X) +$(HLIB0_H_$(CFG_BUILD_TRIPLE))/$(CFG_STDLIB): \ + $(HBIN0_H_$(CFG_BUILD_TRIPLE))/rustc$(X) $(Q)touch $@ -$(HLIB0_H_$(CFG_HOST_TRIPLE))/$(CFG_LIBRUSTC): \ - $(HBIN0_H_$(CFG_HOST_TRIPLE))/rustc$(X) +$(HLIB0_H_$(CFG_BUILD_TRIPLE))/$(CFG_LIBRUSTC): \ + $(HBIN0_H_$(CFG_BUILD_TRIPLE))/rustc$(X) $(Q)touch $@ -$(HLIB0_H_$(CFG_HOST_TRIPLE))/$(CFG_RUSTLLVM): \ - $(HBIN0_H_$(CFG_HOST_TRIPLE))/rustc$(X) +$(HLIB0_H_$(CFG_BUILD_TRIPLE))/$(CFG_RUSTLLVM): \ + $(HBIN0_H_$(CFG_BUILD_TRIPLE))/rustc$(X) $(Q)touch $@ # For other targets, let the host build the target: @@ -82,5 +82,5 @@ endef # Use stage1 to build other architectures: then you don't have to wait # for stage2, but you get the latest updates to the compiler source. -$(foreach t,$(NON_HOST_TRIPLES), \ - $(eval $(call BOOTSTRAP_STAGE0,$(t),1,$(CFG_HOST_TRIPLE)))) +$(foreach t,$(NON_BUILD_HOST_TRIPLES), \ + $(eval $(call BOOTSTRAP_STAGE0,$(t),1,$(CFG_BUILD_TRIPLE)))) diff --git a/mk/target.mk b/mk/target.mk index 67bb055dfc7..df7723b178e 100644 --- a/mk/target.mk +++ b/mk/target.mk @@ -22,36 +22,6 @@ $$(TLIB$(1)_T_$(2)_H_$(3))/libmorestack.a: \ @$$(call E, cp: $$@) $$(Q)cp $$< $$@ -$$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_RUSTLLVM): \ - rustllvm/$(2)/$$(CFG_RUSTLLVM) - @$$(call E, cp: $$@) - $$(Q)cp $$< $$@ - -$$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBRUSTC): \ - $$(COMPILER_CRATE) $$(COMPILER_INPUTS) \ - $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBSYNTAX) - @$$(call E, compile_and_link: $$@) - $$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$< && touch $$@ - -$$(TBIN$(1)_T_$(2)_H_$(3))/rustc$$(X): \ - $$(DRIVER_CRATE) \ - $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBRUSTC) - @$$(call E, compile_and_link: $$@) - $$(STAGE$(1)_T_$(2)_H_$(3)) --cfg rustc -o $$@ $$< -ifdef CFG_ENABLE_PAX_FLAGS - @$$(call E, apply PaX flags: $$@) - @"$(CFG_PAXCTL)" -cm "$$@" -endif - -$$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBSYNTAX): \ - $$(LIBSYNTAX_CRATE) $$(LIBSYNTAX_INPUTS) \ - $$(TSREQ$(1)_T_$(2)_H_$(3)) \ - $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_RUSTLLVM) \ - $$(TCORELIB_DEFAULT$(1)_T_$(2)_H_$(3)) \ - $$(TSTDLIB_DEFAULT$(1)_T_$(2)_H_$(3)) - @$$(call E, compile_and_link: $$@) - $$(STAGE$(1)_T_$(2)_H_$(3)) $(BORROWCK) -o $$@ $$< && touch $$@ - $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_RUNTIME): \ rt/$(2)/$$(CFG_RUNTIME) @$$(call E, cp: $$@) @@ -70,10 +40,45 @@ $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_STDLIB): \ @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$< && touch $$@ +$$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBSYNTAX): \ + $$(LIBSYNTAX_CRATE) $$(LIBSYNTAX_INPUTS) \ + $$(TSREQ$(1)_T_$(2)_H_$(3)) \ + $$(TCORELIB_DEFAULT$(1)_T_$(2)_H_$(3)) \ + $$(TSTDLIB_DEFAULT$(1)_T_$(2)_H_$(3)) + @$$(call E, compile_and_link: $$@) + $$(STAGE$(1)_T_$(2)_H_$(3)) $(BORROWCK) -o $$@ $$< && touch $$@ + +# Only build the compiler for host triples +ifneq ($$(findstring $(2),$$(CFG_HOST_TRIPLES)),) + +$$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_RUSTLLVM): \ + rustllvm/$(2)/$$(CFG_RUSTLLVM) + @$$(call E, cp: $$@) + $$(Q)cp $$< $$@ + +$$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBRUSTC): \ + $$(COMPILER_CRATE) $$(COMPILER_INPUTS) \ + $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBSYNTAX) \ + $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_RUSTLLVM) + @$$(call E, compile_and_link: $$@) + $$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$< && touch $$@ + +$$(TBIN$(1)_T_$(2)_H_$(3))/rustc$$(X): \ + $$(DRIVER_CRATE) \ + $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBRUSTC) + @$$(call E, compile_and_link: $$@) + $$(STAGE$(1)_T_$(2)_H_$(3)) --cfg rustc -o $$@ $$< +ifdef CFG_ENABLE_PAX_FLAGS + @$$(call E, apply PaX flags: $$@) + @"$(CFG_PAXCTL)" -cm "$$@" +endif + +endif + endef # In principle, each host can build each target: -$(foreach source,$(CFG_TARGET_TRIPLES), \ +$(foreach source,$(CFG_HOST_TRIPLES), \ $(foreach target,$(CFG_TARGET_TRIPLES), \ $(eval $(call TARGET_STAGE_N,0,$(target),$(source))) \ $(eval $(call TARGET_STAGE_N,1,$(target),$(source))) \ diff --git a/mk/tests.mk b/mk/tests.mk index 116f6ffe568..3876f94afe7 100644 --- a/mk/tests.mk +++ b/mk/tests.mk @@ -14,7 +14,9 @@ ###################################################################### # The names of crates that must be tested -TEST_CRATES = core std syntax rustc rustdoc rusti rust rustpkg +TEST_TARGET_CRATES = core std +TEST_HOST_CRATES = syntax rustc rustdoc rusti rust rustpkg +TEST_CRATES = $(TEST_TARGET_CRATES) $(TEST_HOST_CRATES) # Markdown files under doc/ that should have their code extracted and run DOC_TEST_NAMES = tutorial tutorial-ffi tutorial-macros tutorial-borrowed-ptr tutorial-tasks rust @@ -93,7 +95,7 @@ cleantmptestlogs: $(Q)rm -f tmp/*.log cleantestlibs: - $(Q)find $(CFG_HOST_TRIPLE)/test \ + $(Q)find $(CFG_BUILD_TRIPLE)/test \ -name '*.[odasS]' -o \ -name '*.so' -o \ -name '*.dylib' -o \ @@ -175,10 +177,22 @@ check-stage$(1)-T-$(2)-H-$(3)-exec: \ check-stage$(1)-T-$(2)-H-$(3)-doc-exec \ check-stage$(1)-T-$(2)-H-$(3)-pretty-exec +# Only test the compiler-dependent crates when the target is +# able to build a compiler (when the target triple is in the set of host triples) +ifneq ($$(findstring $(2),$$(CFG_HOST_TRIPLES)),) + check-stage$(1)-T-$(2)-H-$(3)-crates-exec: \ $$(foreach crate,$$(TEST_CRATES), \ check-stage$(1)-T-$(2)-H-$(3)-$$(crate)-exec) +else + +check-stage$(1)-T-$(2)-H-$(3)-crates-exec: \ + $$(foreach crate,$$(TEST_TARGET_CRATES), \ + check-stage$(1)-T-$(2)-H-$(3)-$$(crate)-exec) + +endif + check-stage$(1)-T-$(2)-H-$(3)-doc-exec: \ $$(foreach docname,$$(DOC_TEST_NAMES), \ check-stage$(1)-T-$(2)-H-$(3)-doc-$$(docname)-exec) @@ -192,7 +206,7 @@ check-stage$(1)-T-$(2)-H-$(3)-pretty-exec: \ endef -$(foreach host,$(CFG_TARGET_TRIPLES), \ +$(foreach host,$(CFG_HOST_TRIPLES), \ $(foreach target,$(CFG_TARGET_TRIPLES), \ $(foreach stage,$(STAGES), \ $(eval $(call DEF_TEST_SETS,$(stage),$(target),$(host)))))) @@ -255,7 +269,7 @@ $(3)/test/rustdoctest.stage$(1)-$(2)$$(X): \ endef -$(foreach host,$(CFG_TARGET_TRIPLES), \ +$(foreach host,$(CFG_HOST_TRIPLES), \ $(eval $(foreach target,$(CFG_TARGET_TRIPLES), \ $(eval $(foreach stage,$(STAGES), \ $(eval $(call TEST_RUNNER,$(stage),$(target),$(host)))))))) @@ -271,7 +285,7 @@ $$(call TEST_OK_FILE,$(1),$(2),$(3),$(4)): \ && touch $$@ endef -$(foreach host,$(CFG_TARGET_TRIPLES), \ +$(foreach host,$(CFG_HOST_TRIPLES), \ $(foreach target,$(CFG_TARGET_TRIPLES), \ $(foreach stage,$(STAGES), \ $(foreach crate, $(TEST_CRATES), \ @@ -381,7 +395,7 @@ CTEST_DEPS_debuginfo_$(1)-T-$(2)-H-$(3) = $$(DEBUGINFO_TESTS) endef -$(foreach host,$(CFG_TARGET_TRIPLES), \ +$(foreach host,$(CFG_HOST_TRIPLES), \ $(eval $(foreach target,$(CFG_TARGET_TRIPLES), \ $(eval $(foreach stage,$(STAGES), \ $(eval $(call DEF_CTEST_VARS,$(stage),$(target),$(host)))))))) @@ -423,7 +437,7 @@ endef CTEST_NAMES = rpass rpass-full rfail cfail bench perf debuginfo -$(foreach host,$(CFG_TARGET_TRIPLES), \ +$(foreach host,$(CFG_HOST_TRIPLES), \ $(eval $(foreach target,$(CFG_TARGET_TRIPLES), \ $(eval $(foreach stage,$(STAGES), \ $(eval $(foreach name,$(CTEST_NAMES), \ @@ -462,7 +476,7 @@ $$(call TEST_OK_FILE,$(1),$(2),$(3),$(4)): \ endef -$(foreach host,$(CFG_TARGET_TRIPLES), \ +$(foreach host,$(CFG_HOST_TRIPLES), \ $(foreach target,$(CFG_TARGET_TRIPLES), \ $(foreach stage,$(STAGES), \ $(foreach pretty-name,$(PRETTY_NAMES), \ @@ -489,7 +503,7 @@ $$(call TEST_OK_FILE,$(1),$(2),$(3),doc-$(4)): \ endef -$(foreach host,$(CFG_TARGET_TRIPLES), \ +$(foreach host,$(CFG_HOST_TRIPLES), \ $(foreach target,$(CFG_TARGET_TRIPLES), \ $(foreach stage,$(STAGES), \ $(foreach docname,$(DOC_TEST_NAMES), \ @@ -511,7 +525,7 @@ doc-$(2)-extract$(1): endef -$(foreach host,$(CFG_TARGET_TRIPLES), \ +$(foreach host,$(CFG_HOST_TRIPLES), \ $(foreach docname,$(DOC_TEST_NAMES), \ $(eval $(call DEF_DOC_TEST_HOST,$(host),$(docname))))) @@ -546,7 +560,7 @@ endef $(foreach stage,$(STAGES), \ $(foreach target,$(CFG_TARGET_TRIPLES), \ - $(foreach host,$(CFG_TARGET_TRIPLES), \ + $(foreach host,$(CFG_HOST_TRIPLES), \ $(eval $(call DEF_CHECK_FOR_STAGE_AND_TARGET_AND_HOST,$(stage),$(target),$(host)))))) define DEF_CHECK_FOR_STAGE_AND_TARGET_AND_HOST_AND_GROUP @@ -555,13 +569,13 @@ endef $(foreach stage,$(STAGES), \ $(foreach target,$(CFG_TARGET_TRIPLES), \ - $(foreach host,$(CFG_TARGET_TRIPLES), \ + $(foreach host,$(CFG_HOST_TRIPLES), \ $(foreach group,$(TEST_GROUPS), \ $(eval $(call DEF_CHECK_FOR_STAGE_AND_TARGET_AND_HOST_AND_GROUP,$(stage),$(target),$(host),$(group))))))) define DEF_CHECK_FOR_STAGE -check-stage$(1): check-stage$(1)-H-$$(CFG_HOST_TRIPLE) -check-stage$(1)-H-all: $$(foreach target,$$(CFG_TARGET_TRIPLES), \ +check-stage$(1): check-stage$(1)-H-$$(CFG_BUILD_TRIPLE) +check-stage$(1)-H-all: $$(foreach target,$$(CFG_HOST_TRIPLES), \ check-stage$(1)-H-$$(target)) endef @@ -569,8 +583,8 @@ $(foreach stage,$(STAGES), \ $(eval $(call DEF_CHECK_FOR_STAGE,$(stage)))) define DEF_CHECK_FOR_STAGE_AND_GROUP -check-stage$(1)-$(2): check-stage$(1)-H-$$(CFG_HOST_TRIPLE)-$(2) -check-stage$(1)-H-all-$(2): $$(foreach target,$$(CFG_TARGET_TRIPLES), \ +check-stage$(1)-$(2): check-stage$(1)-H-$$(CFG_BUILD_TRIPLE)-$(2) +check-stage$(1)-H-all-$(2): $$(foreach target,$$(CFG_HOST_TRIPLES), \ check-stage$(1)-H-$$(target)-$(2)) endef @@ -580,25 +594,24 @@ $(foreach stage,$(STAGES), \ define DEF_CHECK_FOR_STAGE_AND_HOSTS -check-stage$(1)-H-$(2): $$(foreach target,$$(CFG_TARGET_TRIPLES), \ +check-stage$(1)-H-$(2): $$(foreach target,$$(CFG_HOST_TRIPLES), \ check-stage$(1)-T-$$(target)-H-$(2)) endef $(foreach stage,$(STAGES), \ - $(foreach host,$(CFG_TARGET_TRIPLES), \ + $(foreach host,$(CFG_HOST_TRIPLES), \ $(eval $(call DEF_CHECK_FOR_STAGE_AND_HOSTS,$(stage),$(host))))) define DEF_CHECK_FOR_STAGE_AND_HOSTS_AND_GROUP -check-stage$(1)-H-$(2)-$(3): $$(foreach target,$$(CFG_TARGET_TRIPLES), \ +check-stage$(1)-H-$(2)-$(3): $$(foreach target,$$(CFG_HOST_TRIPLES), \ check-stage$(1)-T-$$(target)-H-$(2)-$(3)) endef $(foreach stage,$(STAGES), \ - $(foreach host,$(CFG_TARGET_TRIPLES), \ + $(foreach host,$(CFG_HOST_TRIPLES), \ $(foreach group,$(TEST_GROUPS), \ $(eval $(call DEF_CHECK_FOR_STAGE_AND_HOSTS_AND_GROUP,$(stage),$(host),$(group)))))) - ###################################################################### # check-fast rules ###################################################################### @@ -644,11 +657,11 @@ check-fast-T-$(2)-H-$(3): \ endef -$(foreach host,$(CFG_TARGET_TRIPLES), \ +$(foreach host,$(CFG_HOST_TRIPLES), \ $(eval $(foreach target,$(CFG_TARGET_TRIPLES), \ $(eval $(call DEF_CHECK_FAST_FOR_T_H,,$(target),$(host)))))) -check-fast: tidy check-fast-H-$(CFG_HOST_TRIPLE) +check-fast: tidy check-fast-H-$(CFG_BUILD_TRIPLE) define DEF_CHECK_FAST_FOR_H @@ -656,6 +669,6 @@ check-fast-H-$(1): check-fast-T-$(1)-H-$(1) endef -$(foreach target,$(CFG_TARGET_TRIPLES), \ - $(eval $(call DEF_CHECK_FAST_FOR_H,$(target)))) +$(foreach host,$(CFG_HOST_TRIPLES), \ + $(eval $(call DEF_CHECK_FAST_FOR_H,$(host)))) diff --git a/mk/tools.mk b/mk/tools.mk index 22f109be47f..1c2b3962ac2 100644 --- a/mk/tools.mk +++ b/mk/tools.mk @@ -223,13 +223,13 @@ $$(HBIN$(2)_H_$(4))/rust$$(X): \ endef -$(foreach host,$(CFG_TARGET_TRIPLES), \ +$(foreach host,$(CFG_HOST_TRIPLES), \ $(foreach target,$(CFG_TARGET_TRIPLES), \ - $(eval $(call TOOLS_STAGE_N_TARGET,0,1,$(target),$(host))) \ - $(eval $(call TOOLS_STAGE_N_TARGET,1,2,$(target),$(host))) \ - $(eval $(call TOOLS_STAGE_N_TARGET,2,3,$(target),$(host))))) + $(eval $(call TOOLS_STAGE_N_TARGET,0,1,$(host),$(target))) \ + $(eval $(call TOOLS_STAGE_N_TARGET,1,2,$(host),$(target))) \ + $(eval $(call TOOLS_STAGE_N_TARGET,2,3,$(host),$(target))))) -$(foreach host,$(CFG_TARGET_TRIPLES), \ +$(foreach host,$(CFG_HOST_TRIPLES), \ $(eval $(call TOOLS_STAGE_N_HOST,0,1,$(host),$(host))) \ $(eval $(call TOOLS_STAGE_N_HOST,1,2,$(host),$(host))) \ $(eval $(call TOOLS_STAGE_N_HOST,2,3,$(host),$(host)))) diff --git a/src/librustc/driver/driver.rs b/src/librustc/driver/driver.rs index 45bbe5d091e..50e31482587 100644 --- a/src/librustc/driver/driver.rs +++ b/src/librustc/driver/driver.rs @@ -516,11 +516,11 @@ pub fn host_triple() -> ~str { // FIXME (#2400): Instead of grabbing the host triple we really should // be grabbing (at compile time) the target triple that this rustc is // built with and calling that (at runtime) the host triple. - let ht = env!("CFG_HOST_TRIPLE"); + let ht = env!("CFG_BUILD_TRIPLE"); return if ht != ~"" { ht } else { - fail!(~"rustc built without CFG_HOST_TRIPLE") + fail!(~"rustc built without CFG_BUILD_TRIPLE") }; } From 42be216848f1df70528ea7aaa57d9a4c5cfc1847 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Thu, 21 Feb 2013 19:10:16 -0800 Subject: [PATCH 02/16] mk: Refactor platform.mk a bit --- mk/platform.mk | 158 ++++++++++++++++++++++++------------------------- 1 file changed, 77 insertions(+), 81 deletions(-) diff --git a/mk/platform.mk b/mk/platform.mk index 51e6f088e4b..ce6d0a684e6 100644 --- a/mk/platform.mk +++ b/mk/platform.mk @@ -19,6 +19,13 @@ endef $(foreach t,$(CFG_TARGET_TRIPLES),$(eval $(call DEF_HOST_VAR,$(t)))) $(foreach t,$(CFG_TARGET_TRIPLES),$(info cfg: host for $(t) is $(HOST_$(t)))) +# Ditto for OSTYPE +define DEF_OSTYPE_VAR + OSTYPE_$(1) = $(subst $(firstword $(subst -, ,$(1)))-,,$(1)) +endef +$(foreach t,$(CFG_TARGET_TRIPLES),$(eval $(call DEF_OSTYPE_VAR,$(t)))) +$(foreach t,$(CFG_TARGET_TRIPLES),$(info cfg: os for $(t) is $(OSTYPE_$(t)))) + # FIXME: no-omit-frame-pointer is just so that task_start_wrapper # has a frame pointer and the stack walker can understand it. Turning off # frame pointers everywhere is overkill @@ -33,6 +40,21 @@ CFG_DSYMUTIL := true # non-Darwin platforms; omitting it causes a full -R copy of lib/ CFG_LIB_DSYM_GLOB=lib$(1)-*.dylib.dSYM +# Hack: not sure how to test if a file exists in make other than this +OS_SUPP = $(patsubst %,--suppressions=%,\ + $(wildcard $(CFG_SRC_DIR)src/etc/$(CFG_OSTYPE).supp*)) + +ifneq ($(findstring mingw,$(CFG_OSTYPE)),) + CFG_WINDOWSY := 1 +endif + +ifdef CFG_DISABLE_OPTIMIZE_CXX + $(info cfg: disabling C++ optimization (CFG_DISABLE_OPTIMIZE_CXX)) + CFG_GCCISH_CFLAGS += -O0 +else + CFG_GCCISH_CFLAGS += -O2 +endif + ifneq ($(findstring freebsd,$(CFG_OSTYPE)),) CFG_LIB_NAME=lib$(1).so CFG_LIB_GLOB=lib$(1)-*.so @@ -112,32 +134,6 @@ ifneq ($(findstring darwin,$(CFG_OSTYPE)),) CFG_INSTALL_NAME = -Wl,-install_name,@rpath/$(1) endif -# Hack: not sure how to test if a file exists in make other than this -OS_SUPP = $(patsubst %,--suppressions=%,\ - $(wildcard $(CFG_SRC_DIR)src/etc/$(CFG_OSTYPE).supp*)) - -ifneq ($(findstring mingw,$(CFG_OSTYPE)),) - CFG_WINDOWSY := 1 -endif - -ifdef CFG_DISABLE_OPTIMIZE_CXX - $(info cfg: disabling C++ optimization (CFG_DISABLE_OPTIMIZE_CXX)) - CFG_GCCISH_CFLAGS += -O0 -else - CFG_GCCISH_CFLAGS += -O2 -endif - -CFG_TESTLIB=$(CFG_BUILD_DIR)/$(2)/$(strip \ - $(if $(findstring stage0,$(1)), \ - stage0/$(CFG_LIBDIR), \ - $(if $(findstring stage1,$(1)), \ - stage1/$(CFG_LIBDIR), \ - $(if $(findstring stage2,$(1)), \ - stage2/$(CFG_LIBDIR), \ - $(if $(findstring stage3,$(1)), \ - stage3/$(CFG_LIBDIR), \ - )))))/rustc/$(CFG_BUILD_TRIPLE)/$(CFG_LIBDIR) - ifdef CFG_UNIXY CFG_INFO := $(info cfg: unix-y environment) @@ -152,25 +148,26 @@ ifdef CFG_UNIXY CFG_LIBUV_LINK_FLAGS=-lpthread -lkvm endif - ifdef CFG_ENABLE_MINGW_CROSS - CFG_WINDOWSY := 1 - CFG_INFO := $(info cfg: mingw-cross) - CFG_GCCISH_CROSS := i586-mingw32msvc- - ifdef CFG_VALGRIND - CFG_VALGRIND += wine - endif + # FIXME: This is surely super broken + # ifdef CFG_ENABLE_MINGW_CROSS + # CFG_WINDOWSY := 1 + # CFG_INFO := $(info cfg: mingw-cross) + # CFG_GCCISH_CROSS := i586-mingw32msvc- + # ifdef CFG_VALGRIND + # CFG_VALGRIND += wine + # endif - CFG_GCCISH_CFLAGS := -march=i586 - CFG_GCCISH_PRE_LIB_FLAGS := - CFG_GCCISH_POST_LIB_FLAGS := - CFG_GCCISH_DEF_FLAG := - CFG_GCCISH_LINK_FLAGS := -shared + # CFG_GCCISH_CFLAGS := -march=i586 + # CFG_GCCISH_PRE_LIB_FLAGS := + # CFG_GCCISH_POST_LIB_FLAGS := + # CFG_GCCISH_DEF_FLAG := + # CFG_GCCISH_LINK_FLAGS := -shared - ifeq ($(CFG_CPUTYPE), x86_64) - CFG_GCCISH_CFLAGS += -m32 - CFG_GCCISH_LINK_FLAGS += -m32 - endif - endif + # ifeq ($(CFG_CPUTYPE), x86_64) + # CFG_GCCISH_CFLAGS += -m32 + # CFG_GCCISH_LINK_FLAGS += -m32 + # endif + # endif ifdef CFG_VALGRIND CFG_VALGRIND += --error-exitcode=100 \ --quiet \ @@ -200,6 +197,18 @@ else CFG_LDPATH := CFG_RUN=$(2) endif + + CFG_TESTLIB=$(CFG_BUILD_DIR)/$(2)/$(strip \ + $(if $(findstring stage0,$(1)), \ + stage0/$(CFG_LIBDIR), \ + $(if $(findstring stage1,$(1)), \ + stage1/$(CFG_LIBDIR), \ + $(if $(findstring stage2,$(1)), \ + stage2/$(CFG_LIBDIR), \ + $(if $(findstring stage3,$(1)), \ + stage3/$(CFG_LIBDIR), \ + )))))/rustc/$(CFG_BUILD_TRIPLE)/$(CFG_LIBDIR) + CFG_RUN_TARG=$(call CFG_RUN,$(HLIB$(1)_H_$(CFG_BUILD_TRIPLE)),$(2)) CFG_RUN_TEST=$(call CFG_RUN,$(call CFG_TESTLIB,$(1),$(3)),$(1)) CFG_LIBUV_LINK_FLAGS=-lWs2_32 -lpsapi -liphlpapi @@ -233,34 +242,13 @@ ifeq ($(CFG_C_COMPILER),clang) # next to the .o file that lists header deps. CFG_DEPEND_FLAGS = -MMD -MP -MT $(1) -MF $(1:%.o=%.d) - define CFG_MAKE_CC - CFG_COMPILE_C_$(1) = $$(CFG_GCCISH_CROSS)$$(CC) \ - $$(CFG_GCCISH_CFLAGS) $$(CFG_CLANG_CFLAGS) \ - $$(CFG_GCCISH_CFLAGS_$$(HOST_$(1))) \ - $$(CFG_CLANG_CFLAGS_$$(HOST_$(1))) \ - $$(CFG_DEPEND_FLAGS) \ - -c -o $$(1) $$(2) - CFG_LINK_C_$(1) = $$(CFG_GCCISH_CROSS)$$(CC) \ - $$(CFG_GCCISH_LINK_FLAGS) -o $$(1) \ - $$(CFG_GCCISH_LINK_FLAGS_$$(HOST_$(1))) \ - $$(CFG_GCCISH_DEF_FLAG)$$(3) $$(2) \ - $$(call CFG_INSTALL_NAME,$$(4)) - CFG_COMPILE_CXX_$(1) = $$(CFG_GCCISH_CROSS)$$(CXX) \ - $$(CFG_GCCISH_CFLAGS) $$(CFG_CLANG_CFLAGS) \ - $$(CFG_GCCISH_CXXFLAGS) \ - $$(CFG_GCCISH_CFLAGS_$$(HOST_$(1))) \ - $$(CFG_CLANG_CFLAGS_$$(HOST_$(1))) \ - $$(CFG_DEPEND_FLAGS) \ - -c -o $$(1) $$(2) - CFG_LINK_CXX_$(1) = $$(CFG_GCCISH_CROSS)$$(CXX) \ - $$(CFG_GCCISH_LINK_FLAGS) -o $$(1) \ - $$(CFG_GCCISH_LINK_FLAGS_$$(HOST_$(1))) \ - $$(CFG_GCCISH_DEF_FLAG)$$(3) $$(2) \ - $$(call CFG_INSTALL_NAME,$$(4)) + CFG_SPECIFIC_CC_CFLAGS = $(CFG_CLANG_CFLAGS) + define MAKE_CLANG_SPECIFIC_CFLAGS + CFG_SPECIFIC_CC_CFLAGS_$$(HOST_$(target)) = $(CFG_CLANG_CFLAGS_$$(HOST_$(target))) endef - $(foreach target,$(CFG_TARGET_TRIPLES), \ - $(eval $(call CFG_MAKE_CC,$(target)))) + $(eval $(call MAKE_CLANG_SPECIFIC_CFLAGS,$(target)))) + else ifeq ($(CFG_C_COMPILER),gcc) ifeq ($(origin CC),default) @@ -279,12 +267,24 @@ ifeq ($(CFG_C_COMPILER),gcc) # next to the .o file that lists header deps. CFG_DEPEND_FLAGS = -MMD -MP -MT $(1) -MF $(1:%.o=%.d) - define CFG_MAKE_CC + CFG_SPECIFIC_CC_CFLAGS = $(CFG_GCC_CFLAGS) + define MAKE_GCC_SPECIFIC_CFLAGS + CFG_SPECIFIC_CC_CFLAGS_$$(HOST_$(target)) = $(CFG_GCC_CFLAGS_$$(HOST_$(target))) + endef + $(foreach target,$(CFG_TARGET_TRIPLES), \ + $(eval $(call MAKE_GCC_SPECIFIC_CFLAGS,$(target)))) + +else + CFG_ERR := $(error please try on a system with gcc or clang) +endif +endif + +define CFG_MAKE_CC CFG_COMPILE_C_$(1) = $$(CFG_GCCISH_CROSS)$$(CC) \ $$(CFG_GCCISH_CFLAGS) \ $$(CFG_GCCISH_CFLAGS_$$(HOST_$(1))) \ - $$(CFG_GCC_CFLAGS) \ - $$(CFG_GCC_CFLAGS_$$(HOST_$(1))) \ + $$(CFG_SPECIFIC_CC_CFLAGS) \ + $$(CFG_SPECIFIC_CC_CFLAGS_$$(HOST_$(1))) \ $$(CFG_DEPEND_FLAGS) \ -c -o $$(1) $$(2) CFG_LINK_C_$(1) = $$(CFG_GCCISH_CROSS)$$(CC) \ @@ -296,8 +296,8 @@ ifeq ($(CFG_C_COMPILER),gcc) $$(CFG_GCCISH_CFLAGS) \ $$(CFG_GCCISH_CXXFLAGS) \ $$(CFG_GCCISH_CFLAGS_$$(HOST_$(1))) \ - $$(CFG_GCC_CFLAGS) \ - $$(CFG_GCC_CFLAGS_$$(HOST_$(1))) \ + $$(CFG_SPECIFIC_CC_CFLAGS) \ + $$(CFG_SPECIFIC_CC_CFLAGS_$$(HOST_$(1))) \ $$(CFG_DEPEND_FLAGS) \ -c -o $$(1) $$(2) CFG_LINK_CXX_$(1) = $$(CFG_GCCISH_CROSS)$$(CXX) \ @@ -305,14 +305,10 @@ ifeq ($(CFG_C_COMPILER),gcc) $$(CFG_GCCISH_LINK_FLAGS_$$(HOST_$(1))) \ $$(CFG_GCCISH_DEF_FLAG)$$(3) $$(2) \ $$(call CFG_INSTALL_NAME,$$(4)) - endef +endef - $(foreach target,$(CFG_TARGET_TRIPLES), \ - $(eval $(call CFG_MAKE_CC,$(target)))) -else - CFG_ERR := $(error please try on a system with gcc or clang) -endif -endif +$(foreach target,$(CFG_TARGET_TRIPLES), \ + $(eval $(call CFG_MAKE_CC,$(target)))) # We're using llvm-mc as our assembler because it supports # .cfi pseudo-ops on mac From d96b483a01b9d9c5918850a00e9ca6e49d0e9de1 Mon Sep 17 00:00:00 2001 From: Young-il Choi Date: Mon, 25 Feb 2013 18:06:32 +0900 Subject: [PATCH 03/16] submodule: libuv for android --- .gitmodules | 2 +- src/libuv | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index e840f4adaeb..adc28fa6cab 100644 --- a/.gitmodules +++ b/.gitmodules @@ -3,4 +3,4 @@ url = git://github.com/brson/llvm.git [submodule "src/libuv"] path = src/libuv - url = git://github.com/joyent/libuv.git + url = https://github.com/ILyoan/libuv.git diff --git a/src/libuv b/src/libuv index da33bba7c04..2eab4fd2fac 160000 --- a/src/libuv +++ b/src/libuv @@ -1 +1 @@ -Subproject commit da33bba7c04e0873b457a9a4290bed2adf620154 +Subproject commit 2eab4fd2fac489750527361da42099202350018b From 26a5dc593c1895b4dd9a024ef785cb3682cb064a Mon Sep 17 00:00:00 2001 From: Young-il Choi Date: Wed, 27 Feb 2013 14:53:35 +0900 Subject: [PATCH 04/16] mk: rewrite make files --- Makefile.in | 125 ++++++++++---------- configure | 22 +++- mk/clean.mk | 72 ++++++------ mk/host.mk | 62 +++++----- mk/platform.mk | 216 +++++++++++++++++----------------- mk/rt.mk | 45 ++++--- mk/rustllvm.mk | 10 +- mk/stage0.mk | 36 +++--- mk/target.mk | 24 ++-- mk/tools.mk | 114 +++++++++--------- src/rt/arch/arm/morestack.S | 8 ++ src/rt/rust_android_dummy.cpp | 4 + 12 files changed, 396 insertions(+), 342 deletions(-) create mode 100644 src/rt/arch/arm/morestack.S diff --git a/Makefile.in b/Makefile.in index fedcd4f3129..ccc0af3acdf 100644 --- a/Makefile.in +++ b/Makefile.in @@ -130,36 +130,43 @@ else CFG_VALGRIND_COMPILE := endif -CFG_RUNTIME :=$(call CFG_LIB_NAME,rustrt) -CFG_RUSTLLVM :=$(call CFG_LIB_NAME,rustllvm) -CFG_CORELIB :=$(call CFG_LIB_NAME,core) -CFG_STDLIB :=$(call CFG_LIB_NAME,std) -CFG_LIBRUSTC :=$(call CFG_LIB_NAME,rustc) -CFG_LIBSYNTAX :=$(call CFG_LIB_NAME,syntax) -CFG_LIBFUZZER :=$(call CFG_LIB_NAME,fuzzer) -CFG_LIBRUSTPKG :=$(call CFG_LIB_NAME,rustpkg) -CFG_LIBRUSTDOC :=$(call CFG_LIB_NAME,rustdoc) -CFG_LIBRUSTI :=$(call CFG_LIB_NAME,rusti) -CFG_LIBRUST :=$(call CFG_LIB_NAME,rust) +define LIBREQ -STDLIB_GLOB :=$(call CFG_LIB_GLOB,std) -CORELIB_GLOB :=$(call CFG_LIB_GLOB,core) -LIBRUSTC_GLOB :=$(call CFG_LIB_GLOB,rustc) -LIBSYNTAX_GLOB :=$(call CFG_LIB_GLOB,syntax) -LIBFUZZER_GLOB :=$(call CFG_LIB_GLOB,fuzzer) -LIBRUSTPKG_GLOB :=$(call CFG_LIB_GLOB,rustpkg) -LIBRUSTDOC_GLOB :=$(call CFG_LIB_GLOB,rustdoc) -LIBRUSTI_GLOB :=$(call CFG_LIB_GLOB,rusti) -LIBRUST_GLOB :=$(call CFG_LIB_GLOB,rust) -STDLIB_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,std) -CORELIB_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,core) -LIBRUSTC_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,rustc) -LIBSYNTAX_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,syntax) -LIBFUZZER_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,fuzzer) -LIBRUSTPKG_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,rustpkg) -LIBRUSTDOC_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,rustdoc) -LIBRUSTI_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,rusti) -LIBRUST_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,rust) +CFG_RUNTIME_$(1) :=$(call CFG_LIB_NAME_$(1),rustrt) +CFG_RUSTLLVM_$(1) :=$(call CFG_LIB_NAME_$(1),rustllvm) +CFG_CORELIB_$(1) :=$(call CFG_LIB_NAME_$(1),core) +CFG_STDLIB_$(1) :=$(call CFG_LIB_NAME_$(1),std) +CFG_LIBRUSTC_$(1) :=$(call CFG_LIB_NAME_$(1),rustc) +CFG_LIBSYNTAX_$(1) :=$(call CFG_LIB_NAME_$(1),syntax) +CFG_LIBFUZZER_$(1) :=$(call CFG_LIB_NAME_$(1),fuzzer) +CFG_LIBRUSTPKG_$(1) :=$(call CFG_LIB_NAME_$(1),rustpkg) +CFG_LIBRUSTDOC_$(1) :=$(call CFG_LIB_NAME_$(1),rustdoc) +CFG_LIBRUSTI_$(1) :=$(call CFG_LIB_NAME_$(1),rusti) +CFG_LIBRUST_$(1) :=$(call CFG_LIB_NAME_$(1),rust) + +STDLIB_GLOB_$(1) :=$(call CFG_LIB_GLOB_$(1),std) +CORELIB_GLOB_$(1) :=$(call CFG_LIB_GLOB_$(1),core) +LIBRUSTC_GLOB_$(1) :=$(call CFG_LIB_GLOB_$(1),rustc) +LIBSYNTAX_GLOB_$(1) :=$(call CFG_LIB_GLOB_$(1),syntax) +LIBFUZZER_GLOB_$(1) :=$(call CFG_LIB_GLOB_$(1),fuzzer) +LIBRUSTPKG_GLOB_$(1) :=$(call CFG_LIB_GLOB_$(1),rustpkg) +LIBRUSTDOC_GLOB_$(1) :=$(call CFG_LIB_GLOB_$(1),rustdoc) +LIBRUSTI_GLOB_$(1) :=$(call CFG_LIB_GLOB_$(1),rusti) +LIBRUST_GLOB_$(1) :=$(call CFG_LIB_GLOB_$(1),rust) +STDLIB_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),std) +CORELIB_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),core) +LIBRUSTC_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),rustc) +LIBSYNTAX_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),syntax) +LIBFUZZER_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),fuzzer) +LIBRUSTPKG_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),rustpkg) +LIBRUSTDOC_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),rustdoc) +LIBRUSTI_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),rusti) +LIBRUST_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),rust) + +endef + +$(foreach target,$(CFG_TARGET_TRIPLES), \ + $(eval $(call LIBREQ,$(target)))) # version-string calculation CFG_GIT_DIR := $(CFG_SRC_DIR).git @@ -190,13 +197,13 @@ endif # Target-and-rule "utility variables" ###################################################################### -ifdef VERBOSE +#ifdef VERBOSE Q := E = -else - Q := @ - E = echo $(1) -endif +#else +# Q := @ +# E = echo $(1) +#endif S := $(CFG_SRC_DIR) X := $(CFG_EXE_SUFFIX) @@ -338,26 +345,26 @@ ifdef CFG_DISABLE_SHAREDSTD $$(TLIB$(1)_T_$(2)_H_$(3))/librustc.rlib else HCORELIB_DEFAULT$(1)_H_$(3) = \ - $$(HLIB$(1)_H_$(3))/$(CFG_CORELIB) + $$(HLIB$(1)_H_$(3))/$(CFG_CORELIB_$(3)) TCORELIB_DEFAULT$(1)_T_$(2)_H_$(3) = \ - $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_CORELIB) + $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_CORELIB_$(2)) HSTDLIB_DEFAULT$(1)_H_$(3) = \ - $$(HLIB$(1)_H_$(3))/$(CFG_STDLIB) + $$(HLIB$(1)_H_$(3))/$(CFG_STDLIB_$(3)) TSTDLIB_DEFAULT$(1)_T_$(2)_H_$(3) = \ - $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_STDLIB) + $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_STDLIB_$(2)) HLIBRUSTC_DEFAULT$(1)_H_$(3) = \ - $$(HLIB$(1)_H_$(3))/$(CFG_LIBRUSTC) + $$(HLIB$(1)_H_$(3))/$(CFG_LIBRUSTC_$(3)) TLIBRUSTC_DEFAULT$(1)_T_$(2)_H_$(3) = \ - $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTC) + $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTC_$(3)) endif # Preqrequisites for using the stageN compiler HSREQ$(1)_H_$(3) = \ $$(HBIN$(1)_H_$(3))/rustc$$(X) \ - $$(HLIB$(1)_H_$(3))/$$(CFG_RUNTIME) \ - $$(HLIB$(1)_H_$(3))/$$(CFG_RUSTLLVM) \ + $$(HLIB$(1)_H_$(3))/$(CFG_RUNTIME_$(3)) \ + $$(HLIB$(1)_H_$(3))/$(CFG_RUSTLLVM_$(3)) \ $$(HCORELIB_DEFAULT$(1)_H_$(3)) \ $$(HSTDLIB_DEFAULT$(1)_H_$(3)) \ $$(HLIBSYNTAX_DEFAULT$(1)_H_$(3)) \ @@ -367,14 +374,14 @@ HSREQ$(1)_H_$(3) = \ # Prerequisites for using the stageN compiler to build target artifacts TSREQ$(1)_T_$(2)_H_$(3) = \ $$(HSREQ$(1)_H_$(3)) \ - $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_RUNTIME) \ + $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_RUNTIME_$(2)) \ $$(TLIB$(1)_T_$(2)_H_$(3))/libmorestack.a # Prerequisites for a working stageN compiler and libraries, for a specific target SREQ$(1)_T_$(2)_H_$(3) = \ $$(TSREQ$(1)_T_$(2)_H_$(3)) \ - $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_CORELIB) \ - $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_STDLIB) + $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_CORELIB_$(2)) \ + $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_STDLIB_$(2)) # Prerequisites for a working stageN compiler and libraries, for a specific target CSREQ$(1)_T_$(2)_H_$(3) = \ @@ -384,20 +391,20 @@ CSREQ$(1)_T_$(2)_H_$(3) = \ $$(HBIN$(1)_H_$(3))/rustdoc$$(X) \ $$(HBIN$(1)_H_$(3))/rusti$$(X) \ $$(HBIN$(1)_H_$(3))/rust$$(X) \ - $$(HLIB$(1)_H_$(3))/$$(CFG_LIBFUZZER) \ - $$(HLIB$(1)_H_$(3))/$$(CFG_LIBRUSTPKG) \ - $$(HLIB$(1)_H_$(3))/$$(CFG_LIBRUSTDOC) \ - $$(HLIB$(1)_H_$(3))/$$(CFG_LIBRUSTI) \ - $$(HLIB$(1)_H_$(3))/$$(CFG_LIBRUST) \ - $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_CORELIB) \ - $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_STDLIB) \ - $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBSYNTAX) \ - $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBRUSTC) \ - $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBFUZZER) \ - $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBRUSTPKG) \ - $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBRUSTDOC) \ - $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBRUSTI) \ - $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBRUST) + $$(HLIB$(1)_H_$(3))/$(CFG_LIBFUZZER_$(3)) \ + $$(HLIB$(1)_H_$(3))/$(CFG_LIBRUSTPKG_$(3)) \ + $$(HLIB$(1)_H_$(3))/$(CFG_LIBRUSTDOC_$(3)) \ + $$(HLIB$(1)_H_$(3))/$(CFG_LIBRUSTI_$(3)) \ + $$(HLIB$(1)_H_$(3))/$(CFG_LIBRUST_$(3)) \ + $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_CORELIB_$(3)) \ + $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_STDLIB_$(3)) \ + $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBSYNTAX_$(3)) \ + $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTC_$(3)) \ + $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBFUZZER_$(3)) \ + $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTPKG_$(3)) \ + $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTDOC_$(3)) \ + $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTI_$(3)) \ + $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUST_$(3)) ifeq ($(1),0) # Don't run the the stage0 compiler under valgrind - that ship has sailed diff --git a/configure b/configure index 5249058fe0c..bfd27fc744d 100755 --- a/configure +++ b/configure @@ -349,6 +349,7 @@ valopt llvm-root "" "set LLVM root" valopt build-triple "${DEFAULT_BUILD_TRIPLE}" "LLVM build triple" valopt host-triples "${CFG_BUILD_TRIPLE}" "LLVM host triples" valopt target-triples "${CFG_HOST_TRIPLES}" "LLVM target triples" +valopt android-ndk-path "" "Android NDK Standalone path" # Validate Options step_msg "validating $CFG_SELF args" @@ -529,6 +530,24 @@ else CFG_C_COMPILER="gcc" fi +if [ ! -z "$CFG_ANDROID_NDK_PATH" ] +then + if [ ! -f $CFG_ANDROID_NDK_PATH/bin/arm-linux-androideabi-gcc ] + then + err "NDK $CFG_ANDROID_NDK_PATH/bin/arm-linux-androideabi-gcc not found" + fi + if [ ! -f $CFG_ANDROID_NDK_PATH/bin/arm-linux-androideabi-g++ ] + then + err "NDK $CFG_ANDROID_NDK_PATH/bin/arm-linux-androideabi-g++ not found" + fi + if [ ! -f $CFG_ANDROID_NDK_PATH/bin/arm-linux-androideabi-ar ] + then + err "NDK $CFG_ANDROID_NDK_PATH/bin/arm-linux-androideabi-ar not found" + fi + + CFG_CROSS_PREFIX_arm=$CFG_ANDROID_NDK_PATH"/bin/arm-linux-androideabi-" +fi + # a little post-processing of various config values CFG_PREFIX=${CFG_PREFIX%/} @@ -575,7 +594,7 @@ for t in $CFG_TARGET_TRIPLES do make_dir rt/$t for i in \ - isaac linenoise sync test arch/i386 arch/x86_64 \ + isaac linenoise sync test arch/i386 arch/x86_64 arch/arm \ libuv do make_dir rt/$t/$i @@ -822,6 +841,7 @@ putvar CFG_TARGET_TRIPLES putvar CFG_C_COMPILER putvar CFG_LIBDIR putvar CFG_DISABLE_MANAGE_SUBMODULES +putvar CFG_CROSS_PREFIX_arm if [ ! -z "$CFG_ENABLE_PAX_FLAGS" ] then diff --git a/mk/clean.mk b/mk/clean.mk index 00feb18b0d2..ddee25443d2 100644 --- a/mk/clean.mk +++ b/mk/clean.mk @@ -69,26 +69,26 @@ clean$(1)_H_$(2): $(Q)rm -f $$(HBIN$(1)_H_$(2))/rustdoc$(X) $(Q)rm -f $$(HBIN$(1)_H_$(2))/rusti$(X) $(Q)rm -f $$(HBIN$(1)_H_$(2))/rust$(X) - $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBFUZZER) - $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBRUSTPKG) - $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBRUSTDOC) - $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_RUNTIME) - $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_CORELIB) - $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_STDLIB) - $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBRUSTC) - $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBSYNTAX) - $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBRUSTI) - $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBRUST) - $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CORELIB_GLOB) - $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(STDLIB_GLOB) - $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBRUSTC_GLOB) - $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBSYNTAX_GLOB) - $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBFUZZER_GLOB) - $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBRUSTPKG_GLOB) - $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBRUSTDOC_GLOB) - $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBRUSTI_GLOB) - $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBRUST_GLOB) - $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_RUSTLLVM) + $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBFUZZER_$(2)) + $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBRUSTPKG_$(2)) + $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBRUSTDOC_$(2)) + $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_RUNTIME_$(2)) + $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_CORELIB_$(2)) + $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_STDLIB_$(2)) + $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBRUSTC_$(2)) + $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBSYNTAX_$(2)) + $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBRUSTI_$(2)) + $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBRUST_$(2)) + $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CORELIB_GLOB_$(2)) + $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(STDLIB_GLOB_$(2)) + $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBRUSTC_GLOB_$(2)) + $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBSYNTAX_GLOB_$(2)) + $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBFUZZER_GLOB_$(2)) + $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBRUSTPKG_GLOB_$(2)) + $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBRUSTDOC_GLOB_$(2)) + $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBRUSTI_GLOB_$(2)) + $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(LIBRUST_GLOB_$(2)) + $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_RUSTLLVM_$(2)) $(Q)rm -f $$(HLIB$(1)_H_$(2))/libstd.rlib endef @@ -105,22 +105,22 @@ clean$(1)_T_$(2)_H_$(3): $(Q)rm -f $$(TBIN$(1)_T_$(2)_H_$(3))/rustpkg$(X) $(Q)rm -f $$(TBIN$(1)_T_$(2)_H_$(3))/serializer$(X) $(Q)rm -f $$(TBIN$(1)_T_$(2)_H_$(3))/rustdoc$(X) - $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBFUZZER) - $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTPKG) - $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTDOC) - $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_RUNTIME) - $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_CORELIB) - $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_STDLIB) - $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTC) - $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBSYNTAX) - $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CORELIB_GLOB) - $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(STDLIB_GLOB) - $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBRUSTC_GLOB) - $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBSYNTAX_GLOB) - $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBFUZZER_GLOB) - $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBRUSTPKG_GLOB) - $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBRUSTDOC_GLOB) - $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_RUSTLLVM) + $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBFUZZER_$(2)) + $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTPKG_$(2)) + $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTDOC_$(2)) + $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_RUNTIME_$(2)) + $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_CORELIB_$(2)) + $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_STDLIB_$(2)) + $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTC_$(2)) + $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBSYNTAX_$(2)) + $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CORELIB_GLOB_$(2)) + $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(STDLIB_GLOB_$(2)) + $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBRUSTC_GLOB_$(2)) + $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBSYNTAX_GLOB_$(2)) + $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBFUZZER_GLOB_$(2)) + $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBRUSTPKG_GLOB_$(2)) + $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBRUSTDOC_GLOB_$(2)) + $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_RUSTLLVM_$(2)) $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/libstd.rlib $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/libmorestack.a $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/librun_pass_stage* # For unix diff --git a/mk/host.mk b/mk/host.mk index 08a300e71e1..78ef16768f2 100644 --- a/mk/host.mk +++ b/mk/host.mk @@ -23,47 +23,47 @@ define CP_HOST_STAGE_N $$(HBIN$(2)_H_$(4))/rustc$$(X): \ $$(TBIN$(1)_T_$(4)_H_$(3))/rustc$$(X) \ - $$(HLIB$(2)_H_$(4))/$$(CFG_RUNTIME) \ - $$(HLIB$(2)_H_$(4))/$$(CFG_RUSTLLVM) \ - $$(HLIB$(2)_H_$(4))/$$(CFG_LIBRUSTC) \ + $$(HLIB$(2)_H_$(4))/$(CFG_RUNTIME_$(3)) \ + $$(HLIB$(2)_H_$(4))/$(CFG_RUSTLLVM_$(3)) \ + $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(3)) \ $$(HCORELIB_DEFAULT$(2)_H_$(4)) \ $$(HSTDLIB_DEFAULT$(2)_H_$(4)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ -$$(HLIB$(2)_H_$(4))/$$(CFG_LIBRUSTC): \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTC) \ - $$(HLIB$(2)_H_$(4))/$$(CFG_LIBSYNTAX) \ - $$(HLIB$(2)_H_$(4))/$$(CFG_RUNTIME) \ - $$(HLIB$(2)_H_$(4))/$$(CFG_RUSTLLVM) \ +$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(3)): \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTC_$(3)) \ + $$(HLIB$(2)_H_$(4))/$(CFG_LIBSYNTAX_$(3)) \ + $$(HLIB$(2)_H_$(4))/$(CFG_RUNTIME_$(3)) \ + $$(HLIB$(2)_H_$(4))/$(CFG_RUSTLLVM_$(3)) \ $$(HCORELIB_DEFAULT$(2)_H_$(3)) \ $$(HSTDLIB_DEFAULT$(2)_H_$(3)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ - $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTC_GLOB) \ - $(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTC_DSYM_GLOB)) \ + $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTC_GLOB_$(3)) \ + $(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTC_DSYM_GLOB_$(3))) \ $$(HLIB$(2)_H_$(4)) -$$(HLIB$(2)_H_$(4))/$$(CFG_LIBSYNTAX): \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBSYNTAX) \ - $$(HLIB$(2)_H_$(4))/$$(CFG_RUNTIME) \ - $$(HLIB$(2)_H_$(4))/$$(CFG_RUSTLLVM) \ +$$(HLIB$(2)_H_$(4))/$(CFG_LIBSYNTAX_$(3)): \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBSYNTAX_$(3)) \ + $$(HLIB$(2)_H_$(4))/$(CFG_RUNTIME_$(3)) \ + $$(HLIB$(2)_H_$(4))/$(CFG_RUSTLLVM_$(3)) \ $$(HCORELIB_DEFAULT$(2)_H_$(3)) \ $$(HSTDLIB_DEFAULT$(2)_H_$(3)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ - $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBSYNTAX_GLOB) \ - $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBSYNTAX_DSYM_GLOB)) \ + $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBSYNTAX_GLOB_$(3)) \ + $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBSYNTAX_DSYM_GLOB_$(3))) \ $$(HLIB$(2)_H_$(4)) -$$(HLIB$(2)_H_$(4))/$$(CFG_RUNTIME): \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_RUNTIME) +$$(HLIB$(2)_H_$(4))/$(CFG_RUNTIME_$(3)): \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_RUNTIME_$(3)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ -$$(HLIB$(2)_H_$(4))/$$(CFG_CORELIB): \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_CORELIB) \ - $$(HLIB$(2)_H_$(4))/$$(CFG_RUNTIME) +$$(HLIB$(2)_H_$(4))/$(CFG_CORELIB_$(3)): \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_CORELIB_$(3)) \ + $$(HLIB$(2)_H_$(4))/$(CFG_RUNTIME_$(3)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ # Subtle: We do not let the shell expand $(CORELIB_DSYM_GLOB) directly rather @@ -73,18 +73,18 @@ $$(HLIB$(2)_H_$(4))/$$(CFG_CORELIB): \ # glob, and cp reports an error because libcore-*.dylib.dsym does not exist. # Make instead expands the glob to nothing, which gives us the correct behavior. # (Copy .dsym file if it exists, but do nothing otherwise) - $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(CORELIB_GLOB) \ - $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(CORELIB_DSYM_GLOB)) \ + $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(CORELIB_GLOB_$(3)) \ + $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(CORELIB_DSYM_GLOB_$(3))) \ $$(HLIB$(2)_H_$(4)) -$$(HLIB$(2)_H_$(4))/$$(CFG_STDLIB): \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_STDLIB) \ - $$(HLIB$(2)_H_$(4))/$$(CFG_CORELIB) \ - $$(HLIB$(2)_H_$(4))/$$(CFG_RUNTIME) +$$(HLIB$(2)_H_$(4))/$(CFG_STDLIB_$(3)): \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_STDLIB_$(3)) \ + $$(HLIB$(2)_H_$(4))/$(CFG_CORELIB_$(3)) \ + $$(HLIB$(2)_H_$(4))/$(CFG_RUNTIME_$(3)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ - $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(STDLIB_GLOB) \ - $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(STDLIB_DSYM_GLOB)) \ + $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(STDLIB_GLOB_$(3)) \ + $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(STDLIB_DSYM_GLOB_$(3))) \ $$(HLIB$(2)_H_$(4)) $$(HLIB$(2)_H_$(4))/libcore.rlib: \ @@ -108,8 +108,8 @@ $$(HLIB$(2)_H_$(4))/librustc.rlib: \ @$$(call E, cp: $$@) $$(Q)cp $$< $$@ -$$(HLIB$(2)_H_$(4))/$$(CFG_RUSTLLVM): \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_RUSTLLVM) +$$(HLIB$(2)_H_$(4))/$(CFG_RUSTLLVM_$(3)): \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_RUSTLLVM_$(3)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ diff --git a/mk/platform.mk b/mk/platform.mk index ce6d0a684e6..21a2f553376 100644 --- a/mk/platform.mk +++ b/mk/platform.mk @@ -36,10 +36,6 @@ CFG_GCCISH_CFLAGS += -fno-omit-frame-pointer # embedded into the executable, so use a no-op command. CFG_DSYMUTIL := true -# Add a dSYM glob for all platforms, even though it will do nothing on -# non-Darwin platforms; omitting it causes a full -R copy of lib/ -CFG_LIB_DSYM_GLOB=lib$(1)-*.dylib.dSYM - # Hack: not sure how to test if a file exists in make other than this OS_SUPP = $(patsubst %,--suppressions=%,\ $(wildcard $(CFG_SRC_DIR)src/etc/$(CFG_OSTYPE).supp*)) @@ -55,43 +51,50 @@ else CFG_GCCISH_CFLAGS += -O2 endif -ifneq ($(findstring freebsd,$(CFG_OSTYPE)),) - CFG_LIB_NAME=lib$(1).so - CFG_LIB_GLOB=lib$(1)-*.so - CFG_GCCISH_CFLAGS += -fPIC -I/usr/local/include - CFG_GCCISH_LINK_FLAGS += -shared -fPIC -lpthread -lrt - CFG_GCCISH_DEF_FLAG := -Wl,--export-dynamic,--dynamic-list= - CFG_GCCISH_PRE_LIB_FLAGS := -Wl,-whole-archive - CFG_GCCISH_POST_LIB_FLAGS := -Wl,-no-whole-archive - CFG_GCCISH_CFLAGS_i386 += -m32 - CFG_GCCISH_LINK_FLAGS_i386 += -m32 - CFG_GCCISH_CFLAGS_x86_64 += -m64 - CFG_GCCISH_LINK_FLAGS_x86_64 += -m64 - CFG_UNIXY := 1 - CFG_FBSD := 1 - CFG_LDENV := LD_LIBRARY_PATH - CFG_DEF_SUFFIX := .bsd.def - CFG_INSTALL_NAME = - CFG_PERF_TOOL := /usr/bin/time -endif +CFG_LIB_NAME_x86_64-unknown-linux-gnu=lib$(1).so +CFG_LIB_GLOB_x86_64-unknown-linux-gnu=lib$(1)-*.so +CFG_LIB_DSYM_GLOB_x86_64-unknown-linux-gnu=lib$(1)-*.dylib.dSYM +CFG_GCCISH_CFLAGS_x86_64-unknown-linux-gnu := -Wall -Werror -g -fPIC -m64 +CFG_GCCISH_CXXFLAGS_x86_64-unknown-linux-gnu := -fno-rtti +CFG_GCCISH_LINK_FLAGS_x86_64-unknown-linux-gnu := -shared -fPIC -ldl -lpthread -lrt -g -m64 +CFG_GCCISH_DEF_FLAG_x86_64-unknown-linux-gnu := -Wl,--export-dynamic,--dynamic-list= +CFG_GCCISH_PRE_LIB_FLAGS_x86_64-unknown-linux-gnu := -Wl,-whole-archive +CFG_GCCISH_POST_LIB_FLAGS_x86_64-unknown-linux-gnu := -Wl,-no-whole-archive -Wl,-znoexecstack +CFG_DEF_SUFFIX_x86_64-unknown-linux-gnu := .linux.def +CFG_INSTALL_NAME_x86_64-unknown-linux-gnu = +CFG_UNIXY := 1 +CFG_LDENV := LD_LIBRARY_PATH +CFG_GCCISH_CROSS_x86_64-unknown-linux-gnu = + +CFG_LIB_NAME_x86_64-apple-darwin=lib$(1).dylib +CFG_LIB_GLOB_x86_64-apple-darwin=lib$(1)-*.dylib +CFG_LIB_DSYM_GLOB_x86_64-apple-darwin=lib$(1)-*.dylib.dSYM +CFG_GCCISH_CFLAGS_x86_64-apple-darwin := -Wall -Werror -g -fPIC -m64 -arch x86_64 +CFG_GCCISH_CXXFLAGS_x86_64-apple-darwin := -fno-rtti +CFG_GCCISH_LINK_FLAGS_x86_64-apple-darwin := -dynamiclib -lpthread -framework CoreServices -Wl,-no_compact_unwind -m64 +CFG_GCCISH_DEF_FLAG_x86_64-apple-darwin := -Wl,-exported_symbols_list, +CFG_GCCISH_PRE_LIB_FLAGS_x86_64-apple-darwin := +CFG_GCCISH_POST_LIB_FLAGS_x86_64-apple-darwin := +CFG_DEF_SUFFIX_x86_64-apple-darwin := .darwin.def +CFG_INSTALL_NAME_x86_64-apple-darwin = -Wl,-install_name,@rpath/$(1) + +CFG_LIB_NAME_arm-unknown-android=lib$(1).so +CFG_LIB_GLOB_arm-unknown-android=lib$(1)-*.so +CFG_LIB_DSYM_GLOB_arm-unknown-android=lib$(1)-*.dylib.dSYM +CFG_GCCISH_CFLAGS_arm-unknown-android := -fPIC -Wall -g -D__arm__ -DANDROID -D__ANDROID__ +CFG_GCCISH_CXXFLAGS_arm-unknown-android := -fno-rtti +CFG_GCCISH_LINK_FLAGS_arm-unknown-android := -shared -fPIC -ldl -g -lm -lsupc++ -lgnustl_shared +CFG_GCCISH_DEF_FLAG_arm-unknown-android := -Wl,--export-dynamic,--dynamic-list= +CFG_GCCISH_PRE_LIB_FLAGS_arm-unknown-android := -Wl,-whole-archive +CFG_GCCISH_POST_LIB_FLAGS_arm-unknown-android := -Wl,-no-whole-archive -Wl,-znoexecstack +CFG_DEF_SUFFIX_arm-unknown-android := .android.def +CFG_INSTALL_NAME_arm-unknown-android = +CFG_GCCISH_CROSS_arm-unknown-android = $(CFG_CROSS_PREFIX_arm) + ifneq ($(findstring linux,$(CFG_OSTYPE)),) - CFG_LIB_NAME=lib$(1).so - CFG_LIB_GLOB=lib$(1)-*.so - CFG_GCCISH_CFLAGS += -fPIC - CFG_GCCISH_LINK_FLAGS += -shared -fPIC -ldl -lpthread -lrt - CFG_GCCISH_DEF_FLAG := -Wl,--export-dynamic,--dynamic-list= - CFG_GCCISH_PRE_LIB_FLAGS := -Wl,-whole-archive # -znoexecstack is here because librt is for some reason being created # with executable stack and Fedora (or SELinux) doesn't like that (#798) - CFG_GCCISH_POST_LIB_FLAGS := -Wl,-no-whole-archive -Wl,-znoexecstack - CFG_GCCISH_CFLAGS_i386 = -m32 - CFG_GCCISH_LINK_FLAGS_i386 = -m32 - CFG_GCCISH_CFLAGS_x86_64 = -m64 - CFG_GCCISH_LINK_FLAGS_x86_64 = -m64 - CFG_UNIXY := 1 - CFG_LDENV := LD_LIBRARY_PATH - CFG_DEF_SUFFIX := .linux.def ifdef CFG_PERF ifneq ($(CFG_PERF_WITH_LOGFD),) CFG_PERF_TOOL := $(CFG_PERF) stat -r 3 --log-fd 2 @@ -106,34 +109,10 @@ ifneq ($(findstring linux,$(CFG_OSTYPE)),) CFG_PERF_TOOL := /usr/bin/time --verbose endif endif - CFG_INSTALL_NAME = # Linux requires LLVM to be built like this to get backtraces into Rust code CFG_LLVM_BUILD_ENV="CXXFLAGS=-fno-omit-frame-pointer" endif -ifneq ($(findstring darwin,$(CFG_OSTYPE)),) - CFG_LIB_NAME=lib$(1).dylib - CFG_LIB_GLOB=lib$(1)-*.dylib - CFG_UNIXY := 1 - CFG_LDENV := DYLD_LIBRARY_PATH - CFG_GCCISH_LINK_FLAGS += -dynamiclib -lpthread -framework CoreServices -Wl,-no_compact_unwind - CFG_GCCISH_DEF_FLAG := -Wl,-exported_symbols_list, - # Darwin has a very blurry notion of "64 bit", and claims it's running - # "on an i386" when the whole userspace is 64-bit and the compiler - # emits 64-bit binaries by default. So we just force -m32 here. Smarter - # approaches welcome! - # - # NB: Currently GCC's optimizer breaks rustrt (task-comm-1 hangs) on Darwin. - CFG_GCCISH_CFLAGS_i386 := -m32 -arch i386 - CFG_GCCISH_CFLAGS_x86_64 := -m64 -arch x86_64 - CFG_GCCISH_LINK_FLAGS_i386 := -m32 - CFG_GCCISH_LINK_FLAGS_x86_64 := -m64 - CFG_DSYMUTIL := dsymutil - CFG_DEF_SUFFIX := .darwin.def - # Mac requires this flag to make rpath work - CFG_INSTALL_NAME = -Wl,-install_name,@rpath/$(1) -endif - ifdef CFG_UNIXY CFG_INFO := $(info cfg: unix-y environment) @@ -143,7 +122,7 @@ ifdef CFG_UNIXY CFG_RUN=$(2) CFG_RUN_TARG=$(call CFG_RUN,,$(2)) CFG_RUN_TEST=$(call CFG_RUN,,$(CFG_VALGRIND) $(1)) - CFG_LIBUV_LINK_FLAGS=-lpthread + CFG_LIBUV_LINK_FLAGS= ifdef CFG_FBSD CFG_LIBUV_LINK_FLAGS=-lpthread -lkvm endif @@ -233,22 +212,15 @@ ifeq ($(CFG_C_COMPILER),clang) CXX=clang++ endif ifeq ($(origin CPP),default) - CPP=clang -E + CPP=clang endif - CFG_GCCISH_CFLAGS += -Wall -Werror -g - CFG_GCCISH_CXXFLAGS += -fno-rtti - CFG_GCCISH_LINK_FLAGS += -g + CFG_GCCISH_CFLAGS += + CFG_GCCISH_CXXFLAGS += + CFG_GCCISH_LINK_FLAGS += # These flags will cause the compiler to produce a .d file # next to the .o file that lists header deps. CFG_DEPEND_FLAGS = -MMD -MP -MT $(1) -MF $(1:%.o=%.d) - CFG_SPECIFIC_CC_CFLAGS = $(CFG_CLANG_CFLAGS) - define MAKE_CLANG_SPECIFIC_CFLAGS - CFG_SPECIFIC_CC_CFLAGS_$$(HOST_$(target)) = $(CFG_CLANG_CFLAGS_$$(HOST_$(target))) - endef - $(foreach target,$(CFG_TARGET_TRIPLES), \ - $(eval $(call MAKE_CLANG_SPECIFIC_CFLAGS,$(target)))) - else ifeq ($(CFG_C_COMPILER),gcc) ifeq ($(origin CC),default) @@ -258,53 +230,73 @@ ifeq ($(CFG_C_COMPILER),gcc) CXX=g++ endif ifeq ($(origin CPP),default) - CPP=gcc -E + CPP=gcc endif - CFG_GCCISH_CFLAGS += -Wall -Werror -g - CFG_GCCISH_CXXFLAGS += -fno-rtti - CFG_GCCISH_LINK_FLAGS += -g + CFG_GCCISH_CFLAGS += + CFG_GCCISH_CXXFLAGS += + CFG_GCCISH_LINK_FLAGS += # These flags will cause the compiler to produce a .d file # next to the .o file that lists header deps. CFG_DEPEND_FLAGS = -MMD -MP -MT $(1) -MF $(1:%.o=%.d) - CFG_SPECIFIC_CC_CFLAGS = $(CFG_GCC_CFLAGS) - define MAKE_GCC_SPECIFIC_CFLAGS - CFG_SPECIFIC_CC_CFLAGS_$$(HOST_$(target)) = $(CFG_GCC_CFLAGS_$$(HOST_$(target))) - endef - $(foreach target,$(CFG_TARGET_TRIPLES), \ - $(eval $(call MAKE_GCC_SPECIFIC_CFLAGS,$(target)))) - else CFG_ERR := $(error please try on a system with gcc or clang) endif endif define CFG_MAKE_CC - CFG_COMPILE_C_$(1) = $$(CFG_GCCISH_CROSS)$$(CC) \ - $$(CFG_GCCISH_CFLAGS) \ - $$(CFG_GCCISH_CFLAGS_$$(HOST_$(1))) \ - $$(CFG_SPECIFIC_CC_CFLAGS) \ - $$(CFG_SPECIFIC_CC_CFLAGS_$$(HOST_$(1))) \ - $$(CFG_DEPEND_FLAGS) \ + ifeq ($$(CFG_BUILD_TRIPLE),$(1)) + + CFG_COMPILE_C_$(1) = $$(CC) \ + $$(CFG_GCCISH_CFLAGS) \ + $$(CFG_GCCISH_CFLAGS_$(1)) \ + $$(CFG_DEPEND_FLAGS) \ -c -o $$(1) $$(2) - CFG_LINK_C_$(1) = $$(CFG_GCCISH_CROSS)$$(CC) \ - $$(CFG_GCCISH_LINK_FLAGS) -o $$(1) \ - $$(CFG_GCCISH_LINK_FLAGS_$$(HOST_$(1))) \ - $$(CFG_GCCISH_DEF_FLAG)$$(3) $$(2) \ - $$(call CFG_INSTALL_NAME,$$(4)) - CFG_COMPILE_CXX_$(1) = $$(CFG_GCCISH_CROSS)$$(CXX) \ - $$(CFG_GCCISH_CFLAGS) \ - $$(CFG_GCCISH_CXXFLAGS) \ - $$(CFG_GCCISH_CFLAGS_$$(HOST_$(1))) \ - $$(CFG_SPECIFIC_CC_CFLAGS) \ - $$(CFG_SPECIFIC_CC_CFLAGS_$$(HOST_$(1))) \ - $$(CFG_DEPEND_FLAGS) \ + CFG_LINK_C_$(1) = $$(CC) \ + $$(CFG_GCCISH_LINK_FLAGS) -o $$(1) \ + $$(CFG_GCCISH_LINK_FLAGS_$(1))) \ + $$(CFG_GCCISH_DEF_FLAG_$(1))$$(3) $$(2) \ + $$(call CFG_INSTALL_NAME_$(1),$$(4)) + CFG_COMPILE_CXX_$(1) = $$(CXX) \ + $$(CFG_GCCISH_CFLAGS) \ + $$(CFG_GCCISH_CXXFLAGS) \ + $$(CFG_GCCISH_CFLAGS_$(1)) \ + $$(CFG_GCCISH_CXXFLAGS_$(1)) \ + $$(CFG_DEPEND_FLAGS) \ -c -o $$(1) $$(2) - CFG_LINK_CXX_$(1) = $$(CFG_GCCISH_CROSS)$$(CXX) \ - $$(CFG_GCCISH_LINK_FLAGS) -o $$(1) \ - $$(CFG_GCCISH_LINK_FLAGS_$$(HOST_$(1))) \ - $$(CFG_GCCISH_DEF_FLAG)$$(3) $$(2) \ - $$(call CFG_INSTALL_NAME,$$(4)) + CFG_LINK_CXX_$(1) = $$(CXX) \ + $$(CFG_GCCISH_LINK_FLAGS) -o $$(1) \ + $$(CFG_GCCISH_LINK_FLAGS_$(1)) \ + $$(CFG_GCCISH_DEF_FLAG_$(1))$$(3) $$(2) \ + $$(call CFG_INSTALL_NAME_$(1),$$(4)) + + else + + CFG_COMPILE_C_$(1) = $(CFG_GCCISH_CROSS_$(1))$$(CC) \ + $$(CFG_GCCISH_CFLAGS) \ + $$(CFG_GCCISH_CFLAGS_$(1)) \ + $$(CFG_DEPEND_FLAGS) \ + -c -o $$(1) $$(2) + CFG_LINK_C_$(1) = $(CFG_GCCISH_CROSS_$(1))$$(CC) \ + $$(CFG_GCCISH_LINK_FLAGS) -o $$(1) \ + $$(CFG_GCCISH_LINK_FLAGS_$(1))) \ + $$(CFG_GCCISH_DEF_FLAG_$(1))$$(3) $$(2) \ + $$(call CFG_INSTALL_NAME_$(1),$$(4)) + CFG_COMPILE_CXX_$(1) = $(CFG_GCCISH_CROSS_$(1))$$(CXX) \ + $$(CFG_GCCISH_CFLAGS) \ + $$(CFG_GCCISH_CXXFLAGS) \ + $$(CFG_GCCISH_CFLAGS_$(1)) \ + $$(CFG_GCCISH_CXXFLAGS_$(1)) \ + $$(CFG_DEPEND_FLAGS) \ + -c -o $$(1) $$(2) + CFG_LINK_CXX_$(1) = $(CFG_GCCISH_CROSS_$(1))$$(CXX) \ + $$(CFG_GCCISH_LINK_FLAGS) -o $$(1) \ + $$(CFG_GCCISH_LINK_FLAGS_$(1)) \ + $$(CFG_GCCISH_DEF_FLAG_$(1))$$(3) $$(2) \ + $$(call CFG_INSTALL_NAME_$(1),$$(4)) + + endif + endef $(foreach target,$(CFG_TARGET_TRIPLES), \ @@ -313,12 +305,20 @@ $(foreach target,$(CFG_TARGET_TRIPLES), \ # We're using llvm-mc as our assembler because it supports # .cfi pseudo-ops on mac define CFG_MAKE_ASSEMBLER - CFG_ASSEMBLE_$(1)=$$(CPP) $$(CFG_DEPEND_FLAGS) $$(2) | \ + ifeq ($$(CFG_BUILD_TRIPLE),$(1)) + + CFG_ASSEMBLE_$(1)=$$(CPP) -E $$(CFG_DEPEND_FLAGS) $$(2) | \ $$(LLVM_MC_$$(CFG_BUILD_TRIPLE)) \ -assemble \ -filetype=obj \ -triple=$(1) \ -o=$$(1) + else + + CFG_ASSEMBLE_$(1)=$(CFG_GCCISH_CROSS_$(1))$$(CPP) $$(CFG_DEPEND_FLAGS) $$(2) -c -o $$(1) + + endif + endef $(foreach target,$(CFG_TARGET_TRIPLES),\ diff --git a/mk/rt.mk b/mk/rt.mk index 3a566f3beb1..b7b70259719 100644 --- a/mk/rt.mk +++ b/mk/rt.mk @@ -26,6 +26,7 @@ # Hack for passing flags into LIBUV, see below. LIBUV_FLAGS_i386 = -m32 -fPIC LIBUV_FLAGS_x86_64 = -m64 -fPIC +LIBUV_FLAGS_arm = -fPIC -DANDROID -std=gnu99 # when we're doing a snapshot build, we intentionally degrade as many # features in libuv and the runtime as possible, to ease portability. @@ -73,7 +74,8 @@ RUNTIME_CXXS_$(1) := \ rt/memory_region.cpp \ rt/boxed_region.cpp \ rt/arch/$$(HOST_$(1))/context.cpp \ - rt/arch/$$(HOST_$(1))/gpr.cpp + rt/arch/$$(HOST_$(1))/gpr.cpp \ + rt/rust_android_dummy.cpp RUNTIME_CS_$(1) := rt/linenoise/linenoise.c rt/linenoise/utf8.c @@ -81,27 +83,20 @@ RUNTIME_S_$(1) := rt/arch/$$(HOST_$(1))/_context.S \ rt/arch/$$(HOST_$(1))/ccall.S \ rt/arch/$$(HOST_$(1))/record_sp.S -ifeq ($$(HOST_$(1)), i386) - LIBUV_ARCH_$(1) := ia32 -else - LIBUV_ARCH_$(1) := x86_64 -endif -ifeq ($$(CFG_WINDOWSY), 1) - LIBUV_OSTYPE_$(1) := win +ifeq ($$(HOST_$(1)), arm) + LIBUV_LIB_$(1) := rt/$(1)/libuv/libuv.a +else ifeq ($$(CFG_WINDOWSY), 1) LIBUV_LIB_$(1) := rt/$(1)/libuv/libuv.a else ifeq ($(CFG_OSTYPE), apple-darwin) - LIBUV_OSTYPE_$(1) := mac LIBUV_LIB_$(1) := rt/$(1)/libuv/libuv.a else ifeq ($(CFG_OSTYPE), unknown-freebsd) - LIBUV_OSTYPE_$(1) := unix/freebsd LIBUV_LIB_$(1) := rt/$(1)/libuv/libuv.a else - LIBUV_OSTYPE_$(1) := unix/linux LIBUV_LIB_$(1) := rt/$(1)/libuv/libuv.a endif -RUNTIME_DEF_$(1) := rt/rustrt$$(CFG_DEF_SUFFIX) +RUNTIME_DEF_$(1) := rt/rustrt$(CFG_DEF_SUFFIX_$(1)) RUNTIME_INCS_$(1) := -I $$(S)src/rt -I $$(S)src/rt/isaac -I $$(S)src/rt/uthash \ -I $$(S)src/rt/arch/$$(HOST_$(1)) \ -I $$(S)src/rt/linenoise \ @@ -135,13 +130,13 @@ rt/$(1)/arch/$$(HOST_$(1))/libmorestack.a: $$(MORESTACK_OBJ_$(1)) @$$(call E, link: $$@) $$(Q)ar rcs $$@ $$< -rt/$(1)/$(CFG_RUNTIME): $$(RUNTIME_OBJS_$(1)) $$(MKFILE_DEPS) \ +rt/$(1)/$(CFG_RUNTIME_$(1)): $$(RUNTIME_OBJS_$(1)) $$(MKFILE_DEPS) \ $$(RUNTIME_DEF_$(1)) \ $$(RUNTIME_LIBS_$(1)) @$$(call E, link: $$@) $$(Q)$$(call CFG_LINK_CXX_$(1),$$@, $$(RUNTIME_OBJS_$(1)) \ - $$(CFG_GCCISH_POST_LIB_FLAGS) $$(RUNTIME_LIBS_$(1)) \ - $$(CFG_LIBUV_LINK_FLAGS),$$(RUNTIME_DEF_$(1)),$$(CFG_RUNTIME)) + $$(CFG_GCCISH_POST_LIB_FLAGS_$(1)) $$(RUNTIME_LIBS_$(1)) \ + $$(CFG_LIBUV_LINK_FLAGS),$$(RUNTIME_DEF_$(1)),$$(CFG_RUNTIME_$(1))) # FIXME: For some reason libuv's makefiles can't figure out the # correct definition of CC on the mingw I'm using, so we are @@ -165,12 +160,26 @@ $$(LIBUV_LIB_$(1)): $$(LIBUV_DEPS) OS=mingw \ V=$$(VERBOSE) else +ifeq ($$(HOST_$(1)), arm) +$$(LIBUV_LIB_$(1)): $$(LIBUV_DEPS) + $$(Q)$$(MAKE) -C $$(S)src/libuv/ \ + CFLAGS="$$(LIBUV_FLAGS_$$(HOST_$(1))) $$(SNAP_DEFINES)" \ + LDFLAGS="$$(LIBUV_FLAGS_$$(HOST_$(1)))" \ + CC="$$(CFG_GCCISH_CROSS_$(1))$$(CC)" \ + CXX="$$(CFG_GCCISH_CROSS_$(1))$$(CXX)" \ + AR="$$(CFG_CROSS_PREFIX_arm)$$(AR)" \ + BUILDTYPE=Release \ + builddir_name="$$(CFG_BUILD_DIR)/rt/$(1)/libuv" \ + host=android OS=linux \ + V=$$(VERBOSE) +else $$(LIBUV_LIB_$(1)): $$(LIBUV_DEPS) $$(Q)$$(MAKE) -C $$(S)src/libuv/ \ CFLAGS="$$(LIBUV_FLAGS_$$(HOST_$(1))) $$(SNAP_DEFINES)" \ builddir_name="$$(CFG_BUILD_DIR)/rt/$(1)/libuv" \ V=$$(VERBOSE) endif +endif # These could go in rt.mk or rustllvm.mk, they're needed for both. @@ -188,6 +197,12 @@ endif $$(Q)sed 's/.$$$$/&;/' $$< >> $$@ $$(Q)echo "};" >> $$@ +%.android.def: %.def.in $$(MKFILE_DEPS) + @$$(call E, def: $$@) + $$(Q)echo "{" > $$@ + $$(Q)sed 's/.$$$$/&;/' $$< >> $$@ + $$(Q)echo "};" >> $$@ + %.darwin.def: %.def.in $$(MKFILE_DEPS) @$$(call E, def: $$@) $$(Q)sed 's/^./_&/' $$< > $$@ diff --git a/mk/rustllvm.mk b/mk/rustllvm.mk index b9ceedb696e..569efda41b3 100644 --- a/mk/rustllvm.mk +++ b/mk/rustllvm.mk @@ -24,7 +24,7 @@ endif RUSTLLVM_OBJS_CS_$(1) := $$(addprefix rustllvm/, RustWrapper.cpp) -RUSTLLVM_DEF_$(1) := rustllvm/rustllvm$$(CFG_DEF_SUFFIX) +RUSTLLVM_DEF_$(1) := rustllvm/rustllvm$(CFG_DEF_SUFFIX_$(1)) RUSTLLVM_INCS_$(1) = $$(LLVM_EXTRA_INCDIRS_$(1)) \ -iquote $$(LLVM_INCDIR_$(1)) \ @@ -32,13 +32,13 @@ RUSTLLVM_INCS_$(1) = $$(LLVM_EXTRA_INCDIRS_$(1)) \ RUSTLLVM_OBJS_OBJS_$(1) := $$(RUSTLLVM_OBJS_CS_$(1):rustllvm/%.cpp=rustllvm/$(1)/%.o) ALL_OBJ_FILES += $$(RUSTLLVM_OBJS_OBJS_$(1)) -rustllvm/$(1)/$(CFG_RUSTLLVM): $$(RUSTLLVM_OBJS_OBJS_$(1)) \ +rustllvm/$(1)/$(CFG_RUSTLLVM_$(1)): $$(RUSTLLVM_OBJS_OBJS_$(1)) \ $$(MKFILE_DEPS) $$(RUSTLLVM_DEF_$(1)) @$$(call E, link: $$@) $$(Q)$$(call CFG_LINK_CXX_$(1),$$@,$$(RUSTLLVM_OBJS_OBJS_$(1)) \ - $$(CFG_GCCISH_PRE_LIB_FLAGS) $$(LLVM_LIBS_$(1)) \ - $$(CFG_GCCISH_POST_LIB_FLAGS) \ - $$(LLVM_LDFLAGS_$(1)),$$(RUSTLLVM_DEF_$(1)),$$(CFG_RUSTLLVM)) + $$(CFG_GCCISH_PRE_LIB_FLAGS_$(1)) $$(LLVM_LIBS_$(1)) \ + $$(CFG_GCCISH_POST_LIB_FLAGS_$(1)) \ + $$(LLVM_LDFLAGS_$(1)),$$(RUSTLLVM_DEF_$(1)),$$(CFG_RUSTLLVM_$(1))) rustllvm/$(1)/%.o: rustllvm/%.cpp $$(MKFILE_DEPS) $$(LLVM_CONFIG_$(1)) @$$(call E, compile: $$@) diff --git a/mk/stage0.mk b/mk/stage0.mk index a858134194e..528bb0734eb 100644 --- a/mk/stage0.mk +++ b/mk/stage0.mk @@ -21,23 +21,23 @@ endif # Host libs will be extracted by the above rule -$(HLIB0_H_$(CFG_BUILD_TRIPLE))/$(CFG_RUNTIME): \ +$(HLIB0_H_$(CFG_BUILD_TRIPLE))/$(CFG_RUNTIME_$(CFG_BUILD_TRIPLE)): \ $(HBIN0_H_$(CFG_BUILD_TRIPLE))/rustc$(X) $(Q)touch $@ -$(HLIB0_H_$(CFG_BUILD_TRIPLE))/$(CFG_CORELIB): \ +$(HLIB0_H_$(CFG_BUILD_TRIPLE))/$(CFG_CORELIB_$(CFG_BUILD_TRIPLE)): \ $(HBIN0_H_$(CFG_BUILD_TRIPLE))/rustc$(X) $(Q)touch $@ -$(HLIB0_H_$(CFG_BUILD_TRIPLE))/$(CFG_STDLIB): \ +$(HLIB0_H_$(CFG_BUILD_TRIPLE))/$(CFG_STDLIB_$(CFG_BUILD_TRIPLE)): \ $(HBIN0_H_$(CFG_BUILD_TRIPLE))/rustc$(X) $(Q)touch $@ -$(HLIB0_H_$(CFG_BUILD_TRIPLE))/$(CFG_LIBRUSTC): \ +$(HLIB0_H_$(CFG_BUILD_TRIPLE))/$(CFG_LIBRUSTC_$(CFG_BUILD_TRIPLE)): \ $(HBIN0_H_$(CFG_BUILD_TRIPLE))/rustc$(X) $(Q)touch $@ -$(HLIB0_H_$(CFG_BUILD_TRIPLE))/$(CFG_RUSTLLVM): \ +$(HLIB0_H_$(CFG_BUILD_TRIPLE))/$(CFG_RUSTLLVM_$(CFG_BUILD_TRIPLE)): \ $(HBIN0_H_$(CFG_BUILD_TRIPLE))/rustc$(X) $(Q)touch $@ @@ -53,28 +53,28 @@ $$(HBIN0_H_$(1))/rustc$$(X): \ @$$(call E, cp: $$@) $$(Q)cp $$< $$@ -$$(HLIB0_H_$(1))/$$(CFG_RUNTIME): \ - $$(TLIB$(2)_T_$(1)_H_$(3))/$$(CFG_RUNTIME) +$$(HLIB0_H_$(1))/$(CFG_RUNTIME_$(4)): \ + $$(TLIB$(2)_T_$(1)_H_$(3))/$(CFG_RUNTIME_$(4)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ -$$(HLIB0_H_$(1))/$(CFG_CORELIB): \ - $$(TLIB$(2)_T_$(1)_H_$(3))/$$(CFG_CORELIB) +$$(HLIB0_H_$(1))/$(CFG_CORELIB_$(4)): \ + $$(TLIB$(2)_T_$(1)_H_$(3))/$(CFG_CORELIB_$(4)) @$$(call E, cp: $$@) - $$(Q)cp $$(TLIB$(2)_T_$(1)_H_$(3))/$$(CORELIB_GLOB) $$@ + $$(Q)cp $$(TLIB$(2)_T_$(1)_H_$(3))/$(CORELIB_GLOB_$(4)) $$@ -$$(HLIB0_H_$(1))/$(CFG_STDLIB): \ - $$(TLIB$(2)_T_$(1)_H_$(3))/$$(CFG_STDLIB) +$$(HLIB0_H_$(1))/$(CFG_STDLIB_$(4)): \ + $$(TLIB$(2)_T_$(1)_H_$(3))/$(CFG_STDLIB_$(4)) @$$(call E, cp: $$@) - $$(Q)cp $$(TLIB$(2)_T_$(1)_H_$(3))/$$(STDLIB_GLOB) $$@ + $$(Q)cp $$(TLIB$(2)_T_$(1)_H_$(3))/$(STDLIB_GLOB_$(4)) $$@ -$$(HLIB0_H_$(1))/$(CFG_LIBRUSTC): \ - $$(TLIB$(2)_T_$(1)_H_$(3))/$$(CFG_LIBRUSTC) +$$(HLIB0_H_$(1))/$(CFG_LIBRUSTC_$(4)): \ + $$(TLIB$(2)_T_$(1)_H_$(3))/$(CFG_LIBRUSTC_$(4)) @$$(call E, cp: $$@) - $$(Q)cp $$(TLIB$(2)_T_$(1)_H_$(3))/$$(LIBRUSTC_GLOB) $$@ + $$(Q)cp $$(TLIB$(2)_T_$(1)_H_$(3))/$(LIBRUSTC_GLOB_$(4)) $$@ -$$(HLIB0_H_$(1))/$(CFG_RUSTLLVM): \ - $$(TLIB$(2)_T_$(1)_H_$(3))/$$(CFG_RUSTLLVM) +$$(HLIB0_H_$(1))/$(CFG_RUSTLLVM_$(4)): \ + $$(TLIB$(2)_T_$(1)_H_$(3))/$(CFG_RUSTLLVM_$(4)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ diff --git a/mk/target.mk b/mk/target.mk index df7723b178e..8401f8b9941 100644 --- a/mk/target.mk +++ b/mk/target.mk @@ -22,25 +22,25 @@ $$(TLIB$(1)_T_$(2)_H_$(3))/libmorestack.a: \ @$$(call E, cp: $$@) $$(Q)cp $$< $$@ -$$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_RUNTIME): \ - rt/$(2)/$$(CFG_RUNTIME) +$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_RUNTIME_$(2)): \ + rt/$(2)/$(CFG_RUNTIME_$(2)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ -$$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_CORELIB): \ +$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_CORELIB_$(2)): \ $$(CORELIB_CRATE) $$(CORELIB_INPUTS) \ $$(TSREQ$(1)_T_$(2)_H_$(3)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$< && touch $$@ -$$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_STDLIB): \ +$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_STDLIB_$(2)): \ $$(STDLIB_CRATE) $$(STDLIB_INPUTS) \ - $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_CORELIB) \ + $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_CORELIB_$(2)) \ $$(TSREQ$(1)_T_$(2)_H_$(3)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$< && touch $$@ -$$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBSYNTAX): \ +$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBSYNTAX_$(3)): \ $$(LIBSYNTAX_CRATE) $$(LIBSYNTAX_INPUTS) \ $$(TSREQ$(1)_T_$(2)_H_$(3)) \ $$(TCORELIB_DEFAULT$(1)_T_$(2)_H_$(3)) \ @@ -51,21 +51,21 @@ $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBSYNTAX): \ # Only build the compiler for host triples ifneq ($$(findstring $(2),$$(CFG_HOST_TRIPLES)),) -$$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_RUSTLLVM): \ - rustllvm/$(2)/$$(CFG_RUSTLLVM) +$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_RUSTLLVM_$(3)): \ + rustllvm/$(2)/$(CFG_RUSTLLVM_$(3)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ -$$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBRUSTC): \ +$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTC_$(3)): \ $$(COMPILER_CRATE) $$(COMPILER_INPUTS) \ - $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBSYNTAX) \ - $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_RUSTLLVM) + $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBSYNTAX_$(3)) \ + $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_RUSTLLVM_$(3)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$< && touch $$@ $$(TBIN$(1)_T_$(2)_H_$(3))/rustc$$(X): \ $$(DRIVER_CRATE) \ - $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBRUSTC) + $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTC_$(3)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(2)_H_$(3)) --cfg rustc -o $$@ $$< ifdef CFG_ENABLE_PAX_FLAGS diff --git a/mk/tools.mk b/mk/tools.mk index 1c2b3962ac2..4ed1a5db217 100644 --- a/mk/tools.mk +++ b/mk/tools.mk @@ -38,86 +38,86 @@ RUST_INPUTS := $(wildcard $(S)src/librust/*.rs) # have tools that need to built for other targets. define TOOLS_STAGE_N_TARGET -$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBFUZZER): \ +$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBFUZZER_$(3)): \ $$(FUZZER_LIB) $$(FUZZER_INPUTS) \ $$(TSREQ$(1)_T_$(4)_H_$(3)) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_CORELIB) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_STDLIB) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTC) + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_CORELIB_$(3)) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_STDLIB_$(3)) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTC_$(3)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$< && touch $$@ $$(TBIN$(1)_T_$(4)_H_$(3))/fuzzer$$(X): \ $$(DRIVER_CRATE) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBFUZZER) + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBFUZZER_$(3)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(4)_H_$(3)) --cfg fuzzer -o $$@ $$< $$(TBIN$(1)_T_$(4)_H_$(3))/compiletest$$(X): \ $$(COMPILETEST_CRATE) $$(COMPILETEST_INPUTS) \ $$(TSREQ$(1)_T_$(4)_H_$(3)) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_CORELIB) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_STDLIB) + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_CORELIB_$(3)) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_STDLIB_$(3)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$< -$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTPKG): \ +$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTPKG_$(3)): \ $$(RUSTPKG_LIB) $$(RUSTPKG_INPUTS) \ $$(TSREQ$(1)_T_$(4)_H_$(3)) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_CORELIB) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_STDLIB) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTC) + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_CORELIB_$(3)) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_STDLIB_$(3)) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTC_$(3)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$< && touch $$@ $$(TBIN$(1)_T_$(4)_H_$(3))/rustpkg$$(X): \ $$(DRIVER_CRATE) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTPKG) + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTPKG_$(3)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(4)_H_$(3)) --cfg rustpkg -o $$@ $$< -$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTDOC): \ +$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTDOC_$(3)): \ $$(RUSTDOC_LIB) $$(RUSTDOC_INPUTS) \ $$(TSREQ$(1)_T_$(4)_H_$(3)) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_CORELIB) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_STDLIB) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTC) + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_CORELIB_$(3)) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_STDLIB_$(3)) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTC_$(3)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$< && touch $$@ $$(TBIN$(1)_T_$(4)_H_$(3))/rustdoc$$(X): \ $$(DRIVER_CRATE) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTDOC) + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTDOC_$(3)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(4)_H_$(3)) --cfg rustdoc -o $$@ $$< -$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTI): \ +$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTI_$(3)): \ $$(RUSTI_LIB) $$(RUSTI_INPUTS) \ $$(TSREQ$(1)_T_$(4)_H_$(3)) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_CORELIB) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_STDLIB) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTC) + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_CORELIB_$(3)) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_STDLIB_$(3)) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTC_$(3)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$< && touch $$@ $$(TBIN$(1)_T_$(4)_H_$(3))/rusti$$(X): \ $$(DRIVER_CRATE) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTI) + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTI_$(3)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(4)_H_$(3)) --cfg rusti -o $$@ $$< -$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUST): \ +$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUST_$(3)): \ $$(RUST_LIB) $$(RUST_INPUTS) \ $$(TSREQ$(1)_T_$(4)_H_$(3)) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_CORELIB) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_STDLIB) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTC) + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_CORELIB_$(3)) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_STDLIB_$(3)) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTC_$(3)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$< && touch $$@ $$(TBIN$(1)_T_$(4)_H_$(3))/rust$$(X): \ $$(DRIVER_CRATE) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUST) + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUST_$(3)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(4)_H_$(3)) --cfg rust -o $$@ $$< @@ -129,19 +129,19 @@ define TOOLS_STAGE_N_HOST # Promote the stageN target to stageN+1 host # FIXME: Shouldn't need to depend on host/librustc.so once # rpath is working -$$(HLIB$(2)_H_$(4))/$$(CFG_LIBFUZZER): \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBFUZZER) \ - $$(HLIB$(2)_H_$(4))/$$(CFG_LIBRUSTC) \ +$$(HLIB$(2)_H_$(4))/$(CFG_LIBFUZZER_$(3)): \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBFUZZER_$(3)) \ + $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(3)) \ $$(HSREQ$(2)_H_$(4)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ - $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBFUZZER_GLOB) \ - $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBFUZZER_DSYM_GLOB)) \ + $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBFUZZER_GLOB_$(3)) \ + $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBFUZZER_DSYM_GLOB_$(3))) \ $$(HLIB$(2)_H_$(4)) $$(HBIN$(2)_H_$(4))/fuzzer$$(X): \ $$(TBIN$(1)_T_$(4)_H_$(3))/fuzzer$$(X) \ - $$(HLIB$(2)_H_$(4))/$$(CFG_LIBFUZZER) \ + $$(HLIB$(2)_H_$(4))/$(CFG_LIBFUZZER_$(3)) \ $$(HSREQ$(2)_H_$(4)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ @@ -153,70 +153,70 @@ $$(HBIN$(2)_H_$(4))/compiletest$$(X): \ $$(Q)cp $$< $$@ -$$(HLIB$(2)_H_$(4))/$$(CFG_LIBRUSTPKG): \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTPKG) \ - $$(HLIB$(2)_H_$(4))/$$(CFG_LIBRUSTC) \ +$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTPKG_$(3)): \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTPKG_$(3)) \ + $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(3)) \ $$(HSREQ$(2)_H_$(4)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ - $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTPKG_GLOB) \ - $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTPKG_DSYM_GLOB)) \ + $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTPKG_GLOB_$(3)) \ + $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTPKG_DSYM_GLOB_$(3))) \ $$(HLIB$(2)_H_$(4)) $$(HBIN$(2)_H_$(4))/rustpkg$$(X): \ $$(TBIN$(1)_T_$(4)_H_$(3))/rustpkg$$(X) \ - $$(HLIB$(2)_H_$(4))/$$(CFG_LIBRUSTPKG) \ + $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTPKG_$(3)) \ $$(HSREQ$(2)_H_$(4)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ -$$(HLIB$(2)_H_$(4))/$$(CFG_LIBRUSTDOC): \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTDOC) \ - $$(HLIB$(2)_H_$(4))/$$(CFG_LIBRUSTC) \ +$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTDOC_$(3)): \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTDOC_$(3)) \ + $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(3)) \ $$(HSREQ$(2)_H_$(4)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ - $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTDOC_GLOB) \ - $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTDOC_DSYM_GLOB)) \ + $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTDOC_GLOB_$(3)) \ + $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTDOC_DSYM_GLOB_$(3))) \ $$(HLIB$(2)_H_$(4)) $$(HBIN$(2)_H_$(4))/rustdoc$$(X): \ $$(TBIN$(1)_T_$(4)_H_$(3))/rustdoc$$(X) \ - $$(HLIB$(2)_H_$(4))/$$(CFG_LIBRUSTDOC) \ + $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTDOC_$(3)) \ $$(HSREQ$(2)_H_$(4)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ -$$(HLIB$(2)_H_$(4))/$$(CFG_LIBRUSTI): \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTI) \ - $$(HLIB$(2)_H_$(4))/$$(CFG_LIBRUSTC) \ +$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTI_$(3)): \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTI_$(3)) \ + $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(3)) \ $$(HSREQ$(2)_H_$(4)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ - $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTI_GLOB) \ - $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTI_DSYM_GLOB)) \ + $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTI_GLOB_$(3)) \ + $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTI_DSYM_GLOB_$(3))) \ $$(HLIB$(2)_H_$(4)) $$(HBIN$(2)_H_$(4))/rusti$$(X): \ $$(TBIN$(1)_T_$(4)_H_$(3))/rusti$$(X) \ - $$(HLIB$(2)_H_$(4))/$$(CFG_LIBRUSTI) \ + $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTI_$(3)) \ $$(HSREQ$(2)_H_$(4)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ -$$(HLIB$(2)_H_$(4))/$$(CFG_LIBRUST): \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUST) \ - $$(HLIB$(2)_H_$(4))/$$(CFG_LIBRUSTC) \ +$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUST_$(3)): \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUST_$(3)) \ + $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(3)) \ $$(HSREQ$(2)_H_$(4)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ - $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUST_GLOB) \ - $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUST_DSYM_GLOB)) \ + $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUST_GLOB_$(3)) \ + $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUST_DSYM_GLOB)_$(3)) \ $$(HLIB$(2)_H_$(4)) $$(HBIN$(2)_H_$(4))/rust$$(X): \ $$(TBIN$(1)_T_$(4)_H_$(3))/rust$$(X) \ - $$(HLIB$(2)_H_$(4))/$$(CFG_LIBRUST) \ + $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUST_$(3)) \ $$(HSREQ$(2)_H_$(4)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ diff --git a/src/rt/arch/arm/morestack.S b/src/rt/arch/arm/morestack.S new file mode 100644 index 00000000000..bc1c0c23025 --- /dev/null +++ b/src/rt/arch/arm/morestack.S @@ -0,0 +1,8 @@ +.text +.code 32 +.arm +.align + +.globl __morestack +.hidden __morestack +__morestack: diff --git a/src/rt/rust_android_dummy.cpp b/src/rt/rust_android_dummy.cpp index 76aa51723ef..3c7034a2f95 100644 --- a/src/rt/rust_android_dummy.cpp +++ b/src/rt/rust_android_dummy.cpp @@ -4,6 +4,7 @@ #include "rust_android_dummy.h" #include +#include #ifdef __ANDROID__ @@ -13,6 +14,9 @@ char **backtrace_symbols(void *const *array, int size) { return 0; } void backtrace_symbols_fd (void *const *array, int size, int fd) {} +extern "C" volatile int* __errno_location() { + return &errno; +} extern "C" float log2f(float f) { From 2102597392169083c52f01fe35bd2f18ed3c219b Mon Sep 17 00:00:00 2001 From: Young-il Choi Date: Fri, 1 Mar 2013 20:02:29 +0900 Subject: [PATCH 05/16] mk: mingw32 flags added --- configure | 2 +- mk/platform.mk | 131 ++++++++++++++++++++++++++----------------------- 2 files changed, 70 insertions(+), 63 deletions(-) diff --git a/configure b/configure index bfd27fc744d..5e4ab2bfdb1 100755 --- a/configure +++ b/configure @@ -595,7 +595,7 @@ do make_dir rt/$t for i in \ isaac linenoise sync test arch/i386 arch/x86_64 arch/arm \ - libuv + libuv libuv/src do make_dir rt/$t/$i done diff --git a/mk/platform.mk b/mk/platform.mk index 21a2f553376..7680f70157a 100644 --- a/mk/platform.mk +++ b/mk/platform.mk @@ -36,21 +36,7 @@ CFG_GCCISH_CFLAGS += -fno-omit-frame-pointer # embedded into the executable, so use a no-op command. CFG_DSYMUTIL := true -# Hack: not sure how to test if a file exists in make other than this -OS_SUPP = $(patsubst %,--suppressions=%,\ - $(wildcard $(CFG_SRC_DIR)src/etc/$(CFG_OSTYPE).supp*)) - -ifneq ($(findstring mingw,$(CFG_OSTYPE)),) - CFG_WINDOWSY := 1 -endif - -ifdef CFG_DISABLE_OPTIMIZE_CXX - $(info cfg: disabling C++ optimization (CFG_DISABLE_OPTIMIZE_CXX)) - CFG_GCCISH_CFLAGS += -O0 -else - CFG_GCCISH_CFLAGS += -O2 -endif - +# x86_64-unknown-linux-gnu configuration CFG_LIB_NAME_x86_64-unknown-linux-gnu=lib$(1).so CFG_LIB_GLOB_x86_64-unknown-linux-gnu=lib$(1)-*.so CFG_LIB_DSYM_GLOB_x86_64-unknown-linux-gnu=lib$(1)-*.dylib.dSYM @@ -62,10 +48,9 @@ CFG_GCCISH_PRE_LIB_FLAGS_x86_64-unknown-linux-gnu := -Wl,-whole-archive CFG_GCCISH_POST_LIB_FLAGS_x86_64-unknown-linux-gnu := -Wl,-no-whole-archive -Wl,-znoexecstack CFG_DEF_SUFFIX_x86_64-unknown-linux-gnu := .linux.def CFG_INSTALL_NAME_x86_64-unknown-linux-gnu = -CFG_UNIXY := 1 -CFG_LDENV := LD_LIBRARY_PATH CFG_GCCISH_CROSS_x86_64-unknown-linux-gnu = +# x86_64-apple-darwin configuration CFG_LIB_NAME_x86_64-apple-darwin=lib$(1).dylib CFG_LIB_GLOB_x86_64-apple-darwin=lib$(1)-*.dylib CFG_LIB_DSYM_GLOB_x86_64-apple-darwin=lib$(1)-*.dylib.dSYM @@ -78,10 +63,11 @@ CFG_GCCISH_POST_LIB_FLAGS_x86_64-apple-darwin := CFG_DEF_SUFFIX_x86_64-apple-darwin := .darwin.def CFG_INSTALL_NAME_x86_64-apple-darwin = -Wl,-install_name,@rpath/$(1) +# arm-unknown-android configuration CFG_LIB_NAME_arm-unknown-android=lib$(1).so CFG_LIB_GLOB_arm-unknown-android=lib$(1)-*.so CFG_LIB_DSYM_GLOB_arm-unknown-android=lib$(1)-*.dylib.dSYM -CFG_GCCISH_CFLAGS_arm-unknown-android := -fPIC -Wall -g -D__arm__ -DANDROID -D__ANDROID__ +CFG_GCCISH_CFLAGS_arm-unknown-android := -Wall -g -fPIC -D__arm__ -DANDROID -D__ANDROID__ CFG_GCCISH_CXXFLAGS_arm-unknown-android := -fno-rtti CFG_GCCISH_LINK_FLAGS_arm-unknown-android := -shared -fPIC -ldl -g -lm -lsupc++ -lgnustl_shared CFG_GCCISH_DEF_FLAG_arm-unknown-android := -Wl,--export-dynamic,--dynamic-list= @@ -91,6 +77,51 @@ CFG_DEF_SUFFIX_arm-unknown-android := .android.def CFG_INSTALL_NAME_arm-unknown-android = CFG_GCCISH_CROSS_arm-unknown-android = $(CFG_CROSS_PREFIX_arm) +# i686-pc-mingw32 configuration +CFG_LIB_NAME_i686-pc-mingw32=lib$(1).dll +CFG_LIB_GLOB_i686-pc-mingw32=lib$(1)-*.dll +CFG_LIB_DSYM_GLOB_i686-pc-mingw32=lib$(1)-*.dylib.dSYM +CFG_GCCISH_CFLAGS_i686-pc-mingw32 := -Wall -Werror -g -march=i686 +CFG_GCCISH_CXXFLAGS_i686-pc-mingw32 := -fno-rtti +CFG_GCCISH_LINK_FLAGS_i686-pc-mingw32 := -shared -fPIC -g +CFG_GCCISH_DEF_FLAG_i686-pc-mingw32 := +CFG_GCCISH_PRE_LIB_FLAGS_i686-pc-mingw32 := +CFG_GCCISH_POST_LIB_FLAGS_i686-pc-mingw32 := +CFG_DEF_SUFFIX_i686-pc-mingw32 := .def +CFG_INSTALL_NAME_i686-pc-mingw32 = +CFG_GCCISH_CROSS_i686-pc-mingw32 = + +# Hack: not sure how to test if a file exists in make other than this +OS_SUPP = $(patsubst %,--suppressions=%,\ + $(wildcard $(CFG_SRC_DIR)src/etc/$(CFG_OSTYPE).supp*)) + +ifneq ($(findstring mingw,$(CFG_OSTYPE)),) + CFG_WINDOWSY := 1 +endif +ifneq ($(findstring linux,$(CFG_OSTYPE)),) + CFG_UNIXY := 1 +endif +ifneq ($(findstring darwin,$(CFG_OSTYPE)),) + CFG_UNIXY := 1 +endif + +ifdef CFG_DISABLE_OPTIMIZE_CXX + $(info cfg: disabling C++ optimization (CFG_DISABLE_OPTIMIZE_CXX)) + CFG_GCCISH_CFLAGS += -O0 +else + CFG_GCCISH_CFLAGS += -O2 +endif + +CFG_TESTLIB=$(CFG_BUILD_DIR)/$(2)/$(strip \ + $(if $(findstring stage0,$(1)), \ + stage0/$(CFG_LIBDIR), \ + $(if $(findstring stage1,$(1)), \ + stage1/$(CFG_LIBDIR), \ + $(if $(findstring stage2,$(1)), \ + stage2/$(CFG_LIBDIR), \ + $(if $(findstring stage3,$(1)), \ + stage3/$(CFG_LIBDIR), \ + )))))/rustc/$(CFG_HOST_TRIPLE)/$(CFG_LIBDIR) ifneq ($(findstring linux,$(CFG_OSTYPE)),) # -znoexecstack is here because librt is for some reason being created @@ -123,30 +154,26 @@ ifdef CFG_UNIXY CFG_RUN_TARG=$(call CFG_RUN,,$(2)) CFG_RUN_TEST=$(call CFG_RUN,,$(CFG_VALGRIND) $(1)) CFG_LIBUV_LINK_FLAGS= - ifdef CFG_FBSD - CFG_LIBUV_LINK_FLAGS=-lpthread -lkvm + + ifdef CFG_ENABLE_MINGW_CROSS + CFG_WINDOWSY := 1 + CFG_INFO := $(info cfg: mingw-cross) + CFG_GCCISH_CROSS := i586-mingw32msvc- + ifdef CFG_VALGRIND + CFG_VALGRIND += wine + endif + + CFG_GCCISH_CFLAGS := -march=i586 + CFG_GCCISH_PRE_LIB_FLAGS := + CFG_GCCISH_POST_LIB_FLAGS := + CFG_GCCISH_DEF_FLAG := + CFG_GCCISH_LINK_FLAGS := -shared + + ifeq ($(CFG_CPUTYPE), x86_64) + CFG_GCCISH_CFLAGS += -m32 + CFG_GCCISH_LINK_FLAGS += -m32 + endif endif - - # FIXME: This is surely super broken - # ifdef CFG_ENABLE_MINGW_CROSS - # CFG_WINDOWSY := 1 - # CFG_INFO := $(info cfg: mingw-cross) - # CFG_GCCISH_CROSS := i586-mingw32msvc- - # ifdef CFG_VALGRIND - # CFG_VALGRIND += wine - # endif - - # CFG_GCCISH_CFLAGS := -march=i586 - # CFG_GCCISH_PRE_LIB_FLAGS := - # CFG_GCCISH_POST_LIB_FLAGS := - # CFG_GCCISH_DEF_FLAG := - # CFG_GCCISH_LINK_FLAGS := -shared - - # ifeq ($(CFG_CPUTYPE), x86_64) - # CFG_GCCISH_CFLAGS += -m32 - # CFG_GCCISH_LINK_FLAGS += -m32 - # endif - # endif ifdef CFG_VALGRIND CFG_VALGRIND += --error-exitcode=100 \ --quiet \ @@ -161,14 +188,10 @@ ifdef CFG_UNIXY endif endif - ifdef CFG_WINDOWSY CFG_INFO := $(info cfg: windows-y environment) CFG_EXE_SUFFIX := .exe - CFG_LIB_NAME=$(1).dll - CFG_LIB_GLOB=$(1)-*.dll - CFG_DEF_SUFFIX := .def ifdef MSYSTEM CFG_LDPATH :=$(CFG_LDPATH):$$PATH CFG_RUN=PATH="$(CFG_LDPATH):$(1)" $(2) @@ -176,19 +199,7 @@ else CFG_LDPATH := CFG_RUN=$(2) endif - - CFG_TESTLIB=$(CFG_BUILD_DIR)/$(2)/$(strip \ - $(if $(findstring stage0,$(1)), \ - stage0/$(CFG_LIBDIR), \ - $(if $(findstring stage1,$(1)), \ - stage1/$(CFG_LIBDIR), \ - $(if $(findstring stage2,$(1)), \ - stage2/$(CFG_LIBDIR), \ - $(if $(findstring stage3,$(1)), \ - stage3/$(CFG_LIBDIR), \ - )))))/rustc/$(CFG_BUILD_TRIPLE)/$(CFG_LIBDIR) - - CFG_RUN_TARG=$(call CFG_RUN,$(HLIB$(1)_H_$(CFG_BUILD_TRIPLE)),$(2)) + CFG_RUN_TARG=$(call CFG_RUN,$(HLIB$(1)_H_$(CFG_HOST_TRIPLE)),$(2)) CFG_RUN_TEST=$(call CFG_RUN,$(call CFG_TESTLIB,$(1),$(3)),$(1)) CFG_LIBUV_LINK_FLAGS=-lWs2_32 -lpsapi -liphlpapi @@ -196,13 +207,9 @@ endif CFG_PATH_MUNGE := $(strip perl -i.bak -p \ -e 's@\\(\S)@/\1@go;' \ -e 's@^/([a-zA-Z])/@\1:/@o;') - CFG_GCCISH_CFLAGS += -march=i686 - CFG_GCCISH_LINK_FLAGS += -shared -fPIC endif - CFG_INSTALL_NAME = endif - CFG_INFO := $(info cfg: using $(CFG_C_COMPILER)) ifeq ($(CFG_C_COMPILER),clang) ifeq ($(origin CC),default) From 5e6c04b9faf76ef1f1b50b5e8688c00148693228 Mon Sep 17 00:00:00 2001 From: Young-il Choi Date: Sat, 2 Mar 2013 13:51:10 +0900 Subject: [PATCH 06/16] mk: mingw32 fix --- mk/platform.mk | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mk/platform.mk b/mk/platform.mk index 7680f70157a..3c2257d196a 100644 --- a/mk/platform.mk +++ b/mk/platform.mk @@ -78,9 +78,9 @@ CFG_INSTALL_NAME_arm-unknown-android = CFG_GCCISH_CROSS_arm-unknown-android = $(CFG_CROSS_PREFIX_arm) # i686-pc-mingw32 configuration -CFG_LIB_NAME_i686-pc-mingw32=lib$(1).dll -CFG_LIB_GLOB_i686-pc-mingw32=lib$(1)-*.dll -CFG_LIB_DSYM_GLOB_i686-pc-mingw32=lib$(1)-*.dylib.dSYM +CFG_LIB_NAME_i686-pc-mingw32=$(1).dll +CFG_LIB_GLOB_i686-pc-mingw32=$(1)-*.dll +CFG_LIB_DSYM_GLOB_i686-pc-mingw32=$(1)-*.dylib.dSYM CFG_GCCISH_CFLAGS_i686-pc-mingw32 := -Wall -Werror -g -march=i686 CFG_GCCISH_CXXFLAGS_i686-pc-mingw32 := -fno-rtti CFG_GCCISH_LINK_FLAGS_i686-pc-mingw32 := -shared -fPIC -g From 49c3f9f1666d31c2b45d132809820d44fb82d6bf Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Fri, 1 Mar 2013 15:48:11 -0800 Subject: [PATCH 07/16] mk: Cross-compile fixes --- mk/install.mk | 74 +++++++++++++++++++++++++-------------------------- mk/tests.mk | 18 ++++++------- 2 files changed, 46 insertions(+), 46 deletions(-) diff --git a/mk/install.mk b/mk/install.mk index 07c45db1fe7..3045b99e496 100644 --- a/mk/install.mk +++ b/mk/install.mk @@ -45,23 +45,23 @@ PTL$(1)$(2) = $$(PTR$(1)$(2))/$(CFG_LIBDIR) install-target-$(1)-host-$(2): $$(CSREQ$$(ISTAGE)_T_$(1)_H_$(2)) $$(Q)mkdir -p $$(PTL$(1)$(2)) - $$(Q)$$(call INSTALL,$$(TL$(1)$(2)),$$(PTL$(1)$(2)),$$(CFG_RUNTIME)) + $$(Q)$$(call INSTALL,$$(TL$(1)$(2)),$$(PTL$(1)$(2)),$$(CFG_RUNTIME_$(1))) $$(Q)$$(call INSTALL_LIB, \ - $$(TL$(1)$(2)),$$(PTL$(1)$(2)),$$(CORELIB_GLOB)) + $$(TL$(1)$(2)),$$(PTL$(1)$(2)),$$(CORELIB_GLOB_$(1))) $$(Q)$$(call INSTALL_LIB, \ - $$(TL$(1)$(2)),$$(PTL$(1)$(2)),$$(STDLIB_GLOB)) + $$(TL$(1)$(2)),$$(PTL$(1)$(2)),$$(STDLIB_GLOB_$(1))) $$(Q)$$(call INSTALL_LIB, \ - $$(TL$(1)$(2)),$$(PTL$(1)$(2)),$$(LIBRUSTC_GLOB)) + $$(TL$(1)$(2)),$$(PTL$(1)$(2)),$$(LIBRUSTC_GLOB_$(1))) $$(Q)$$(call INSTALL_LIB, \ - $$(TL$(1)$(2)),$$(PTL$(1)$(2)),$$(LIBSYNTAX_GLOB)) + $$(TL$(1)$(2)),$$(PTL$(1)$(2)),$$(LIBSYNTAX_GLOB_$(1))) $$(Q)$$(call INSTALL_LIB, \ - $$(TL$(1)$(2)),$$(PTL$(1)$(2)),$$(LIBRUSTPKG_GLOB)) + $$(TL$(1)$(2)),$$(PTL$(1)$(2)),$$(LIBRUSTPKG_GLOB_$(1))) $$(Q)$$(call INSTALL_LIB, \ - $$(TL$(1)$(2)),$$(PTL$(1)$(2)),$$(LIBRUSTDOC_GLOB)) + $$(TL$(1)$(2)),$$(PTL$(1)$(2)),$$(LIBRUSTDOC_GLOB_$(1))) $$(Q)$$(call INSTALL_LIB, \ - $$(TL$(1)$(2)),$$(PTL$(1)$(2)),$$(LIBRUSTI_GLOB)) + $$(TL$(1)$(2)),$$(PTL$(1)$(2)),$$(LIBRUSTI_GLOB_$(1))) $$(Q)$$(call INSTALL_LIB, \ - $$(TL$(1)$(2)),$$(PTL$(1)$(2)),$$(LIBRUST_GLOB)) + $$(TL$(1)$(2)),$$(PTL$(1)$(2)),$$(LIBRUST_GLOB_$(1))) $$(Q)$$(call INSTALL,$$(TL$(1)$(2)),$$(PTL$(1)$(2)),libmorestack.a) endef @@ -93,19 +93,19 @@ install-host: $(CSREQ$(ISTAGE)_T_$(CFG_BUILD_TRIPLE)_H_$(CFG_BUILD_TRIPLE)) $(Q)$(call INSTALL,$(HB2),$(PHB),rustdoc$(X)) $(Q)$(call INSTALL,$(HB2),$(PHB),rusti$(X)) $(Q)$(call INSTALL,$(HB2),$(PHB),rust$(X)) - $(Q)$(call INSTALL,$(HL),$(PHL),$(CFG_LIBRUSTC)) - $(Q)$(call INSTALL,$(HL),$(PHL),$(CFG_LIBRUSTPKG)) - $(Q)$(call INSTALL,$(HL),$(PHL),$(CFG_LIBRUSTDOC)) - $(Q)$(call INSTALL,$(HL),$(PHL),$(CFG_LIBRUSTI)) - $(Q)$(call INSTALL,$(HL),$(PHL),$(CFG_LIBRUST)) - $(Q)$(call INSTALL_LIB,$(HL),$(PHL),$(CORELIB_GLOB)) - $(Q)$(call INSTALL_LIB,$(HL),$(PHL),$(STDLIB_GLOB)) - $(Q)$(call INSTALL_LIB,$(HL),$(PHL),$(LIBRUSTC_GLOB)) - $(Q)$(call INSTALL_LIB,$(HL),$(PHL),$(LIBSYNTAX_GLOB)) - $(Q)$(call INSTALL_LIB,$(HL),$(PHL),$(LIBRUSTI_GLOB)) - $(Q)$(call INSTALL_LIB,$(HL),$(PHL),$(LIBRUST_GLOB)) - $(Q)$(call INSTALL,$(HL),$(PHL),$(CFG_RUNTIME)) - $(Q)$(call INSTALL,$(HL),$(PHL),$(CFG_RUSTLLVM)) + $(Q)$(call INSTALL,$(HL),$(PHL),$(CFG_LIBRUSTC_$(CFG_BUILD_TRIPLE))) + $(Q)$(call INSTALL,$(HL),$(PHL),$(CFG_LIBRUSTPKG_$(CFG_BUILD_TRIPLE))) + $(Q)$(call INSTALL,$(HL),$(PHL),$(CFG_LIBRUSTDOC_$(CFG_BUILD_TRIPLE)) + $(Q)$(call INSTALL,$(HL),$(PHL),$(CFG_LIBRUSTI_$(CFG_BUILD_TRIPLE))) + $(Q)$(call INSTALL,$(HL),$(PHL),$(CFG_LIBRUST_$(CFG_BUILD_TRIPLE))) + $(Q)$(call INSTALL_LIB,$(HL),$(PHL),$(CORELIB_GLOB_$(CFG_BUILD_TRIPLE))) + $(Q)$(call INSTALL_LIB,$(HL),$(PHL),$(STDLIB_GLOB_$(CFG_BUILD_TRIPLE))) + $(Q)$(call INSTALL_LIB,$(HL),$(PHL),$(LIBRUSTC_GLOB_$(CFG_BUILD_TRIPLE))) + $(Q)$(call INSTALL_LIB,$(HL),$(PHL),$(LIBSYNTAX_GLOB_$(CFG_BUILD_TRIPLE))) + $(Q)$(call INSTALL_LIB,$(HL),$(PHL),$(LIBRUSTI_GLOB_$(CFG_BUILD_TRIPLE))) + $(Q)$(call INSTALL_LIB,$(HL),$(PHL),$(LIBRUST_GLOB_$(CFG_BUILD_TRIPLE))) + $(Q)$(call INSTALL,$(HL),$(PHL),$(CFG_RUNTIME_$(CFG_BUILD_TRIPLE))) + $(Q)$(call INSTALL,$(HL),$(PHL),$(CFG_RUSTLLVM_$(CFG_BUILD_TRIPLE))) $(Q)$(call INSTALL,$(S)/man, \ $(PREFIX_ROOT)/share/man/man1,rustc.1) @@ -121,22 +121,22 @@ uninstall: $(Q)rm -f $(PHB)/rusti$(X) $(Q)rm -f $(PHB)/rust$(X) $(Q)rm -f $(PHB)/rustdoc$(X) - $(Q)rm -f $(PHL)/$(CFG_RUSTLLVM) - $(Q)rm -f $(PHL)/$(CFG_LIBRUSTPKG) - $(Q)rm -f $(PHL)/$(CFG_LIBRUSTC) - $(Q)rm -f $(PHL)/$(CFG_LIBRUSTDOC) - $(Q)rm -f $(PHL)/$(CFG_LIBRUSTI) - $(Q)rm -f $(PHL)/$(CFG_LIBRUST) - $(Q)rm -f $(PHL)/$(CFG_RUNTIME) + $(Q)rm -f $(PHL)/$(CFG_RUSTLLVM_$(CFG_BUILD_TRIPLE)) + $(Q)rm -f $(PHL)/$(CFG_LIBRUSTPKG_$(CFG_BUILD_TRIPLE)) + $(Q)rm -f $(PHL)/$(CFG_LIBRUSTC_$(CFG_BUILD_TRIPLE)) + $(Q)rm -f $(PHL)/$(CFG_LIBRUSTDOC_$(CFG_BUILD_TRIPLE)) + $(Q)rm -f $(PHL)/$(CFG_LIBRUSTI_$(CFG_BUILD_TRIPLE)) + $(Q)rm -f $(PHL)/$(CFG_LIBRUST_$(CFG_BUILD_TRIPLE)) + $(Q)rm -f $(PHL)/$(CFG_RUNTIME_$(CFG_BUILD_TRIPLE)) $(Q)for i in \ - $(call HOST_LIB_FROM_HL_GLOB,$(CORELIB_GLOB)) \ - $(call HOST_LIB_FROM_HL_GLOB,$(STDLIB_GLOB)) \ - $(call HOST_LIB_FROM_HL_GLOB,$(LIBRUSTC_GLOB)) \ - $(call HOST_LIB_FROM_HL_GLOB,$(LIBSYNTAX_GLOB)) \ - $(call HOST_LIB_FROM_HL_GLOB,$(LIBRUSTPKG_GLOB)) \ - $(call HOST_LIB_FROM_HL_GLOB,$(LIBRUSTDOC_GLOB)) \ - $(call HOST_LIB_FROM_HL_GLOB,$(LIBRUSTI_GLOB)) \ - $(call HOST_LIB_FROM_HL_GLOB,$(LIBRUST_GLOB)) \ + $(call HOST_LIB_FROM_HL_GLOB,$(CORELIB_GLOB_$(CFG_BUILD_TRIPLE))) \ + $(call HOST_LIB_FROM_HL_GLOB,$(STDLIB_GLOB_$(CFG_BUILD_TRIPLE))) \ + $(call HOST_LIB_FROM_HL_GLOB,$(LIBRUSTC_GLOB_$(CFG_BUILD_TRIPLE))) \ + $(call HOST_LIB_FROM_HL_GLOB,$(LIBSYNTAX_GLOB_$(CFG_BUILD_TRIPLE))) \ + $(call HOST_LIB_FROM_HL_GLOB,$(LIBRUSTPKG_GLOB_$(CFG_BUILD_TRIPLE))) \ + $(call HOST_LIB_FROM_HL_GLOB,$(LIBRUSTDOC_GLOB_$(CFG_BUILD_TRIPLE))) \ + $(call HOST_LIB_FROM_HL_GLOB,$(LIBRUSTI_GLOB_$(CFG_BUILD_TRIPLE))) \ + $(call HOST_LIB_FROM_HL_GLOB,$(LIBRUST_GLOB_$(CFG_BUILD_TRIPLE))) \ ; \ do rm -f $$i ; \ done diff --git a/mk/tests.mk b/mk/tests.mk index 3876f94afe7..b1dad343bf3 100644 --- a/mk/tests.mk +++ b/mk/tests.mk @@ -220,50 +220,50 @@ define TEST_RUNNER $(3)/test/coretest.stage$(1)-$(2)$$(X): \ $$(CORELIB_CRATE) $$(CORELIB_INPUTS) \ - $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_STDLIB) + $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_STDLIB_$(2)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$< --test $(3)/test/stdtest.stage$(1)-$(2)$$(X): \ $$(STDLIB_CRATE) $$(STDLIB_INPUTS) \ - $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_STDLIB) + $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_STDLIB_$(2)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$< --test $(3)/test/syntaxtest.stage$(1)-$(2)$$(X): \ $$(LIBSYNTAX_CRATE) $$(LIBSYNTAX_INPUTS) \ - $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_STDLIB) + $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_STDLIB_$(2)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$< --test $(3)/test/rustctest.stage$(1)-$(2)$$(X): \ $$(COMPILER_CRATE) $$(COMPILER_INPUTS) \ - $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_RUSTLLVM) \ - $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBSYNTAX) + $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_RUSTLLVM_$(2)) \ + $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBSYNTAX_$(2)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$< --test $(3)/test/rustpkgtest.stage$(1)-$(2)$$(X): \ $$(RUSTPKG_LIB) $$(RUSTPKG_INPUTS) \ - $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBRUSTC) + $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBRUSTC_$(2)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$< --test $(3)/test/rustitest.stage$(1)-$(2)$$(X): \ $$(RUSTI_LIB) $$(RUSTI_INPUTS) \ - $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBRUSTC) + $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBRUSTC_$(2)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$< --test $(3)/test/rusttest.stage$(1)-$(2)$$(X): \ $$(RUST_LIB) $$(RUST_INPUTS) \ - $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBRUSTC) + $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBRUSTC_$(2)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$< --test $(3)/test/rustdoctest.stage$(1)-$(2)$$(X): \ $$(RUSTDOC_LIB) $$(RUSTDOC_INPUTS) \ - $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBRUSTC) + $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBRUSTC_$(2)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$< --test From 7714d52cd9381c8ba3257da124cd91ffadeda4d5 Mon Sep 17 00:00:00 2001 From: Young-il Choi Date: Sat, 2 Mar 2013 21:25:12 +0900 Subject: [PATCH 08/16] mk: cleanup - lib and executable suffix handling --- Makefile.in | 178 ++++++++++++++++++++++++++----------------------- configure | 60 +++++++++++------ mk/clean.mk | 30 +++++---- mk/docs.mk | 2 +- mk/host.mk | 82 ++++++++++++----------- mk/install.mk | 22 +++--- mk/perf.mk | 6 +- mk/platform.mk | 175 ++++++++++++++++++++++-------------------------- mk/pp.mk | 2 +- mk/rt.mk | 42 ++++++------ mk/rustllvm.mk | 2 +- mk/stage0.mk | 42 ++++++------ mk/target.mk | 2 +- mk/tests.mk | 86 +++++++++++++++--------- mk/tools.mk | 150 ++++++++++++++++++++--------------------- 15 files changed, 463 insertions(+), 418 deletions(-) diff --git a/Makefile.in b/Makefile.in index ccc0af3acdf..9d31ddbf54e 100644 --- a/Makefile.in +++ b/Makefile.in @@ -130,7 +130,71 @@ else CFG_VALGRIND_COMPILE := endif -define LIBREQ +# version-string calculation +CFG_GIT_DIR := $(CFG_SRC_DIR).git +CFG_RELEASE = 0.6 +CFG_VERSION = $(CFG_RELEASE) + +ifneq ($(wildcard $(CFG_GIT)),) +ifneq ($(wildcard $(CFG_GIT_DIR)),) + CFG_VERSION += $(shell git --git-dir=$(CFG_GIT_DIR) log -1 \ + --pretty=format:'(%h %ci)') + CFG_VER_HASH = $(shell git --git-dir=$(CFG_GIT_DIR) log -1 \ + --pretty=format:'%H') +endif +endif + +ifdef CFG_ENABLE_VALGRIND + $(info cfg: enabling valgrind (CFG_ENABLE_VALGRIND)) +else + CFG_VALGRIND := +endif +ifdef CFG_BAD_VALGRIND + $(info cfg: disabling valgrind due to its unreliability on this platform) + CFG_VALGRIND := +endif + + +###################################################################### +# Target-and-rule "utility variables" +###################################################################### + +ifdef VERBOSE + Q := + E = +else + Q := @ + E = echo $(1) +endif + +S := $(CFG_SRC_DIR) + +define DEF_X +X_$(1) := $(CFG_EXE_SUFFIX_$(1)) +endef +$(foreach target,$(CFG_TARGET_TRIPLES),\ + $(eval $(call DEF_X,$(target)))) + +# Look in doc and src dirs. +VPATH := $(S)doc $(S)src + +# "Source" files we generate in builddir along the way. +GENERATED := + +# Delete the built-in rules. +.SUFFIXES: +%:: %,v +%:: RCS/%,v +%:: RCS/% +%:: s.% +%:: SCCS/s.% + + +###################################################################### +# Crates +###################################################################### + +define DEF_LIBS CFG_RUNTIME_$(1) :=$(call CFG_LIB_NAME_$(1),rustrt) CFG_RUSTLLVM_$(1) :=$(call CFG_LIB_NAME_$(1),rustllvm) @@ -165,62 +229,8 @@ LIBRUST_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),rust) endef -$(foreach target,$(CFG_TARGET_TRIPLES), \ - $(eval $(call LIBREQ,$(target)))) - -# version-string calculation -CFG_GIT_DIR := $(CFG_SRC_DIR).git -CFG_RELEASE = 0.6 -CFG_VERSION = $(CFG_RELEASE) - -ifneq ($(wildcard $(CFG_GIT)),) -ifneq ($(wildcard $(CFG_GIT_DIR)),) - CFG_VERSION += $(shell git --git-dir=$(CFG_GIT_DIR) log -1 \ - --pretty=format:'(%h %ci)') - CFG_VER_HASH = $(shell git --git-dir=$(CFG_GIT_DIR) log -1 \ - --pretty=format:'%H') -endif -endif - -ifdef CFG_ENABLE_VALGRIND - $(info cfg: enabling valgrind (CFG_ENABLE_VALGRIND)) -else - CFG_VALGRIND := -endif -ifdef CFG_BAD_VALGRIND - $(info cfg: disabling valgrind due to its unreliability on this platform) - CFG_VALGRIND := -endif - - -###################################################################### -# Target-and-rule "utility variables" -###################################################################### - -#ifdef VERBOSE - Q := - E = -#else -# Q := @ -# E = echo $(1) -#endif - -S := $(CFG_SRC_DIR) -X := $(CFG_EXE_SUFFIX) - -# Look in doc and src dirs. -VPATH := $(S)doc $(S)src - -# "Source" files we generate in builddir along the way. -GENERATED := - -# Delete the built-in rules. -.SUFFIXES: -%:: %,v -%:: RCS/%,v -%:: RCS/% -%:: s.% -%:: SCCS/s.% +$(foreach target,$(CFG_TARGET_TRIPLES),\ + $(eval $(call DEF_LIBS,$(target)))) ###################################################################### # Core library variables @@ -267,8 +277,8 @@ CFG_LLVM_BUILD_DIR_$(1):=$$(CFG_LLVM_BUILD_DIR_$(subst -,_,$(1))) CFG_LLVM_INST_DIR_$(1):=$$(CFG_LLVM_INST_DIR_$(subst -,_,$(1))) # Any rules that depend on LLVM should depend on LLVM_CONFIG -LLVM_CONFIG_$(1):=$$(CFG_LLVM_INST_DIR_$(1))/bin/llvm-config$$(X) -LLVM_MC_$(1):=$$(CFG_LLVM_INST_DIR_$(1))/bin/llvm-mc$$(X) +LLVM_CONFIG_$(1):=$$(CFG_LLVM_INST_DIR_$(1))/bin/llvm-config$$(X_$(1)) +LLVM_MC_$(1):=$$(CFG_LLVM_INST_DIR_$(1))/bin/llvm-mc$$(X_$(1)) LLVM_VERSION_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --version) LLVM_BINDIR_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --bindir) LLVM_INCDIR_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --includedir) @@ -280,8 +290,8 @@ LLVM_LDFLAGS_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --ldflags) LLVM_CXXFLAGS_$(1)=$$(subst -I, -iquote , $$(shell "$$(LLVM_CONFIG_$(1))" --cxxflags)) LLVM_HOST_TRIPLE_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --host-target) -LLVM_AS_$(1)=$$(CFG_LLVM_INST_DIR_$(1))/bin/llvm-as$$(X) -LLC_$(1)=$$(CFG_LLVM_INST_DIR_$(1))/bin/llc$$(X) +LLVM_AS_$(1)=$$(CFG_LLVM_INST_DIR_$(1))/bin/llvm-as$$(X_$(1)) +LLC_$(1)=$$(CFG_LLVM_INST_DIR_$(1))/bin/llc$$(X_$(1)) endef @@ -357,12 +367,12 @@ else HLIBRUSTC_DEFAULT$(1)_H_$(3) = \ $$(HLIB$(1)_H_$(3))/$(CFG_LIBRUSTC_$(3)) TLIBRUSTC_DEFAULT$(1)_T_$(2)_H_$(3) = \ - $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTC_$(3)) + $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTC_$(2)) endif # Preqrequisites for using the stageN compiler HSREQ$(1)_H_$(3) = \ - $$(HBIN$(1)_H_$(3))/rustc$$(X) \ + $$(HBIN$(1)_H_$(3))/rustc$$(X_$(3)) \ $$(HLIB$(1)_H_$(3))/$(CFG_RUNTIME_$(3)) \ $$(HLIB$(1)_H_$(3))/$(CFG_RUSTLLVM_$(3)) \ $$(HCORELIB_DEFAULT$(1)_H_$(3)) \ @@ -386,25 +396,25 @@ SREQ$(1)_T_$(2)_H_$(3) = \ # Prerequisites for a working stageN compiler and libraries, for a specific target CSREQ$(1)_T_$(2)_H_$(3) = \ $$(TSREQ$(1)_T_$(2)_H_$(3)) \ - $$(HBIN$(1)_H_$(3))/fuzzer$$(X) \ - $$(HBIN$(1)_H_$(3))/rustpkg$$(X) \ - $$(HBIN$(1)_H_$(3))/rustdoc$$(X) \ - $$(HBIN$(1)_H_$(3))/rusti$$(X) \ - $$(HBIN$(1)_H_$(3))/rust$$(X) \ + $$(HBIN$(1)_H_$(3))/fuzzer$$(X_$(3)) \ + $$(HBIN$(1)_H_$(3))/rustpkg$$(X_$(3)) \ + $$(HBIN$(1)_H_$(3))/rustdoc$$(X_$(3)) \ + $$(HBIN$(1)_H_$(3))/rusti$$(X_$(3)) \ + $$(HBIN$(1)_H_$(3))/rust$$(X_$(3)) \ $$(HLIB$(1)_H_$(3))/$(CFG_LIBFUZZER_$(3)) \ $$(HLIB$(1)_H_$(3))/$(CFG_LIBRUSTPKG_$(3)) \ $$(HLIB$(1)_H_$(3))/$(CFG_LIBRUSTDOC_$(3)) \ $$(HLIB$(1)_H_$(3))/$(CFG_LIBRUSTI_$(3)) \ $$(HLIB$(1)_H_$(3))/$(CFG_LIBRUST_$(3)) \ - $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_CORELIB_$(3)) \ - $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_STDLIB_$(3)) \ - $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBSYNTAX_$(3)) \ - $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTC_$(3)) \ - $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBFUZZER_$(3)) \ - $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTPKG_$(3)) \ - $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTDOC_$(3)) \ - $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTI_$(3)) \ - $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUST_$(3)) + $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_CORELIB_$(2)) \ + $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_STDLIB_$(2)) \ + $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBSYNTAX_$(2)) \ + $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTC_$(2)) \ + $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBFUZZER_$(2)) \ + $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTPKG_$(2)) \ + $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTDOC_$(2)) \ + $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTI_$(2)) \ + $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUST_$(2)) ifeq ($(1),0) # Don't run the the stage0 compiler under valgrind - that ship has sailed @@ -428,18 +438,20 @@ endif endif STAGE$(1)_T_$(2)_H_$(3) := \ - $$(Q)$$(call CFG_RUN_TARG,$(1), \ + $$(Q)$$(call CFG_RUN_TARG_$(3),$(1), \ $$(CFG_VALGRIND_COMPILE$(1)) \ - $$(HBIN$(1)_H_$(3))/rustc$$(X) \ + $$(HBIN$(1)_H_$(3))/rustc$$(X_$(3)) \ --cfg $$(CFGFLAG$(1)_T_$(2)_H_$(3)) \ - $$(CFG_RUSTC_FLAGS) $$(EXTRAFLAGS_STAGE$(1)) --target=$(2)) + $$(CFG_RUSTC_FLAGS) $$(EXTRAFLAGS_STAGE$(1)) --target=$(2)) \ + $$(RUSTC_FLAGS_$(2)) PERF_STAGE$(1)_T_$(2)_H_$(3) := \ - $$(Q)$$(call CFG_RUN_TARG,$(1), \ + $$(Q)$$(call CFG_RUN_TARG_$(3),$(1), \ $$(CFG_PERF_TOOL) \ - $$(HBIN$(1)_H_$(3))/rustc$$(X) \ + $$(HBIN$(1)_H_$(3))/rustc$$(X_$(3)) \ --cfg $$(CFGFLAG$(1)_T_$(2)_H_$(3)) \ - $$(CFG_RUSTC_FLAGS) $$(EXTRAFLAGS_STAGE$(1)) --target=$(2)) + $$(CFG_RUSTC_FLAGS) $$(EXTRAFLAGS_STAGE$(1)) --target=$(2)) \ + $$(RUSTC_FLAGS_$(2)) endef diff --git a/configure b/configure index 5e4ab2bfdb1..a1c6e686474 100755 --- a/configure +++ b/configure @@ -349,7 +349,8 @@ valopt llvm-root "" "set LLVM root" valopt build-triple "${DEFAULT_BUILD_TRIPLE}" "LLVM build triple" valopt host-triples "${CFG_BUILD_TRIPLE}" "LLVM host triples" valopt target-triples "${CFG_HOST_TRIPLES}" "LLVM target triples" -valopt android-ndk-path "" "Android NDK Standalone path" +valopt android-cross-path "/opt/ndk_standalone" "Android NDK standalone path" +valopt mingw32-cross-path "" "MinGW32 cross compiler path" # Validate Options step_msg "validating $CFG_SELF args" @@ -530,29 +531,44 @@ else CFG_C_COMPILER="gcc" fi -if [ ! -z "$CFG_ANDROID_NDK_PATH" ] -then - if [ ! -f $CFG_ANDROID_NDK_PATH/bin/arm-linux-androideabi-gcc ] - then - err "NDK $CFG_ANDROID_NDK_PATH/bin/arm-linux-androideabi-gcc not found" - fi - if [ ! -f $CFG_ANDROID_NDK_PATH/bin/arm-linux-androideabi-g++ ] - then - err "NDK $CFG_ANDROID_NDK_PATH/bin/arm-linux-androideabi-g++ not found" - fi - if [ ! -f $CFG_ANDROID_NDK_PATH/bin/arm-linux-androideabi-ar ] - then - err "NDK $CFG_ANDROID_NDK_PATH/bin/arm-linux-androideabi-ar not found" - fi - - CFG_CROSS_PREFIX_arm=$CFG_ANDROID_NDK_PATH"/bin/arm-linux-androideabi-" -fi - # a little post-processing of various config values CFG_PREFIX=${CFG_PREFIX%/} CFG_TARGET_TRIPLES="$(echo $CFG_TARGET_TRIPLES | tr ',' ' ')" +# copy host-triples to target-triples so that hosts are a subset of targets +V_TEMP="" +for i in $CFG_HOST_TRIPLES $CFG_TARGET_TRIPLES; +do + echo "$V_TEMP" | grep -qF $i || V_TEMP="$V_TEMP${V_TEMP:+ }$i" +done +CFG_TARGET_TRIPLES=$V_TEMP + +# check target-specific tool-chains +for i in $CFG_TARGET_TRIPLES +do + case $i in + arm-unknown-android) + + if [ ! -f $CFG_ANDROID_CROSS_PATH/bin/arm-linux-androideabi-gcc ] + then + err "NDK $CFG_ANDROID_CROSS_PATH/bin/arm-linux-androideabi-gcc not found" + fi + if [ ! -f $CFG_ANDROID_CROSS_PATH/bin/arm-linux-androideabi-g++ ] + then + err "NDK $CFG_ANDROID_CROSS_PATH/bin/arm-linux-androideabi-g++ not found" + fi + if [ ! -f $CFG_ANDROID_CROSS_PATH/bin/arm-linux-androideabi-ar ] + then + err "NDK $CFG_ANDROID_CROSS_PATH/bin/arm-linux-androideabi-ar not found" + fi + ;; + + *) + ;; + esac +done + if [ -z "$CFG_ENABLE_CLANG" -a -z "$CFG_GCC" ] then err "either clang or gcc is required" @@ -595,7 +611,7 @@ do make_dir rt/$t for i in \ isaac linenoise sync test arch/i386 arch/x86_64 arch/arm \ - libuv libuv/src + libuv libuv/src/ares libuv/src/eio libuv/src/ev do make_dir rt/$t/$i done @@ -603,6 +619,7 @@ done # On windows we just store the libraries in the bin directory because # there's no rpath +# FIXME: Thise needs to parameterized over target triples. Do it in platform.mk CFG_LIBDIR=lib if [ "$CFG_OSTYPE" = "pc-mingw32" ] then @@ -841,7 +858,8 @@ putvar CFG_TARGET_TRIPLES putvar CFG_C_COMPILER putvar CFG_LIBDIR putvar CFG_DISABLE_MANAGE_SUBMODULES -putvar CFG_CROSS_PREFIX_arm +putvar CFG_ANDROID_CROSS_PATH +putvar CFG_MINGW32_CROSS_PATH if [ ! -z "$CFG_ENABLE_PAX_FLAGS" ] then diff --git a/mk/clean.mk b/mk/clean.mk index ddee25443d2..30897eea457 100644 --- a/mk/clean.mk +++ b/mk/clean.mk @@ -62,13 +62,13 @@ clean-misc: define CLEAN_HOST_STAGE_N clean$(1)_H_$(2): - $(Q)rm -f $$(HBIN$(1)_H_$(2))/rustc$(X) - $(Q)rm -f $$(HBIN$(1)_H_$(2))/fuzzer$(X) - $(Q)rm -f $$(HBIN$(1)_H_$(2))/rustpkg$(X) - $(Q)rm -f $$(HBIN$(1)_H_$(2))/serializer$(X) - $(Q)rm -f $$(HBIN$(1)_H_$(2))/rustdoc$(X) - $(Q)rm -f $$(HBIN$(1)_H_$(2))/rusti$(X) - $(Q)rm -f $$(HBIN$(1)_H_$(2))/rust$(X) + $(Q)rm -f $$(HBIN$(1)_H_$(2))/rustc$(X_$(2)) + $(Q)rm -f $$(HBIN$(1)_H_$(2))/fuzzer$(X_$(2)) + $(Q)rm -f $$(HBIN$(1)_H_$(2))/rustpkg$(X_$(2)) + $(Q)rm -f $$(HBIN$(1)_H_$(2))/serializer$(X_$(2)) + $(Q)rm -f $$(HBIN$(1)_H_$(2))/rustdoc$(X_$(2)) + $(Q)rm -f $$(HBIN$(1)_H_$(2))/rusti$(X_$(2)) + $(Q)rm -f $$(HBIN$(1)_H_$(2))/rust$(X_$(2)) $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBFUZZER_$(2)) $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBRUSTPKG_$(2)) $(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_LIBRUSTDOC_$(2)) @@ -100,11 +100,13 @@ $(foreach host, $(CFG_HOST_TRIPLES), \ define CLEAN_TARGET_STAGE_N clean$(1)_T_$(2)_H_$(3): - $(Q)rm -f $$(TBIN$(1)_T_$(2)_H_$(3))/rustc$(X) - $(Q)rm -f $$(TBIN$(1)_T_$(2)_H_$(3))/fuzzer$(X) - $(Q)rm -f $$(TBIN$(1)_T_$(2)_H_$(3))/rustpkg$(X) - $(Q)rm -f $$(TBIN$(1)_T_$(2)_H_$(3))/serializer$(X) - $(Q)rm -f $$(TBIN$(1)_T_$(2)_H_$(3))/rustdoc$(X) + $(Q)rm -f $$(TBIN$(1)_T_$(2)_H_$(3))/rustc$(X_$(2)) + $(Q)rm -f $$(TBIN$(1)_T_$(2)_H_$(3))/fuzzer$(X_$(2)) + $(Q)rm -f $$(TBIN$(1)_T_$(2)_H_$(3))/rustpkg$(X_$(2)) + $(Q)rm -f $$(TBIN$(1)_T_$(2)_H_$(3))/serializer$(X_$(2)) + $(Q)rm -f $$(TBIN$(1)_T_$(2)_H_$(3))/rustdoc$(X_$(2)) + $(Q)rm -f $$(TBIN$(1)_T_$(2)_H_$(3))/rusti$(X_$(2)) + $(Q)rm -f $$(TBIN$(1)_T_$(2)_H_$(3))/rust$(X_$(2)) $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBFUZZER_$(2)) $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTPKG_$(2)) $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTDOC_$(2)) @@ -113,6 +115,8 @@ clean$(1)_T_$(2)_H_$(3): $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_STDLIB_$(2)) $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTC_$(2)) $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBSYNTAX_$(2)) + $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTI_$(2)) + $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUST_$(2)) $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CORELIB_GLOB_$(2)) $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(STDLIB_GLOB_$(2)) $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBRUSTC_GLOB_$(2)) @@ -120,6 +124,8 @@ clean$(1)_T_$(2)_H_$(3): $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBFUZZER_GLOB_$(2)) $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBRUSTPKG_GLOB_$(2)) $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBRUSTDOC_GLOB_$(2)) + $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBRUSTI_GLOB_$(2)) + $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(LIBRUST_GLOB_$(2)) $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_RUSTLLVM_$(2)) $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/libstd.rlib $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/libmorestack.a diff --git a/mk/docs.mk b/mk/docs.mk index db04fd8a92b..10d7c9b0301 100644 --- a/mk/docs.mk +++ b/mk/docs.mk @@ -171,7 +171,7 @@ ifeq ($(CFG_PANDOC),) else # The rustdoc executable -RUSTDOC = $(HBIN2_H_$(CFG_BUILD_TRIPLE))/rustdoc$(X) +RUSTDOC = $(HBIN2_H_$(CFG_BUILD_TRIPLE))/rustdoc$(X_$(CFG_BUILD_TRIPLE)) # The library documenting macro # $(1) - The output directory diff --git a/mk/host.mk b/mk/host.mk index 78ef16768f2..13a8a540117 100644 --- a/mk/host.mk +++ b/mk/host.mk @@ -21,49 +21,51 @@ define CP_HOST_STAGE_N # Host libraries and executables (stage$(2)/bin/rustc and its runtime needs) -$$(HBIN$(2)_H_$(4))/rustc$$(X): \ - $$(TBIN$(1)_T_$(4)_H_$(3))/rustc$$(X) \ - $$(HLIB$(2)_H_$(4))/$(CFG_RUNTIME_$(3)) \ - $$(HLIB$(2)_H_$(4))/$(CFG_RUSTLLVM_$(3)) \ - $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(3)) \ +# Note: $(3) and $(4) are both the same! + +$$(HBIN$(2)_H_$(4))/rustc$$(X_$(4)): \ + $$(TBIN$(1)_T_$(4)_H_$(3))/rustc$$(X_$(4)) \ + $$(HLIB$(2)_H_$(4))/$(CFG_RUNTIME_$(4)) \ + $$(HLIB$(2)_H_$(4))/$(CFG_RUSTLLVM_$(4)) \ + $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(4)) \ $$(HCORELIB_DEFAULT$(2)_H_$(4)) \ $$(HSTDLIB_DEFAULT$(2)_H_$(4)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ -$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(3)): \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTC_$(3)) \ - $$(HLIB$(2)_H_$(4))/$(CFG_LIBSYNTAX_$(3)) \ - $$(HLIB$(2)_H_$(4))/$(CFG_RUNTIME_$(3)) \ - $$(HLIB$(2)_H_$(4))/$(CFG_RUSTLLVM_$(3)) \ - $$(HCORELIB_DEFAULT$(2)_H_$(3)) \ - $$(HSTDLIB_DEFAULT$(2)_H_$(3)) +$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(4)): \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTC_$(4)) \ + $$(HLIB$(2)_H_$(4))/$(CFG_LIBSYNTAX_$(4)) \ + $$(HLIB$(2)_H_$(4))/$(CFG_RUNTIME_$(4)) \ + $$(HLIB$(2)_H_$(4))/$(CFG_RUSTLLVM_$(4)) \ + $$(HCORELIB_DEFAULT$(2)_H_$(4)) \ + $$(HSTDLIB_DEFAULT$(2)_H_$(4)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ - $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTC_GLOB_$(3)) \ - $(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTC_DSYM_GLOB_$(3))) \ + $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTC_GLOB_$(4)) \ + $(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTC_DSYM_GLOB_$(4))) \ $$(HLIB$(2)_H_$(4)) -$$(HLIB$(2)_H_$(4))/$(CFG_LIBSYNTAX_$(3)): \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBSYNTAX_$(3)) \ - $$(HLIB$(2)_H_$(4))/$(CFG_RUNTIME_$(3)) \ - $$(HLIB$(2)_H_$(4))/$(CFG_RUSTLLVM_$(3)) \ - $$(HCORELIB_DEFAULT$(2)_H_$(3)) \ - $$(HSTDLIB_DEFAULT$(2)_H_$(3)) +$$(HLIB$(2)_H_$(4))/$(CFG_LIBSYNTAX_$(4)): \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBSYNTAX_$(4)) \ + $$(HLIB$(2)_H_$(4))/$(CFG_RUNTIME_$(4)) \ + $$(HLIB$(2)_H_$(4))/$(CFG_RUSTLLVM_$(4)) \ + $$(HCORELIB_DEFAULT$(2)_H_$(4)) \ + $$(HSTDLIB_DEFAULT$(2)_H_$(4)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ - $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBSYNTAX_GLOB_$(3)) \ - $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBSYNTAX_DSYM_GLOB_$(3))) \ + $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBSYNTAX_GLOB_$(4)) \ + $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBSYNTAX_DSYM_GLOB_$(4))) \ $$(HLIB$(2)_H_$(4)) -$$(HLIB$(2)_H_$(4))/$(CFG_RUNTIME_$(3)): \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_RUNTIME_$(3)) +$$(HLIB$(2)_H_$(4))/$(CFG_RUNTIME_$(4)): \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_RUNTIME_$(4)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ -$$(HLIB$(2)_H_$(4))/$(CFG_CORELIB_$(3)): \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_CORELIB_$(3)) \ - $$(HLIB$(2)_H_$(4))/$(CFG_RUNTIME_$(3)) +$$(HLIB$(2)_H_$(4))/$(CFG_CORELIB_$(4)): \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_CORELIB_$(4)) \ + $$(HLIB$(2)_H_$(4))/$(CFG_RUNTIME_$(4)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ # Subtle: We do not let the shell expand $(CORELIB_DSYM_GLOB) directly rather @@ -73,30 +75,30 @@ $$(HLIB$(2)_H_$(4))/$(CFG_CORELIB_$(3)): \ # glob, and cp reports an error because libcore-*.dylib.dsym does not exist. # Make instead expands the glob to nothing, which gives us the correct behavior. # (Copy .dsym file if it exists, but do nothing otherwise) - $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(CORELIB_GLOB_$(3)) \ - $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(CORELIB_DSYM_GLOB_$(3))) \ + $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(CORELIB_GLOB_$(4)) \ + $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(CORELIB_DSYM_GLOB_$(4))) \ $$(HLIB$(2)_H_$(4)) -$$(HLIB$(2)_H_$(4))/$(CFG_STDLIB_$(3)): \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_STDLIB_$(3)) \ - $$(HLIB$(2)_H_$(4))/$(CFG_CORELIB_$(3)) \ - $$(HLIB$(2)_H_$(4))/$(CFG_RUNTIME_$(3)) +$$(HLIB$(2)_H_$(4))/$(CFG_STDLIB_$(4)): \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_STDLIB_$(4)) \ + $$(HLIB$(2)_H_$(4))/$(CFG_CORELIB_$(4)) \ + $$(HLIB$(2)_H_$(4))/$(CFG_RUNTIME_$(4)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ - $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(STDLIB_GLOB_$(3)) \ - $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(STDLIB_DSYM_GLOB_$(3))) \ + $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(STDLIB_GLOB_$(4)) \ + $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(STDLIB_DSYM_GLOB_$(4))) \ $$(HLIB$(2)_H_$(4)) $$(HLIB$(2)_H_$(4))/libcore.rlib: \ $$(TLIB$(1)_T_$(4)_H_$(3))/libcore.rlib \ - $$(HLIB$(2)_H_$(4))/$$(CFG_RUNTIME) + $$(HLIB$(2)_H_$(4))/$$(CFG_RUNTIME_$(4)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ $$(HLIB$(2)_H_$(4))/libstd.rlib: \ $$(TLIB$(1)_T_$(4)_H_$(3))/libstd.rlib \ $$(HLIB$(2)_H_$(4))/libcore.rlib \ - $$(HLIB$(2)_H_$(4))/$$(CFG_RUNTIME) + $$(HLIB$(2)_H_$(4))/$$(CFG_RUNTIME_$(4)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ @@ -104,12 +106,12 @@ $$(HLIB$(2)_H_$(4))/librustc.rlib: \ $$(TLIB$(1)_T_$(4)_H_$(3))/librustc.rlib \ $$(HLIB$(2)_H_$(4))/libcore.rlib \ $$(HLIB$(2)_H_$(4))/libstd.rlib \ - $$(HLIB$(2)_H_$(4))/$$(CFG_RUNTIME) + $$(HLIB$(2)_H_$(4))/$$(CFG_RUNTIME_$(4)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ -$$(HLIB$(2)_H_$(4))/$(CFG_RUSTLLVM_$(3)): \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_RUSTLLVM_$(3)) +$$(HLIB$(2)_H_$(4))/$(CFG_RUSTLLVM_$(4)): \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_RUSTLLVM_$(4)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ diff --git a/mk/install.mk b/mk/install.mk index 3045b99e496..24f311cd7d1 100644 --- a/mk/install.mk +++ b/mk/install.mk @@ -88,14 +88,14 @@ install-host: $(CSREQ$(ISTAGE)_T_$(CFG_BUILD_TRIPLE)_H_$(CFG_BUILD_TRIPLE)) $(Q)mkdir -p $(PREFIX_BIN) $(Q)mkdir -p $(PREFIX_LIB) $(Q)mkdir -p $(PREFIX_ROOT)/share/man/man1 - $(Q)$(call INSTALL,$(HB2),$(PHB),rustc$(X)) - $(Q)$(call INSTALL,$(HB2),$(PHB),rustpkg$(X)) - $(Q)$(call INSTALL,$(HB2),$(PHB),rustdoc$(X)) - $(Q)$(call INSTALL,$(HB2),$(PHB),rusti$(X)) - $(Q)$(call INSTALL,$(HB2),$(PHB),rust$(X)) + $(Q)$(call INSTALL,$(HB2),$(PHB),rustc$(X_$(CFG_BUILD_TRIPLE))) + $(Q)$(call INSTALL,$(HB2),$(PHB),rustpkg$(X_$(CFG_BUILD_TRIPLE))) + $(Q)$(call INSTALL,$(HB2),$(PHB),rustdoc$(X_$(CFG_BUILD_TRIPLE))) + $(Q)$(call INSTALL,$(HB2),$(PHB),rusti$(X_$(CFG_BUILD_TRIPLE))) + $(Q)$(call INSTALL,$(HB2),$(PHB),rust$(X_$(CFG_BUILD_TRIPLE))) $(Q)$(call INSTALL,$(HL),$(PHL),$(CFG_LIBRUSTC_$(CFG_BUILD_TRIPLE))) $(Q)$(call INSTALL,$(HL),$(PHL),$(CFG_LIBRUSTPKG_$(CFG_BUILD_TRIPLE))) - $(Q)$(call INSTALL,$(HL),$(PHL),$(CFG_LIBRUSTDOC_$(CFG_BUILD_TRIPLE)) + $(Q)$(call INSTALL,$(HL),$(PHL),$(CFG_LIBRUSTDOC_$(CFG_BUILD_TRIPLE))) $(Q)$(call INSTALL,$(HL),$(PHL),$(CFG_LIBRUSTI_$(CFG_BUILD_TRIPLE))) $(Q)$(call INSTALL,$(HL),$(PHL),$(CFG_LIBRUST_$(CFG_BUILD_TRIPLE))) $(Q)$(call INSTALL_LIB,$(HL),$(PHL),$(CORELIB_GLOB_$(CFG_BUILD_TRIPLE))) @@ -116,11 +116,11 @@ HOST_LIB_FROM_HL_GLOB = \ $(patsubst $(HL)/%,$(PHL)/%,$(wildcard $(HL)/$(1))) uninstall: - $(Q)rm -f $(PHB)/rustc$(X) - $(Q)rm -f $(PHB)/rustpkg$(X) - $(Q)rm -f $(PHB)/rusti$(X) - $(Q)rm -f $(PHB)/rust$(X) - $(Q)rm -f $(PHB)/rustdoc$(X) + $(Q)rm -f $(PHB)/rustc$(X_$(CFG_BUILD_TRIPLE)) + $(Q)rm -f $(PHB)/rustpkg$(X_$(CFG_BUILD_TRIPLE)) + $(Q)rm -f $(PHB)/rusti$(X_$(CFG_BUILD_TRIPLE)) + $(Q)rm -f $(PHB)/rust$(X_$(CFG_BUILD_TRIPLE)) + $(Q)rm -f $(PHB)/rustdoc$(X_$(CFG_BUILD_TRIPLE)) $(Q)rm -f $(PHL)/$(CFG_RUSTLLVM_$(CFG_BUILD_TRIPLE)) $(Q)rm -f $(PHL)/$(CFG_LIBRUSTPKG_$(CFG_BUILD_TRIPLE)) $(Q)rm -f $(PHL)/$(CFG_LIBRUSTC_$(CFG_BUILD_TRIPLE)) diff --git a/mk/perf.mk b/mk/perf.mk index 1997e0f4fe7..327f2ca31e0 100644 --- a/mk/perf.mk +++ b/mk/perf.mk @@ -10,16 +10,16 @@ ifdef CFG_PERF_TOOL -rustc-perf$(X): $(CFG_BUILD_TRIPLE)/stage2/bin/rustc$(X) +rustc-perf$(X): $(CFG_BUILD_TRIPLE)/stage2/bin/rustc$(X_$(CFG_BUILD_TRIPLE)) @$(call E, perf compile: $@) $(PERF_STAGE2_T_$(CFG_BUILD_TRIPLE)_H_$(CFG_BUILD_TRIPLE)) \ -o $@ $(COMPILER_CRATE) >rustc-perf.err 2>&1 $(Q)rm -f $(LIBRUSTC_GLOB) else -rustc-perf$(X): $(CFG_BUILD_TRIPLE)/stage2/bin/rustc$(X) +rustc-perf$(X): $(CFG_BUILD_TRIPLE)/stage2/bin/rustc$(X_$(CFG_BUILD_TRIPLE)) $(Q)touch $@ endif -perf: check-stage2-perf rustc-perf$(X) +perf: check-stage2-perf rustc-perf$(X_$(CFG_BUILD_TRIPLE)) $(Q)find $(CFG_BUILD_TRIPLE)/test/perf -name \*.err | xargs cat $(Q)cat rustc-perf.err diff --git a/mk/platform.mk b/mk/platform.mk index 3c2257d196a..2b5e4a0c5ae 100644 --- a/mk/platform.mk +++ b/mk/platform.mk @@ -48,7 +48,16 @@ CFG_GCCISH_PRE_LIB_FLAGS_x86_64-unknown-linux-gnu := -Wl,-whole-archive CFG_GCCISH_POST_LIB_FLAGS_x86_64-unknown-linux-gnu := -Wl,-no-whole-archive -Wl,-znoexecstack CFG_DEF_SUFFIX_x86_64-unknown-linux-gnu := .linux.def CFG_INSTALL_NAME_x86_64-unknown-linux-gnu = -CFG_GCCISH_CROSS_x86_64-unknown-linux-gnu = +CFG_LIBUV_LINK_FLAGS_x86_64-unknown-linux-gnu = +CFG_LLVM_BUILD_ENV_x86_64-unknown-linux-gnu="CXXFLAGS=-fno-omit-frame-pointer" +CFG_GCCISH_CROSS_PREFIX_x86_64-unknown-linux-gnu = +CFG_EXE_SUFFIX_x86_64-unknown-linux-gnu = +CFG_WINDOWSY_x86_64-unknown-linux-gnu := +CFG_LINUXY_x86_64-unknown-linux-gnu := 1 +CFG_PATH_MUNGE_x86_64-unknown-linux-gnu := true +CFG_LDPATH_x86_64-unknown-linux-gnu := +CFG_RUN_x86_64-unknown-linux-gnu=$(2) +CFG_RUN_TARG_x86_64-unknown-linux-gnu=$(call CFG_RUN_x86_64-unknown-linux-gnu,,$(2)) # x86_64-apple-darwin configuration CFG_LIB_NAME_x86_64-apple-darwin=lib$(1).dylib @@ -62,6 +71,14 @@ CFG_GCCISH_PRE_LIB_FLAGS_x86_64-apple-darwin := CFG_GCCISH_POST_LIB_FLAGS_x86_64-apple-darwin := CFG_DEF_SUFFIX_x86_64-apple-darwin := .darwin.def CFG_INSTALL_NAME_x86_64-apple-darwin = -Wl,-install_name,@rpath/$(1) +CFG_LIBUV_LINK_FLAGS_x86_64-apple-darwin = +CFG_EXE_SUFFIX_x86_64-apple-darwin := +CFG_WINDOWSY_x86_64-apple-darwin := +CFG_LINUXY_x86_64-apple-darwin := 1 +CFG_PATH_MUNGE_x86_64-apple-darwin := true +CFG_LDPATH_x86_64-apple-darwin := +CFG_RUN_x86_64-apple-darwin=$(2) +CFG_RUN_TARG_x86_64-apple-darwin=$(call CFG_RUN_x86_64-apple-darwin,,$(2)) # arm-unknown-android configuration CFG_LIB_NAME_arm-unknown-android=lib$(1).so @@ -75,7 +92,15 @@ CFG_GCCISH_PRE_LIB_FLAGS_arm-unknown-android := -Wl,-whole-archive CFG_GCCISH_POST_LIB_FLAGS_arm-unknown-android := -Wl,-no-whole-archive -Wl,-znoexecstack CFG_DEF_SUFFIX_arm-unknown-android := .android.def CFG_INSTALL_NAME_arm-unknown-android = -CFG_GCCISH_CROSS_arm-unknown-android = $(CFG_CROSS_PREFIX_arm) +CFG_LIBUV_LINK_FLAGS_arm-unknown-android = +CFG_GCCISH_CROSS_PREFIX_arm-unknown-android = $(CFG_ANDROID_CROSS_PATH)/bin/arm-linux-androideabi- +CFG_EXE_SUFFIX_arm-unknown-android := +CFG_WINDOWSY_arm-unknown-android := +CFG_LINUXY_arm-unknown-android := 1 +CFG_PATH_MUNGE_arm-unknown-android := true +CFG_LDPATH_arm-unknown-android := +CFG_RUN_arm-unknown-android= +CFG_RUN_TARG_arm-unknown-android= # i686-pc-mingw32 configuration CFG_LIB_NAME_i686-pc-mingw32=$(1).dll @@ -87,24 +112,46 @@ CFG_GCCISH_LINK_FLAGS_i686-pc-mingw32 := -shared -fPIC -g CFG_GCCISH_DEF_FLAG_i686-pc-mingw32 := CFG_GCCISH_PRE_LIB_FLAGS_i686-pc-mingw32 := CFG_GCCISH_POST_LIB_FLAGS_i686-pc-mingw32 := -CFG_DEF_SUFFIX_i686-pc-mingw32 := .def +CFG_DEF_SUFFIX_i686-pc-mingw32 := .mingw32.def CFG_INSTALL_NAME_i686-pc-mingw32 = -CFG_GCCISH_CROSS_i686-pc-mingw32 = +CFG_LIBUV_LINK_FLAGS_i686-pc-mingw32 := -lWs2_32 -lpsapi -liphlpapi +CFG_GCCISH_CROSS_PREFIX_i686-pc-mingw32 = +CFG_EXE_SUFFIX_i686-pc-mingw32 := .exe +CFG_WINDOWSY_i686-pc-mingw32 := 1 +CFG_LINUXY_i686-pc-mingw32 := +CFG_PATH_MUNGE_i686-pc-mingw32 := +CFG_LDPATH_i686-pc-mingw32 :=$(CFG_LDPATH_i686-pc-mingw32):$(PATH) +CFG_RUN_i686-pc-mingw32=PATH="$(CFG_LDPATH_i686-pc-mingw32):$(1)" $(2) +CFG_RUN_TARG_i686-pc-mingw32=$(call CFG_RUN_i686-pc-mingw32,$(HLIB$(1)_H_$(CFG_BUILD_TRIPLE)),$(2)) + +# i586-mingw32msvc configuration +CFG_LIB_NAME_i586-mingw32msvc=$(1).dll +CFG_LIB_GLOB_i586-mingw32msvc=$(1)-*.dll +CFG_LIB_DSYM_GLOB_i586-mingw32msvc=$(1)-*.dylib.dSYM +CFG_GCCISH_CFLAGS_i586-mingw32msvc := -Wall -Werror -g -march=586 -m32 +CFG_GCCISH_CXXFLAGS_i586-mingw32msvc := -fno-rtti +CFG_GCCISH_LINK_FLAGS_i586-mingw32msvc := -shared -g -m32 +CFG_GCCISH_DEF_FLAG_i586-mingw32msvc := +CFG_GCCISH_PRE_LIB_FLAGS_i586-mingw32msvc := +CFG_GCCISH_POST_LIB_FLAGS_i586-mingw32msvc := +CFG_DEF_SUFFIX_i586-mingw32msvc := .mingw32.def +CFG_INSTALL_NAME_i586-mingw32msvc = +CFG_LIBUV_LINK_FLAGS_i586-mingw32msvc := -lWs2_32 -lpsapi -liphlpapi +CFG_GCCISH_CROSS_PREFIX_i586-mingw32msvc = $(CFG_MIGW32_CROSS_PATH)/bin/i586-mingw32msvc- +CFG_EXE_SUFFIX_i586-mingw32msvc := .exe +CFG_WINDOWSY_i586-mingw32msvc := 1 +CFG_LINUXY_i586-mingw32msvc := +CFG_PATH_MUNGE_i586-mingw32msvc := $(strip perl -i.bak -p \ + -e 's@\\(\S)@/\1@go;' \ + -e 's@^/([a-zA-Z])/@\1:/@o;') +CFG_LDPATH_i586-mingw32msvc := +CFG_RUN_i586-mingw32msvc= +CFG_RUN_TARG_i586-mingw32msvc= # Hack: not sure how to test if a file exists in make other than this OS_SUPP = $(patsubst %,--suppressions=%,\ $(wildcard $(CFG_SRC_DIR)src/etc/$(CFG_OSTYPE).supp*)) -ifneq ($(findstring mingw,$(CFG_OSTYPE)),) - CFG_WINDOWSY := 1 -endif -ifneq ($(findstring linux,$(CFG_OSTYPE)),) - CFG_UNIXY := 1 -endif -ifneq ($(findstring darwin,$(CFG_OSTYPE)),) - CFG_UNIXY := 1 -endif - ifdef CFG_DISABLE_OPTIMIZE_CXX $(info cfg: disabling C++ optimization (CFG_DISABLE_OPTIMIZE_CXX)) CFG_GCCISH_CFLAGS += -O0 @@ -112,16 +159,18 @@ else CFG_GCCISH_CFLAGS += -O2 endif -CFG_TESTLIB=$(CFG_BUILD_DIR)/$(2)/$(strip \ - $(if $(findstring stage0,$(1)), \ - stage0/$(CFG_LIBDIR), \ - $(if $(findstring stage1,$(1)), \ - stage1/$(CFG_LIBDIR), \ - $(if $(findstring stage2,$(1)), \ - stage2/$(CFG_LIBDIR), \ - $(if $(findstring stage3,$(1)), \ - stage3/$(CFG_LIBDIR), \ - )))))/rustc/$(CFG_HOST_TRIPLE)/$(CFG_LIBDIR) +ifdef CFG_VALGRIND + CFG_VALGRIND += --error-exitcode=100 \ + --quiet \ + --suppressions=$(CFG_SRC_DIR)src/etc/x86.supp \ + $(OS_SUPP) + ifdef CFG_ENABLE_HELGRIND + CFG_VALGRIND += --tool=helgrind + else + CFG_VALGRIND += --tool=memcheck \ + --leak-check=full + endif +endif ifneq ($(findstring linux,$(CFG_OSTYPE)),) # -znoexecstack is here because librt is for some reason being created @@ -140,74 +189,6 @@ ifneq ($(findstring linux,$(CFG_OSTYPE)),) CFG_PERF_TOOL := /usr/bin/time --verbose endif endif - # Linux requires LLVM to be built like this to get backtraces into Rust code - CFG_LLVM_BUILD_ENV="CXXFLAGS=-fno-omit-frame-pointer" -endif - -ifdef CFG_UNIXY - CFG_INFO := $(info cfg: unix-y environment) - - CFG_PATH_MUNGE := true - CFG_EXE_SUFFIX := - CFG_LDPATH := - CFG_RUN=$(2) - CFG_RUN_TARG=$(call CFG_RUN,,$(2)) - CFG_RUN_TEST=$(call CFG_RUN,,$(CFG_VALGRIND) $(1)) - CFG_LIBUV_LINK_FLAGS= - - ifdef CFG_ENABLE_MINGW_CROSS - CFG_WINDOWSY := 1 - CFG_INFO := $(info cfg: mingw-cross) - CFG_GCCISH_CROSS := i586-mingw32msvc- - ifdef CFG_VALGRIND - CFG_VALGRIND += wine - endif - - CFG_GCCISH_CFLAGS := -march=i586 - CFG_GCCISH_PRE_LIB_FLAGS := - CFG_GCCISH_POST_LIB_FLAGS := - CFG_GCCISH_DEF_FLAG := - CFG_GCCISH_LINK_FLAGS := -shared - - ifeq ($(CFG_CPUTYPE), x86_64) - CFG_GCCISH_CFLAGS += -m32 - CFG_GCCISH_LINK_FLAGS += -m32 - endif - endif - ifdef CFG_VALGRIND - CFG_VALGRIND += --error-exitcode=100 \ - --quiet \ - --suppressions=$(CFG_SRC_DIR)src/etc/x86.supp \ - $(OS_SUPP) - ifdef CFG_ENABLE_HELGRIND - CFG_VALGRIND += --tool=helgrind - else - CFG_VALGRIND += --tool=memcheck \ - --leak-check=full - endif - endif -endif - -ifdef CFG_WINDOWSY - CFG_INFO := $(info cfg: windows-y environment) - - CFG_EXE_SUFFIX := .exe -ifdef MSYSTEM - CFG_LDPATH :=$(CFG_LDPATH):$$PATH - CFG_RUN=PATH="$(CFG_LDPATH):$(1)" $(2) -else - CFG_LDPATH := - CFG_RUN=$(2) -endif - CFG_RUN_TARG=$(call CFG_RUN,$(HLIB$(1)_H_$(CFG_HOST_TRIPLE)),$(2)) - CFG_RUN_TEST=$(call CFG_RUN,$(call CFG_TESTLIB,$(1),$(3)),$(1)) - CFG_LIBUV_LINK_FLAGS=-lWs2_32 -lpsapi -liphlpapi - - ifndef CFG_ENABLE_MINGW_CROSS - CFG_PATH_MUNGE := $(strip perl -i.bak -p \ - -e 's@\\(\S)@/\1@go;' \ - -e 's@^/([a-zA-Z])/@\1:/@o;') - endif endif CFG_INFO := $(info cfg: using $(CFG_C_COMPILER)) @@ -279,24 +260,24 @@ define CFG_MAKE_CC else - CFG_COMPILE_C_$(1) = $(CFG_GCCISH_CROSS_$(1))$$(CC) \ + CFG_COMPILE_C_$(1) = $(CFG_GCCISH_CROSS_PREFIX_$(1))$$(CC) \ $$(CFG_GCCISH_CFLAGS) \ $$(CFG_GCCISH_CFLAGS_$(1)) \ $$(CFG_DEPEND_FLAGS) \ -c -o $$(1) $$(2) - CFG_LINK_C_$(1) = $(CFG_GCCISH_CROSS_$(1))$$(CC) \ + CFG_LINK_C_$(1) = $(CFG_GCCISH_CROSS_PREFIX_$(1))$$(CC) \ $$(CFG_GCCISH_LINK_FLAGS) -o $$(1) \ $$(CFG_GCCISH_LINK_FLAGS_$(1))) \ $$(CFG_GCCISH_DEF_FLAG_$(1))$$(3) $$(2) \ $$(call CFG_INSTALL_NAME_$(1),$$(4)) - CFG_COMPILE_CXX_$(1) = $(CFG_GCCISH_CROSS_$(1))$$(CXX) \ + CFG_COMPILE_CXX_$(1) = $(CFG_GCCISH_CROSS_PREFIX_$(1))$$(CXX) \ $$(CFG_GCCISH_CFLAGS) \ $$(CFG_GCCISH_CXXFLAGS) \ $$(CFG_GCCISH_CFLAGS_$(1)) \ $$(CFG_GCCISH_CXXFLAGS_$(1)) \ $$(CFG_DEPEND_FLAGS) \ -c -o $$(1) $$(2) - CFG_LINK_CXX_$(1) = $(CFG_GCCISH_CROSS_$(1))$$(CXX) \ + CFG_LINK_CXX_$(1) = $(CFG_GCCISH_CROSS_PREFIX_$(1))$$(CXX) \ $$(CFG_GCCISH_LINK_FLAGS) -o $$(1) \ $$(CFG_GCCISH_LINK_FLAGS_$(1)) \ $$(CFG_GCCISH_DEF_FLAG_$(1))$$(3) $$(2) \ @@ -322,7 +303,7 @@ define CFG_MAKE_ASSEMBLER -o=$$(1) else - CFG_ASSEMBLE_$(1)=$(CFG_GCCISH_CROSS_$(1))$$(CPP) $$(CFG_DEPEND_FLAGS) $$(2) -c -o $$(1) + CFG_ASSEMBLE_$(1)=$(CFG_GCCISH_CROSS_PREFIX_$(1))$$(CPP) $$(CFG_DEPEND_FLAGS) $$(2) -c -o $$(1) endif diff --git a/mk/pp.mk b/mk/pp.mk index b2668f201af..c7f316bcfc7 100644 --- a/mk/pp.mk +++ b/mk/pp.mk @@ -29,7 +29,7 @@ endif reformat: $(SREQ1$(CFG_BUILD_TRIPLE)) @$(call E, reformat [stage1]: $@) for i in $(PP_INPUTS_FILTERED); \ - do $(call CFG_RUN_TARG,1,$(CFG_BUILD_TRIPLE)/stage1/rustc$(X)) \ + do $(call CFG_RUN_TARG_$(CFG_BUILD_TRIPLE),1,$(CFG_BUILD_TRIPLE)/stage1/rustc$(X_$(CFG_BUILD_TRIPLE))) \ --pretty normal $$i >$$i.tmp; \ if [ $$? -ne 0 ]; \ then echo failed to print $$i; rm $$i.tmp; \ diff --git a/mk/rt.mk b/mk/rt.mk index b7b70259719..9af3e0b07bc 100644 --- a/mk/rt.mk +++ b/mk/rt.mk @@ -83,16 +83,20 @@ RUNTIME_S_$(1) := rt/arch/$$(HOST_$(1))/_context.S \ rt/arch/$$(HOST_$(1))/ccall.S \ rt/arch/$$(HOST_$(1))/record_sp.S - -ifeq ($$(HOST_$(1)), arm) +ifeq ($$(CFG_WINDOWSY_$(1)), 1) + LIBUV_OSTYPE_$(1) := win LIBUV_LIB_$(1) := rt/$(1)/libuv/libuv.a -else ifeq ($$(CFG_WINDOWSY), 1) +else ifeq ($(CFG_OSTYPE_$(1)), apple-darwin) + LIBUV_OSTYPE_$(1) := mac LIBUV_LIB_$(1) := rt/$(1)/libuv/libuv.a -else ifeq ($(CFG_OSTYPE), apple-darwin) +else ifeq ($(CFG_OSTYPE_$(1)), unknown-freebsd) + LIBUV_OSTYPE_$(1) := unix/freebsd LIBUV_LIB_$(1) := rt/$(1)/libuv/libuv.a -else ifeq ($(CFG_OSTYPE), unknown-freebsd) +else ifeq ($(CFG_OSTYPE_$(1)), unknown-android) + LIBUV_OSTYPE_$(1) := unix/android LIBUV_LIB_$(1) := rt/$(1)/libuv/libuv.a else + LIBUV_OSTYPE_$(1) := unix/linux LIBUV_LIB_$(1) := rt/$(1)/libuv/libuv.a endif @@ -136,7 +140,7 @@ rt/$(1)/$(CFG_RUNTIME_$(1)): $$(RUNTIME_OBJS_$(1)) $$(MKFILE_DEPS) \ @$$(call E, link: $$@) $$(Q)$$(call CFG_LINK_CXX_$(1),$$@, $$(RUNTIME_OBJS_$(1)) \ $$(CFG_GCCISH_POST_LIB_FLAGS_$(1)) $$(RUNTIME_LIBS_$(1)) \ - $$(CFG_LIBUV_LINK_FLAGS),$$(RUNTIME_DEF_$(1)),$$(CFG_RUNTIME_$(1))) + $$(CFG_LIBUV_LINK_FLAGS_$(1)),$$(RUNTIME_DEF_$(1)),$$(CFG_RUNTIME_$(1))) # FIXME: For some reason libuv's makefiles can't figure out the # correct definition of CC on the mingw I'm using, so we are @@ -153,25 +157,24 @@ LIBUV_DEPS := $$(wildcard \ $$(S)src/libuv/*/*/*/*) endif -ifdef CFG_WINDOWSY +ifdef CFG_WINDOWSY_$(1) $$(LIBUV_LIB_$(1)): $$(LIBUV_DEPS) $$(Q)$$(MAKE) -C $$(S)src/libuv/ \ builddir_name="$$(CFG_BUILD_DIR)/rt/$(1)/libuv" \ OS=mingw \ V=$$(VERBOSE) -else -ifeq ($$(HOST_$(1)), arm) +else ifeq ($(CFG_OSTYPE_$(1)), unknown-android) $$(LIBUV_LIB_$(1)): $$(LIBUV_DEPS) $$(Q)$$(MAKE) -C $$(S)src/libuv/ \ CFLAGS="$$(LIBUV_FLAGS_$$(HOST_$(1))) $$(SNAP_DEFINES)" \ LDFLAGS="$$(LIBUV_FLAGS_$$(HOST_$(1)))" \ - CC="$$(CFG_GCCISH_CROSS_$(1))$$(CC)" \ - CXX="$$(CFG_GCCISH_CROSS_$(1))$$(CXX)" \ - AR="$$(CFG_CROSS_PREFIX_arm)$$(AR)" \ + CC="$$(CFG_GCCISH_CROSS_PREFIX_$(1))$$(CC)" \ + CXX="$$(CFG_GCCISH_CROSS_PREFIX_$(1))$$(CXX)" \ + AR="$$(CFG_GCCISH_CROSS_PREFIX_$(1))$$(AR)" \ BUILDTYPE=Release \ builddir_name="$$(CFG_BUILD_DIR)/rt/$(1)/libuv" \ host=android OS=linux \ - V=$$(VERBOSE) + V=$$(VERBOSE) else $$(LIBUV_LIB_$(1)): $$(LIBUV_DEPS) $$(Q)$$(MAKE) -C $$(S)src/libuv/ \ @@ -179,7 +182,6 @@ $$(LIBUV_LIB_$(1)): $$(LIBUV_DEPS) builddir_name="$$(CFG_BUILD_DIR)/rt/$(1)/libuv" \ V=$$(VERBOSE) endif -endif # These could go in rt.mk or rustllvm.mk, they're needed for both. @@ -197,23 +199,21 @@ endif $$(Q)sed 's/.$$$$/&;/' $$< >> $$@ $$(Q)echo "};" >> $$@ +%.darwin.def: %.def.in $$(MKFILE_DEPS) + @$$(call E, def: $$@) + $$(Q)sed 's/^./_&/' $$< > $$@ + %.android.def: %.def.in $$(MKFILE_DEPS) @$$(call E, def: $$@) $$(Q)echo "{" > $$@ $$(Q)sed 's/.$$$$/&;/' $$< >> $$@ $$(Q)echo "};" >> $$@ -%.darwin.def: %.def.in $$(MKFILE_DEPS) - @$$(call E, def: $$@) - $$(Q)sed 's/^./_&/' $$< > $$@ - -ifdef CFG_WINDOWSY -%.def: %.def.in $$(MKFILE_DEPS) +%.mingw32.def: %.def.in $$(MKFILE_DEPS) @$$(call E, def: $$@) $$(Q)echo LIBRARY $$* > $$@ $$(Q)echo EXPORTS >> $$@ $$(Q)sed 's/^./ &/' $$< >> $$@ -endif endef diff --git a/mk/rustllvm.mk b/mk/rustllvm.mk index 569efda41b3..f1ce4445c61 100644 --- a/mk/rustllvm.mk +++ b/mk/rustllvm.mk @@ -17,7 +17,7 @@ define DEF_RUSTLLVM_TARGETS # FIXME: Lately, on windows, llvm-config --includedir is not enough # to find the llvm includes (probably because we're not actually installing # llvm, but using it straight out of the build directory) -ifdef CFG_WINDOWSY +ifdef CFG_WINDOWSY_$(1) LLVM_EXTRA_INCDIRS_$(1)= -iquote $(S)src/llvm/include \ -iquote llvm/$(1)/include endif diff --git a/mk/stage0.mk b/mk/stage0.mk index 528bb0734eb..7b5cbef1d72 100644 --- a/mk/stage0.mk +++ b/mk/stage0.mk @@ -2,7 +2,7 @@ -$(HBIN0_H_$(CFG_BUILD_TRIPLE))/rustc$(X): \ +$(HBIN0_H_$(CFG_BUILD_TRIPLE))/rustc$(X_$(CFG_BUILD_TRIPLE)): \ $(S)src/snapshots.txt \ $(S)src/etc/get-snapshot.py $(MKFILE_DEPS) @$(call E, fetch: $@) @@ -22,23 +22,23 @@ endif # Host libs will be extracted by the above rule $(HLIB0_H_$(CFG_BUILD_TRIPLE))/$(CFG_RUNTIME_$(CFG_BUILD_TRIPLE)): \ - $(HBIN0_H_$(CFG_BUILD_TRIPLE))/rustc$(X) + $(HBIN0_H_$(CFG_BUILD_TRIPLE))/rustc$(X_$(CFG_BUILD_TRIPLE)) $(Q)touch $@ $(HLIB0_H_$(CFG_BUILD_TRIPLE))/$(CFG_CORELIB_$(CFG_BUILD_TRIPLE)): \ - $(HBIN0_H_$(CFG_BUILD_TRIPLE))/rustc$(X) + $(HBIN0_H_$(CFG_BUILD_TRIPLE))/rustc$(X_$(CFG_BUILD_TRIPLE)) $(Q)touch $@ $(HLIB0_H_$(CFG_BUILD_TRIPLE))/$(CFG_STDLIB_$(CFG_BUILD_TRIPLE)): \ - $(HBIN0_H_$(CFG_BUILD_TRIPLE))/rustc$(X) + $(HBIN0_H_$(CFG_BUILD_TRIPLE))/rustc$(X_$(CFG_BUILD_TRIPLE)) $(Q)touch $@ $(HLIB0_H_$(CFG_BUILD_TRIPLE))/$(CFG_LIBRUSTC_$(CFG_BUILD_TRIPLE)): \ - $(HBIN0_H_$(CFG_BUILD_TRIPLE))/rustc$(X) + $(HBIN0_H_$(CFG_BUILD_TRIPLE))/rustc$(X_$(CFG_BUILD_TRIPLE)) $(Q)touch $@ $(HLIB0_H_$(CFG_BUILD_TRIPLE))/$(CFG_RUSTLLVM_$(CFG_BUILD_TRIPLE)): \ - $(HBIN0_H_$(CFG_BUILD_TRIPLE))/rustc$(X) + $(HBIN0_H_$(CFG_BUILD_TRIPLE))/rustc$(X_$(CFG_BUILD_TRIPLE)) $(Q)touch $@ # For other targets, let the host build the target: @@ -48,33 +48,33 @@ define BOOTSTRAP_STAGE0 # $(2) stage to bootstrap from # $(3) target to bootstrap from -$$(HBIN0_H_$(1))/rustc$$(X): \ - $$(TBIN$(2)_T_$(1)_H_$(3))/rustc$$(X) +$$(HBIN0_H_$(1))/rustc$$(X_$(1)): \ + $$(TBIN$(2)_T_$(1)_H_$(3))/rustc$$(X_$(1)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ -$$(HLIB0_H_$(1))/$(CFG_RUNTIME_$(4)): \ - $$(TLIB$(2)_T_$(1)_H_$(3))/$(CFG_RUNTIME_$(4)) +$$(HLIB0_H_$(1))/$(CFG_RUNTIME_$(1)): \ + $$(TLIB$(2)_T_$(1)_H_$(3))/$(CFG_RUNTIME_$(1)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ -$$(HLIB0_H_$(1))/$(CFG_CORELIB_$(4)): \ - $$(TLIB$(2)_T_$(1)_H_$(3))/$(CFG_CORELIB_$(4)) +$$(HLIB0_H_$(1))/$(CFG_CORELIB_$(1)): \ + $$(TLIB$(2)_T_$(1)_H_$(3))/$(CFG_CORELIB_$(1)) @$$(call E, cp: $$@) - $$(Q)cp $$(TLIB$(2)_T_$(1)_H_$(3))/$(CORELIB_GLOB_$(4)) $$@ + $$(Q)cp $$(TLIB$(2)_T_$(1)_H_$(3))/$(CORELIB_GLOB_$(1)) $$@ -$$(HLIB0_H_$(1))/$(CFG_STDLIB_$(4)): \ - $$(TLIB$(2)_T_$(1)_H_$(3))/$(CFG_STDLIB_$(4)) +$$(HLIB0_H_$(1))/$(CFG_STDLIB_$(1)): \ + $$(TLIB$(2)_T_$(1)_H_$(3))/$(CFG_STDLIB_$(1)) @$$(call E, cp: $$@) - $$(Q)cp $$(TLIB$(2)_T_$(1)_H_$(3))/$(STDLIB_GLOB_$(4)) $$@ + $$(Q)cp $$(TLIB$(2)_T_$(1)_H_$(3))/$(STDLIB_GLOB_$(1)) $$@ -$$(HLIB0_H_$(1))/$(CFG_LIBRUSTC_$(4)): \ - $$(TLIB$(2)_T_$(1)_H_$(3))/$(CFG_LIBRUSTC_$(4)) +$$(HLIB0_H_$(1))/$(CFG_LIBRUSTC_$(1)): \ + $$(TLIB$(2)_T_$(1)_H_$(3))/$(CFG_LIBRUSTC_$(1)) @$$(call E, cp: $$@) - $$(Q)cp $$(TLIB$(2)_T_$(1)_H_$(3))/$(LIBRUSTC_GLOB_$(4)) $$@ + $$(Q)cp $$(TLIB$(2)_T_$(1)_H_$(3))/$(LIBRUSTC_GLOB_$(1)) $$@ -$$(HLIB0_H_$(1))/$(CFG_RUSTLLVM_$(4)): \ - $$(TLIB$(2)_T_$(1)_H_$(3))/$(CFG_RUSTLLVM_$(4)) +$$(HLIB0_H_$(1))/$(CFG_RUSTLLVM_$(1)): \ + $$(TLIB$(2)_T_$(1)_H_$(3))/$(CFG_RUSTLLVM_$(1)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ diff --git a/mk/target.mk b/mk/target.mk index 8401f8b9941..fba1a6e0ee5 100644 --- a/mk/target.mk +++ b/mk/target.mk @@ -63,7 +63,7 @@ $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTC_$(3)): \ @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$< && touch $$@ -$$(TBIN$(1)_T_$(2)_H_$(3))/rustc$$(X): \ +$$(TBIN$(1)_T_$(2)_H_$(3))/rustc$$(X_$(3)): \ $$(DRIVER_CRATE) \ $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTC_$(3)) @$$(call E, compile_and_link: $$@) diff --git a/mk/tests.mk b/mk/tests.mk index b1dad343bf3..c1852f52724 100644 --- a/mk/tests.mk +++ b/mk/tests.mk @@ -50,13 +50,6 @@ ifdef VERBOSE CTEST_TESTARGS += --verbose endif -# Run the compiletest runner itself under valgrind -ifdef CTEST_VALGRIND - CFG_RUN_CTEST=$(call CFG_RUN_TEST,$(2),$(3)) -else - CFG_RUN_CTEST=$(call CFG_RUN,$(TLIB$(1)_T_$(3)_H_$(3)),$(2)) -endif - # If we're running perf then set this environment variable # to put the benchmarks into 'hard mode' ifeq ($(MAKECMDGOALS),perf) @@ -67,6 +60,39 @@ endif TEST_LOG_FILE=tmp/check-stage$(1)-T-$(2)-H-$(3)-$(4).log TEST_OK_FILE=tmp/check-stage$(1)-T-$(2)-H-$(3)-$(4).ok +define DEF_TARGET_COMMANDS + +ifdef CFG_UNIXY_$(1) + CFG_RUN_TEST_$(1)=$$(call CFG_RUN_$(1),,$$(CFG_VALGRIND) $$(1)) +endif + +ifdef CFG_WINDOWSY_$(1) + CFG_TESTLIB_$(1)=$$(CFG_BUILD_DIR)/$$(2)/$$(strip \ + $$(if $$(findstring stage0,$$(1)), \ + stage0/$$(CFG_LIBDIR), \ + $$(if $$(findstring stage1,$$(1)), \ + stage1/$$(CFG_LIBDIR), \ + $$(if $$(findstring stage2,$$(1)), \ + stage2/$$(CFG_LIBDIR), \ + $$(if $$(findstring stage3,$$(1)), \ + stage3/$$(CFG_LIBDIR), \ + )))))/rustc/$$(CFG_BUILD_TRIPLE)/$$(CFG_LIBDIR) + CFG_RUN_TEST_$(1)=$$(call CFG_RUN_$(1),$$(call CFG_TESTLIB_$(1),$$(1),$$(3)),$$(1)) +endif + +# Run the compiletest runner itself under valgrind +ifdef CTEST_VALGRIND +CFG_RUN_CTEST_$(1)=$$(call CFG_RUN_TEST_$$(CFG_BUILD_TRIPLE),$$(2),$$(3)) +else +CFG_RUN_CTEST_$(1)=$$(call CFG_RUN_$$(CFG_BUILD_TRIPLE),$$(TLIB$$(1)_T_$$(3)_H_$$(3)),$$(2)) +endif + +endef + +$(foreach target,$(CFG_TARGET_TRIPLES), \ + $(eval $(call DEF_TARGET_COMMANDS,$(target)))) + + ###################################################################### # Main test targets ###################################################################### @@ -218,50 +244,50 @@ $(foreach host,$(CFG_HOST_TRIPLES), \ define TEST_RUNNER -$(3)/test/coretest.stage$(1)-$(2)$$(X): \ +$(3)/test/coretest.stage$(1)-$(2)$$(X_$(2)): \ $$(CORELIB_CRATE) $$(CORELIB_INPUTS) \ $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_STDLIB_$(2)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$< --test -$(3)/test/stdtest.stage$(1)-$(2)$$(X): \ +$(3)/test/stdtest.stage$(1)-$(2)$$(X_$(2)): \ $$(STDLIB_CRATE) $$(STDLIB_INPUTS) \ $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_STDLIB_$(2)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$< --test -$(3)/test/syntaxtest.stage$(1)-$(2)$$(X): \ +$(3)/test/syntaxtest.stage$(1)-$(2)$$(X_$(2)): \ $$(LIBSYNTAX_CRATE) $$(LIBSYNTAX_INPUTS) \ $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_STDLIB_$(2)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$< --test -$(3)/test/rustctest.stage$(1)-$(2)$$(X): \ +$(3)/test/rustctest.stage$(1)-$(2)$$(X_$(2)): \ $$(COMPILER_CRATE) $$(COMPILER_INPUTS) \ $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_RUSTLLVM_$(2)) \ $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBSYNTAX_$(2)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$< --test -$(3)/test/rustpkgtest.stage$(1)-$(2)$$(X): \ +$(3)/test/rustpkgtest.stage$(1)-$(2)$$(X_$(2)): \ $$(RUSTPKG_LIB) $$(RUSTPKG_INPUTS) \ $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBRUSTC_$(2)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$< --test -$(3)/test/rustitest.stage$(1)-$(2)$$(X): \ +$(3)/test/rustitest.stage$(1)-$(2)$$(X_$(2)): \ $$(RUSTI_LIB) $$(RUSTI_INPUTS) \ $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBRUSTC_$(2)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$< --test -$(3)/test/rusttest.stage$(1)-$(2)$$(X): \ +$(3)/test/rusttest.stage$(1)-$(2)$$(X_$(2)): \ $$(RUST_LIB) $$(RUST_INPUTS) \ $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBRUSTC_$(2)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$< --test -$(3)/test/rustdoctest.stage$(1)-$(2)$$(X): \ +$(3)/test/rustdoctest.stage$(1)-$(2)$$(X_$(2)): \ $$(RUSTDOC_LIB) $$(RUSTDOC_INPUTS) \ $$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBRUSTC_$(2)) @$$(call E, compile_and_link: $$@) @@ -278,9 +304,9 @@ define DEF_TEST_CRATE_RULES check-stage$(1)-T-$(2)-H-$(3)-$(4)-exec: $$(call TEST_OK_FILE,$(1),$(2),$(3),$(4)) $$(call TEST_OK_FILE,$(1),$(2),$(3),$(4)): \ - $(3)/test/$(4)test.stage$(1)-$(2)$$(X) + $(3)/test/$(4)test.stage$(1)-$(2)$$(X_$(2)) @$$(call E, run: $$<) - $$(Q)$$(call CFG_RUN_TEST,$$<,$(2),$(3)) $$(TESTARGS) \ + $$(Q)$$(call CFG_RUN_TEST_$(2),$$<,$(2),$(3)) $$(TESTARGS) \ --logfile $$(call TEST_LOG_FILE,$(1),$(2),$(3),$(4)) \ && touch $$@ endef @@ -371,7 +397,7 @@ define DEF_CTEST_VARS # Prerequisites for compiletest tests TEST_SREQ$(1)_T_$(2)_H_$(3) = \ - $$(HBIN$(1)_H_$(3))/compiletest$$(X) \ + $$(HBIN$(1)_H_$(3))/compiletest$$(X_$(3)) \ $$(SREQ$(1)_T_$(2)_H_$(3)) # Rules for the cfail/rfail/rpass/bench/perf test runner @@ -379,7 +405,7 @@ TEST_SREQ$(1)_T_$(2)_H_$(3) = \ CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3) := \ --compile-lib-path $$(HLIB$(1)_H_$(3)) \ --run-lib-path $$(TLIB$(1)_T_$(2)_H_$(3)) \ - --rustc-path $$(HBIN$(1)_H_$(3))/rustc$$(X) \ + --rustc-path $$(HBIN$(1)_H_$(3))/rustc$$(X_$(3)) \ --aux-base $$(S)src/test/auxiliary/ \ --stage-id stage$(1)-$(2) \ --rustcflags "$$(CFG_RUSTC_FLAGS) --target=$(2)" \ @@ -417,7 +443,7 @@ $$(call TEST_OK_FILE,$(1),$(2),$(3),$(4)): \ $$(TEST_SREQ$(1)_T_$(2)_H_$(3)) \ $$(CTEST_DEPS_$(4)_$(1)-T-$(2)-H-$(3)) @$$(call E, run $(4): $$<) - $$(Q)$$(call CFG_RUN_CTEST,$(1),$$<,$(3)) \ + $$(Q)$$(call CFG_RUN_CTEST_$(2),$(1),$$<,$(3)) \ $$(CTEST_ARGS$(1)-T-$(2)-H-$(3)-$(4)) \ --logfile $$(call TEST_LOG_FILE,$(1),$(2),$(3),$(4)) \ && touch $$@ @@ -469,7 +495,7 @@ $$(call TEST_OK_FILE,$(1),$(2),$(3),$(4)): \ $$(TEST_SREQ$(1)_T_$(2)_H_$(3)) \ $$(PRETTY_DEPS_$(4)) @$$(call E, run pretty-rpass: $$<) - $$(Q)$$(call CFG_RUN_CTEST,$(1),$$<,$(3)) \ + $$(Q)$$(call CFG_RUN_CTEST_$(2),$(1),$$<,$(3)) \ $$(PRETTY_ARGS$(1)-T-$(2)-H-$(3)-$(4)) \ --logfile $$(call TEST_LOG_FILE,$(1),$(2),$(3),$(4)) \ && touch $$@ @@ -496,7 +522,7 @@ $$(call TEST_OK_FILE,$(1),$(2),$(3),doc-$(4)): \ $$(TEST_SREQ$(1)_T_$(2)_H_$(3)) \ doc-$(4)-extract$(3) @$$(call E, run doc-$(4): $$<) - $$(Q)$$(call CFG_RUN_CTEST,$(1),$$<,$(3)) \ + $$(Q)$$(call CFG_RUN_CTEST_$(2),$(1),$$<,$(3)) \ $$(DOC_TEST_ARGS$(1)-T-$(2)-H-$(3)-doc-$(4)) \ --logfile $$(call TEST_LOG_FILE,$(1),$(2),$(3),doc-$(4)) \ && touch $$@ @@ -575,7 +601,7 @@ $(foreach stage,$(STAGES), \ define DEF_CHECK_FOR_STAGE check-stage$(1): check-stage$(1)-H-$$(CFG_BUILD_TRIPLE) -check-stage$(1)-H-all: $$(foreach target,$$(CFG_HOST_TRIPLES), \ +check-stage$(1)-H-all: $$(foreach target,$$(CFG_TARGET_TRIPLES), \ check-stage$(1)-H-$$(target)) endef @@ -584,7 +610,7 @@ $(foreach stage,$(STAGES), \ define DEF_CHECK_FOR_STAGE_AND_GROUP check-stage$(1)-$(2): check-stage$(1)-H-$$(CFG_BUILD_TRIPLE)-$(2) -check-stage$(1)-H-all-$(2): $$(foreach target,$$(CFG_HOST_TRIPLES), \ +check-stage$(1)-H-all-$(2): $$(foreach target,$$(CFG_TARGET_TRIPLES), \ check-stage$(1)-H-$$(target)-$(2)) endef @@ -594,7 +620,7 @@ $(foreach stage,$(STAGES), \ define DEF_CHECK_FOR_STAGE_AND_HOSTS -check-stage$(1)-H-$(2): $$(foreach target,$$(CFG_HOST_TRIPLES), \ +check-stage$(1)-H-$(2): $$(foreach target,$$(CFG_TARGET_TRIPLES), \ check-stage$(1)-T-$$(target)-H-$(2)) endef @@ -603,7 +629,7 @@ $(foreach stage,$(STAGES), \ $(eval $(call DEF_CHECK_FOR_STAGE_AND_HOSTS,$(stage),$(host))))) define DEF_CHECK_FOR_STAGE_AND_HOSTS_AND_GROUP -check-stage$(1)-H-$(2)-$(3): $$(foreach target,$$(CFG_HOST_TRIPLES), \ +check-stage$(1)-H-$(2)-$(3): $$(foreach target,$$(CFG_TARGET_TRIPLES), \ check-stage$(1)-T-$$(target)-H-$(2)-$(3)) endef @@ -617,7 +643,7 @@ $(foreach stage,$(STAGES), \ ###################################################################### FT := run_pass_stage2 -FT_LIB := $(call CFG_LIB_NAME,$(FT)) +FT_LIB := $(call CFG_LIB_NAME_$(CFG_BUILD_TRIPLE),$(FT)) FT_DRIVER := $(FT)_driver GENERATED += tmp/$(FT).rc tmp/$(FT_DRIVER).rs @@ -639,7 +665,7 @@ $$(TLIB2_T_$(2)_H_$(3))/$$(FT_LIB): \ @$$(call E, compile_and_link: $$@) $$(STAGE2_T_$(2)_H_$(3)) --lib -o $$@ $$< -$(3)/test/$$(FT_DRIVER)-$(2)$$(X): \ +$(3)/test/$$(FT_DRIVER)-$(2)$$(X_$(2)): \ tmp/$$(FT_DRIVER).rs \ $$(TLIB2_T_$(2)_H_$(3))/$$(FT_LIB) \ $$(SREQ2_T_$(2)_H_$(3)) @@ -647,9 +673,9 @@ $(3)/test/$$(FT_DRIVER)-$(2)$$(X): \ $$(STAGE2_T_$(2)_H_$(3)) -o $$@ $$< $(3)/test/$$(FT_DRIVER)-$(2).out: \ - $(3)/test/$$(FT_DRIVER)-$(2)$$(X) \ + $(3)/test/$$(FT_DRIVER)-$(2)$$(X_$(2)) \ $$(SREQ2_T_$(2)_H_$(3)) - $$(Q)$$(call CFG_RUN_TEST,$$<,$(2),$(3)) \ + $$(Q)$$(call CFG_RUN_TEST_$(2),$$<,$(2),$(3)) \ --logfile tmp/$$(FT_DRIVER)-$(2).log check-fast-T-$(2)-H-$(3): \ diff --git a/mk/tools.mk b/mk/tools.mk index 4ed1a5db217..f2bc23633ae 100644 --- a/mk/tools.mk +++ b/mk/tools.mk @@ -38,86 +38,86 @@ RUST_INPUTS := $(wildcard $(S)src/librust/*.rs) # have tools that need to built for other targets. define TOOLS_STAGE_N_TARGET -$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBFUZZER_$(3)): \ +$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBFUZZER_$(4)): \ $$(FUZZER_LIB) $$(FUZZER_INPUTS) \ $$(TSREQ$(1)_T_$(4)_H_$(3)) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_CORELIB_$(3)) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_STDLIB_$(3)) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTC_$(3)) + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_CORELIB_$(4)) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_STDLIB_$(4)) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTC_$(4)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$< && touch $$@ -$$(TBIN$(1)_T_$(4)_H_$(3))/fuzzer$$(X): \ +$$(TBIN$(1)_T_$(4)_H_$(3))/fuzzer$$(X_$(4)): \ $$(DRIVER_CRATE) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBFUZZER_$(3)) + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBFUZZER_$(4)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(4)_H_$(3)) --cfg fuzzer -o $$@ $$< -$$(TBIN$(1)_T_$(4)_H_$(3))/compiletest$$(X): \ +$$(TBIN$(1)_T_$(4)_H_$(3))/compiletest$$(X_$(4)): \ $$(COMPILETEST_CRATE) $$(COMPILETEST_INPUTS) \ $$(TSREQ$(1)_T_$(4)_H_$(3)) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_CORELIB_$(3)) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_STDLIB_$(3)) + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_CORELIB_$(4)) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_STDLIB_$(4)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$< -$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTPKG_$(3)): \ +$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTPKG_$(4)): \ $$(RUSTPKG_LIB) $$(RUSTPKG_INPUTS) \ $$(TSREQ$(1)_T_$(4)_H_$(3)) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_CORELIB_$(3)) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_STDLIB_$(3)) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTC_$(3)) + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_CORELIB_$(4)) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_STDLIB_$(4)) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTC_$(4)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$< && touch $$@ -$$(TBIN$(1)_T_$(4)_H_$(3))/rustpkg$$(X): \ +$$(TBIN$(1)_T_$(4)_H_$(3))/rustpkg$$(X_$(4)): \ $$(DRIVER_CRATE) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTPKG_$(3)) + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTPKG_$(4)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(4)_H_$(3)) --cfg rustpkg -o $$@ $$< -$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTDOC_$(3)): \ +$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTDOC_$(4)): \ $$(RUSTDOC_LIB) $$(RUSTDOC_INPUTS) \ $$(TSREQ$(1)_T_$(4)_H_$(3)) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_CORELIB_$(3)) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_STDLIB_$(3)) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTC_$(3)) + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_CORELIB_$(4)) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_STDLIB_$(4)) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTC_$(4)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$< && touch $$@ -$$(TBIN$(1)_T_$(4)_H_$(3))/rustdoc$$(X): \ +$$(TBIN$(1)_T_$(4)_H_$(3))/rustdoc$$(X_$(4)): \ $$(DRIVER_CRATE) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTDOC_$(3)) + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTDOC_$(4)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(4)_H_$(3)) --cfg rustdoc -o $$@ $$< -$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTI_$(3)): \ +$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTI_$(4)): \ $$(RUSTI_LIB) $$(RUSTI_INPUTS) \ $$(TSREQ$(1)_T_$(4)_H_$(3)) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_CORELIB_$(3)) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_STDLIB_$(3)) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTC_$(3)) + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_CORELIB_$(4)) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_STDLIB_$(4)) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTC_$(4)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$< && touch $$@ -$$(TBIN$(1)_T_$(4)_H_$(3))/rusti$$(X): \ +$$(TBIN$(1)_T_$(4)_H_$(3))/rusti$$(X_$(4)): \ $$(DRIVER_CRATE) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTI_$(3)) + $$(TLIB$(1)_T_$(4)_H_$(4))/$(CFG_LIBRUSTI_$(4)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(4)_H_$(3)) --cfg rusti -o $$@ $$< -$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUST_$(3)): \ +$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUST_$(4)): \ $$(RUST_LIB) $$(RUST_INPUTS) \ $$(TSREQ$(1)_T_$(4)_H_$(3)) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_CORELIB_$(3)) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_STDLIB_$(3)) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTC_$(3)) + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_CORELIB_$(4)) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_STDLIB_$(4)) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTC_$(4)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$< && touch $$@ -$$(TBIN$(1)_T_$(4)_H_$(3))/rust$$(X): \ +$$(TBIN$(1)_T_$(4)_H_$(3))/rust$$(X_$(4)): \ $$(DRIVER_CRATE) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUST_$(3)) + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUST_$(4)) @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(4)_H_$(3)) --cfg rust -o $$@ $$< @@ -129,94 +129,94 @@ define TOOLS_STAGE_N_HOST # Promote the stageN target to stageN+1 host # FIXME: Shouldn't need to depend on host/librustc.so once # rpath is working -$$(HLIB$(2)_H_$(4))/$(CFG_LIBFUZZER_$(3)): \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBFUZZER_$(3)) \ - $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(3)) \ +$$(HLIB$(2)_H_$(4))/$(CFG_LIBFUZZER_$(4)): \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBFUZZER_$(4)) \ + $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(4)) \ $$(HSREQ$(2)_H_$(4)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ - $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBFUZZER_GLOB_$(3)) \ - $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBFUZZER_DSYM_GLOB_$(3))) \ + $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBFUZZER_GLOB_$(4)) \ + $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBFUZZER_DSYM_GLOB_$(4))) \ $$(HLIB$(2)_H_$(4)) -$$(HBIN$(2)_H_$(4))/fuzzer$$(X): \ - $$(TBIN$(1)_T_$(4)_H_$(3))/fuzzer$$(X) \ - $$(HLIB$(2)_H_$(4))/$(CFG_LIBFUZZER_$(3)) \ +$$(HBIN$(2)_H_$(4))/fuzzer$$(X_$(4)): \ + $$(TBIN$(1)_T_$(4)_H_$(3))/fuzzer$$(X_$(4)) \ + $$(HLIB$(2)_H_$(4))/$(CFG_LIBFUZZER_$(4)) \ $$(HSREQ$(2)_H_$(4)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ -$$(HBIN$(2)_H_$(4))/compiletest$$(X): \ - $$(TBIN$(1)_T_$(4)_H_$(3))/compiletest$$(X) \ +$$(HBIN$(2)_H_$(4))/compiletest$$(X_$(4)): \ + $$(TBIN$(1)_T_$(4)_H_$(3))/compiletest$$(X_$(4)) \ $$(HSREQ$(2)_H_$(4)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ -$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTPKG_$(3)): \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTPKG_$(3)) \ - $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(3)) \ +$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTPKG_$(4)): \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTPKG_$(4)) \ + $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(4)) \ $$(HSREQ$(2)_H_$(4)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ - $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTPKG_GLOB_$(3)) \ - $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTPKG_DSYM_GLOB_$(3))) \ + $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTPKG_GLOB_$(4)) \ + $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTPKG_DSYM_GLOB_$(4))) \ $$(HLIB$(2)_H_$(4)) -$$(HBIN$(2)_H_$(4))/rustpkg$$(X): \ - $$(TBIN$(1)_T_$(4)_H_$(3))/rustpkg$$(X) \ - $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTPKG_$(3)) \ +$$(HBIN$(2)_H_$(4))/rustpkg$$(X_$(4)): \ + $$(TBIN$(1)_T_$(4)_H_$(3))/rustpkg$$(X_$(4)) \ + $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTPKG_$(4)) \ $$(HSREQ$(2)_H_$(4)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ -$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTDOC_$(3)): \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTDOC_$(3)) \ - $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(3)) \ +$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTDOC_$(4)): \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTDOC_$(4)) \ + $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(4)) \ $$(HSREQ$(2)_H_$(4)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ - $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTDOC_GLOB_$(3)) \ - $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTDOC_DSYM_GLOB_$(3))) \ + $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTDOC_GLOB_$(4)) \ + $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTDOC_DSYM_GLOB_$(4))) \ $$(HLIB$(2)_H_$(4)) -$$(HBIN$(2)_H_$(4))/rustdoc$$(X): \ - $$(TBIN$(1)_T_$(4)_H_$(3))/rustdoc$$(X) \ - $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTDOC_$(3)) \ +$$(HBIN$(2)_H_$(4))/rustdoc$$(X_$(4)): \ + $$(TBIN$(1)_T_$(4)_H_$(3))/rustdoc$$(X_$(4)) \ + $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTDOC_$(4)) \ $$(HSREQ$(2)_H_$(4)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ -$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTI_$(3)): \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTI_$(3)) \ - $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(3)) \ +$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTI_$(4)): \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTI_$(4)) \ + $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(4)) \ $$(HSREQ$(2)_H_$(4)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ - $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTI_GLOB_$(3)) \ - $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTI_DSYM_GLOB_$(3))) \ + $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTI_GLOB_$(4)) \ + $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTI_DSYM_GLOB_$(4))) \ $$(HLIB$(2)_H_$(4)) -$$(HBIN$(2)_H_$(4))/rusti$$(X): \ - $$(TBIN$(1)_T_$(4)_H_$(3))/rusti$$(X) \ - $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTI_$(3)) \ +$$(HBIN$(2)_H_$(4))/rusti$$(X_$(4)): \ + $$(TBIN$(1)_T_$(4)_H_$(3))/rusti$$(X_$(4)) \ + $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTI_$(4)) \ $$(HSREQ$(2)_H_$(4)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ -$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUST_$(3)): \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUST_$(3)) \ - $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(3)) \ +$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUST_$(4)): \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUST_$(4)) \ + $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(4)) \ $$(HSREQ$(2)_H_$(4)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ - $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUST_GLOB_$(3)) \ - $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUST_DSYM_GLOB)_$(3)) \ + $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUST_GLOB_$(4)) \ + $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUST_DSYM_GLOB)_$(4)) \ $$(HLIB$(2)_H_$(4)) -$$(HBIN$(2)_H_$(4))/rust$$(X): \ - $$(TBIN$(1)_T_$(4)_H_$(3))/rust$$(X) \ - $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUST_$(3)) \ +$$(HBIN$(2)_H_$(4))/rust$$(X_$(4)): \ + $$(TBIN$(1)_T_$(4)_H_$(3))/rust$$(X_$(4)) \ + $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUST_$(4)) \ $$(HSREQ$(2)_H_$(4)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ From e971d0ce9f77120347287db9f2f46ec63a7b5510 Mon Sep 17 00:00:00 2001 From: Young-il Choi Date: Mon, 4 Mar 2013 13:49:01 +0900 Subject: [PATCH 09/16] mk: rt.mk fix for libuv cross compile --- mk/rt.mk | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mk/rt.mk b/mk/rt.mk index 9af3e0b07bc..de5a5420eea 100644 --- a/mk/rt.mk +++ b/mk/rt.mk @@ -86,13 +86,13 @@ RUNTIME_S_$(1) := rt/arch/$$(HOST_$(1))/_context.S \ ifeq ($$(CFG_WINDOWSY_$(1)), 1) LIBUV_OSTYPE_$(1) := win LIBUV_LIB_$(1) := rt/$(1)/libuv/libuv.a -else ifeq ($(CFG_OSTYPE_$(1)), apple-darwin) +else ifeq ($(OSTYPE_$(1)), apple-darwin) LIBUV_OSTYPE_$(1) := mac LIBUV_LIB_$(1) := rt/$(1)/libuv/libuv.a -else ifeq ($(CFG_OSTYPE_$(1)), unknown-freebsd) +else ifeq ($(OSTYPE_$(1)), unknown-freebsd) LIBUV_OSTYPE_$(1) := unix/freebsd LIBUV_LIB_$(1) := rt/$(1)/libuv/libuv.a -else ifeq ($(CFG_OSTYPE_$(1)), unknown-android) +else ifeq ($(OSTYPE_$(1)), unknown-android) LIBUV_OSTYPE_$(1) := unix/android LIBUV_LIB_$(1) := rt/$(1)/libuv/libuv.a else @@ -163,7 +163,7 @@ $$(LIBUV_LIB_$(1)): $$(LIBUV_DEPS) builddir_name="$$(CFG_BUILD_DIR)/rt/$(1)/libuv" \ OS=mingw \ V=$$(VERBOSE) -else ifeq ($(CFG_OSTYPE_$(1)), unknown-android) +else ifeq ($(OSTYPE_$(1)), unknown-android) $$(LIBUV_LIB_$(1)): $$(LIBUV_DEPS) $$(Q)$$(MAKE) -C $$(S)src/libuv/ \ CFLAGS="$$(LIBUV_FLAGS_$$(HOST_$(1))) $$(SNAP_DEFINES)" \ From dae97b4812eda4a1c8301789cc27cd4f72d91b19 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Sun, 3 Mar 2013 19:46:27 -0800 Subject: [PATCH 10/16] mk: Restore toolchain config for i386 mac/linux, and freebsd Conflicts: mk/platform.mk --- mk/platform.mk | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/mk/platform.mk b/mk/platform.mk index 2b5e4a0c5ae..de8a66a1048 100644 --- a/mk/platform.mk +++ b/mk/platform.mk @@ -59,6 +59,20 @@ CFG_LDPATH_x86_64-unknown-linux-gnu := CFG_RUN_x86_64-unknown-linux-gnu=$(2) CFG_RUN_TARG_x86_64-unknown-linux-gnu=$(call CFG_RUN_x86_64-unknown-linux-gnu,,$(2)) +# i686-unknown-linux-gnu configuration +CFG_LIB_NAME_i686-unknown-linux-gnu=lib$(1).so +CFG_LIB_GLOB_i686-unknown-linux-gnu=lib$(1)-*.so +CFG_LIB_DSYM_GLOB_i686-unknown-linux-gnu=lib$(1)-*.dylib.dSYM +CFG_GCCISH_CFLAGS_i686-unknown-linux-gnu := -Wall -Werror -g -fPIC -m32 +CFG_GCCISH_CXXFLAGS_i686-unknown-linux-gnu := -fno-rtti +CFG_GCCISH_LINK_FLAGS_i6868-unknown-linux-gnu := -shared -fPIC -ldl -lpthread -lrt -g -m32 +CFG_GCCISH_DEF_FLAG_i6868-unknown-linux-gnu := -Wl,--export-dynamic,--dynamic-list= +CFG_GCCISH_PRE_LIB_FLAGS_i686-unknown-linux-gnu := -Wl,-whole-archive +CFG_GCCISH_POST_LIB_FLAGS_i686-unknown-linux-gnu := -Wl,-no-whole-archive -Wl,-znoexecstack +CFG_DEF_SUFFIX_i686-unknown-linux-gnu := .linux.def +CFG_INSTALL_NAME_i686-unknown-linux-gnu = +CFG_GCCISH_CROSS_i686-unknown-linux-gnu = + # x86_64-apple-darwin configuration CFG_LIB_NAME_x86_64-apple-darwin=lib$(1).dylib CFG_LIB_GLOB_x86_64-apple-darwin=lib$(1)-*.dylib @@ -80,6 +94,19 @@ CFG_LDPATH_x86_64-apple-darwin := CFG_RUN_x86_64-apple-darwin=$(2) CFG_RUN_TARG_x86_64-apple-darwin=$(call CFG_RUN_x86_64-apple-darwin,,$(2)) +# i686-apple-darwin configuration +CFG_LIB_NAME_i686-apple-darwin=lib$(1).dylib +CFG_LIB_GLOB_i686-apple-darwin=lib$(1)-*.dylib +CFG_LIB_DSYM_GLOB_i686-apple-darwin=lib$(1)-*.dylib.dSYM +CFG_GCCISH_CFLAGS_i686-apple-darwin := -Wall -Werror -g -fPIC -m32 -arch i386 +CFG_GCCISH_CXXFLAGS_i686-apple-darwin := -fno-rtti +CFG_GCCISH_LINK_FLAGS_i686-apple-darwin := -dynamiclib -lpthread -framework CoreServices -Wl,-no_compact_unwind -m32 +CFG_GCCISH_DEF_FLAG_i686-apple-darwin := -Wl,-exported_symbols_list, +CFG_GCCISH_PRE_LIB_FLAGS_i686-apple-darwin := +CFG_GCCISH_POST_LIB_FLAGS_i686-apple-darwin := +CFG_DEF_SUFFIX_i686-apple-darwin := .darwin.def +CFG_INSTALL_NAME_i686-apple-darwin = -Wl,-install_name,@rpath/$(1) + # arm-unknown-android configuration CFG_LIB_NAME_arm-unknown-android=lib$(1).so CFG_LIB_GLOB_arm-unknown-android=lib$(1)-*.so @@ -148,6 +175,18 @@ CFG_LDPATH_i586-mingw32msvc := CFG_RUN_i586-mingw32msvc= CFG_RUN_TARG_i586-mingw32msvc= +# x86_64-unknown-freebsd configuration +CFG_LIB_NAME_x86_64-unknown-freebsd=lib$(1).so +CFG_LIB_GLOB_x86_64-unknown-freebsd=lib$(1)-*.so +CFG_GCCISH_CFLAGS_x86_64-unknown-freebsd += -fPIC -I/usr/local/include +CFG_GCCISH_LINK_FLAGS_x86_64-unknown-freebsd += -shared -fPIC -lpthread -lrt +CFG_GCCISH_DEF_FLAG_x86_64-unknown-freebsd := -Wl,--export-dynamic,--dynamic-list= +CFG_GCCISH_PRE_LIB_FLAGS_x86_64-unknown-freebsd := -Wl,-whole-archive +CFG_GCCISH_POST_LIB_FLAGS_x86_64-unknown-freebsd := -Wl,-no-whole-archive +CFG_DEF_SUFFIX_x86_64-unknown-freebsd := .bsd.def +CFG_INSTALL_NAME_x86_64-unknown-freebsd = +CFG_GCCISH_CROSS_x86_64-unknown-freebsd = + # Hack: not sure how to test if a file exists in make other than this OS_SUPP = $(patsubst %,--suppressions=%,\ $(wildcard $(CFG_SRC_DIR)src/etc/$(CFG_OSTYPE).supp*)) From 9cf67513ea467df2fd833395a05f3c1b178ff0fe Mon Sep 17 00:00:00 2001 From: Young-il Choi Date: Mon, 4 Mar 2013 14:23:20 +0900 Subject: [PATCH 11/16] mk: platform.mk more flags added --- mk/platform.mk | 38 ++++++++++++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 8 deletions(-) diff --git a/mk/platform.mk b/mk/platform.mk index de8a66a1048..ceee723f8d3 100644 --- a/mk/platform.mk +++ b/mk/platform.mk @@ -50,7 +50,6 @@ CFG_DEF_SUFFIX_x86_64-unknown-linux-gnu := .linux.def CFG_INSTALL_NAME_x86_64-unknown-linux-gnu = CFG_LIBUV_LINK_FLAGS_x86_64-unknown-linux-gnu = CFG_LLVM_BUILD_ENV_x86_64-unknown-linux-gnu="CXXFLAGS=-fno-omit-frame-pointer" -CFG_GCCISH_CROSS_PREFIX_x86_64-unknown-linux-gnu = CFG_EXE_SUFFIX_x86_64-unknown-linux-gnu = CFG_WINDOWSY_x86_64-unknown-linux-gnu := CFG_LINUXY_x86_64-unknown-linux-gnu := 1 @@ -65,13 +64,21 @@ CFG_LIB_GLOB_i686-unknown-linux-gnu=lib$(1)-*.so CFG_LIB_DSYM_GLOB_i686-unknown-linux-gnu=lib$(1)-*.dylib.dSYM CFG_GCCISH_CFLAGS_i686-unknown-linux-gnu := -Wall -Werror -g -fPIC -m32 CFG_GCCISH_CXXFLAGS_i686-unknown-linux-gnu := -fno-rtti -CFG_GCCISH_LINK_FLAGS_i6868-unknown-linux-gnu := -shared -fPIC -ldl -lpthread -lrt -g -m32 -CFG_GCCISH_DEF_FLAG_i6868-unknown-linux-gnu := -Wl,--export-dynamic,--dynamic-list= +CFG_GCCISH_LINK_FLAGS_i686-unknown-linux-gnu := -shared -fPIC -ldl -lpthread -lrt -g -m32 +CFG_GCCISH_DEF_FLAG_i686-unknown-linux-gnu := -Wl,--export-dynamic,--dynamic-list= CFG_GCCISH_PRE_LIB_FLAGS_i686-unknown-linux-gnu := -Wl,-whole-archive CFG_GCCISH_POST_LIB_FLAGS_i686-unknown-linux-gnu := -Wl,-no-whole-archive -Wl,-znoexecstack CFG_DEF_SUFFIX_i686-unknown-linux-gnu := .linux.def CFG_INSTALL_NAME_i686-unknown-linux-gnu = -CFG_GCCISH_CROSS_i686-unknown-linux-gnu = +CFG_LIBUV_LINK_FLAGS_i686-unknown-linux-gnu = +CFG_LLVM_BUILD_ENV_i686-unknown-linux-gnu="CXXFLAGS=-fno-omit-frame-pointer" +CFG_EXE_SUFFIX_i686-unknown-linux-gnu = +CFG_WINDOWSY_i686-unknown-linux-gnu := +CFG_LINUXY_i686-unknown-linux-gnu := 1 +CFG_PATH_MUNGE_i686-unknown-linux-gnu := true +CFG_LDPATH_i686-unknown-linux-gnu := +CFG_RUN_i686-unknown-linux-gnu=$(2) +CFG_RUN_TARG_i686-unknown-linux-gnu=$(call CFG_RUN_i686-unknown-linux-gnu,,$(2)) # x86_64-apple-darwin configuration CFG_LIB_NAME_x86_64-apple-darwin=lib$(1).dylib @@ -106,6 +113,14 @@ CFG_GCCISH_PRE_LIB_FLAGS_i686-apple-darwin := CFG_GCCISH_POST_LIB_FLAGS_i686-apple-darwin := CFG_DEF_SUFFIX_i686-apple-darwin := .darwin.def CFG_INSTALL_NAME_i686-apple-darwin = -Wl,-install_name,@rpath/$(1) +CFG_LIBUV_LINK_FLAGS_i686-apple-darwin = +CFG_EXE_SUFFIX_i686-apple-darwin := +CFG_WINDOWSY_i686-apple-darwin := +CFG_LINUXY_i686-apple-darwin := 1 +CFG_PATH_MUNGE_i686-apple-darwin := true +CFG_LDPATH_i686-apple-darwin := +CFG_RUN_i686-apple-darwin=$(2) +CFG_RUN_TARG_i686-apple-darwin=$(call CFG_RUN_i686-apple-darwin,,$(2)) # arm-unknown-android configuration CFG_LIB_NAME_arm-unknown-android=lib$(1).so @@ -142,7 +157,6 @@ CFG_GCCISH_POST_LIB_FLAGS_i686-pc-mingw32 := CFG_DEF_SUFFIX_i686-pc-mingw32 := .mingw32.def CFG_INSTALL_NAME_i686-pc-mingw32 = CFG_LIBUV_LINK_FLAGS_i686-pc-mingw32 := -lWs2_32 -lpsapi -liphlpapi -CFG_GCCISH_CROSS_PREFIX_i686-pc-mingw32 = CFG_EXE_SUFFIX_i686-pc-mingw32 := .exe CFG_WINDOWSY_i686-pc-mingw32 := 1 CFG_LINUXY_i686-pc-mingw32 := @@ -178,14 +192,22 @@ CFG_RUN_TARG_i586-mingw32msvc= # x86_64-unknown-freebsd configuration CFG_LIB_NAME_x86_64-unknown-freebsd=lib$(1).so CFG_LIB_GLOB_x86_64-unknown-freebsd=lib$(1)-*.so -CFG_GCCISH_CFLAGS_x86_64-unknown-freebsd += -fPIC -I/usr/local/include -CFG_GCCISH_LINK_FLAGS_x86_64-unknown-freebsd += -shared -fPIC -lpthread -lrt +CFG_LIB_DSYM_GLOB_x86_64-unknown-freebsd=$(1)-*.dylib.dSYM +CFG_GCCISH_CFLAGS_x86_64-unknown-freebsd := -Wall -Werror -g -fPIC -I/usr/local/include +CFG_GCCISH_LINK_FLAGS_x86_64-unknown-freebsd := -shared -fPIC -g -lpthread -lrt CFG_GCCISH_DEF_FLAG_x86_64-unknown-freebsd := -Wl,--export-dynamic,--dynamic-list= CFG_GCCISH_PRE_LIB_FLAGS_x86_64-unknown-freebsd := -Wl,-whole-archive CFG_GCCISH_POST_LIB_FLAGS_x86_64-unknown-freebsd := -Wl,-no-whole-archive CFG_DEF_SUFFIX_x86_64-unknown-freebsd := .bsd.def CFG_INSTALL_NAME_x86_64-unknown-freebsd = -CFG_GCCISH_CROSS_x86_64-unknown-freebsd = +CFG_LIBUV_LINK_FLAGS_x86_64-unknown-freebsd := -lpthread -lkvm +CFG_EXE_SUFFIX_x86_64-unknown-freebsd := +CFG_WINDOWSY_x86_64-unknown-freebsd := +CFG_LINUXY_x86_64-unknown-freebsd := 1 +CFG_PATH_MUNGE_x86_64-unknown-freebsd := +CFG_LDPATH_x86_64-unknown-freebsd := +CFG_RUN_x86_64-unknown-freebsd=$(2) +CFG_RUN_TARG_x86_64-unknown-freebsd=$(call CFG_RUN_x86_64-unknown-freebsd,,$(2)) # Hack: not sure how to test if a file exists in make other than this OS_SUPP = $(patsubst %,--suppressions=%,\ From 23eb1058959c45fedce7a4a6e47b730caf7d8870 Mon Sep 17 00:00:00 2001 From: Young-il Choi Date: Mon, 4 Mar 2013 16:48:27 +0900 Subject: [PATCH 12/16] mk: platform.mk typo UNIXY --- mk/platform.mk | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/mk/platform.mk b/mk/platform.mk index ceee723f8d3..69a0845f1bd 100644 --- a/mk/platform.mk +++ b/mk/platform.mk @@ -52,7 +52,7 @@ CFG_LIBUV_LINK_FLAGS_x86_64-unknown-linux-gnu = CFG_LLVM_BUILD_ENV_x86_64-unknown-linux-gnu="CXXFLAGS=-fno-omit-frame-pointer" CFG_EXE_SUFFIX_x86_64-unknown-linux-gnu = CFG_WINDOWSY_x86_64-unknown-linux-gnu := -CFG_LINUXY_x86_64-unknown-linux-gnu := 1 +CFG_UNIXY_x86_64-unknown-linux-gnu := 1 CFG_PATH_MUNGE_x86_64-unknown-linux-gnu := true CFG_LDPATH_x86_64-unknown-linux-gnu := CFG_RUN_x86_64-unknown-linux-gnu=$(2) @@ -74,7 +74,7 @@ CFG_LIBUV_LINK_FLAGS_i686-unknown-linux-gnu = CFG_LLVM_BUILD_ENV_i686-unknown-linux-gnu="CXXFLAGS=-fno-omit-frame-pointer" CFG_EXE_SUFFIX_i686-unknown-linux-gnu = CFG_WINDOWSY_i686-unknown-linux-gnu := -CFG_LINUXY_i686-unknown-linux-gnu := 1 +CFG_UNIXY_i686-unknown-linux-gnu := 1 CFG_PATH_MUNGE_i686-unknown-linux-gnu := true CFG_LDPATH_i686-unknown-linux-gnu := CFG_RUN_i686-unknown-linux-gnu=$(2) @@ -95,7 +95,7 @@ CFG_INSTALL_NAME_x86_64-apple-darwin = -Wl,-install_name,@rpath/$(1) CFG_LIBUV_LINK_FLAGS_x86_64-apple-darwin = CFG_EXE_SUFFIX_x86_64-apple-darwin := CFG_WINDOWSY_x86_64-apple-darwin := -CFG_LINUXY_x86_64-apple-darwin := 1 +CFG_UNIXY_x86_64-apple-darwin := 1 CFG_PATH_MUNGE_x86_64-apple-darwin := true CFG_LDPATH_x86_64-apple-darwin := CFG_RUN_x86_64-apple-darwin=$(2) @@ -116,7 +116,7 @@ CFG_INSTALL_NAME_i686-apple-darwin = -Wl,-install_name,@rpath/$(1) CFG_LIBUV_LINK_FLAGS_i686-apple-darwin = CFG_EXE_SUFFIX_i686-apple-darwin := CFG_WINDOWSY_i686-apple-darwin := -CFG_LINUXY_i686-apple-darwin := 1 +CFG_UNIXY_i686-apple-darwin := 1 CFG_PATH_MUNGE_i686-apple-darwin := true CFG_LDPATH_i686-apple-darwin := CFG_RUN_i686-apple-darwin=$(2) @@ -138,7 +138,7 @@ CFG_LIBUV_LINK_FLAGS_arm-unknown-android = CFG_GCCISH_CROSS_PREFIX_arm-unknown-android = $(CFG_ANDROID_CROSS_PATH)/bin/arm-linux-androideabi- CFG_EXE_SUFFIX_arm-unknown-android := CFG_WINDOWSY_arm-unknown-android := -CFG_LINUXY_arm-unknown-android := 1 +CFG_UNIXY_arm-unknown-android := 1 CFG_PATH_MUNGE_arm-unknown-android := true CFG_LDPATH_arm-unknown-android := CFG_RUN_arm-unknown-android= @@ -159,7 +159,7 @@ CFG_INSTALL_NAME_i686-pc-mingw32 = CFG_LIBUV_LINK_FLAGS_i686-pc-mingw32 := -lWs2_32 -lpsapi -liphlpapi CFG_EXE_SUFFIX_i686-pc-mingw32 := .exe CFG_WINDOWSY_i686-pc-mingw32 := 1 -CFG_LINUXY_i686-pc-mingw32 := +CFG_UNIXY_i686-pc-mingw32 := CFG_PATH_MUNGE_i686-pc-mingw32 := CFG_LDPATH_i686-pc-mingw32 :=$(CFG_LDPATH_i686-pc-mingw32):$(PATH) CFG_RUN_i686-pc-mingw32=PATH="$(CFG_LDPATH_i686-pc-mingw32):$(1)" $(2) @@ -181,7 +181,7 @@ CFG_LIBUV_LINK_FLAGS_i586-mingw32msvc := -lWs2_32 -lpsapi -liphlpapi CFG_GCCISH_CROSS_PREFIX_i586-mingw32msvc = $(CFG_MIGW32_CROSS_PATH)/bin/i586-mingw32msvc- CFG_EXE_SUFFIX_i586-mingw32msvc := .exe CFG_WINDOWSY_i586-mingw32msvc := 1 -CFG_LINUXY_i586-mingw32msvc := +CFG_UNIXY_i586-mingw32msvc := CFG_PATH_MUNGE_i586-mingw32msvc := $(strip perl -i.bak -p \ -e 's@\\(\S)@/\1@go;' \ -e 's@^/([a-zA-Z])/@\1:/@o;') @@ -203,7 +203,7 @@ CFG_INSTALL_NAME_x86_64-unknown-freebsd = CFG_LIBUV_LINK_FLAGS_x86_64-unknown-freebsd := -lpthread -lkvm CFG_EXE_SUFFIX_x86_64-unknown-freebsd := CFG_WINDOWSY_x86_64-unknown-freebsd := -CFG_LINUXY_x86_64-unknown-freebsd := 1 +CFG_UNIXY_x86_64-unknown-freebsd := 1 CFG_PATH_MUNGE_x86_64-unknown-freebsd := CFG_LDPATH_x86_64-unknown-freebsd := CFG_RUN_x86_64-unknown-freebsd=$(2) From 995a019dffc9c0b91392f2afe0be5685be045c2f Mon Sep 17 00:00:00 2001 From: Young-il Choi Date: Mon, 4 Mar 2013 19:14:24 +0900 Subject: [PATCH 13/16] mk: install/uninstall for multiple target --- mk/install.mk | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/mk/install.mk b/mk/install.mk index 24f311cd7d1..3824d77586b 100644 --- a/mk/install.mk +++ b/mk/install.mk @@ -30,7 +30,7 @@ PREFIX_ROOT = $(CFG_PREFIX) PREFIX_BIN = $(PREFIX_ROOT)/bin PREFIX_LIB = $(PREFIX_ROOT)/$(CFG_LIBDIR) -define INSTALL_TARGET_N +define INSTALL_PREPARE_N # $(1) is the target triple # $(2) is the host triple @@ -43,6 +43,24 @@ PTR$(1)$(2) = $$(PREFIX_LIB)/rustc/$(1) PTB$(1)$(2) = $$(PTR$(1)$(2))/bin PTL$(1)$(2) = $$(PTR$(1)$(2))/$(CFG_LIBDIR) +endef + +$(foreach target,$(CFG_TARGET_TRIPLES), \ + $(eval $(call INSTALL_PREPARE_N,$(target),$(CFG_BUILD_TRIPLE)))) + +define INSTALL_TARGET_N +install-target-$(1)-host-$(2): $$(TSREQ$$(ISTAGE)_T_$(1)_H_$(2)) $$(SREQ$$(ISTAGE)_T_$(1)_H_$(2)) + $$(Q)mkdir -p $$(PTL$(1)$(2)) + $$(Q)$$(call INSTALL,$$(TL$(1)$(2)),$$(PTL$(1)$(2)),$$(CFG_RUNTIME_$(1))) + $$(Q)$$(call INSTALL_LIB, \ + $$(TL$(1)$(2)),$$(PTL$(1)$(2)),$$(CORELIB_GLOB_$(1))) + $$(Q)$$(call INSTALL_LIB, \ + $$(TL$(1)$(2)),$$(PTL$(1)$(2)),$$(STDLIB_GLOB_$(1))) + $$(Q)$$(call INSTALL,$$(TL$(1)$(2)),$$(PTL$(1)$(2)),libmorestack.a) + +endef + +define INSTALL_HOST_N install-target-$(1)-host-$(2): $$(CSREQ$$(ISTAGE)_T_$(1)_H_$(2)) $$(Q)mkdir -p $$(PTL$(1)$(2)) $$(Q)$$(call INSTALL,$$(TL$(1)$(2)),$$(PTL$(1)$(2)),$$(CFG_RUNTIME_$(1))) @@ -67,7 +85,9 @@ install-target-$(1)-host-$(2): $$(CSREQ$$(ISTAGE)_T_$(1)_H_$(2)) endef $(foreach target,$(CFG_TARGET_TRIPLES), \ - $(eval $(call INSTALL_TARGET_N,$(target),$(CFG_BUILD_TRIPLE)))) + $(if $(findstring $(target), $(CFG_BUILD_TRIPLE)), \ + $(eval $(call INSTALL_HOST_N,$(target),$(CFG_BUILD_TRIPLE))), \ + $(eval $(call INSTALL_TARGET_N,$(target),$(CFG_BUILD_TRIPLE))))) INSTALL_TARGET_RULES = $(foreach target,$(CFG_TARGET_TRIPLES), \ install-target-$(target)-host-$(CFG_BUILD_TRIPLE)) From a35dc959693afc714989d039c83853abb0f2d650 Mon Sep 17 00:00:00 2001 From: Young-il Choi Date: Tue, 5 Mar 2013 13:12:23 +0900 Subject: [PATCH 14/16] mk: --android-cross-path to rustc --- mk/platform.mk | 1 + src/librustc/back/link.rs | 19 ++++++++++++------- src/librustc/driver/driver.rs | 7 ++++++- src/librustc/driver/session.rs | 4 +++- src/rt/rust_crate_map.h | 3 +++ src/rt/rust_log.cpp | 6 ++++-- 6 files changed, 29 insertions(+), 11 deletions(-) diff --git a/mk/platform.mk b/mk/platform.mk index 69a0845f1bd..fd1bb049e38 100644 --- a/mk/platform.mk +++ b/mk/platform.mk @@ -143,6 +143,7 @@ CFG_PATH_MUNGE_arm-unknown-android := true CFG_LDPATH_arm-unknown-android := CFG_RUN_arm-unknown-android= CFG_RUN_TARG_arm-unknown-android= +RUSTC_FLAGS_arm-unknown-android :=--android-cross-path='$(CFG_ANDROID_CROSS_PATH)' # i686-pc-mingw32 configuration CFG_LIB_NAME_i686-pc-mingw32=$(1).dll diff --git a/src/librustc/back/link.rs b/src/librustc/back/link.rs index b30f9fcb9dd..b6ac068ff7f 100644 --- a/src/librustc/back/link.rs +++ b/src/librustc/back/link.rs @@ -774,11 +774,18 @@ fn unlib(config: @session::config, +stem: ~str) -> ~str { // instead of hard-coded gcc. // For win32, there is no cc command, // so we add a condition to make it use gcc. - let cc_prog: ~str = - if sess.targ_cfg.os == session::os_android { - ~"arm-linux-androideabi-g++" - } else if sess.targ_cfg.os == session::os_win32 { ~"gcc" } - else { ~"cc" }; + let cc_prog: ~str = if sess.targ_cfg.os == session::os_android { + match &sess.opts.android_cross_path { + &Some(copy path) => { + fmt!("%s/bin/arm-linux-androideabi-gcc", path) + } + &None => { + sess.fatal(~"need Android NDK path for linking \ + (--android-cross-path)") + } + } + } else if sess.targ_cfg.os == session::os_win32 { ~"gcc" } + else { ~"cc" }; // The invocations of cc share some flags across platforms let mut cc_args = @@ -876,9 +883,7 @@ fn unlib(config: @session::config, +stem: ~str) -> ~str { } // Stack growth requires statically linking a __morestack function - if sess.targ_cfg.os != session::os_android { cc_args.push(~"-lmorestack"); - } // FIXME (#2397): At some point we want to rpath our guesses as to where // extern libraries might live, based on the addl_lib_search_paths diff --git a/src/librustc/driver/driver.rs b/src/librustc/driver/driver.rs index 50e31482587..e2647885d6a 100644 --- a/src/librustc/driver/driver.rs +++ b/src/librustc/driver/driver.rs @@ -641,6 +641,8 @@ pub fn build_session_options(+binary: ~str, .map(|s| Path(*s)); let cfg = parse_cfgspecs(getopts::opt_strs(matches, ~"cfg")); let test = opt_present(matches, ~"test"); + let android_cross_path = getopts::opt_maybe_str( + matches, ~"android-cross-path"); let sopts = @session::options { crate_type: crate_type, is_static: static, @@ -660,7 +662,8 @@ pub fn build_session_options(+binary: ~str, test: test, parse_only: parse_only, no_trans: no_trans, - debugging_opts: debugging_opts + debugging_opts: debugging_opts, + android_cross_path: android_cross_path }; return sopts; } @@ -764,6 +767,8 @@ pub fn optgroups() -> ~[getopts::groups::OptGroup] { to compile for (see http://sources.redhat.com/autobook/autobook/autobook_17.html for detail)", ~"TRIPLE"), + optopt(~"", ~"android-cross-path", + ~"The path to the Android NDK", "PATH"), optmulti(~"W", ~"warn", ~"Set lint warnings", ~"OPT"), optmulti(~"A", ~"allow", diff --git a/src/librustc/driver/session.rs b/src/librustc/driver/session.rs index 2e8e4a6d51e..65a81f39845 100644 --- a/src/librustc/driver/session.rs +++ b/src/librustc/driver/session.rs @@ -140,6 +140,7 @@ pub struct options { parse_only: bool, no_trans: bool, debugging_opts: uint, + android_cross_path: Option<~str> } pub struct crate_metadata { @@ -289,7 +290,8 @@ pub fn basic_options() -> @options { test: false, parse_only: false, no_trans: false, - debugging_opts: 0u + debugging_opts: 0u, + android_cross_path: None } } diff --git a/src/rt/rust_crate_map.h b/src/rt/rust_crate_map.h index 285473e1938..a57840ffe09 100644 --- a/src/rt/rust_crate_map.h +++ b/src/rt/rust_crate_map.h @@ -49,6 +49,7 @@ public: case 0: return NULL; case 1: return m_annihilate_fn; default: assert(false && "Unknown crate map version!"); + return NULL; // Appease -Werror=return-type } } @@ -57,6 +58,7 @@ public: case 0: return reinterpret_cast(this)->m_entries; case 1: return m_entries; default: assert(false && "Unknown crate map version!"); + return NULL; // Appease -Werror=return-type } } @@ -68,6 +70,7 @@ public: case 1: return &m_children[1]; default: assert(false && "Unknown crate map version!"); + return NULL; // Appease -Werror=return-type } } diff --git a/src/rt/rust_log.cpp b/src/rt/rust_log.cpp index 26c038e2507..2b86db6defe 100644 --- a/src/rt/rust_log.cpp +++ b/src/rt/rust_log.cpp @@ -314,9 +314,11 @@ void update_log_settings(void* crate_map, char* settings) { n_dirs, &n_matches); if (n_matches < n_dirs) { - printf("warning: got %" PRIdPTR " RUST_LOG specs, " + // NOTE: Android compiler is complaining about format specifiers here + // and I don't understand why + /*printf("warning: got %" PRIdPTR " RUST_LOG specs, " "enabled %" PRIdPTR " flags.", - (uintptr_t)n_dirs, (uintptr_t)n_matches); + (uintptr_t)n_dirs, (uintptr_t)n_matches);*/ } free(buffer); From c707a2d73cfbb630ff7f38790732586d026a5e8a Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Fri, 1 Mar 2013 16:37:55 -0800 Subject: [PATCH 15/16] Update uv submodule --- .gitmodules | 2 +- src/libuv | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index adc28fa6cab..4c61c7e409b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -3,4 +3,4 @@ url = git://github.com/brson/llvm.git [submodule "src/libuv"] path = src/libuv - url = https://github.com/ILyoan/libuv.git + url = git://github.com/brson/libuv.git diff --git a/src/libuv b/src/libuv index 2eab4fd2fac..576ab1db8ea 160000 --- a/src/libuv +++ b/src/libuv @@ -1 +1 @@ -Subproject commit 2eab4fd2fac489750527361da42099202350018b +Subproject commit 576ab1db8ea03889eb7b2274654afe7c5c867230 From 14e5a6e5f74b174399a561c68e5214d572f7a667 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Wed, 6 Mar 2013 22:36:20 -0800 Subject: [PATCH 16/16] mk: Cleanup. Minor fixes --- configure | 1 + mk/dist.mk | 2 +- mk/platform.mk | 459 ++++++++++++++++++++++++------------------------- mk/rt.mk | 7 +- 4 files changed, 231 insertions(+), 238 deletions(-) diff --git a/configure b/configure index a1c6e686474..f3a27bb30e4 100755 --- a/configure +++ b/configure @@ -534,6 +534,7 @@ fi # a little post-processing of various config values CFG_PREFIX=${CFG_PREFIX%/} +CFG_HOST_TRIPLES="$(echo $CFG_HOST_TRIPLES | tr ',' ' ')" CFG_TARGET_TRIPLES="$(echo $CFG_TARGET_TRIPLES | tr ',' ' ')" # copy host-triples to target-triples so that hosts are a subset of targets diff --git a/mk/dist.mk b/mk/dist.mk index 3684b9c4544..92989d157b4 100644 --- a/mk/dist.mk +++ b/mk/dist.mk @@ -83,7 +83,7 @@ $(PKG_TAR): $(PKG_FILES) .PHONY: dist distcheck -ifdef CFG_WINDOWSY +ifdef CFG_WINDOWSY_$(CFG_BUILD_TRIPLE) dist: $(PKG_EXE) diff --git a/mk/platform.mk b/mk/platform.mk index fd1bb049e38..55d5a3c476e 100644 --- a/mk/platform.mk +++ b/mk/platform.mk @@ -36,180 +36,6 @@ CFG_GCCISH_CFLAGS += -fno-omit-frame-pointer # embedded into the executable, so use a no-op command. CFG_DSYMUTIL := true -# x86_64-unknown-linux-gnu configuration -CFG_LIB_NAME_x86_64-unknown-linux-gnu=lib$(1).so -CFG_LIB_GLOB_x86_64-unknown-linux-gnu=lib$(1)-*.so -CFG_LIB_DSYM_GLOB_x86_64-unknown-linux-gnu=lib$(1)-*.dylib.dSYM -CFG_GCCISH_CFLAGS_x86_64-unknown-linux-gnu := -Wall -Werror -g -fPIC -m64 -CFG_GCCISH_CXXFLAGS_x86_64-unknown-linux-gnu := -fno-rtti -CFG_GCCISH_LINK_FLAGS_x86_64-unknown-linux-gnu := -shared -fPIC -ldl -lpthread -lrt -g -m64 -CFG_GCCISH_DEF_FLAG_x86_64-unknown-linux-gnu := -Wl,--export-dynamic,--dynamic-list= -CFG_GCCISH_PRE_LIB_FLAGS_x86_64-unknown-linux-gnu := -Wl,-whole-archive -CFG_GCCISH_POST_LIB_FLAGS_x86_64-unknown-linux-gnu := -Wl,-no-whole-archive -Wl,-znoexecstack -CFG_DEF_SUFFIX_x86_64-unknown-linux-gnu := .linux.def -CFG_INSTALL_NAME_x86_64-unknown-linux-gnu = -CFG_LIBUV_LINK_FLAGS_x86_64-unknown-linux-gnu = -CFG_LLVM_BUILD_ENV_x86_64-unknown-linux-gnu="CXXFLAGS=-fno-omit-frame-pointer" -CFG_EXE_SUFFIX_x86_64-unknown-linux-gnu = -CFG_WINDOWSY_x86_64-unknown-linux-gnu := -CFG_UNIXY_x86_64-unknown-linux-gnu := 1 -CFG_PATH_MUNGE_x86_64-unknown-linux-gnu := true -CFG_LDPATH_x86_64-unknown-linux-gnu := -CFG_RUN_x86_64-unknown-linux-gnu=$(2) -CFG_RUN_TARG_x86_64-unknown-linux-gnu=$(call CFG_RUN_x86_64-unknown-linux-gnu,,$(2)) - -# i686-unknown-linux-gnu configuration -CFG_LIB_NAME_i686-unknown-linux-gnu=lib$(1).so -CFG_LIB_GLOB_i686-unknown-linux-gnu=lib$(1)-*.so -CFG_LIB_DSYM_GLOB_i686-unknown-linux-gnu=lib$(1)-*.dylib.dSYM -CFG_GCCISH_CFLAGS_i686-unknown-linux-gnu := -Wall -Werror -g -fPIC -m32 -CFG_GCCISH_CXXFLAGS_i686-unknown-linux-gnu := -fno-rtti -CFG_GCCISH_LINK_FLAGS_i686-unknown-linux-gnu := -shared -fPIC -ldl -lpthread -lrt -g -m32 -CFG_GCCISH_DEF_FLAG_i686-unknown-linux-gnu := -Wl,--export-dynamic,--dynamic-list= -CFG_GCCISH_PRE_LIB_FLAGS_i686-unknown-linux-gnu := -Wl,-whole-archive -CFG_GCCISH_POST_LIB_FLAGS_i686-unknown-linux-gnu := -Wl,-no-whole-archive -Wl,-znoexecstack -CFG_DEF_SUFFIX_i686-unknown-linux-gnu := .linux.def -CFG_INSTALL_NAME_i686-unknown-linux-gnu = -CFG_LIBUV_LINK_FLAGS_i686-unknown-linux-gnu = -CFG_LLVM_BUILD_ENV_i686-unknown-linux-gnu="CXXFLAGS=-fno-omit-frame-pointer" -CFG_EXE_SUFFIX_i686-unknown-linux-gnu = -CFG_WINDOWSY_i686-unknown-linux-gnu := -CFG_UNIXY_i686-unknown-linux-gnu := 1 -CFG_PATH_MUNGE_i686-unknown-linux-gnu := true -CFG_LDPATH_i686-unknown-linux-gnu := -CFG_RUN_i686-unknown-linux-gnu=$(2) -CFG_RUN_TARG_i686-unknown-linux-gnu=$(call CFG_RUN_i686-unknown-linux-gnu,,$(2)) - -# x86_64-apple-darwin configuration -CFG_LIB_NAME_x86_64-apple-darwin=lib$(1).dylib -CFG_LIB_GLOB_x86_64-apple-darwin=lib$(1)-*.dylib -CFG_LIB_DSYM_GLOB_x86_64-apple-darwin=lib$(1)-*.dylib.dSYM -CFG_GCCISH_CFLAGS_x86_64-apple-darwin := -Wall -Werror -g -fPIC -m64 -arch x86_64 -CFG_GCCISH_CXXFLAGS_x86_64-apple-darwin := -fno-rtti -CFG_GCCISH_LINK_FLAGS_x86_64-apple-darwin := -dynamiclib -lpthread -framework CoreServices -Wl,-no_compact_unwind -m64 -CFG_GCCISH_DEF_FLAG_x86_64-apple-darwin := -Wl,-exported_symbols_list, -CFG_GCCISH_PRE_LIB_FLAGS_x86_64-apple-darwin := -CFG_GCCISH_POST_LIB_FLAGS_x86_64-apple-darwin := -CFG_DEF_SUFFIX_x86_64-apple-darwin := .darwin.def -CFG_INSTALL_NAME_x86_64-apple-darwin = -Wl,-install_name,@rpath/$(1) -CFG_LIBUV_LINK_FLAGS_x86_64-apple-darwin = -CFG_EXE_SUFFIX_x86_64-apple-darwin := -CFG_WINDOWSY_x86_64-apple-darwin := -CFG_UNIXY_x86_64-apple-darwin := 1 -CFG_PATH_MUNGE_x86_64-apple-darwin := true -CFG_LDPATH_x86_64-apple-darwin := -CFG_RUN_x86_64-apple-darwin=$(2) -CFG_RUN_TARG_x86_64-apple-darwin=$(call CFG_RUN_x86_64-apple-darwin,,$(2)) - -# i686-apple-darwin configuration -CFG_LIB_NAME_i686-apple-darwin=lib$(1).dylib -CFG_LIB_GLOB_i686-apple-darwin=lib$(1)-*.dylib -CFG_LIB_DSYM_GLOB_i686-apple-darwin=lib$(1)-*.dylib.dSYM -CFG_GCCISH_CFLAGS_i686-apple-darwin := -Wall -Werror -g -fPIC -m32 -arch i386 -CFG_GCCISH_CXXFLAGS_i686-apple-darwin := -fno-rtti -CFG_GCCISH_LINK_FLAGS_i686-apple-darwin := -dynamiclib -lpthread -framework CoreServices -Wl,-no_compact_unwind -m32 -CFG_GCCISH_DEF_FLAG_i686-apple-darwin := -Wl,-exported_symbols_list, -CFG_GCCISH_PRE_LIB_FLAGS_i686-apple-darwin := -CFG_GCCISH_POST_LIB_FLAGS_i686-apple-darwin := -CFG_DEF_SUFFIX_i686-apple-darwin := .darwin.def -CFG_INSTALL_NAME_i686-apple-darwin = -Wl,-install_name,@rpath/$(1) -CFG_LIBUV_LINK_FLAGS_i686-apple-darwin = -CFG_EXE_SUFFIX_i686-apple-darwin := -CFG_WINDOWSY_i686-apple-darwin := -CFG_UNIXY_i686-apple-darwin := 1 -CFG_PATH_MUNGE_i686-apple-darwin := true -CFG_LDPATH_i686-apple-darwin := -CFG_RUN_i686-apple-darwin=$(2) -CFG_RUN_TARG_i686-apple-darwin=$(call CFG_RUN_i686-apple-darwin,,$(2)) - -# arm-unknown-android configuration -CFG_LIB_NAME_arm-unknown-android=lib$(1).so -CFG_LIB_GLOB_arm-unknown-android=lib$(1)-*.so -CFG_LIB_DSYM_GLOB_arm-unknown-android=lib$(1)-*.dylib.dSYM -CFG_GCCISH_CFLAGS_arm-unknown-android := -Wall -g -fPIC -D__arm__ -DANDROID -D__ANDROID__ -CFG_GCCISH_CXXFLAGS_arm-unknown-android := -fno-rtti -CFG_GCCISH_LINK_FLAGS_arm-unknown-android := -shared -fPIC -ldl -g -lm -lsupc++ -lgnustl_shared -CFG_GCCISH_DEF_FLAG_arm-unknown-android := -Wl,--export-dynamic,--dynamic-list= -CFG_GCCISH_PRE_LIB_FLAGS_arm-unknown-android := -Wl,-whole-archive -CFG_GCCISH_POST_LIB_FLAGS_arm-unknown-android := -Wl,-no-whole-archive -Wl,-znoexecstack -CFG_DEF_SUFFIX_arm-unknown-android := .android.def -CFG_INSTALL_NAME_arm-unknown-android = -CFG_LIBUV_LINK_FLAGS_arm-unknown-android = -CFG_GCCISH_CROSS_PREFIX_arm-unknown-android = $(CFG_ANDROID_CROSS_PATH)/bin/arm-linux-androideabi- -CFG_EXE_SUFFIX_arm-unknown-android := -CFG_WINDOWSY_arm-unknown-android := -CFG_UNIXY_arm-unknown-android := 1 -CFG_PATH_MUNGE_arm-unknown-android := true -CFG_LDPATH_arm-unknown-android := -CFG_RUN_arm-unknown-android= -CFG_RUN_TARG_arm-unknown-android= -RUSTC_FLAGS_arm-unknown-android :=--android-cross-path='$(CFG_ANDROID_CROSS_PATH)' - -# i686-pc-mingw32 configuration -CFG_LIB_NAME_i686-pc-mingw32=$(1).dll -CFG_LIB_GLOB_i686-pc-mingw32=$(1)-*.dll -CFG_LIB_DSYM_GLOB_i686-pc-mingw32=$(1)-*.dylib.dSYM -CFG_GCCISH_CFLAGS_i686-pc-mingw32 := -Wall -Werror -g -march=i686 -CFG_GCCISH_CXXFLAGS_i686-pc-mingw32 := -fno-rtti -CFG_GCCISH_LINK_FLAGS_i686-pc-mingw32 := -shared -fPIC -g -CFG_GCCISH_DEF_FLAG_i686-pc-mingw32 := -CFG_GCCISH_PRE_LIB_FLAGS_i686-pc-mingw32 := -CFG_GCCISH_POST_LIB_FLAGS_i686-pc-mingw32 := -CFG_DEF_SUFFIX_i686-pc-mingw32 := .mingw32.def -CFG_INSTALL_NAME_i686-pc-mingw32 = -CFG_LIBUV_LINK_FLAGS_i686-pc-mingw32 := -lWs2_32 -lpsapi -liphlpapi -CFG_EXE_SUFFIX_i686-pc-mingw32 := .exe -CFG_WINDOWSY_i686-pc-mingw32 := 1 -CFG_UNIXY_i686-pc-mingw32 := -CFG_PATH_MUNGE_i686-pc-mingw32 := -CFG_LDPATH_i686-pc-mingw32 :=$(CFG_LDPATH_i686-pc-mingw32):$(PATH) -CFG_RUN_i686-pc-mingw32=PATH="$(CFG_LDPATH_i686-pc-mingw32):$(1)" $(2) -CFG_RUN_TARG_i686-pc-mingw32=$(call CFG_RUN_i686-pc-mingw32,$(HLIB$(1)_H_$(CFG_BUILD_TRIPLE)),$(2)) - -# i586-mingw32msvc configuration -CFG_LIB_NAME_i586-mingw32msvc=$(1).dll -CFG_LIB_GLOB_i586-mingw32msvc=$(1)-*.dll -CFG_LIB_DSYM_GLOB_i586-mingw32msvc=$(1)-*.dylib.dSYM -CFG_GCCISH_CFLAGS_i586-mingw32msvc := -Wall -Werror -g -march=586 -m32 -CFG_GCCISH_CXXFLAGS_i586-mingw32msvc := -fno-rtti -CFG_GCCISH_LINK_FLAGS_i586-mingw32msvc := -shared -g -m32 -CFG_GCCISH_DEF_FLAG_i586-mingw32msvc := -CFG_GCCISH_PRE_LIB_FLAGS_i586-mingw32msvc := -CFG_GCCISH_POST_LIB_FLAGS_i586-mingw32msvc := -CFG_DEF_SUFFIX_i586-mingw32msvc := .mingw32.def -CFG_INSTALL_NAME_i586-mingw32msvc = -CFG_LIBUV_LINK_FLAGS_i586-mingw32msvc := -lWs2_32 -lpsapi -liphlpapi -CFG_GCCISH_CROSS_PREFIX_i586-mingw32msvc = $(CFG_MIGW32_CROSS_PATH)/bin/i586-mingw32msvc- -CFG_EXE_SUFFIX_i586-mingw32msvc := .exe -CFG_WINDOWSY_i586-mingw32msvc := 1 -CFG_UNIXY_i586-mingw32msvc := -CFG_PATH_MUNGE_i586-mingw32msvc := $(strip perl -i.bak -p \ - -e 's@\\(\S)@/\1@go;' \ - -e 's@^/([a-zA-Z])/@\1:/@o;') -CFG_LDPATH_i586-mingw32msvc := -CFG_RUN_i586-mingw32msvc= -CFG_RUN_TARG_i586-mingw32msvc= - -# x86_64-unknown-freebsd configuration -CFG_LIB_NAME_x86_64-unknown-freebsd=lib$(1).so -CFG_LIB_GLOB_x86_64-unknown-freebsd=lib$(1)-*.so -CFG_LIB_DSYM_GLOB_x86_64-unknown-freebsd=$(1)-*.dylib.dSYM -CFG_GCCISH_CFLAGS_x86_64-unknown-freebsd := -Wall -Werror -g -fPIC -I/usr/local/include -CFG_GCCISH_LINK_FLAGS_x86_64-unknown-freebsd := -shared -fPIC -g -lpthread -lrt -CFG_GCCISH_DEF_FLAG_x86_64-unknown-freebsd := -Wl,--export-dynamic,--dynamic-list= -CFG_GCCISH_PRE_LIB_FLAGS_x86_64-unknown-freebsd := -Wl,-whole-archive -CFG_GCCISH_POST_LIB_FLAGS_x86_64-unknown-freebsd := -Wl,-no-whole-archive -CFG_DEF_SUFFIX_x86_64-unknown-freebsd := .bsd.def -CFG_INSTALL_NAME_x86_64-unknown-freebsd = -CFG_LIBUV_LINK_FLAGS_x86_64-unknown-freebsd := -lpthread -lkvm -CFG_EXE_SUFFIX_x86_64-unknown-freebsd := -CFG_WINDOWSY_x86_64-unknown-freebsd := -CFG_UNIXY_x86_64-unknown-freebsd := 1 -CFG_PATH_MUNGE_x86_64-unknown-freebsd := -CFG_LDPATH_x86_64-unknown-freebsd := -CFG_RUN_x86_64-unknown-freebsd=$(2) -CFG_RUN_TARG_x86_64-unknown-freebsd=$(call CFG_RUN_x86_64-unknown-freebsd,,$(2)) - # Hack: not sure how to test if a file exists in make other than this OS_SUPP = $(patsubst %,--suppressions=%,\ $(wildcard $(CFG_SRC_DIR)src/etc/$(CFG_OSTYPE).supp*)) @@ -253,6 +79,12 @@ ifneq ($(findstring linux,$(CFG_OSTYPE)),) endif endif +# These flags will cause the compiler to produce a .d file +# next to the .o file that lists header deps. +CFG_DEPEND_FLAGS = -MMD -MP -MT $(1) -MF $(1:%.o=%.d) + +AR := ar + CFG_INFO := $(info cfg: using $(CFG_C_COMPILER)) ifeq ($(CFG_C_COMPILER),clang) ifeq ($(origin CC),default) @@ -264,13 +96,6 @@ ifeq ($(CFG_C_COMPILER),clang) ifeq ($(origin CPP),default) CPP=clang endif - CFG_GCCISH_CFLAGS += - CFG_GCCISH_CXXFLAGS += - CFG_GCCISH_LINK_FLAGS += - # These flags will cause the compiler to produce a .d file - # next to the .o file that lists header deps. - CFG_DEPEND_FLAGS = -MMD -MP -MT $(1) -MF $(1:%.o=%.d) - else ifeq ($(CFG_C_COMPILER),gcc) ifeq ($(origin CC),default) @@ -282,82 +107,246 @@ ifeq ($(CFG_C_COMPILER),gcc) ifeq ($(origin CPP),default) CPP=gcc endif - CFG_GCCISH_CFLAGS += - CFG_GCCISH_CXXFLAGS += - CFG_GCCISH_LINK_FLAGS += - # These flags will cause the compiler to produce a .d file - # next to the .o file that lists header deps. - CFG_DEPEND_FLAGS = -MMD -MP -MT $(1) -MF $(1:%.o=%.d) - else CFG_ERR := $(error please try on a system with gcc or clang) endif endif -define CFG_MAKE_CC - ifeq ($$(CFG_BUILD_TRIPLE),$(1)) - - CFG_COMPILE_C_$(1) = $$(CC) \ + +# x86_64-unknown-linux-gnu configuration +CC_x86_64-unknown-linux-gnu=$(CC) +CXX_x86_64-unknown-linux-gnu=$(CXX) +CPP_x86_64-unknown-linux-gnu=$(CPP) +AR_x86_64-unknown-linux-gnu=$(AR) +CFG_LIB_NAME_x86_64-unknown-linux-gnu=lib$(1).so +CFG_LIB_GLOB_x86_64-unknown-linux-gnu=lib$(1)-*.so +CFG_LIB_DSYM_GLOB_x86_64-unknown-linux-gnu=lib$(1)-*.dylib.dSYM +CFG_GCCISH_CFLAGS_x86_64-unknown-linux-gnu := -Wall -Werror -g -fPIC -m64 +CFG_GCCISH_CXXFLAGS_x86_64-unknown-linux-gnu := -fno-rtti +CFG_GCCISH_LINK_FLAGS_x86_64-unknown-linux-gnu := -shared -fPIC -ldl -lpthread -lrt -g -m64 +CFG_GCCISH_DEF_FLAG_x86_64-unknown-linux-gnu := -Wl,--export-dynamic,--dynamic-list= +CFG_GCCISH_PRE_LIB_FLAGS_x86_64-unknown-linux-gnu := -Wl,-whole-archive +CFG_GCCISH_POST_LIB_FLAGS_x86_64-unknown-linux-gnu := -Wl,-no-whole-archive -Wl,-znoexecstack +CFG_DEF_SUFFIX_x86_64-unknown-linux-gnu := .linux.def +CFG_INSTALL_NAME_x86_64-unknown-linux-gnu = +CFG_LIBUV_LINK_FLAGS_x86_64-unknown-linux-gnu = +CFG_LLVM_BUILD_ENV_x86_64-unknown-linux-gnu="CXXFLAGS=-fno-omit-frame-pointer" +CFG_EXE_SUFFIX_x86_64-unknown-linux-gnu = +CFG_WINDOWSY_x86_64-unknown-linux-gnu := +CFG_UNIXY_x86_64-unknown-linux-gnu := 1 +CFG_PATH_MUNGE_x86_64-unknown-linux-gnu := true +CFG_LDPATH_x86_64-unknown-linux-gnu := +CFG_RUN_x86_64-unknown-linux-gnu=$(2) +CFG_RUN_TARG_x86_64-unknown-linux-gnu=$(call CFG_RUN_x86_64-unknown-linux-gnu,,$(2)) + +# i686-unknown-linux-gnu configuration +CC_i686-unknown-linux-gnu=$(CC) +CXX_i686-unknown-linux-gnu=$(CXX) +CPP_i686-unknown-linux-gnu=$(CPP) +AR_i686-unknown-linux-gnu=$(AR) +CFG_LIB_NAME_i686-unknown-linux-gnu=lib$(1).so +CFG_LIB_GLOB_i686-unknown-linux-gnu=lib$(1)-*.so +CFG_LIB_DSYM_GLOB_i686-unknown-linux-gnu=lib$(1)-*.dylib.dSYM +CFG_GCCISH_CFLAGS_i686-unknown-linux-gnu := -Wall -Werror -g -fPIC -m32 +CFG_GCCISH_CXXFLAGS_i686-unknown-linux-gnu := -fno-rtti +CFG_GCCISH_LINK_FLAGS_i686-unknown-linux-gnu := -shared -fPIC -ldl -lpthread -lrt -g -m32 +CFG_GCCISH_DEF_FLAG_i686-unknown-linux-gnu := -Wl,--export-dynamic,--dynamic-list= +CFG_GCCISH_PRE_LIB_FLAGS_i686-unknown-linux-gnu := -Wl,-whole-archive +CFG_GCCISH_POST_LIB_FLAGS_i686-unknown-linux-gnu := -Wl,-no-whole-archive -Wl,-znoexecstack +CFG_DEF_SUFFIX_i686-unknown-linux-gnu := .linux.def +CFG_INSTALL_NAME_i686-unknown-linux-gnu = +CFG_LIBUV_LINK_FLAGS_i686-unknown-linux-gnu = +CFG_LLVM_BUILD_ENV_i686-unknown-linux-gnu="CXXFLAGS=-fno-omit-frame-pointer" +CFG_EXE_SUFFIX_i686-unknown-linux-gnu = +CFG_WINDOWSY_i686-unknown-linux-gnu := +CFG_UNIXY_i686-unknown-linux-gnu := 1 +CFG_PATH_MUNGE_i686-unknown-linux-gnu := true +CFG_LDPATH_i686-unknown-linux-gnu := +CFG_RUN_i686-unknown-linux-gnu=$(2) +CFG_RUN_TARG_i686-unknown-linux-gnu=$(call CFG_RUN_i686-unknown-linux-gnu,,$(2)) + +# x86_64-apple-darwin configuration +CC_x86_64-apple-darwin=$(CC) +CXX_x86_64-apple-darwin=$(CXX) +CPP_x86_64-apple-darwin=$(CPP) +AR_x86_64-apple-darwin=$(AR) +CFG_LIB_NAME_x86_64-apple-darwin=lib$(1).dylib +CFG_LIB_GLOB_x86_64-apple-darwin=lib$(1)-*.dylib +CFG_LIB_DSYM_GLOB_x86_64-apple-darwin=lib$(1)-*.dylib.dSYM +CFG_GCCISH_CFLAGS_x86_64-apple-darwin := -Wall -Werror -g -fPIC -m64 -arch x86_64 +CFG_GCCISH_CXXFLAGS_x86_64-apple-darwin := -fno-rtti +CFG_GCCISH_LINK_FLAGS_x86_64-apple-darwin := -dynamiclib -lpthread -framework CoreServices -Wl,-no_compact_unwind -m64 +CFG_GCCISH_DEF_FLAG_x86_64-apple-darwin := -Wl,-exported_symbols_list, +CFG_GCCISH_PRE_LIB_FLAGS_x86_64-apple-darwin := +CFG_GCCISH_POST_LIB_FLAGS_x86_64-apple-darwin := +CFG_DEF_SUFFIX_x86_64-apple-darwin := .darwin.def +CFG_INSTALL_NAME_x86_64-apple-darwin = -Wl,-install_name,@rpath/$(1) +CFG_LIBUV_LINK_FLAGS_x86_64-apple-darwin = +CFG_EXE_SUFFIX_x86_64-apple-darwin := +CFG_WINDOWSY_x86_64-apple-darwin := +CFG_UNIXY_x86_64-apple-darwin := 1 +CFG_PATH_MUNGE_x86_64-apple-darwin := true +CFG_LDPATH_x86_64-apple-darwin := +CFG_RUN_x86_64-apple-darwin=$(2) +CFG_RUN_TARG_x86_64-apple-darwin=$(call CFG_RUN_x86_64-apple-darwin,,$(2)) + +# i686-apple-darwin configuration +CC_i686-apple-darwin=$(CC) +CXX_i686-apple-darwin=$(CXX) +CPP_i686-apple-darwin=$(CPP) +AR_i686-apple-darwin=$(AR) +CFG_LIB_NAME_i686-apple-darwin=lib$(1).dylib +CFG_LIB_GLOB_i686-apple-darwin=lib$(1)-*.dylib +CFG_LIB_DSYM_GLOB_i686-apple-darwin=lib$(1)-*.dylib.dSYM +CFG_GCCISH_CFLAGS_i686-apple-darwin := -Wall -Werror -g -fPIC -m32 -arch i386 +CFG_GCCISH_CXXFLAGS_i686-apple-darwin := -fno-rtti +CFG_GCCISH_LINK_FLAGS_i686-apple-darwin := -dynamiclib -lpthread -framework CoreServices -Wl,-no_compact_unwind -m32 +CFG_GCCISH_DEF_FLAG_i686-apple-darwin := -Wl,-exported_symbols_list, +CFG_GCCISH_PRE_LIB_FLAGS_i686-apple-darwin := +CFG_GCCISH_POST_LIB_FLAGS_i686-apple-darwin := +CFG_DEF_SUFFIX_i686-apple-darwin := .darwin.def +CFG_INSTALL_NAME_i686-apple-darwin = -Wl,-install_name,@rpath/$(1) +CFG_LIBUV_LINK_FLAGS_i686-apple-darwin = +CFG_EXE_SUFFIX_i686-apple-darwin := +CFG_WINDOWSY_i686-apple-darwin := +CFG_UNIXY_i686-apple-darwin := 1 +CFG_PATH_MUNGE_i686-apple-darwin := true +CFG_LDPATH_i686-apple-darwin := +CFG_RUN_i686-apple-darwin=$(2) +CFG_RUN_TARG_i686-apple-darwin=$(call CFG_RUN_i686-apple-darwin,,$(2)) + +# arm-unknown-android configuration +CC_arm-unknown-android=$(CFG_ANDROID_CROSS_PATH)/bin/arm-linux-androideabi-gcc +CXX_arm-unknown-android=$(CFG_ANDROID_CROSS_PATH)/bin/arm-linux-androideabi-g++ +CPP_arm-unknown-android=$(CFG_ANDROID_CROSS_PATH)/bin/arm-linux-androideabi-gcc -E +AR_arm-unknown-android=$(CFG_ANDROID_CROSS_PATH)/bin/arm-linux-androideabi-ar +CFG_LIB_NAME_arm-unknown-android=lib$(1).so +CFG_LIB_GLOB_arm-unknown-android=lib$(1)-*.so +CFG_LIB_DSYM_GLOB_arm-unknown-android=lib$(1)-*.dylib.dSYM +CFG_GCCISH_CFLAGS_arm-unknown-android := -Wall -g -fPIC -D__arm__ -DANDROID -D__ANDROID__ +CFG_GCCISH_CXXFLAGS_arm-unknown-android := -fno-rtti +CFG_GCCISH_LINK_FLAGS_arm-unknown-android := -shared -fPIC -ldl -g -lm -lsupc++ -lgnustl_shared +CFG_GCCISH_DEF_FLAG_arm-unknown-android := -Wl,--export-dynamic,--dynamic-list= +CFG_GCCISH_PRE_LIB_FLAGS_arm-unknown-android := -Wl,-whole-archive +CFG_GCCISH_POST_LIB_FLAGS_arm-unknown-android := -Wl,-no-whole-archive -Wl,-znoexecstack +CFG_DEF_SUFFIX_arm-unknown-android := .android.def +CFG_INSTALL_NAME_arm-unknown-android = +CFG_LIBUV_LINK_FLAGS_arm-unknown-android = +CFG_EXE_SUFFIX_arm-unknown-android := +CFG_WINDOWSY_arm-unknown-android := +CFG_UNIXY_arm-unknown-android := 1 +CFG_PATH_MUNGE_arm-unknown-android := true +CFG_LDPATH_arm-unknown-android := +CFG_RUN_arm-unknown-android= +CFG_RUN_TARG_arm-unknown-android= +RUSTC_FLAGS_arm-unknown-android :=--android-cross-path='$(CFG_ANDROID_CROSS_PATH)' + +# i686-pc-mingw32 configuration +CC_i686-pc-mingw32=$(CC) +CXX_i686-pc-mingw32=$(CXX) +CPP_i686-pc-mingw32=$(CPP) +AR_i686-pc-mingw32=$(AR) +CFG_LIB_NAME_i686-pc-mingw32=$(1).dll +CFG_LIB_GLOB_i686-pc-mingw32=$(1)-*.dll +CFG_LIB_DSYM_GLOB_i686-pc-mingw32=$(1)-*.dylib.dSYM +CFG_GCCISH_CFLAGS_i686-pc-mingw32 := -Wall -Werror -g -march=i686 +CFG_GCCISH_CXXFLAGS_i686-pc-mingw32 := -fno-rtti +CFG_GCCISH_LINK_FLAGS_i686-pc-mingw32 := -shared -fPIC -g +CFG_GCCISH_DEF_FLAG_i686-pc-mingw32 := +CFG_GCCISH_PRE_LIB_FLAGS_i686-pc-mingw32 := +CFG_GCCISH_POST_LIB_FLAGS_i686-pc-mingw32 := +CFG_DEF_SUFFIX_i686-pc-mingw32 := .mingw32.def +CFG_INSTALL_NAME_i686-pc-mingw32 = +CFG_LIBUV_LINK_FLAGS_i686-pc-mingw32 := -lWs2_32 -lpsapi -liphlpapi +CFG_EXE_SUFFIX_i686-pc-mingw32 := .exe +CFG_WINDOWSY_i686-pc-mingw32 := 1 +CFG_UNIXY_i686-pc-mingw32 := +CFG_PATH_MUNGE_i686-pc-mingw32 := +CFG_LDPATH_i686-pc-mingw32 :=$(CFG_LDPATH_i686-pc-mingw32):$(PATH) +CFG_RUN_i686-pc-mingw32=PATH="$(CFG_LDPATH_i686-pc-mingw32):$(1)" $(2) +CFG_RUN_TARG_i686-pc-mingw32=$(call CFG_RUN_i686-pc-mingw32,$(HLIB$(1)_H_$(CFG_BUILD_TRIPLE)),$(2)) + +# i586-mingw32msvc configuration +CC_i586-mingw32msvc=$(CC) +CXX_i586-mingw32msvc=$(CXX) +CPP_i586-mingw32msvc=$(CPP) +AR_i586-mingw32msvc=$(AR) +CFG_LIB_NAME_i586-mingw32msvc=$(1).dll +CFG_LIB_GLOB_i586-mingw32msvc=$(1)-*.dll +CFG_LIB_DSYM_GLOB_i586-mingw32msvc=$(1)-*.dylib.dSYM +CFG_GCCISH_CFLAGS_i586-mingw32msvc := -Wall -Werror -g -march=586 -m32 +CFG_GCCISH_CXXFLAGS_i586-mingw32msvc := -fno-rtti +CFG_GCCISH_LINK_FLAGS_i586-mingw32msvc := -shared -g -m32 +CFG_GCCISH_DEF_FLAG_i586-mingw32msvc := +CFG_GCCISH_PRE_LIB_FLAGS_i586-mingw32msvc := +CFG_GCCISH_POST_LIB_FLAGS_i586-mingw32msvc := +CFG_DEF_SUFFIX_i586-mingw32msvc := .mingw32.def +CFG_INSTALL_NAME_i586-mingw32msvc = +CFG_LIBUV_LINK_FLAGS_i586-mingw32msvc := -lWs2_32 -lpsapi -liphlpapi +CFG_EXE_SUFFIX_i586-mingw32msvc := .exe +CFG_WINDOWSY_i586-mingw32msvc := 1 +CFG_UNIXY_i586-mingw32msvc := +CFG_PATH_MUNGE_i586-mingw32msvc := $(strip perl -i.bak -p \ + -e 's@\\(\S)@/\1@go;' \ + -e 's@^/([a-zA-Z])/@\1:/@o;') +CFG_LDPATH_i586-mingw32msvc := +CFG_RUN_i586-mingw32msvc= +CFG_RUN_TARG_i586-mingw32msvc= + +# x86_64-unknown-freebsd configuration +CC_x86_64-unknown-freebsd=$(CC) +CXX_x86_64-unknown-freebsd=$(CXX) +CPP_x86_64-unknown-freebsd=$(CPP) +AR_x86_64-unknown-freebsd=$(AR) +CFG_LIB_NAME_x86_64-unknown-freebsd=lib$(1).so +CFG_LIB_GLOB_x86_64-unknown-freebsd=lib$(1)-*.so +CFG_LIB_DSYM_GLOB_x86_64-unknown-freebsd=$(1)-*.dylib.dSYM +CFG_GCCISH_CFLAGS_x86_64-unknown-freebsd := -Wall -Werror -g -fPIC -I/usr/local/include +CFG_GCCISH_LINK_FLAGS_x86_64-unknown-freebsd := -shared -fPIC -g -lpthread -lrt +CFG_GCCISH_DEF_FLAG_x86_64-unknown-freebsd := -Wl,--export-dynamic,--dynamic-list= +CFG_GCCISH_PRE_LIB_FLAGS_x86_64-unknown-freebsd := -Wl,-whole-archive +CFG_GCCISH_POST_LIB_FLAGS_x86_64-unknown-freebsd := -Wl,-no-whole-archive +CFG_DEF_SUFFIX_x86_64-unknown-freebsd := .bsd.def +CFG_INSTALL_NAME_x86_64-unknown-freebsd = +CFG_LIBUV_LINK_FLAGS_x86_64-unknown-freebsd := -lpthread -lkvm +CFG_EXE_SUFFIX_x86_64-unknown-freebsd := +CFG_WINDOWSY_x86_64-unknown-freebsd := +CFG_UNIXY_x86_64-unknown-freebsd := 1 +CFG_PATH_MUNGE_x86_64-unknown-freebsd := +CFG_LDPATH_x86_64-unknown-freebsd := +CFG_RUN_x86_64-unknown-freebsd=$(2) +CFG_RUN_TARG_x86_64-unknown-freebsd=$(call CFG_RUN_x86_64-unknown-freebsd,,$(2)) + + +define CFG_MAKE_TOOLCHAIN + CFG_COMPILE_C_$(1) = $$(CC_$(1)) \ $$(CFG_GCCISH_CFLAGS) \ $$(CFG_GCCISH_CFLAGS_$(1)) \ $$(CFG_DEPEND_FLAGS) \ -c -o $$(1) $$(2) - CFG_LINK_C_$(1) = $$(CC) \ + CFG_LINK_C_$(1) = $$(CC_$(1)) \ $$(CFG_GCCISH_LINK_FLAGS) -o $$(1) \ $$(CFG_GCCISH_LINK_FLAGS_$(1))) \ $$(CFG_GCCISH_DEF_FLAG_$(1))$$(3) $$(2) \ $$(call CFG_INSTALL_NAME_$(1),$$(4)) - CFG_COMPILE_CXX_$(1) = $$(CXX) \ + CFG_COMPILE_CXX_$(1) = $$(CXX_$(1)) \ $$(CFG_GCCISH_CFLAGS) \ $$(CFG_GCCISH_CXXFLAGS) \ $$(CFG_GCCISH_CFLAGS_$(1)) \ $$(CFG_GCCISH_CXXFLAGS_$(1)) \ $$(CFG_DEPEND_FLAGS) \ -c -o $$(1) $$(2) - CFG_LINK_CXX_$(1) = $$(CXX) \ + CFG_LINK_CXX_$(1) = $$(CXX_$(1)) \ $$(CFG_GCCISH_LINK_FLAGS) -o $$(1) \ $$(CFG_GCCISH_LINK_FLAGS_$(1)) \ $$(CFG_GCCISH_DEF_FLAG_$(1))$$(3) $$(2) \ $$(call CFG_INSTALL_NAME_$(1),$$(4)) - else - - CFG_COMPILE_C_$(1) = $(CFG_GCCISH_CROSS_PREFIX_$(1))$$(CC) \ - $$(CFG_GCCISH_CFLAGS) \ - $$(CFG_GCCISH_CFLAGS_$(1)) \ - $$(CFG_DEPEND_FLAGS) \ - -c -o $$(1) $$(2) - CFG_LINK_C_$(1) = $(CFG_GCCISH_CROSS_PREFIX_$(1))$$(CC) \ - $$(CFG_GCCISH_LINK_FLAGS) -o $$(1) \ - $$(CFG_GCCISH_LINK_FLAGS_$(1))) \ - $$(CFG_GCCISH_DEF_FLAG_$(1))$$(3) $$(2) \ - $$(call CFG_INSTALL_NAME_$(1),$$(4)) - CFG_COMPILE_CXX_$(1) = $(CFG_GCCISH_CROSS_PREFIX_$(1))$$(CXX) \ - $$(CFG_GCCISH_CFLAGS) \ - $$(CFG_GCCISH_CXXFLAGS) \ - $$(CFG_GCCISH_CFLAGS_$(1)) \ - $$(CFG_GCCISH_CXXFLAGS_$(1)) \ - $$(CFG_DEPEND_FLAGS) \ - -c -o $$(1) $$(2) - CFG_LINK_CXX_$(1) = $(CFG_GCCISH_CROSS_PREFIX_$(1))$$(CXX) \ - $$(CFG_GCCISH_LINK_FLAGS) -o $$(1) \ - $$(CFG_GCCISH_LINK_FLAGS_$(1)) \ - $$(CFG_GCCISH_DEF_FLAG_$(1))$$(3) $$(2) \ - $$(call CFG_INSTALL_NAME_$(1),$$(4)) + ifneq ($(1),arm-unknown-android) - endif - -endef - -$(foreach target,$(CFG_TARGET_TRIPLES), \ - $(eval $(call CFG_MAKE_CC,$(target)))) - -# We're using llvm-mc as our assembler because it supports -# .cfi pseudo-ops on mac -define CFG_MAKE_ASSEMBLER - ifeq ($$(CFG_BUILD_TRIPLE),$(1)) - - CFG_ASSEMBLE_$(1)=$$(CPP) -E $$(CFG_DEPEND_FLAGS) $$(2) | \ + # We're using llvm-mc as our assembler because it supports + # .cfi pseudo-ops on mac + CFG_ASSEMBLE_$(1)=$$(CPP_$(1)) -E $$(CFG_DEPEND_FLAGS) $$(2) | \ $$(LLVM_MC_$$(CFG_BUILD_TRIPLE)) \ -assemble \ -filetype=obj \ @@ -365,11 +354,13 @@ define CFG_MAKE_ASSEMBLER -o=$$(1) else - CFG_ASSEMBLE_$(1)=$(CFG_GCCISH_CROSS_PREFIX_$(1))$$(CPP) $$(CFG_DEPEND_FLAGS) $$(2) -c -o $$(1) + # For the Android cross, use the Android assembler + # XXX: We should be able to use the LLVM assembler + CFG_ASSEMBLE_$(1)=$$(CXX_$(1)) $$(CFG_DEPEND_FLAGS) $$(2) -c -o $$(1) endif endef $(foreach target,$(CFG_TARGET_TRIPLES),\ - $(eval $(call CFG_MAKE_ASSEMBLER,$(target)))) + $(eval $(call CFG_MAKE_TOOLCHAIN,$(target)))) diff --git a/mk/rt.mk b/mk/rt.mk index de5a5420eea..d104d608e01 100644 --- a/mk/rt.mk +++ b/mk/rt.mk @@ -157,6 +157,7 @@ LIBUV_DEPS := $$(wildcard \ $$(S)src/libuv/*/*/*/*) endif +# XXX: Shouldn't need platform-specific conditions here ifdef CFG_WINDOWSY_$(1) $$(LIBUV_LIB_$(1)): $$(LIBUV_DEPS) $$(Q)$$(MAKE) -C $$(S)src/libuv/ \ @@ -168,9 +169,9 @@ $$(LIBUV_LIB_$(1)): $$(LIBUV_DEPS) $$(Q)$$(MAKE) -C $$(S)src/libuv/ \ CFLAGS="$$(LIBUV_FLAGS_$$(HOST_$(1))) $$(SNAP_DEFINES)" \ LDFLAGS="$$(LIBUV_FLAGS_$$(HOST_$(1)))" \ - CC="$$(CFG_GCCISH_CROSS_PREFIX_$(1))$$(CC)" \ - CXX="$$(CFG_GCCISH_CROSS_PREFIX_$(1))$$(CXX)" \ - AR="$$(CFG_GCCISH_CROSS_PREFIX_$(1))$$(AR)" \ + CC="$$(CC_$(1))" \ + CXX="$$(CXX_$(1))" \ + AR="$$(AR_$(1))" \ BUILDTYPE=Release \ builddir_name="$$(CFG_BUILD_DIR)/rt/$(1)/libuv" \ host=android OS=linux \