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 [EMAIL PROTECTED]@ # # 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 = [EMAIL PROTECTED]@}; my $LIBDIR = [EMAIL PROTECTED]@}; my $ARCH = lc([EMAIL PROTECTED]@}); +my $TARGET_HAS_JIT = [EMAIL PROTECTED]@}; my @TARGETS_BUILT = map { lc($_) } [EMAIL PROTECTED]@}; #---- 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']; } } _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits