[llvm-commits] CVS: llvm/utils/llvm-config/Makefile find-cycles.pl llvm-config.in.in

Reid Spencer reid at x10sys.com
Thu Mar 23 15:21:46 PST 2006



Changes in directory llvm/utils/llvm-config:

Makefile updated: 1.3 -> 1.4
find-cycles.pl updated: 1.1 -> 1.2
llvm-config.in.in updated: 1.1 -> 1.2
---
Log message:

Update to llvm-config tool, by Erik Kidd:

1. Check for Perl and only build llvm-config if its available.
2. Add some virtual components
3. Don't depend on "standard" location for Perl, but configured location
4. Document the tool with a POD file.

This version is now ready for testing by users.


---
Diffs of the changes:  (+29 -14)

 Makefile          |    3 ++-
 find-cycles.pl    |    1 +
 llvm-config.in.in |   39 ++++++++++++++++++++++++++-------------
 3 files changed, 29 insertions(+), 14 deletions(-)


Index: llvm/utils/llvm-config/Makefile
diff -u llvm/utils/llvm-config/Makefile:1.3 llvm/utils/llvm-config/Makefile:1.4
--- llvm/utils/llvm-config/Makefile:1.3	Thu Mar 23 16:42:50 2006
+++ llvm/utils/llvm-config/Makefile	Thu Mar 23 17:21:29 2006
@@ -9,6 +9,7 @@
 
 LEVEL = ../..
 
+EXTRA_DIST = LibDeps.txt llvm-config.in.in find-cycles.pl
 
 include $(LEVEL)/Makefile.common
 
@@ -32,7 +33,7 @@
 # don't have to process them at runtime.
 FinalLibDeps.txt: find-cycles.pl # LibDeps.txt deliberately omitted.
 	$(Echo) "Finding cyclic dependencies between LLVM libraries."
-	$(Verb) $< < $(PROJ_SRC_DIR)/LibDeps.txt > $@
+	$(Verb) $(PERL) $< < $(PROJ_SRC_DIR)/LibDeps.txt > $@
 
 # Rerun our configure substitutions as needed.
 llvm-config.in: llvm-config.in.in $(ConfigStatusScript)


Index: llvm/utils/llvm-config/find-cycles.pl
diff -u llvm/utils/llvm-config/find-cycles.pl:1.1 llvm/utils/llvm-config/find-cycles.pl:1.2
--- llvm/utils/llvm-config/find-cycles.pl:1.1	Wed Mar 22 09:59:55 2006
+++ llvm/utils/llvm-config/find-cycles.pl	Thu Mar 23 17:21:29 2006
@@ -18,6 +18,7 @@
 # This file was written by Eric Kidd, and is placed into the public domain.
 #
 
+use 5.006;
 use strict;
 use warnings;
 


Index: llvm/utils/llvm-config/llvm-config.in.in
diff -u llvm/utils/llvm-config/llvm-config.in.in:1.1 llvm/utils/llvm-config/llvm-config.in.in:1.2
--- llvm/utils/llvm-config/llvm-config.in.in:1.1	Wed Mar 22 09:59:55 2006
+++ llvm/utils/llvm-config/llvm-config.in.in	Thu Mar 23 17:21:29 2006
@@ -1,4 +1,4 @@
-#!/usr/bin/perl 
+#!@PERL@
 #
 # Program:  llvm-config
 #
@@ -10,6 +10,7 @@
 # This file was written by Eric Kidd, and is placed into the public domain.
 #
 
+use 5.006;
 use strict;
 use warnings;
 
@@ -20,6 +21,7 @@
 my $INCLUDEDIR          = q{@LLVM_INCLUDEDIR@};
 my $LIBDIR              = q{@LLVM_LIBDIR@};
 my $ARCH                = lc(q{@ARCH@});
+my $TARGET_HAS_JIT      = q{@TARGET_HAS_JIT@};
 my @TARGETS_BUILT       = map { lc($_) } qw{@TARGETS_TO_BUILD@};
 #---- end autoconf values ----
 
@@ -106,7 +108,7 @@
 LLVM.  Typically called from 'configure' scripts.  Examples:
   llvm-config --cxxflags
   llvm-config --ldflags
-  llvm-config --libs jitplus
+  llvm-config --libs engine bcreader scalaropts
 
 Options:
   --version              LLVM version.
@@ -122,8 +124,8 @@
   --targets-built        List of all targets currently built.
 Typical components:
   all                    All LLVM libraries (default).
-  native                 A native-code backend for this platform, if any.
-  jitplus                All libraries needed to use the LLVM JIT examples.
+  backend                Either a native backend or the C backend.
+  engine                 Either a native JIT or a bytecode interpreter.
 __EOD__
     exit(1);
 }
@@ -163,7 +165,8 @@
 
 sub load_dependencies;
 sub build_name_map;
-sub find_native_platform;
+sub have_native_backend;
+sub find_best_engine;
 sub expand_names (@);
 sub find_all_required_sets (@);
 sub find_all_required_sets_helper ($$@);
@@ -231,19 +234,29 @@
     }
 
     # Add virtual entries.
-    $NAME_MAP{'native'}  = find_native_platform;
-    $NAME_MAP{'jitplus'} = ['native', 'jit', 'bcreader', 'scalaropts'];
-    $NAME_MAP{'all'}     = [name_map_entries]; # Must be last.
+    $NAME_MAP{'native'}  = have_native_backend() ? [$ARCH] : [];
+    $NAME_MAP{'backend'} = have_native_backend() ? ['native'] : ['cbackend'];
+    $NAME_MAP{'engine'}  = find_best_engine;
+    $NAME_MAP{'all'}     = [name_map_entries];   # Must be last.
 }
 
-# Figure our what native platform we should use, if any.
-sub find_native_platform {
+# Return true if we have a native backend to use.
+sub have_native_backend {
     my %BUILT;
     foreach my $target (@TARGETS_BUILT) { $BUILT{$target} = 1; }
-    if (defined $NAME_MAP{$ARCH} && defined $BUILT{$ARCH}) {
-        return [$ARCH];
+    return defined $NAME_MAP{$ARCH} && defined $BUILT{$ARCH};
+}
+
+# Find a working subclass of ExecutionEngine for this platform.
+sub find_best_engine {
+    if (have_native_backend && $TARGET_HAS_JIT) {
+        # XXX - Right now, if we omit the interpreter, we get a linker
+        # error complaining about
+        # __ZN4llvm11Interpreter6createEPNS_6ModuleEPNS_17IntrinsicLoweringE.
+        # This needs investigation.
+        return ['jit', 'native', 'interpreter'];
     } else {
-        return [];
+        return ['interpreter'];
     }
 }
 






More information about the llvm-commits mailing list