[llvm-commits] CVS: llvm-test/Makefile.programs

Reid Spencer reid at x10sys.com
Thu Nov 30 15:00:56 PST 2006



Changes in directory llvm-test:

Makefile.programs updated: 1.245 -> 1.246
---
Log message:

Add a facility for linking test programs against the llvm-gcc libraries
that it was produced with. Some programs will use libstdc++.a or libgcc.a
in such a way that it matters which version of those libraries is linked
into the program. Leaving it to the system compiler's discretion can
lead to runtime failures in the test program. So, to ensure that your
test programs link with the right libraries, enable the make variable
LINK_WITH_LLVMGCC_LIBS


---
Diffs of the changes:  (+17 -3)

 Makefile.programs |   20 +++++++++++++++++---
 1 files changed, 17 insertions(+), 3 deletions(-)


Index: llvm-test/Makefile.programs
diff -u llvm-test/Makefile.programs:1.245 llvm-test/Makefile.programs:1.246
--- llvm-test/Makefile.programs:1.245	Tue Nov 28 01:18:25 2006
+++ llvm-test/Makefile.programs	Thu Nov 30 17:00:41 2006
@@ -94,6 +94,18 @@
 RUNSAFELY := $(PROGDIR)/RunSafelyAndStable.sh $(RUNTIMELIMIT) $(EXIT_OK)
 endif
 
+# LLVMGCCLD - This sets up the command to use for linking test programs
+# that were generated with llvm-gcc. Usually $(CC) is sufficient but, 
+# depending on libstdc++ and libgcc.a usage, it may be necessary to ensure
+# that the link is done against llvm-gcc's version of those libraries. If
+# the LINK_WITH_LLVMGCC_LIBS variable is set, then the link is done that
+# way. Unfortunately, this can't help JIT because it is always linked with
+# the libraries of lli.
+LLVMGCCLD := $(CC)
+ifdef LINK_WITH_LLVMGCC_LIBS
+LLVMGCCLD := $(CC) -L$(LLVMGCCDIR)/lib/gcc/$(LLVMGCCARCH) -L$(LLVMGCCDIR)/lib
+endif
+
 ifndef STDIN_FILENAME
 STDIN_FILENAME := /dev/null
 endif
@@ -295,7 +307,7 @@
 
 $(PROGRAMS_TO_TEST:%=Output/%.cbe): \
 Output/%.cbe: Output/%.cbe.c
-	-$(CC) $< $(LDFLAGS) $(CFLAGS) -fno-strict-aliasing -O2 -fno-inline $(TARGET_FLAGS) -o $@
+	-$(LLVMGCCLD) $< $(LDFLAGS) $(CFLAGS) -fno-strict-aliasing -O2 -fno-inline $(TARGET_FLAGS) -o $@
 
 #
 # Compile a linked program to machine code with LLC.
@@ -321,11 +333,13 @@
 #
 $(PROGRAMS_TO_TEST:%=Output/%.llc): \
 Output/%.llc: Output/%.llc.s
-	-$(CC) $(CFLAGS) $< $(LLCLIBS) $(LLCASSEMBLERFLAGS) $(TARGET_FLAGS) $(LDFLAGS) -o $@
+	-$(LLVMGCCLD) $(CFLAGS) $< $(LLCLIBS) $(LLCASSEMBLERFLAGS) \
+	  $(TARGET_FLAGS) $(LDFLAGS) -o $@
 
 $(PROGRAMS_TO_TEST:%=Output/%.llc-beta): \
 Output/%.llc-beta: Output/%.llc-beta.s
-	-$(CC) $(CFLAGS) $< $(LLCLIBS) $(LLCASSEMBLERFLAGS) $(TARGET_FLAGS) $(LDFLAGS) -o $@
+	-$(LLVMGCCLD) $(CFLAGS) $< $(LLCLIBS) $(LLCASSEMBLERFLAGS) \
+	  $(TARGET_FLAGS) $(LDFLAGS) -o $@
 
 
 #






More information about the llvm-commits mailing list