Blame googlemock/scripts/gmock-config.in

Packit bd1cd8
#!/bin/sh
Packit bd1cd8
Packit bd1cd8
# These variables are automatically filled in by the configure script.
Packit bd1cd8
name="@PACKAGE_TARNAME@"
Packit bd1cd8
version="@PACKAGE_VERSION@"
Packit bd1cd8
Packit bd1cd8
show_usage()
Packit bd1cd8
{
Packit bd1cd8
  echo "Usage: gmock-config [OPTIONS...]"
Packit bd1cd8
}
Packit bd1cd8
Packit bd1cd8
show_help()
Packit bd1cd8
{
Packit bd1cd8
  show_usage
Packit bd1cd8
  cat <<\EOF
Packit bd1cd8
Packit bd1cd8
The `gmock-config' script provides access to the necessary compile and linking
Packit bd1cd8
flags to connect with Google C++ Mocking Framework, both in a build prior to
Packit bd1cd8
installation, and on the system proper after installation. The installation
Packit bd1cd8
overrides may be issued in combination with any other queries, but will only
Packit bd1cd8
affect installation queries if called on a built but not installed gmock. The
Packit bd1cd8
installation queries may not be issued with any other types of queries, and
Packit bd1cd8
only one installation query may be made at a time. The version queries and
Packit bd1cd8
compiler flag queries may be combined as desired but not mixed. Different
Packit bd1cd8
version queries are always combined with logical "and" semantics, and only the
Packit bd1cd8
last of any particular query is used while all previous ones ignored. All
Packit bd1cd8
versions must be specified as a sequence of numbers separated by periods.
Packit bd1cd8
Compiler flag queries output the union of the sets of flags when combined.
Packit bd1cd8
Packit bd1cd8
 Examples:
Packit bd1cd8
  gmock-config --min-version=1.0 || echo "Insufficient Google Mock version."
Packit bd1cd8
Packit bd1cd8
  g++ $(gmock-config --cppflags --cxxflags) -o foo.o -c foo.cpp
Packit bd1cd8
  g++ $(gmock-config --ldflags --libs) -o foo foo.o
Packit bd1cd8
Packit bd1cd8
  # When using a built but not installed Google Mock:
Packit bd1cd8
  g++ $(../../my_gmock_build/scripts/gmock-config ...) ...
Packit bd1cd8
Packit bd1cd8
  # When using an installed Google Mock, but with installation overrides:
Packit bd1cd8
  export GMOCK_PREFIX="/opt"
Packit bd1cd8
  g++ $(gmock-config --libdir="/opt/lib64" ...) ...
Packit bd1cd8
Packit bd1cd8
 Help:
Packit bd1cd8
  --usage                    brief usage information
Packit bd1cd8
  --help                     display this help message
Packit bd1cd8
Packit bd1cd8
 Installation Overrides:
Packit bd1cd8
  --prefix=<dir>             overrides the installation prefix
Packit bd1cd8
  --exec-prefix=<dir>        overrides the executable installation prefix
Packit bd1cd8
  --libdir=<dir>             overrides the library installation prefix
Packit bd1cd8
  --includedir=<dir>         overrides the header file installation prefix
Packit bd1cd8
Packit bd1cd8
 Installation Queries:
Packit bd1cd8
  --prefix                   installation prefix
Packit bd1cd8
  --exec-prefix              executable installation prefix
Packit bd1cd8
  --libdir                   library installation directory
Packit bd1cd8
  --includedir               header file installation directory
Packit bd1cd8
  --version                  the version of the Google Mock installation
Packit bd1cd8
Packit bd1cd8
 Version Queries:
Packit bd1cd8
  --min-version=VERSION      return 0 if the version is at least VERSION
Packit bd1cd8
  --exact-version=VERSION    return 0 if the version is exactly VERSION
Packit bd1cd8
  --max-version=VERSION      return 0 if the version is at most VERSION
Packit bd1cd8
Packit bd1cd8
 Compilation Flag Queries:
Packit bd1cd8
  --cppflags                 compile flags specific to the C-like preprocessors
Packit bd1cd8
  --cxxflags                 compile flags appropriate for C++ programs
Packit bd1cd8
  --ldflags                  linker flags
Packit bd1cd8
  --libs                     libraries for linking
Packit bd1cd8
Packit bd1cd8
EOF
Packit bd1cd8
}
Packit bd1cd8
Packit bd1cd8
# This function bounds our version with a min and a max. It uses some clever
Packit bd1cd8
# POSIX-compliant variable expansion to portably do all the work in the shell
Packit bd1cd8
# and avoid any dependency on a particular "sed" or "awk" implementation.
Packit bd1cd8
# Notable is that it will only ever compare the first 3 components of versions.
Packit bd1cd8
# Further components will be cleanly stripped off. All versions must be
Packit bd1cd8
# unadorned, so "v1.0" will *not* work. The minimum version must be in $1, and
Packit bd1cd8
# the max in $2. TODO(chandlerc@google.com): If this ever breaks, we should
Packit bd1cd8
# investigate expanding this via autom4te from AS_VERSION_COMPARE rather than
Packit bd1cd8
# continuing to maintain our own shell version.
Packit bd1cd8
check_versions()
Packit bd1cd8
{
Packit bd1cd8
  major_version=${version%%.*}
Packit bd1cd8
  minor_version="0"
Packit bd1cd8
  point_version="0"
Packit bd1cd8
  if test "${version#*.}" != "${version}"; then
Packit bd1cd8
    minor_version=${version#*.}
Packit bd1cd8
    minor_version=${minor_version%%.*}
Packit bd1cd8
  fi
Packit bd1cd8
  if test "${version#*.*.}" != "${version}"; then
Packit bd1cd8
    point_version=${version#*.*.}
Packit bd1cd8
    point_version=${point_version%%.*}
Packit bd1cd8
  fi
Packit bd1cd8
Packit bd1cd8
  min_version="$1"
Packit bd1cd8
  min_major_version=${min_version%%.*}
Packit bd1cd8
  min_minor_version="0"
Packit bd1cd8
  min_point_version="0"
Packit bd1cd8
  if test "${min_version#*.}" != "${min_version}"; then
Packit bd1cd8
    min_minor_version=${min_version#*.}
Packit bd1cd8
    min_minor_version=${min_minor_version%%.*}
Packit bd1cd8
  fi
Packit bd1cd8
  if test "${min_version#*.*.}" != "${min_version}"; then
Packit bd1cd8
    min_point_version=${min_version#*.*.}
Packit bd1cd8
    min_point_version=${min_point_version%%.*}
Packit bd1cd8
  fi
Packit bd1cd8
Packit bd1cd8
  max_version="$2"
Packit bd1cd8
  max_major_version=${max_version%%.*}
Packit bd1cd8
  max_minor_version="0"
Packit bd1cd8
  max_point_version="0"
Packit bd1cd8
  if test "${max_version#*.}" != "${max_version}"; then
Packit bd1cd8
    max_minor_version=${max_version#*.}
Packit bd1cd8
    max_minor_version=${max_minor_version%%.*}
Packit bd1cd8
  fi
Packit bd1cd8
  if test "${max_version#*.*.}" != "${max_version}"; then
Packit bd1cd8
    max_point_version=${max_version#*.*.}
Packit bd1cd8
    max_point_version=${max_point_version%%.*}
Packit bd1cd8
  fi
Packit bd1cd8
Packit bd1cd8
  test $(($major_version)) -lt $(($min_major_version)) && exit 1
Packit bd1cd8
  if test $(($major_version)) -eq $(($min_major_version)); then
Packit bd1cd8
    test $(($minor_version)) -lt $(($min_minor_version)) && exit 1
Packit bd1cd8
    if test $(($minor_version)) -eq $(($min_minor_version)); then
Packit bd1cd8
      test $(($point_version)) -lt $(($min_point_version)) && exit 1
Packit bd1cd8
    fi
Packit bd1cd8
  fi
Packit bd1cd8
Packit bd1cd8
  test $(($major_version)) -gt $(($max_major_version)) && exit 1
Packit bd1cd8
  if test $(($major_version)) -eq $(($max_major_version)); then
Packit bd1cd8
    test $(($minor_version)) -gt $(($max_minor_version)) && exit 1
Packit bd1cd8
    if test $(($minor_version)) -eq $(($max_minor_version)); then
Packit bd1cd8
      test $(($point_version)) -gt $(($max_point_version)) && exit 1
Packit bd1cd8
    fi
Packit bd1cd8
  fi
Packit bd1cd8
Packit bd1cd8
  exit 0
Packit bd1cd8
}
Packit bd1cd8
Packit bd1cd8
# Show the usage line when no arguments are specified.
Packit bd1cd8
if test $# -eq 0; then
Packit bd1cd8
  show_usage
Packit bd1cd8
  exit 1
Packit bd1cd8
fi
Packit bd1cd8
Packit bd1cd8
while test $# -gt 0; do
Packit bd1cd8
  case $1 in
Packit bd1cd8
    --usage)          show_usage;         exit 0;;
Packit bd1cd8
    --help)           show_help;          exit 0;;
Packit bd1cd8
Packit bd1cd8
    # Installation overrides
Packit bd1cd8
    --prefix=*)       GMOCK_PREFIX=${1#--prefix=};;
Packit bd1cd8
    --exec-prefix=*)  GMOCK_EXEC_PREFIX=${1#--exec-prefix=};;
Packit bd1cd8
    --libdir=*)       GMOCK_LIBDIR=${1#--libdir=};;
Packit bd1cd8
    --includedir=*)   GMOCK_INCLUDEDIR=${1#--includedir=};;
Packit bd1cd8
Packit bd1cd8
    # Installation queries
Packit bd1cd8
    --prefix|--exec-prefix|--libdir|--includedir|--version)
Packit bd1cd8
      if test -n "${do_query}"; then
Packit bd1cd8
        show_usage
Packit bd1cd8
        exit 1
Packit bd1cd8
      fi
Packit bd1cd8
      do_query=${1#--}
Packit bd1cd8
      ;;
Packit bd1cd8
Packit bd1cd8
    # Version checking
Packit bd1cd8
    --min-version=*)
Packit bd1cd8
      do_check_versions=yes
Packit bd1cd8
      min_version=${1#--min-version=}
Packit bd1cd8
      ;;
Packit bd1cd8
    --max-version=*)
Packit bd1cd8
      do_check_versions=yes
Packit bd1cd8
      max_version=${1#--max-version=}
Packit bd1cd8
      ;;
Packit bd1cd8
    --exact-version=*)
Packit bd1cd8
      do_check_versions=yes
Packit bd1cd8
      exact_version=${1#--exact-version=}
Packit bd1cd8
      ;;
Packit bd1cd8
Packit bd1cd8
    # Compiler flag output
Packit bd1cd8
    --cppflags)       echo_cppflags=yes;;
Packit bd1cd8
    --cxxflags)       echo_cxxflags=yes;;
Packit bd1cd8
    --ldflags)        echo_ldflags=yes;;
Packit bd1cd8
    --libs)           echo_libs=yes;;
Packit bd1cd8
Packit bd1cd8
    # Everything else is an error
Packit bd1cd8
    *)                show_usage;         exit 1;;
Packit bd1cd8
  esac
Packit bd1cd8
  shift
Packit bd1cd8
done
Packit bd1cd8
Packit bd1cd8
# These have defaults filled in by the configure script but can also be
Packit bd1cd8
# overridden by environment variables or command line parameters.
Packit bd1cd8
prefix="${GMOCK_PREFIX:-@prefix@}"
Packit bd1cd8
exec_prefix="${GMOCK_EXEC_PREFIX:-@exec_prefix@}"
Packit bd1cd8
libdir="${GMOCK_LIBDIR:-@libdir@}"
Packit bd1cd8
includedir="${GMOCK_INCLUDEDIR:-@includedir@}"
Packit bd1cd8
Packit bd1cd8
# We try and detect if our binary is not located at its installed location. If
Packit bd1cd8
# it's not, we provide variables pointing to the source and build tree rather
Packit bd1cd8
# than to the install tree. We also locate Google Test using the configured
Packit bd1cd8
# gtest-config script rather than searching the PATH and our bindir for one.
Packit bd1cd8
# This allows building against a just-built gmock rather than an installed
Packit bd1cd8
# gmock.
Packit bd1cd8
bindir="@bindir@"
Packit bd1cd8
this_relative_bindir=`dirname $0`
Packit bd1cd8
this_bindir=`cd ${this_relative_bindir}; pwd -P`
Packit bd1cd8
if test "${this_bindir}" = "${this_bindir%${bindir}}"; then
Packit bd1cd8
  # The path to the script doesn't end in the bindir sequence from Autoconf,
Packit bd1cd8
  # assume that we are in a build tree.
Packit bd1cd8
  build_dir=`dirname ${this_bindir}`
Packit bd1cd8
  src_dir=`cd ${this_bindir}/@top_srcdir@; pwd -P`
Packit bd1cd8
Packit bd1cd8
  # TODO(chandlerc@google.com): This is a dangerous dependency on libtool, we
Packit bd1cd8
  # should work to remove it, and/or remove libtool altogether, replacing it
Packit bd1cd8
  # with direct references to the library and a link path.
Packit bd1cd8
  gmock_libs="${build_dir}/lib/libgmock.la"
Packit bd1cd8
  gmock_ldflags=""
Packit bd1cd8
Packit bd1cd8
  # We provide hooks to include from either the source or build dir, where the
Packit bd1cd8
  # build dir is always preferred. This will potentially allow us to write
Packit bd1cd8
  # build rules for generated headers and have them automatically be preferred
Packit bd1cd8
  # over provided versions.
Packit bd1cd8
  gmock_cppflags="-I${build_dir}/include -I${src_dir}/include"
Packit bd1cd8
  gmock_cxxflags=""
Packit bd1cd8
Packit bd1cd8
  # Directly invoke the gtest-config script used during the build process.
Packit bd1cd8
  gtest_config="@GTEST_CONFIG@"
Packit bd1cd8
else
Packit bd1cd8
  # We're using an installed gmock, although it may be staged under some
Packit bd1cd8
  # prefix. Assume (as our own libraries do) that we can resolve the prefix,
Packit bd1cd8
  # and are present in the dynamic link paths.
Packit bd1cd8
  gmock_ldflags="-L${libdir}"
Packit bd1cd8
  gmock_libs="-l${name}"
Packit bd1cd8
  gmock_cppflags="-I${includedir}"
Packit bd1cd8
  gmock_cxxflags=""
Packit bd1cd8
Packit bd1cd8
  # We also prefer any gtest-config script installed in our prefix. Lacking
Packit bd1cd8
  # one, we look in the PATH for one.
Packit bd1cd8
  gtest_config="${bindir}/gtest-config"
Packit bd1cd8
  if test ! -x "${gtest_config}"; then
Packit bd1cd8
    gtest_config=`which gtest-config`
Packit bd1cd8
  fi
Packit bd1cd8
fi
Packit bd1cd8
Packit bd1cd8
# Ensure that we have located a Google Test to link against.
Packit bd1cd8
if ! test -x "${gtest_config}"; then
Packit bd1cd8
  echo "Unable to locate Google Test, check your Google Mock configuration" \
Packit bd1cd8
       "and installation" >&2
Packit bd1cd8
  exit 1
Packit bd1cd8
elif ! "${gtest_config}" "--exact-version=@GTEST_VERSION@"; then
Packit bd1cd8
  echo "The Google Test found is not the same version as Google Mock was " \
Packit bd1cd8
       "built against" >&2
Packit bd1cd8
  exit 1
Packit bd1cd8
fi
Packit bd1cd8
Packit bd1cd8
# Add the necessary Google Test bits into the various flag variables
Packit bd1cd8
gmock_cppflags="${gmock_cppflags} `${gtest_config} --cppflags`"
Packit bd1cd8
gmock_cxxflags="${gmock_cxxflags} `${gtest_config} --cxxflags`"
Packit bd1cd8
gmock_ldflags="${gmock_ldflags} `${gtest_config} --ldflags`"
Packit bd1cd8
gmock_libs="${gmock_libs} `${gtest_config} --libs`"
Packit bd1cd8
Packit bd1cd8
# Do an installation query if requested.
Packit bd1cd8
if test -n "$do_query"; then
Packit bd1cd8
  case $do_query in
Packit bd1cd8
    prefix)           echo $prefix;       exit 0;;
Packit bd1cd8
    exec-prefix)      echo $exec_prefix;  exit 0;;
Packit bd1cd8
    libdir)           echo $libdir;       exit 0;;
Packit bd1cd8
    includedir)       echo $includedir;   exit 0;;
Packit bd1cd8
    version)          echo $version;      exit 0;;
Packit bd1cd8
    *)                show_usage;         exit 1;;
Packit bd1cd8
  esac
Packit bd1cd8
fi
Packit bd1cd8
Packit bd1cd8
# Do a version check if requested.
Packit bd1cd8
if test "$do_check_versions" = "yes"; then
Packit bd1cd8
  # Make sure we didn't receive a bad combination of parameters.
Packit bd1cd8
  test "$echo_cppflags" = "yes" && show_usage && exit 1
Packit bd1cd8
  test "$echo_cxxflags" = "yes" && show_usage && exit 1
Packit bd1cd8
  test "$echo_ldflags" = "yes"  && show_usage && exit 1
Packit bd1cd8
  test "$echo_libs" = "yes"     && show_usage && exit 1
Packit bd1cd8
Packit bd1cd8
  if test "$exact_version" != ""; then
Packit bd1cd8
    check_versions $exact_version $exact_version
Packit bd1cd8
    # unreachable
Packit bd1cd8
  else
Packit bd1cd8
    check_versions ${min_version:-0.0.0} ${max_version:-9999.9999.9999}
Packit bd1cd8
    # unreachable
Packit bd1cd8
  fi
Packit bd1cd8
fi
Packit bd1cd8
Packit bd1cd8
# Do the output in the correct order so that these can be used in-line of
Packit bd1cd8
# a compiler invocation.
Packit bd1cd8
output=""
Packit bd1cd8
test "$echo_cppflags" = "yes" && output="$output $gmock_cppflags"
Packit bd1cd8
test "$echo_cxxflags" = "yes" && output="$output $gmock_cxxflags"
Packit bd1cd8
test "$echo_ldflags" = "yes"  && output="$output $gmock_ldflags"
Packit bd1cd8
test "$echo_libs" = "yes"     && output="$output $gmock_libs"
Packit bd1cd8
echo $output
Packit bd1cd8
Packit bd1cd8
exit 0