1fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#!/bin/sh
2fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
3fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# These variables are automatically filled in by the configure script.
4fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillename="@PACKAGE_TARNAME@"
5fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleversion="@PACKAGE_VERSION@"
6fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
7fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleshow_usage()
8fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
9fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  echo "Usage: gtest-config [OPTIONS...]"
10fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
11fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
12fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleshow_help()
13fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
14fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  show_usage
15fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  cat <<\EOF
16fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
17fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleThe `gtest-config' script provides access to the necessary compile and linking
18fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleflags to connect with Google C++ Testing Framework, both in a build prior to
19fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleinstallation, and on the system proper after installation. The installation
20fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleoverrides may be issued in combination with any other queries, but will only
21fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleaffect installation queries if called on a built but not installed gtest. The
22fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleinstallation queries may not be issued with any other types of queries, and
23fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleonly one installation query may be made at a time. The version queries and
24fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillecompiler flag queries may be combined as desired but not mixed. Different
25fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleversion queries are always combined with logical "and" semantics, and only the
26fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillelast of any particular query is used while all previous ones ignored. All
27fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleversions must be specified as a sequence of numbers separated by periods.
28fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleCompiler flag queries output the union of the sets of flags when combined.
29fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
30fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville Examples:
31fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  gtest-config --min-version=1.0 || echo "Insufficient Google Test version."
32fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
33fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  g++ $(gtest-config --cppflags --cxxflags) -o foo.o -c foo.cpp
34fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  g++ $(gtest-config --ldflags --libs) -o foo foo.o
35fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
36fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  # When using a built but not installed Google Test:
37fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  g++ $(../../my_gtest_build/scripts/gtest-config ...) ...
38fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
39fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  # When using an installed Google Test, but with installation overrides:
40fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  export GTEST_PREFIX="/opt"
41fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  g++ $(gtest-config --libdir="/opt/lib64" ...) ...
42fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
43fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville Help:
44fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  --usage                    brief usage information
45fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  --help                     display this help message
46fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
47fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville Installation Overrides:
48fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  --prefix=<dir>             overrides the installation prefix
49fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  --exec-prefix=<dir>        overrides the executable installation prefix
50fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  --libdir=<dir>             overrides the library installation prefix
51fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  --includedir=<dir>         overrides the header file installation prefix
52fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
53fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville Installation Queries:
54fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  --prefix                   installation prefix
55fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  --exec-prefix              executable installation prefix
56fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  --libdir                   library installation directory
57fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  --includedir               header file installation directory
58fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  --version                  the version of the Google Test installation
59fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
60fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville Version Queries:
61fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  --min-version=VERSION      return 0 if the version is at least VERSION
62fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  --exact-version=VERSION    return 0 if the version is exactly VERSION
63fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  --max-version=VERSION      return 0 if the version is at most VERSION
64fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
65fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville Compilation Flag Queries:
66fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  --cppflags                 compile flags specific to the C-like preprocessors
67fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  --cxxflags                 compile flags appropriate for C++ programs
68fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  --ldflags                  linker flags
69fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  --libs                     libraries for linking
70fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
71fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleEOF
72fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
73fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
74fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# This function bounds our version with a min and a max. It uses some clever
75fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# POSIX-compliant variable expansion to portably do all the work in the shell
76fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# and avoid any dependency on a particular "sed" or "awk" implementation.
77fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Notable is that it will only ever compare the first 3 components of versions.
78fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Further components will be cleanly stripped off. All versions must be
79fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# unadorned, so "v1.0" will *not* work. The minimum version must be in $1, and
80fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# the max in $2. TODO(chandlerc@google.com): If this ever breaks, we should
81fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# investigate expanding this via autom4te from AS_VERSION_COMPARE rather than
82fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# continuing to maintain our own shell version.
83fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillecheck_versions()
84fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville{
85fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  major_version=${version%%.*}
86fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  minor_version="0"
87fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  point_version="0"
88fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  if test "${version#*.}" != "${version}"; then
89fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    minor_version=${version#*.}
90fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    minor_version=${minor_version%%.*}
91fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  fi
92fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  if test "${version#*.*.}" != "${version}"; then
93fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    point_version=${version#*.*.}
94fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    point_version=${point_version%%.*}
95fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  fi
96fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
97fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  min_version="$1"
98fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  min_major_version=${min_version%%.*}
99fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  min_minor_version="0"
100fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  min_point_version="0"
101fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  if test "${min_version#*.}" != "${min_version}"; then
102fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    min_minor_version=${min_version#*.}
103fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    min_minor_version=${min_minor_version%%.*}
104fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  fi
105fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  if test "${min_version#*.*.}" != "${min_version}"; then
106fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    min_point_version=${min_version#*.*.}
107fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    min_point_version=${min_point_version%%.*}
108fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  fi
109fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
110fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  max_version="$2"
111fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  max_major_version=${max_version%%.*}
112fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  max_minor_version="0"
113fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  max_point_version="0"
114fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  if test "${max_version#*.}" != "${max_version}"; then
115fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    max_minor_version=${max_version#*.}
116fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    max_minor_version=${max_minor_version%%.*}
117fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  fi
118fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  if test "${max_version#*.*.}" != "${max_version}"; then
119fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    max_point_version=${max_version#*.*.}
120fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    max_point_version=${max_point_version%%.*}
121fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  fi
122fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
123fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  test $(($major_version)) -lt $(($min_major_version)) && exit 1
124fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  if test $(($major_version)) -eq $(($min_major_version)); then
125fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    test $(($minor_version)) -lt $(($min_minor_version)) && exit 1
126fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    if test $(($minor_version)) -eq $(($min_minor_version)); then
127fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      test $(($point_version)) -lt $(($min_point_version)) && exit 1
128fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    fi
129fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  fi
130fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
131fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  test $(($major_version)) -gt $(($max_major_version)) && exit 1
132fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  if test $(($major_version)) -eq $(($max_major_version)); then
133fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    test $(($minor_version)) -gt $(($max_minor_version)) && exit 1
134fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    if test $(($minor_version)) -eq $(($max_minor_version)); then
135fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      test $(($point_version)) -gt $(($max_point_version)) && exit 1
136fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    fi
137fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  fi
138fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
139fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  exit 0
140fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}
141fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
142fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Show the usage line when no arguments are specified.
143fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleif test $# -eq 0; then
144fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  show_usage
145fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  exit 1
146fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefi
147fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
148fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillewhile test $# -gt 0; do
149fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  case $1 in
150fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    --usage)          show_usage;         exit 0;;
151fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    --help)           show_help;          exit 0;;
152fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
153fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # Installation overrides
154fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    --prefix=*)       GTEST_PREFIX=${1#--prefix=};;
155fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    --exec-prefix=*)  GTEST_EXEC_PREFIX=${1#--exec-prefix=};;
156fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    --libdir=*)       GTEST_LIBDIR=${1#--libdir=};;
157fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    --includedir=*)   GTEST_INCLUDEDIR=${1#--includedir=};;
158fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
159fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # Installation queries
160fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    --prefix|--exec-prefix|--libdir|--includedir|--version)
161fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      if test -n "${do_query}"; then
162fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        show_usage
163fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville        exit 1
164fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      fi
165fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      do_query=${1#--}
166fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      ;;
167fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
168fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # Version checking
169fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    --min-version=*)
170fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      do_check_versions=yes
171fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      min_version=${1#--min-version=}
172fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      ;;
173fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    --max-version=*)
174fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      do_check_versions=yes
175fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      max_version=${1#--max-version=}
176fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      ;;
177fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    --exact-version=*)
178fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      do_check_versions=yes
179fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      exact_version=${1#--exact-version=}
180fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville      ;;
181fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
182fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # Compiler flag output
183fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    --cppflags)       echo_cppflags=yes;;
184fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    --cxxflags)       echo_cxxflags=yes;;
185fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    --ldflags)        echo_ldflags=yes;;
186fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    --libs)           echo_libs=yes;;
187fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
188fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # Everything else is an error
189fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    *)                show_usage;         exit 1;;
190fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  esac
191fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  shift
192fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilledone
193fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
194fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# These have defaults filled in by the configure script but can also be
195fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# overridden by environment variables or command line parameters.
196fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleprefix="${GTEST_PREFIX:-@prefix@}"
197fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleexec_prefix="${GTEST_EXEC_PREFIX:-@exec_prefix@}"
198fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillelibdir="${GTEST_LIBDIR:-@libdir@}"
199fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleincludedir="${GTEST_INCLUDEDIR:-@includedir@}"
200fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
201fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# We try and detect if our binary is not located at its installed location. If
202fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# it's not, we provide variables pointing to the source and build tree rather
203fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# than to the install tree. This allows building against a just-built gtest
204fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# rather than an installed gtest.
205fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillebindir="@bindir@"
206fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillethis_relative_bindir=`dirname $0`
207fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillethis_bindir=`cd ${this_relative_bindir}; pwd -P`
208fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleif test "${this_bindir}" = "${this_bindir%${bindir}}"; then
209fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  # The path to the script doesn't end in the bindir sequence from Autoconf,
210fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  # assume that we are in a build tree.
211fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  build_dir=`dirname ${this_bindir}`
212fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  src_dir=`cd ${this_bindir}/@top_srcdir@; pwd -P`
213fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
214fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  # TODO(chandlerc@google.com): This is a dangerous dependency on libtool, we
215fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  # should work to remove it, and/or remove libtool altogether, replacing it
216fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  # with direct references to the library and a link path.
217fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  gtest_libs="${build_dir}/lib/libgtest.la"
218fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  gtest_ldflags=""
219fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
220fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  # We provide hooks to include from either the source or build dir, where the
221fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  # build dir is always preferred. This will potentially allow us to write
222fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  # build rules for generated headers and have them automatically be preferred
223fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  # over provided versions.
224fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  gtest_cppflags="-I${build_dir}/include -I${src_dir}/include"
225fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  gtest_cxxflags=""
226fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleelse
227fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  # We're using an installed gtest, although it may be staged under some
228fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  # prefix. Assume (as our own libraries do) that we can resolve the prefix,
229fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  # and are present in the dynamic link paths.
230fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  gtest_ldflags="-L${libdir}"
231fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  gtest_libs="-l${name}"
232fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  gtest_cppflags="-I${includedir}"
233fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  gtest_cxxflags=""
234fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefi
235fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
236fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Do an installation query if requested.
237fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleif test -n "$do_query"; then
238fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  case $do_query in
239fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    prefix)           echo $prefix;       exit 0;;
240fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    exec-prefix)      echo $exec_prefix;  exit 0;;
241fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    libdir)           echo $libdir;       exit 0;;
242fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    includedir)       echo $includedir;   exit 0;;
243fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    version)          echo $version;      exit 0;;
244fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    *)                show_usage;         exit 1;;
245fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  esac
246fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefi
247fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
248fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Do a version check if requested.
249fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleif test "$do_check_versions" = "yes"; then
250fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  # Make sure we didn't receive a bad combination of parameters.
251fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  test "$echo_cppflags" = "yes" && show_usage && exit 1
252fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  test "$echo_cxxflags" = "yes" && show_usage && exit 1
253fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  test "$echo_ldflags" = "yes"  && show_usage && exit 1
254fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  test "$echo_libs" = "yes"     && show_usage && exit 1
255fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
256fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  if test "$exact_version" != ""; then
257fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    check_versions $exact_version $exact_version
258fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # unreachable
259fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  else
260fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    check_versions ${min_version:-0.0.0} ${max_version:-9999.9999.9999}
261fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville    # unreachable
262fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville  fi
263fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillefi
264fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
265fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# Do the output in the correct order so that these can be used in-line of
266fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville# a compiler invocation.
267fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleoutput=""
268fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletest "$echo_cppflags" = "yes" && output="$output $gtest_cppflags"
269fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletest "$echo_cxxflags" = "yes" && output="$output $gtest_cxxflags"
270fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletest "$echo_ldflags" = "yes"  && output="$output $gtest_ldflags"
271fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletest "$echo_libs" = "yes"     && output="$output $gtest_libs"
272fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleecho $output
273fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville
274fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleexit 0
275