#!@PERL@ # # Program: llvm-config # # Synopsis: Prints out compiler options needed to build against an installed # copy of LLVM. # # Syntax: llvm-config OPTIONS... [COMPONENTS...] # # This file was written by Eric Kidd, and is placed into the public domain. # use 5.006; use strict; use warnings; #---- begin autoconf values ---- my $PACKAGE_NAME = q{@PACKAGE_NAME@}; my $VERSION = q{@PACKAGE_VERSION@}; my $PREFIX = q{@LLVM_PREFIX@}; my $LLVM_CONFIGTIME = q{@LLVM_CONFIGTIME@}; my $LLVM_SRC_ROOT = q{@abs_top_srcdir@}; my $LLVM_OBJ_ROOT = q{@abs_top_builddir@}; my $LLVM_ON_WIN32 = q{@LLVM_ON_WIN32@}; my $LLVM_ON_UNIX = q{@LLVM_ON_UNIX@}; my $LLVMGCCDIR = q{@LLVMGCCDIR@}; my $LLVMGCC = q{@LLVMGCC@}; my $LLVMGXX = q{@LLVMGXX@}; my $LLVMGCC_VERSION = q{@LLVMGCC_VERSION@}; my $LLVMGCC_MAJVERS = q{@LLVMGCC_MAJVERS@}; my $ENDIAN = q{@ENDIAN@}; my $SHLIBEXT = q{@SHLIBEXT@}; my $EXEEXT = q{@EXEEXT@}; my $OS = q{@OS@}; my $ARCH = lc(q{@ARCH@}); my $TARGET_TRIPLE = q{@target@}; my $TARGETS_TO_BUILD = q{@TARGETS_TO_BUILD@}; my $TARGET_HAS_JIT = q{@TARGET_HAS_JIT@}; my @TARGETS_BUILT = map { lc($_) } qw{@TARGETS_TO_BUILD@}; #---- end autoconf values ---- #---- begin Makefile values ---- my $CXXFLAGS = q{@LLVM_CXXFLAGS@}; my $LDFLAGS = q{@LLVM_LDFLAGS@}; #---- end Makefile values ---- # Convert the current executable name into its directory (e.g. "."). my ($PARTIALDIR) = ($0 =~ /^(.*)\/.*$/); sub usage; sub fix_library_names (@); sub expand_dependecies (@); sub name_map_entries; # Parse our command-line arguments. usage if @ARGV == 0; my @components; my $has_opt = 0; my $want_libs = 0; my $want_libnames = 0; my $want_components = 0; foreach my $arg (@ARGV) { if ($arg =~ /^-/) { if ($arg eq "--version") { $has_opt = 1; print "$VERSION\n"; } elsif ($arg eq "--use-current-dir-as-prefix") { # Convert the scripts executable dir into a full absolute directory. my $ABSDIR = `cd $PARTIALDIR/..; pwd`; chomp($ABSDIR); $PREFIX = $ABSDIR; } elsif ($arg eq "--prefix") { $has_opt = 1; print "$PREFIX\n"; } elsif ($arg eq "--bindir") { $has_opt = 1; print "$PREFIX/bin\n"; } elsif ($arg eq "--includedir") { $has_opt = 1; print "$PREFIX/include\n"; } elsif ($arg eq "--libdir") { $has_opt = 1; print "$PREFIX/lib\n"; } elsif ($arg eq "--cxxflags") { $has_opt = 1; print "-I$PREFIX/include $CXXFLAGS\n"; } elsif ($arg eq "--ldflags") { $has_opt = 1; print "-L$PREFIX/lib $LDFLAGS\n"; } elsif ($arg eq "--libs") { $has_opt = 1; $want_libs = 1; } elsif ($arg eq "--libnames") { $has_opt = 1; $want_libnames = 1; } elsif ($arg eq "--components") { $has_opt = 1; print join(' ', name_map_entries), "\n"; } elsif ($arg eq "--targets-built") { $has_opt = 1; print join(' ', @TARGETS_BUILT), "\n"; } else { usage(); } } else { push @components, $arg; } } # If no options were specified, fail. usage unless $has_opt; # If no components were specified, default to 'all'. if (@components == 0) { push @components, 'all'; } # Handle any arguments which require building our dependency graph. if ($want_libs || $want_libnames) { my @libs = expand_dependecies(@components); if ($want_libs) { print join(' ', fix_library_names(@libs)), "\n"; } if ($want_libnames) { print join(' ', @libs), "\n"; } } exit 0; #========================================================================== # Support Routines #========================================================================== sub usage { print STDERR <<__EOD__; Usage: llvm-config