diff options
author | Reid Spencer <rspencer@reidspencer.com> | 2006-03-23 23:21:29 +0000 |
---|---|---|
committer | Reid Spencer <rspencer@reidspencer.com> | 2006-03-23 23:21:29 +0000 |
commit | b195d9d365e5f960c93ddfdf10638d5d147d9f6f (patch) | |
tree | b9e444706691bb8fc0ff717926bb4e02fc3080e7 /tools/llvm-config/llvm-config.in.in | |
parent | 7e0911585ec2996837f151baab3d3fc9145a7e02 (diff) |
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27005 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/llvm-config/llvm-config.in.in')
-rw-r--r-- | tools/llvm-config/llvm-config.in.in | 39 |
1 files changed, 26 insertions, 13 deletions
diff --git a/tools/llvm-config/llvm-config.in.in b/tools/llvm-config/llvm-config.in.in index 6f1533cb21..74bf7a9870 100644 --- a/tools/llvm-config/llvm-config.in.in +++ b/tools/llvm-config/llvm-config.in.in @@ -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 $BINDIR = q{@LLVM_BINDIR@}; 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 @@ Get various configuration information needed to compile programs which use 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 @@ Options: --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 fix_library_names (@) { 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 @@ sub build_name_map { } # 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']; } } |