diff --git a/mk/main.mk b/mk/main.mk index 5c0bffda7be2..d652fac12f89 100644 --- a/mk/main.mk +++ b/mk/main.mk @@ -349,17 +349,44 @@ CFGFLAG$(1)_T_$(2)_H_$(3) = stage$(1) endef # Same macro/variables as above, but defined in a separate loop so it can use -# all the varibles above for all archs. The RPATH_VAR setup sometimes needs to +# all the variables above for all archs. The RPATH_VAR setup sometimes needs to # reach across triples to get things in order. +# +# Defines (with the standard $(1)_T_$(2)_H_$(3) suffix): +# * `LD_LIBRARY_PATH_ENV_NAME`: the name for the key to use in the OS +# environment to access or extend the lookup path for dynamic +# libraries. Note on Windows, that key is `$PATH`, and thus not +# only conflates programs with dynamic libraries, but also often +# contains spaces which confuse make. +# * `LD_LIBRARY_PATH_ENV_HOSTDIR`: the entry to add to lookup path for the host +# * `LD_LIBRARY_PATH_ENV_TARGETDIR`: the entry to add to lookup path for target +# +# Below that, HOST_RPATH_VAR and TARGET_RPATH_VAR are defined in terms of the +# above settings. +# define SREQ_CMDS ifeq ($$(OSTYPE_$(3)),apple-darwin) - RPATH_VAR$(1)_T_$(2)_H_$(3) := \ - DYLD_LIBRARY_PATH="$$$$DYLD_LIBRARY_PATH:$$(CURDIR)/$$(HLIB$(1)_H_$(3))" + LD_LIBRARY_PATH_ENV_NAME$(1)_T_$(2)_H_$(3) := DYLD_LIBRARY_PATH else - RPATH_VAR$(1)_T_$(2)_H_$(3) := \ - LD_LIBRARY_PATH="$$$$LD_LIBRARY_PATH:$$(CURDIR)/$$(HLIB$(1)_H_$(3))" +ifeq ($$(CFG_WINDOWSY_$(2)),1) + LD_LIBRARY_PATH_ENV_NAME$(1)_T_$(2)_H_$(3) := PATH +else + LD_LIBRARY_PATH_ENV_NAME$(1)_T_$(2)_H_$(3) := LD_LIBRARY_PATH endif +endif + +LD_LIBRARY_PATH_ENV_HOSTDIR$(1)_T_$(2)_H_$(3) := \ + $$(CURDIR)/$$(HLIB$(1)_H_$(3)) +LD_LIBRARY_PATH_ENV_TARGETDIR$(1)_T_$(2)_H_$(3) := \ + $$(CURDIR)/$$(TLIB1_T_$(2)_H_$(CFG_BUILD)) + +HOST_RPATH_VAR$(1)_T_$(2)_H_$(3) := \ + $$(LD_LIBRARY_PATH_ENV_NAME$(1)_T_$(2)_H_$(3))=$$$$$$(LD_LIBRARY_PATH_ENV_NAME$(1)_T_$(2)_H_$(3)):$$(LD_LIBRARY_PATH_ENV_HOSTDIR$(1)_T_$(2)_H_$(3)) +TARGET_RPATH_VAR$(1)_T_$(2)_H_$(3) := \ + $$(LD_LIBRARY_PATH_ENV_NAME$(1)_T_$(2)_H_$(3))=$$$$$$(LD_LIBRARY_PATH_ENV_NAME$(1)_T_$(2)_H_$(3)):$$(LD_LIBRARY_PATH_ENV_TARGETDIR$(1)_T_$(2)_H_$(3)) + +RPATH_VAR$(1)_T_$(2)_H_$(3) := $$(HOST_RPATH_VAR$(1)_T_$(2)_H_$(3)) # Pass --cfg stage0 only for the build->host part of stage0; # if you're building a cross config, the host->* parts are @@ -376,13 +403,7 @@ ifeq ($(1),0) ifneq ($(strip $(CFG_BUILD)),$(strip $(3))) CFGFLAG$(1)_T_$(2)_H_$(3) = stage1 -ifeq ($$(OSTYPE_$(3)),apple-darwin) - RPATH_VAR$(1)_T_$(2)_H_$(3) := \ - DYLD_LIBRARY_PATH="$$$$DYLD_LIBRARY_PATH:$$(CURDIR)/$$(TLIB1_T_$(2)_H_$(CFG_BUILD))" -else - RPATH_VAR$(1)_T_$(2)_H_$(3) := \ - LD_LIBRARY_PATH="$$$$LD_LIBRARY_PATH:$$(CURDIR)/$$(TLIB1_T_$(2)_H_$(CFG_BUILD))" -endif +RPATH_VAR$(1)_T_$(2)_H_$(3) := $$(TARGET_RPATH_VAR$(1)_T_$(2)_H_$(3)) endif endif diff --git a/mk/tests.mk b/mk/tests.mk index 8f20d55e3859..25f03751074f 100644 --- a/mk/tests.mk +++ b/mk/tests.mk @@ -793,8 +793,27 @@ else CRATEDOCTESTDEP_$(1)_$(2)_$(3)_$(4) = $$(RSINPUTS_$(4)) endif +# (Issues #13732, #13983, #14000) The doc for the regex crate includes +# uses of the `regex!` macro from the regex_macros crate. There is +# normally a dependence injected that makes the target's regex depend +# upon the host's regex_macros (see #13845), but that dependency +# injection is currently skipped for stage1 as a special case. +# +# Therefore, as a further special case, this conditional skips +# attempting to run the doc tests for the regex crate atop stage1, +# (since there is no regex_macros crate for the stage1 rustc to load). +# +# (Another approach for solving this would be to inject the desired +# dependence for stage1 as well, by setting things up to generate a +# regex_macros crate that was compatible with the stage1 rustc and +# thus re-enable our ability to run this test.) +ifeq (stage$(1)-crate-$(4),stage1-crate-regex) +check-stage$(1)-T-$(2)-H-$(3)-doc-crate-$(4)-exec: + @$$(call E, skipping doc-crate-$(4) as it uses macros and cannot run at stage$(1)) +else check-stage$(1)-T-$(2)-H-$(3)-doc-crate-$(4)-exec: \ $$(call TEST_OK_FILE,$(1),$(2),$(3),doc-crate-$(4)) +endif ifeq ($(2),$$(CFG_BUILD)) $$(call TEST_OK_FILE,$(1),$(2),$(3),doc-crate-$(4)): $$(CRATEDOCTESTDEP_$(1)_$(2)_$(3)_$(4)) @@ -951,7 +970,10 @@ $(3)/test/run-make/%-$(1)-T-$(2)-H-$(3).ok: \ "$$(CC_$(3)) $$(CFG_GCCISH_CFLAGS_$(3))" \ $$(HBIN$(1)_H_$(3))/rustdoc$$(X_$(3)) \ "$$(TESTNAME)" \ - "$$(RPATH_VAR$(1)_T_$(2)_H_$(3))" + $$(LD_LIBRARY_PATH_ENV_NAME$(1)_T_$(2)_H_$(3)) \ + "$$(LD_LIBRARY_PATH_ENV_HOSTDIR$(1)_T_$(2)_H_$(3))" \ + "$$(LD_LIBRARY_PATH_ENV_TARGETDIR$(1)_T_$(2)_H_$(3))" \ + $(1) @touch $$@ else # FIXME #11094 - The above rule doesn't work right for multiple targets diff --git a/src/etc/maketest.py b/src/etc/maketest.py index 7646113560bb..0e2c1e77ab4c 100644 --- a/src/etc/maketest.py +++ b/src/etc/maketest.py @@ -30,6 +30,10 @@ def putenv(name, value): value = normalize_path(value) os.putenv(name, value) +def convert_path_spec(name, value): + if os.name == 'nt' and name != 'PATH': + value = ":".join(normalize_path(v) for v in value.split(";")) + return value make = sys.argv[2] putenv('RUSTC', os.path.abspath(sys.argv[3])) @@ -37,13 +41,10 @@ putenv('TMPDIR', os.path.abspath(sys.argv[4])) putenv('CC', sys.argv[5]) putenv('RUSTDOC', os.path.abspath(sys.argv[6])) filt = sys.argv[7] -ldpath = sys.argv[8] -if ldpath != '': - name = ldpath.split('=')[0] - value = ldpath.split('=')[1] - if os.name == 'nt' and name != 'PATH': - value = ":".join(normalize_path(v) for v in value.split(";")) - os.putenv(name, value) +putenv('LD_LIB_PATH_ENVVAR', sys.argv[8]); +putenv('HOST_RPATH_DIR', os.path.abspath(sys.argv[9])); +putenv('TARGET_RPATH_DIR', os.path.abspath(sys.argv[10])); +putenv('RUST_BUILD_STAGE', sys.argv[11]) if not filt in sys.argv[1]: sys.exit(0) diff --git a/src/test/run-make/bootstrap-from-c-with-green/Makefile b/src/test/run-make/bootstrap-from-c-with-green/Makefile index 43388fd9a6f9..3b28af9b0e83 100644 --- a/src/test/run-make/bootstrap-from-c-with-green/Makefile +++ b/src/test/run-make/bootstrap-from-c-with-green/Makefile @@ -1,9 +1,13 @@ -include ../tools.mk +HOST_LIB_DIR=$(TMPDIR)/../../../stage$(RUST_BUILD_STAGE)/lib +# This overrides the LD_LIBRARY_PATH for RUN +TARGET_RPATH_DIR:=$(TARGET_RPATH_DIR):$(TMPDIR) + all: $(RUSTC) lib.rs ln -nsf $(call DYLIB,boot-*) $(call DYLIB,boot) - $(CC) main.c -o $(call RUN,main) -lboot + $(CC) main.c -o $(call RUN_BINFILE,main) $(call RPATH_LINK_SEARCH,$(HOST_LIB_DIR)) -lboot $(call RUN,main) - rm $(call DYLIB,boot) + $(call REMOVE_DYLIBS,boot) $(call FAIL,main) diff --git a/src/test/run-make/bootstrap-from-c-with-native/Makefile b/src/test/run-make/bootstrap-from-c-with-native/Makefile index 43388fd9a6f9..3b28af9b0e83 100644 --- a/src/test/run-make/bootstrap-from-c-with-native/Makefile +++ b/src/test/run-make/bootstrap-from-c-with-native/Makefile @@ -1,9 +1,13 @@ -include ../tools.mk +HOST_LIB_DIR=$(TMPDIR)/../../../stage$(RUST_BUILD_STAGE)/lib +# This overrides the LD_LIBRARY_PATH for RUN +TARGET_RPATH_DIR:=$(TARGET_RPATH_DIR):$(TMPDIR) + all: $(RUSTC) lib.rs ln -nsf $(call DYLIB,boot-*) $(call DYLIB,boot) - $(CC) main.c -o $(call RUN,main) -lboot + $(CC) main.c -o $(call RUN_BINFILE,main) $(call RPATH_LINK_SEARCH,$(HOST_LIB_DIR)) -lboot $(call RUN,main) - rm $(call DYLIB,boot) + $(call REMOVE_DYLIBS,boot) $(call FAIL,main) diff --git a/src/test/run-make/c-dynamic-dylib/Makefile b/src/test/run-make/c-dynamic-dylib/Makefile index 2b2e5d56e92d..c4720c418a77 100644 --- a/src/test/run-make/c-dynamic-dylib/Makefile +++ b/src/test/run-make/c-dynamic-dylib/Makefile @@ -9,6 +9,6 @@ all: $(call DYLIB,cfoo) $(RUSTC) foo.rs $(RUSTC) bar.rs $(call RUN,bar) - rm $(TMPDIR)/$(call DYLIB_GLOB,cfoo) + $(call REMOVE_DYLIBS,cfoo) $(call FAIL,bar) endif diff --git a/src/test/run-make/c-dynamic-rlib/Makefile b/src/test/run-make/c-dynamic-rlib/Makefile index 18992703b2c8..e15cfd34d6c3 100644 --- a/src/test/run-make/c-dynamic-rlib/Makefile +++ b/src/test/run-make/c-dynamic-rlib/Makefile @@ -1,5 +1,8 @@ -include ../tools.mk +# This overrides the LD_LIBRARY_PATH for RUN +TARGET_RPATH_DIR:=$(TARGET_RPATH_DIR):$(TMPDIR) + # This hits an assertion in the linker on older versions of osx apparently ifeq ($(shell uname),Darwin) all: @@ -8,7 +11,7 @@ else all: $(call DYLIB,cfoo) $(RUSTC) foo.rs $(RUSTC) bar.rs - LD_LIBRARY_PATH=$(TMPDIR) $(call RUN,bar) - rm $(TMPDIR)/$(call DYLIB_GLOB,cfoo) + $(call RUN,bar) + $(call REMOVE_DYLIBS,cfoo) $(call FAIL,bar) endif diff --git a/src/test/run-make/c-link-to-rust-dylib/Makefile b/src/test/run-make/c-link-to-rust-dylib/Makefile index fb57a08a8261..e743004a9cbc 100644 --- a/src/test/run-make/c-link-to-rust-dylib/Makefile +++ b/src/test/run-make/c-link-to-rust-dylib/Makefile @@ -1,9 +1,11 @@ -include ../tools.mk +HOST_LIB_DIR=$(TMPDIR)/../../../stage$(RUST_BUILD_STAGE)/lib + all: $(RUSTC) foo.rs ln -s $(call DYLIB,foo-*) $(call DYLIB,foo) - $(CC) bar.c -lfoo -o $(call RUN,bar) -Wl,-rpath,$(TMPDIR) + $(CC) bar.c -lfoo -o $(call RUN_BINFILE,bar) $(call RPATH_LINK_SEARCH,$(HOST_LIB_DIR)) -Wl,-rpath,$(TMPDIR) $(call RUN,bar) - rm $(call DYLIB,foo) + $(call REMOVE_DYLIBS,foo) $(call FAIL,bar) diff --git a/src/test/run-make/c-link-to-rust-staticlib/Makefile b/src/test/run-make/c-link-to-rust-staticlib/Makefile index 7312a65c8123..40b6feac6782 100644 --- a/src/test/run-make/c-link-to-rust-staticlib/Makefile +++ b/src/test/run-make/c-link-to-rust-staticlib/Makefile @@ -11,7 +11,7 @@ ifneq ($(shell uname),FreeBSD) all: $(RUSTC) foo.rs ln -s $(call STATICLIB,foo-*) $(call STATICLIB,foo) - $(CC) bar.c -lfoo -o $(call RUN,bar) $(EXTRAFLAGS) -lstdc++ + $(CC) bar.c -lfoo -o $(call RUN_BINFILE,bar) $(EXTRAFLAGS) -lstdc++ $(call RUN,bar) rm $(call STATICLIB,foo*) $(call RUN,bar) diff --git a/src/test/run-make/c-static-dylib/Makefile b/src/test/run-make/c-static-dylib/Makefile index 62d9c8e90f21..6b047846cfde 100644 --- a/src/test/run-make/c-static-dylib/Makefile +++ b/src/test/run-make/c-static-dylib/Makefile @@ -5,5 +5,5 @@ all: $(call STATICLIB,cfoo) $(RUSTC) bar.rs rm $(TMPDIR)/$(call STATICLIB_GLOB,cfoo) $(call RUN,bar) - rm $(TMPDIR)/$(call DYLIB_GLOB,foo) + $(call REMOVE_DYLIBS,foo) $(call FAIL,bar) diff --git a/src/test/run-make/c-static-rlib/Makefile b/src/test/run-make/c-static-rlib/Makefile index 09eb4b1249e5..02b24ef9846d 100644 --- a/src/test/run-make/c-static-rlib/Makefile +++ b/src/test/run-make/c-static-rlib/Makefile @@ -3,6 +3,6 @@ all: $(call STATICLIB,cfoo) $(RUSTC) foo.rs $(RUSTC) bar.rs - rm $(TMPDIR)/$(call RLIB_GLOB,foo) + $(call REMOVE_RLIBS,foo) rm $(TMPDIR)/$(call STATICLIB_GLOB,cfoo) $(call RUN,bar) diff --git a/src/test/run-make/dylib-chain/Makefile b/src/test/run-make/dylib-chain/Makefile index e60e904240d1..2149f2451470 100644 --- a/src/test/run-make/dylib-chain/Makefile +++ b/src/test/run-make/dylib-chain/Makefile @@ -6,7 +6,7 @@ all: $(RUSTC) m3.rs $(RUSTC) m4.rs $(call RUN,m4) - rm $(TMPDIR)/$(call DYLIB_GLOB,m1) - rm $(TMPDIR)/$(call DYLIB_GLOB,m2) - rm $(TMPDIR)/$(call DYLIB_GLOB,m3) + $(call REMOVE_DYLIBS,m1) + $(call REMOVE_DYLIBS,m2) + $(call REMOVE_DYLIBS,m3) $(call FAIL,m4) diff --git a/src/test/run-make/extern-fn-reachable/Makefile b/src/test/run-make/extern-fn-reachable/Makefile index 0560626c9994..56748b1eb9b0 100644 --- a/src/test/run-make/extern-fn-reachable/Makefile +++ b/src/test/run-make/extern-fn-reachable/Makefile @@ -1,5 +1,8 @@ -include ../tools.mk +# This overrides the LD_LIBRARY_PATH for RUN +TARGET_RPATH_DIR:=$(TARGET_RPATH_DIR):$(TMPDIR) + all: $(RUSTC) dylib.rs -o $(TMPDIR)/libdylib.so $(RUSTC) main.rs diff --git a/src/test/run-make/lto-smoke-c/Makefile b/src/test/run-make/lto-smoke-c/Makefile index 85b8d0e2dd82..49a04ce42a0a 100644 --- a/src/test/run-make/lto-smoke-c/Makefile +++ b/src/test/run-make/lto-smoke-c/Makefile @@ -19,5 +19,5 @@ CC := $(CC:-g=) all: $(RUSTC) foo.rs -Z lto ln -s $(call STATICLIB,foo-*) $(call STATICLIB,foo) - $(CC) bar.c -lfoo -o $(call RUN,bar) $(EXTRAFLAGS) -lstdc++ + $(CC) bar.c -lfoo -o $(call RUN_BINFILE,bar) $(EXTRAFLAGS) -lstdc++ $(call RUN,bar) diff --git a/src/test/run-make/lto-syntax-extension/Makefile b/src/test/run-make/lto-syntax-extension/Makefile index 4652556d3440..c522f30e2df1 100644 --- a/src/test/run-make/lto-syntax-extension/Makefile +++ b/src/test/run-make/lto-syntax-extension/Makefile @@ -1,6 +1,18 @@ -include ../tools.mk -all: +# This test attempts to use syntax extensions, which are known to be +# incompatible with stage1 at the moment. + +ifeq ($(RUST_BUILD_STAGE),1) +DOTEST= +else +DOTEST=dotest +endif + +all: $(DOTEST) + +dotest: + env $(RUSTC) lib.rs $(RUSTC) main.rs -Z lto $(call RUN,main) diff --git a/src/test/run-make/missing-crate-dependency/Makefile b/src/test/run-make/missing-crate-dependency/Makefile index a470ee0a7c1b..3f8b97f25665 100644 --- a/src/test/run-make/missing-crate-dependency/Makefile +++ b/src/test/run-make/missing-crate-dependency/Makefile @@ -3,7 +3,7 @@ all: $(RUSTC) --crate-type=rlib crateA.rs $(RUSTC) --crate-type=rlib crateB.rs - rm $(TMPDIR)/$(call RLIB_GLOB,crateA) + $(call REMOVE_RLIBS,crateA) # Ensure crateC fails to compile since dependency crateA is missing $(RUSTC) crateC.rs 2>&1 | \ grep "error: can't find crate for \`crateA\` which \`crateB\` depends on" diff --git a/src/test/run-make/mixing-libs/Makefile b/src/test/run-make/mixing-libs/Makefile index 4de0cb327629..babeeef164dd 100644 --- a/src/test/run-make/mixing-libs/Makefile +++ b/src/test/run-make/mixing-libs/Makefile @@ -5,5 +5,5 @@ all: $(RUSTC) dylib.rs $(RUSTC) rlib.rs --crate-type=dylib $(RUSTC) dylib.rs - rm $(call DYLIB,rlib-*) + $(call REMOVE_DYLIBS,rlib) $(RUSTC) prog.rs && exit 1 || exit 0 diff --git a/src/test/run-make/obey-crate-type-flag/Makefile b/src/test/run-make/obey-crate-type-flag/Makefile index a3c58a6bf17f..903349152dfd 100644 --- a/src/test/run-make/obey-crate-type-flag/Makefile +++ b/src/test/run-make/obey-crate-type-flag/Makefile @@ -7,7 +7,7 @@ # fail if an rlib was built all: $(RUSTC) test.rs - rm $(TMPDIR)/$(call RLIB_GLOB,test) - rm $(TMPDIR)/$(call DYLIB_GLOB,test) + $(call REMOVE_RLIBS,test) + $(call REMOVE_DYLIBS,test) $(RUSTC) --crate-type dylib test.rs - rm $(TMPDIR)/$(call RLIB_GLOB,test) && exit 1 || exit 0 + $(call REMOVE_RLIBS,test) && exit 1 || exit 0 diff --git a/src/test/run-make/output-type-permutations/Makefile b/src/test/run-make/output-type-permutations/Makefile index 5a309cddeb18..c163a5bec086 100644 --- a/src/test/run-make/output-type-permutations/Makefile +++ b/src/test/run-make/output-type-permutations/Makefile @@ -2,8 +2,8 @@ all: $(RUSTC) foo.rs --crate-type=rlib,dylib,staticlib - rm $(TMPDIR)/$(call RLIB_GLOB,bar) - rm $(TMPDIR)/$(call DYLIB_GLOB,bar) + $(call REMOVE_RLIBS,bar) + $(call REMOVE_DYLIBS,bar) rm $(TMPDIR)/$(call STATICLIB_GLOB,bar) $(RUSTC) foo.rs --crate-type=bin rm $(TMPDIR)/$(call BIN,bar) @@ -41,4 +41,4 @@ all: cmp $(TMPDIR)/foo.bc $(TMPDIR)/bar.bc rm $(TMPDIR)/bar.bc rm $(TMPDIR)/foo.bc - rm $(TMPDIR)/$(call RLIB_GLOB,bar) + $(call REMOVE_RLIBS,bar) diff --git a/src/test/run-make/prefer-dylib/Makefile b/src/test/run-make/prefer-dylib/Makefile index 38759b2f5249..fe9bbb95095b 100644 --- a/src/test/run-make/prefer-dylib/Makefile +++ b/src/test/run-make/prefer-dylib/Makefile @@ -5,4 +5,4 @@ all: $(RUSTC) foo.rs -C prefer-dynamic $(call RUN,foo) rm $(TMPDIR)/*bar* - $(call FAILS,foo) + $(call FAIL,foo) diff --git a/src/test/run-make/tools.mk b/src/test/run-make/tools.mk index 90274cdb3e7a..dedd739052ca 100644 --- a/src/test/run-make/tools.mk +++ b/src/test/run-make/tools.mk @@ -4,8 +4,20 @@ export DYLD_LIBRARY_PATH:=$(TMPDIR):$(DYLD_LIBRARY_PATH) RUSTC := $(RUSTC) --out-dir $(TMPDIR) -L $(TMPDIR) CC := $(CC) -L $(TMPDIR) -RUN = $(TMPDIR)/$(1) -FAILS = $(TMPDIR)/$(1) && exit 1 || exit 0 +# These deliberately use `=` and not `:=` so that client makefiles can +# augment HOST_RPATH_DIR / TARGET_RPATH_DIR. +HOST_RPATH_ENV = \ + $(LD_LIB_PATH_ENVVAR)=$$$(LD_LIB_PATH_ENVVAR):$(HOST_RPATH_DIR) +TARGET_RPATH_ENV = \ + $(LD_LIB_PATH_ENVVAR)=$$$(LD_LIB_PATH_ENVVAR):$(TARGET_RPATH_DIR) + +# This is the name of the binary we will generate and run; use this +# e.g. for `$(CC) -o $(RUN_BINFILE)`. +RUN_BINFILE = $(TMPDIR)/$(1) + +# RUN and FAIL are basic way we will invoke the generated binary. On +# non-windows platforms, they set the LD_LIBRARY_PATH environment +# variable before running the binary. RLIB_GLOB = lib$(1)*.rlib STATICLIB = $(TMPDIR)/lib$(1).a @@ -18,20 +30,32 @@ IS_WINDOWS=1 endif ifeq ($(UNAME),Darwin) +RUN = $(TARGET_RPATH_ENV) $(RUN_BINFILE) +FAIL = $(TARGET_RPATH_ENV) $(RUN_BINFILE) && exit 1 || exit 0 DYLIB_GLOB = lib$(1)*.dylib DYLIB = $(TMPDIR)/lib$(1).dylib +RPATH_LINK_SEARCH = else ifdef IS_WINDOWS +RUN = PATH="$(PATH):$(TARGET_RPATH_DIR)" $(RUN_BINFILE) +FAIL = PATH="$(PATH):$(TARGET_RPATH_DIR)" $(RUN_BINFILE) && exit 1 || exit 0 DYLIB_GLOB = $(1)*.dll DYLIB = $(TMPDIR)/$(1).dll BIN = $(1).exe -export PATH := $(PATH):$(LD_LIBRARY_PATH) +RPATH_LINK_SEARCH = +RUSTC := PATH="$(PATH):$(LD_LIBRARY_PATH)" $(RUSTC) else +RUN = $(TARGET_RPATH_ENV) $(RUN_BINFILE) +FAIL = $(TARGET_RPATH_ENV) $(RUN_BINFILE) && exit 1 || exit 0 DYLIB_GLOB = lib$(1)*.so DYLIB = $(TMPDIR)/lib$(1).so +RPATH_LINK_SEARCH = -Wl,-rpath-link=$(1) endif endif +REMOVE_DYLIBS = rm $(TMPDIR)/$(call DYLIB_GLOB,$(1)) +REMOVE_RLIBS = rm $(TMPDIR)/$(call RLIB_GLOB,$(1)) + %.a: %.o ar crus $@ $< %.dylib: %.o diff --git a/src/test/run-make/unicode-input/Makefile b/src/test/run-make/unicode-input/Makefile index 529bfc24a400..f834a85cdcc7 100644 --- a/src/test/run-make/unicode-input/Makefile +++ b/src/test/run-make/unicode-input/Makefile @@ -1,9 +1,21 @@ -include ../tools.mk +# This test attempts to run rustc itself from the compiled binary; but +# that means that you need to set the LD_LIBRARY_PATH for rustc itself +# while running multiple_files, and that won't work for stage1. + # FIXME ignore windows ifndef IS_WINDOWS +ifeq ($(RUST_BUILD_STAGE),1) +DOTEST= +else +DOTEST=dotest +endif +endif -all: +all: $(DOTEST) + +dotest: # check that we don't ICE on unicode input, issue #11178 $(RUSTC) multiple_files.rs $(call RUN,multiple_files) "$(RUSTC)" "$(TMPDIR)" @@ -12,8 +24,3 @@ all: # correct length. issue #8706 $(RUSTC) span_length.rs $(call RUN,span_length) "$(RUSTC)" "$(TMPDIR)" - -else -all: - -endif