myriscv-fesvr/aclocal.m4

685 lines
25 KiB
Plaintext

#=========================================================================
# Local Autoconf Macros
#=========================================================================
# This file contains the macros for the Modular C++ Build System and
# additional autoconf macros which developers can use in their
# configure.ac scripts. Please read the documentation in
# mcppbs-uguide.txt for more details on how the Modular C++ Build
# System works. The documenation for each macro should include
# information about the author, date, and copyright.
#-------------------------------------------------------------------------
# MCPPBS_INIT
#-------------------------------------------------------------------------
# Setup any global configure command line arguments and the primary
# running shell variables which will be substituted into the makefile.
AC_DEFUN([MCPPBS_INIT],
[
# Add command line argument to enable all optional subprojects
AC_ARG_WITH(optional-subprojects,
AS_HELP_STRING([--with-optional-subprojects],
[Include all optional subprojects]))
# Running variables to substitute into make
AC_SUBST([mcppbs_include_internal])
AC_SUBST([mcppbs_include_internal_en])
AC_SUBST([mcppbs_include_external])
AC_SUBST([mcppbs_include_external_en])
AC_SUBST([mcppbs_install])
])
#-------------------------------------------------------------------------
# MCPPBS_ALWAYS_USE_CXX
#-------------------------------------------------------------------------
# If the user calls this macro then change the C compiler shell
# variables so that they use the C++ compiler.
AC_DEFUN([MCPPBS_ALWAYS_USE_CXX],
[
AC_MSG_NOTICE([Will use ${CXX} for C and assembly source files])
CC=${CXX}
CFLAGS=${CXXFLAGS}
])
#-------------------------------------------------------------------------
# MCPPBS_PROG_INSTALL
#-------------------------------------------------------------------------
# This macro will add an --enable-stow command line option to the
# configure script. When enabled, this macro will first check to see if
# the stow program is available and if so it will set the $stow shell
# variable to the binary name and the $enable_stow shell variable to
# "yes". These variables can be used in a makefile to conditionally use
# stow for installation.
#
# This macro uses two environment variables to help setup default stow
# locations. The $STOW_PREFIX is used for stowing native built packages.
# The packages are staged in $STOW_PREFIX/pkgs and then symlinks are
# created from within $STOW_PREFIX into the pkgs subdirectory. If you
# only do native builds then this is all you need to set. If you don't
# set $STOW_PREFIX then the default is just the normal default prefix
# which is almost always /usr/local.
#
# For non-native builds we probably want to install the packages in a
# different location which includes the host architecture name as part
# of the prefix. For these kind of builds, we can specify the $STOW_ROOT
# environment variable and the effective prefix will be
# $STOW_ROOT/${host_alias} where ${host_alias} is specified on the
# configure command line with "--host".
#
# Here is an example setup:
#
# STOW_ROOT="$HOME/install"
# STOW_ARCH="i386-macosx10.4"
# STOW_PREFIX="${STOW_ROOT}/${STOW_ARCH}"
#
AC_DEFUN([MCPPBS_PROG_INSTALL],
[
# Configure command line option
AC_ARG_ENABLE(stow,
AS_HELP_STRING(--enable-stow,[Enable stow-based install]),
[enable_stow="yes"],[enable_stow="no"])
AC_SUBST([enable_stow])
# Environment variables
AC_ARG_VAR([STOW_ROOT], [Root for non-native stow-based installs])
AC_ARG_VAR([STOW_PREFIX], [Prefix for stow-based installs])
# Check for install script
AC_PROG_INSTALL
# Deterimine if native build and set prefix appropriately
AS_IF([ test "${enable_stow}" = "yes" ],
[
AC_CHECK_PROGS([stow],[stow],[no])
AS_IF([ test "${stow}" = "no" ],
[
AC_MSG_ERROR([Cannot use --enable-stow since stow is not available])
])
# Check if native or non-native build
AS_IF([ test "${build}" = "${host}" ],
[
# build == host so this is a native build. Make sure --prefix not
# set and $STOW_PREFIX is set, then set prefix=$STOW_PREFIX.
AS_IF([ test "${prefix}" = "NONE" && test -n "${STOW_PREFIX}" ],
[
prefix="${STOW_PREFIX}"
AC_MSG_NOTICE([Using \$STOW_PREFIX from environment])
AC_MSG_NOTICE([prefix=${prefix}])
])
],[
# build != host so this is a non-native build. Make sure --prefix
# not set and $STOW_ROOT is set, then set
# prefix=$STOW_ROOT/${host_alias}.
AS_IF([ test "${prefix}" = "NONE" && test -n "${STOW_ROOT}" ],
[
prefix="${STOW_ROOT}/${host_alias}"
AC_MSG_NOTICE([Using \$STOW_ROOT from environment])
AC_MSG_NOTICE([prefix=${prefix}])
])
])
])
])
#-------------------------------------------------------------------------
# MCPPBS_PROG_RUN
#-------------------------------------------------------------------------
# If we are doing a non-native build then we look for an isa simulator
# to use for running tests. We set the RUN substitution variable to be
# empty for native builds or to the name of the isa simulator for
# non-native builds. Thus a makefile can run compiled programs
# regardless if we are doing a native or non-native build like this:
#
# $(RUN) $(RUNFLAGS) ./test-program
#
AC_DEFUN([MCPPBS_PROG_RUN],
[
AS_IF([ test "${build}" != "${host}" ],
[
AC_CHECK_TOOLS([RUN],[isa-run run],[no])
AS_IF([ test ${RUN} = "no" ],
[
AC_MSG_ERROR([Cannot find simulator for target ${target_alias}])
])
],[
RUN=""
])
AC_SUBST([RUN])
AC_SUBST([RUNFLAGS])
])
#-------------------------------------------------------------------------
# MCPPBS_INCLUDE_INTERNAL([subproject])
#-------------------------------------------------------------------------
# Use this macro to include an internal subproject meaning that the
# subproject's source code is included in a subdirectory of the
# top-level source directory. One should order the includes such that
# any given subproject only depends on subprojects listed before it. The
# subproject name can also include an * suffix which indicates that this
# is an optional subproject. Optional subprojects are only included as
# part of the project build if enabled on the configure command line
# with a --with-<subproject> flag. The user can also specify that all
# optional subprojects should be included in the build with the
# --with-optional-subprojects flag.
#
# Both required and optional subprojects should have a subproject.ac
# file. The script's filename should be the abbreivated subproject name.
# This macro includes the subproject.ac files for enabled subprojects.
# The very first macro in subproject.ac should be a call to
# MCPPBS_SUBPROJECT with the subproject's name and dependencies.
#
# Internal subprojects must also have a subproject.mk.in file which
# includes make variables for the compiler and linker flags specificly
# needed to build the subproject and also lists all of the source files
# for the subproject. The user should use the following configure
# substitution variables in their make fragment (assuming the
# subproject's name is foo).
#
# - @foo_intdeps@ : List of internal subproject dependencies
# - @foo_cppflags@ : List of include paths (-I)
# - @foo_ldflags@ : List of library paths (-L)
# - @foo_libs@ : List of libraries (-l)
#
# Note that we use a m4_define instead of AC_DEFUN for now because
# otherwise autoconf will call macros specified with AC_REQUIRE at the
# very outer AC_DEFUN which can be pretty confusing.
m4_define([MCPPBS_INCLUDE_INTERNAL],
[
# Determine if this is a required or an optional subproject and create
# a m4 variable for his subproject name with and without dashes.
m4_define([MCPPBS_IS_OPTIONAL],
m4_bmatch(m4_normalize($1),[\*],[true],[false]))
m4_define([MCPPBS_SPROJ], m4_bpatsubst(m4_normalize($1),[*],[]))
m4_define([MCPPBS_SPROJU], m4_bpatsubst(MCPPBS_SPROJ,[-],[_]))
# Set the type of this subproject and add it to a shell and m4 list
MCPPBS_SPROJU[]_type="internal"
AS_VAR_APPEND([mcppbs_include_internal],"MCPPBS_SPROJ ")
m4_set_add([MCPPBS_SPROJS],MCPPBS_SPROJ)
# Optional subprojects add an --with-subproject command line options,
# while default subprojects just make sure the shell enabled variable
# is set to "yes" so we always configure this subproject.
m4_if(MCPPBS_IS_OPTIONAL,[true],
[
AC_ARG_WITH(MCPPBS_SPROJ,
AS_HELP_STRING(--with-MCPPBS_SPROJ,
[Internal subproject MCPPBS_SPROJ]),
[with_[]MCPPBS_SPROJU="yes"],[with_[]MCPPBS_SPROJU="no"])
],[
with_[]MCPPBS_SPROJU="yes"
])
# We create a shell function which contains all the code to actually
# configure this project including adding it to the
# $mcppbs_include_internal_en running shell variable, setting an
# HAVE_SUBPROJECT C define, and actually processing the appropriate
# subproject.ac. This will allow us to easily configure optional
# subproject later by just executing this function.
MCPPBS_SPROJU[]_cfg ()
{
AC_CONFIG_HEADERS(MCPPBS_SPROJ[]-config.h:config.h.in)
AC_CONFIG_FILES(MCPPBS_SPROJ[].mk:MCPPBS_SPROJ[]/MCPPBS_SPROJ[].mk.in)
AC_DEFINE(m4_toupper(HAVE_[]MCPPBS_SPROJU),,
[Define if we should include subproject] MCPPBS_SPROJ )
AS_VAR_APPEND([mcppbs_include_internal_en],"MCPPBS_SPROJ ")
with_[]MCPPBS_SPROJU="yes"
m4_include(MCPPBS_SPROJ[]/MCPPBS_SPROJ[].ac)
};
# See if we should actually configure this subproject and if so then
# call the shell function we just created.
AS_IF([ test "${with_optional_subprojects}" = "yes" \
|| test "${with_[]MCPPBS_SPROJU}" = "yes" ],
[
eval "MCPPBS_SPROJU[]_cfg"
])
])
#-------------------------------------------------------------------------
# MCPPBS_INCLUDE_EXTERNAL([subproject])
#-------------------------------------------------------------------------
# Use this macro to include an external subproject meaning that the
# subproject is installed as a library with an appropriate pkg-config
# meta-data file named subproject.pc. The subproject.pc file should
# contain the compiler and linker flags necessary for linking to the
# subproject. One should order the includes such that any given
# subproject only depends on subprojects listed before it. The
# subproject name can also include an * suffix which indicates that this
# is an optional subproject. Optional subprojects are only included as
# part of the project build if enabled on the configure command line
# with a --with-<subproject> flag. The user can also specify that all
# optional subprojects should be included in the build with the
# --with-optional-subprojects flag.
AC_DEFUN([MCPPBS_INCLUDE_EXTERNAL],
[
# Determine if this is a required or an optional subproject and create
# a m4 variable for his subproject name with and without dashes.
m4_define([MCPPBS_IS_OPTIONAL],
m4_bmatch(m4_normalize($1),[\*],[true],[false]))
m4_define([MCPPBS_SPROJ], m4_bpatsubst(m4_normalize($1),[*],[]))
m4_define([MCPPBS_SPROJU], m4_bpatsubst(MCPPBS_SPROJ,[-],[_]))
# Set the type of this subproject and add it to a shell and m4 list
MCPPBS_SPROJU[]_type="external"
AS_VAR_APPEND([mcppbs_include_external],"MCPPBS_SPROJ ")
m4_set_add([MCPPBS_SPROJS],MCPPBS_SPROJ)
# Optional subprojects add an --with-subproject command line options,
# while default subprojects just make sure the shell enabled variable
# is set to "yes" so we always configure this subproject.
m4_if(MCPPBS_IS_OPTIONAL,[true],
[
AC_ARG_WITH(MCPPBS_SPROJ,
AS_HELP_STRING(--with-MCPPBS_SPROJ,
[External subproject MCPPBS_SPROJ]),
[with_[]MCPPBS_SPROJU="yes"],[with_[]MCPPBS_SPROJU="no"])
],[
with_[]MCPPBS_SPROJU="yes"
])
# We create a shell function which contains all the code to actually
# configure this project including adding it to the
# $mcppbs_include_external_en running shell variable and setting an
# HAVE_SUBPROJECT C define. This will allow us to easily configure
# optional subproject later by just executing this function.
MCPPBS_SPROJU[]_cfg ()
{
# First see if the PKG_CONFIG shell variable is already set. If not
# then we check and see if pkg-config is in our path. We use
# AC_CHECK_TOOL so that if this is a non-native build we
# automatically look for host-pkg-config.
AS_IF([ test -z "${PKG_CONFIG}" ],
[
AC_CHECK_TOOL([PKG_CONFIG],[pkg-config],[no])
AS_IF([ test "${PKG_CONFIG}" = "no" ],
[
AC_MSG_ERROR([Could not find pkg-config which is required for
linking against external subprojects.])
])
])
# Now that we know that pkg-config is available we can see if the
# given subproject exists.
AS_IF([ ${PKG_CONFIG} --exists MCPPBS_SPROJ ],[],
[
AC_MSG_ERROR([Could not find MCPPBS_SPROJ library with pkg-config.
Perhaps MCPPBS_SPROJ was not found in the pkg-config search
path. Try adding the directory containing 'MCPPBS_SPROJ.pc' to
the PKG_CONFIG_PATH environment variable.])
])
# Some nice configure output
AC_MSG_CHECKING([for external subproject MCPPBS_SPROJ])
AC_MSG_RESULT([yes])
# Create the compiler and linker flags for this subproject
MCPPBS_SPROJU[]_cppflags=`${PKG_CONFIG} --cflags MCPPBS_SPROJ`
MCPPBS_SPROJU[]_ldflags=`${PKG_CONFIG} --libs-only-L MCPPBS_SPROJ`
MCPPBS_SPROJU[]_libs=`${PKG_CONFIG} --libs-only-l MCPPBS_SPROJ`
AS_VAR_APPEND(MCPPBS_SPROJU[]_libs,
`${PKG_CONFIG} --libs-only-other MCPPBS_SPROJ`)
AC_SUBST(MCPPBS_SPROJU[]_cppflags)
AC_SUBST(MCPPBS_SPROJU[]_ldflags)
AC_SUBST(MCPPBS_SPROJU[]_libs)
# Create a header define and set the approriate shell variables
AC_DEFINE(m4_toupper(HAVE_[]MCPPBS_SPROJU),,
[Define if we should include subproject MCPPBS_SPROJ])
AS_VAR_APPEND([mcppbs_include_external_en],"MCPPBS_SPROJ ")
with_[]MCPPBS_SPROJU="yes"
};
# See if we should actually configure this subproject and if so then
# call the shell function we just created.
AS_IF([ test "${with_optional_subprojects}" = "yes" \
|| test "${with_[]MCPPBS_SPROJU}" = "yes" ],
[
eval "MCPPBS_SPROJU[]_cfg"
])
])
#-------------------------------------------------------------------------
# _MCPPBS_UNIQ([var])
#-------------------------------------------------------------------------
# Helper macro which looks through the given shell variable and
# eliminates redundant tokens (ie. whitespace delimited substrings) and
# writes the result back to the given shell variable. It terms of
# ordering the macro uses the placement of the last occurrence of the
# redundant token. This will do the right thing for linker library
# ordering. The current implementation is pretty inefficient. I think it
# is worse than quadratic, but it is simple and the number of tokens is
# usually pretty small.
m4_define([_MCPPBS_UNIQ],
[
# Reverse the order of the input
$1_rev=""
for input_token in ${$1}; do
$1_rev="${input_token} ${$1_rev}"
done
# Step through each input token (now in reverse order)
$1=""
for input_token in ${$1_rev}; do
# See if input token is in output token list
token_found="no"
for output_token in ${$1}; do
if ( test "${input_token}" = "${output_token}" ); then
token_found="yes"
fi
done
# If this is the first time we have seen token push it onto list
if ( test "${token_found}" = "no" ); then
$1="${input_token} ${$1}"
fi
done
])
#-------------------------------------------------------------------------
# MCPPBS_SUBPROJECT( [subproject], [ dep1, dep2, ... ] )
#-------------------------------------------------------------------------
# Go through list of subprojects which this subproject depends on and
# make sure they are configured. Create a cummulative list of all the
# compiler and linker flags from all the subprojects which this
# subproject depends on including both direct and indirect dependencies.
#
# Note that we use a m4_define instead of AC_DEFUN for now because
# otherwise autoconf will call macros specified with AC_REQUIRE at the
# very outer AC_DEFUN which can be pretty confusing.
m4_define([MCPPBS_SUBPROJECT],
[
# Verify that the subproject name give in the configure.ac matches the
# name give in the autoconf fragment.
m4_if(m4_normalize($1),MCPPBS_SPROJ,[],
[
m4_fatal(Subproject name in configure.ac does not match name
in MCPPBS_SPROJ.ac ('MCPPBS_SPROJ' != 'm4_normalize($1)'))
])
m4_define([MCPPBS_SPROJ], m4_normalize($1))
m4_define([MCPPBS_SPROJU], m4_bpatsubst(MCPPBS_SPROJ,[-],[_]))
# Save the list of direct dependencies (ie dirdeps) and a list of
# dependencies which are comma separated for pkg-config file.
MCPPBS_SPROJU[]_dirdeps="m4_join([ ],$2)"
MCPPBS_SPROJU[]_pkcdeps="$2"
# Initialize this subproject's compiler and linker flags
MCPPBS_SPROJU[]_cppflags="-I${srcdir}/MCPPBS_SPROJ "
MCPPBS_SPROJU[]_libs="-l[]MCPPBS_SPROJ "
# Loop through the list of given subprojects and for each one see if
# it has already been configured. If no then configure it by calling
# the appropriate shell function created in MCPPBS_SUBPROJECT. This
# will recursively configure transitively dependent subprojects.
# Eventually maybe this should happen at configure run time as opposed
# to autoconf run time.
m4_foreach([MCPPBS_DEP],[$2],
[
# Determine if this dependency is required or optional
m4_define([MCPPBS_DEP_OPTIONAL],
m4_bmatch(MCPPBS_DEP,[\*],[true],[false]))
# Create some names which characterize this dependency including a
# shell variable indicating if this subproject has been configured,
# the function name to call if we need to configure this dependency,
# and a shell variable which has this dependency's dependencies.
m4_define([MCPPBS_DEP],
m4_normalize(m4_bpatsubsts(MCPPBS_DEP,[*],[])))
m4_define([MCPPBS_DEPU], m4_bpatsubsts(MCPPBS_DEP,[-],[_]))
# If the dependency is required and has not been configured then
# configure it. Issue error if subproject does not exist.
m4_if(MCPPBS_DEP_OPTIONAL,[false],
[
m4_set_contains(MCPPBS_SPROJS,MCPPBS_DEP,[],
[
m4_fatal(Subproject MCPPBS_SPROJ depends on non-existent
subproject MCPPBS_DEP)
])
AS_IF([ test "${with_[]MCPPBS_DEPU}" = "no" ],
[
eval "MCPPBS_DEPU[]_cfg"
])
])
# Add information about this dependency to our running lists
AS_IF([ test "${with_[]MCPPBS_DEPU}" = "yes" ],
[
# Add the actual dependency to our libs list and our intdeps list
# which are both ordered such that libs only depend on later libs
AS_VAR_APPEND(MCPPBS_SPROJU[]_libs,"-l[]MCPPBS_DEP ")
AS_IF([ test "${MCPPBS_DEPU[]_type}" = "internal" ],
[
AS_VAR_APPEND(MCPPBS_SPROJU[]_intdeps,"MCPPBS_DEP ")
])
# Add dependency's variables to our own
AS_VAR_APPEND(MCPPBS_SPROJU[]_intdeps,"${MCPPBS_DEPU[]_intdeps} ")
AS_VAR_APPEND(MCPPBS_SPROJU[]_cppflags,"${MCPPBS_DEPU[]_cppflags} ")
AS_VAR_APPEND(MCPPBS_SPROJU[]_ldflags,"${MCPPBS_DEPU[]_ldflags} ")
AS_VAR_APPEND(MCPPBS_SPROJU[]_libs,"${MCPPBS_DEPU[]_libs} ")
])
])
# Make the dependency list, cppflags, ldflags, and libs variable unique
# by eliminating redundant tokens in the full lists.
_MCPPBS_UNIQ([MCPPBS_SPROJU[]_intdeps])
_MCPPBS_UNIQ([MCPPBS_SPROJU[]_cppflags])
_MCPPBS_UNIQ([MCPPBS_SPROJU[]_ldflags])
_MCPPBS_UNIQ([MCPPBS_SPROJU[]_libs])
# Keep a copy of the compiler and linker flags as they are now,
# because if we want to install this project we don't really need to
# include these flags in the pkg-config file. We do of course need to
# keep the flags that a user might add later in their subproject.ac.
MCPPBS_SPROJU[]_base_cppflags=${MCPPBS_SPROJU[]_cppflags}
MCPPBS_SPROJU[]_base_ldflags=${MCPPBS_SPROJU[]_ldflags}
MCPPBS_SPROJU[]_base_libs=${MCPPBS_SPROJU[]_libs}
# Substitute variables for makefile
AC_SUBST(MCPPBS_SPROJU[]_intdeps)
AC_SUBST(MCPPBS_SPROJU[]_cppflags)
AC_SUBST(MCPPBS_SPROJU[]_ldflags)
AC_SUBST(MCPPBS_SPROJU[]_libs)
# Substitute variables for pkg-config files (these will be set in the
# MCPPBS_INSTALL_LIBS macro)
AC_SUBST(MCPPBS_SPROJU[]_pkcdeps)
AC_SUBST(MCPPBS_SPROJU[]_extra_cppflags)
AC_SUBST(MCPPBS_SPROJU[]_extra_ldflags)
AC_SUBST(MCPPBS_SPROJU[]_extra_libs)
# Display that we are now configuring this subproject (ie running the
# rest of the macros in the corresponding subproject.ac)
AC_MSG_NOTICE([configuring internal subproject MCPPBS_SPROJ])
])
#-------------------------------------------------------------------------
# _MCPPBS_CREATE_EXTRA_FLAGS([var],[suffix])
#-------------------------------------------------------------------------
# Var is a bash shell variable while suffix is a string literal. This
# helper macro works with three variables:
#
# eval var_suffix=\${${var}_suffix}
# eval var_base_suffix=\${${var}_base_suffix}
# eval var_extra_suffix=\${${var}_extra_suffix}
#
# The first two are inputs and the third is the output. The first input
# is the entire set of compiler or linker flags. The second are just the
# base flags defined at the time that MCPPBS_SUBPROJECT is finished. The
# output will be those flags which are in the first input but not in the
# second input. For now we just use sed to remove the base from the
# first input which should be fine assuming the user hasn't mucked with
# what was already in the standard variables.
m4_defun([_MCPPBS_CREATE_EXTRA_FLAGS],
[
# Read the two input variables
eval "$1_$2=\${${$1}_$2}"
eval "$1_base_$2=\${${$1}_base_$2}"
# If nothing would go in extra flags then we are done
if ( test "${$1_$2}" = "${$1_base_$2}" ); then
$1_extra_$2=""
# As long as both inputs are non-empty then do the substitution
elif ( test -n "${$1_$2}" && test -n "${$1_base_$2}" ); then
$1_extra_$2=`echo "${$1_$2}" | sed "s|${$1_base_$2}||"`
# If at least one input was empty then extra is just current value
else
$1_extra_$2="${$1_$2}"
fi
# Set the output variable
eval "${$1}_extra_$2=\${$1_extra_$2}"
])
#-------------------------------------------------------------------------
# MCPPBS_INSTALL_LIBS([ subproject1, subproject2, ... ])
#-------------------------------------------------------------------------
# Configure the project so that it will install the libraries (and
# headers of course) for the given subproject. For a subproject to be
# able to be installed it must have a pkg-config subproject.pc.in file
# which can use the following substitution variables:
#
# - @foo_pkcdeps@ : List of all subproject dependencies
# - @foo_extra_cppflags@ : List of include paths (-I)
# - @foo_extra_ldflags@ : List of library paths (-L)
# - @foo_extra_libs@ : List of libraries (-l)
#
# The "extra" compiler and linker flags are the subset of the compiler
# and linker flags used in the makefile which are not provided by other
# subprojects.
#
# It is an error for an "install" subproject to depend on subprojects
# which are internal and not marked for installation.
AC_DEFUN([MCPPBS_INSTALL_LIBS],
[
# Normalize input list and step through each subproject on list
mcppbs_install=`echo "$1" | tr -s ",\n " " "`
for mcppbs_sproj in ${mcppbs_install}; do
# Change dashes to underscores in given subproject
mcppbs_sproju=`echo "${mcppbs_sproj}" | tr "-" "_"`
# Make sure this is a valid subproject
eval "with_mcppbs_sproju=\${with_${mcppbs_sproju}}"
AS_IF([ test -z "${with_mcppbs_sproju}" ],
[
AC_MSG_ERROR([Subproject ${mcppbs_sproj} is in
MCPPBS_[]INSTALL_LIBS but has not been initialized with a call
to MCPPBS_[]INCLUDE_INTERNAL.])
])
# Verify that all of the dependencies for this subproject are either
# external or also on this install list. You cannot install a
# subproject which depends on other subprojects which are not also
# installed (or will be installed).
eval "mcppbs_sproju_dirdeps=\${${mcppbs_sproju}_dirdeps}"
for mcppbs_dep in ${mcppbs_sproju_dirdeps}; do
mcppbs_depu=`echo ${mcppbs_dep} | tr "-" "_"`
eval "mcppbs_depu_type=\${${mcppbs_depu}_type}"
AS_IF([ test "${mcppbs_depu_type}" = "internal" ],
[
AS_IF([ echo "${mcppbs_install}" | grep -qvw "${mcppbs_dep}" ],
[
AC_MSG_ERROR([Subproject ${mcppbs_sproj} is in
MCPPBS_[]INSTALL_LIBS but it depends on subproject
${mcppbs_dep} which is an internal subproject not marked for
installation. Maybe you should add subproject ${mcppbs_dep}
to MCPPBS_[]INSTALL_LIBS?])
])
])
done
# Only install subprojects which are enabled
AS_IF([ test "${with_mcppbs_sproju}" = "yes" ],
[
# Create the "extra" version of the compiler and linker flags
_MCPPBS_CREATE_EXTRA_FLAGS([mcppbs_sproju],[cppflags])
_MCPPBS_CREATE_EXTRA_FLAGS([mcppbs_sproju],[ldflags])
_MCPPBS_CREATE_EXTRA_FLAGS([mcppbs_sproju],[libs])
# Create subproject.pc from subproject.pc.in
AC_CONFIG_FILES(${mcppbs_sproj}.pc:${mcppbs_sproj}/${mcppbs_sproj}.pc.in)
])
done
])