A complete rewrite of the m4 code involved in the generation of
libtool via config.status. The old way involved manually
synchronising disparate bits of shell code in several macros, to
quote a copy of a shell variable, put that in config.status, maybe
add it to some quotation loops to prevent early expansion, and
then add a block to _LT_CONFIG_COMMANDS to bring it into the
libtool script. The new way is to mark shell variables for
propogation using _LT_DECL for language independent variables, or
_LT_TAGDECL for those that need to be propogated in several
language flavours. The marking can be done in the macro that
probes the variables, and this new m4 machinery takes care of
synchronising all the other bits of code at autoconf time:
* m4/ltsugar.m4: New file. Macros that are useful outside the
context of libtool. Initially, contains some generalised list
management macros, and the scaffolding for dictionary type data
storage and retrieval.
* Makefile.am (aclocal_macros): Install ltsugar.m4.
* m4/libtool.m4 (_LT_DECL): Mark a shell variable for export to
the libtool script, along with a comment, and hints for quoting
and renaming.
(_LT_TAGDECL): Similarly mark a tagged shell variable for export
in each tag.
(lt_decl_tag_varnames, lt_decl_quote_varnames)
(lt_decl_dquote_varnames, lt_decl_varnames_tagged)
(lt_decl_all_varnames): New utility macros for managing lists of
shell variable names from _LT_DECL and _LT_TAGDECL.
(_LT_CONFIG_STATUS_DECLARATIONS, _LT_CONFIG_STATUS_DECLARE):
Expand to correctly quoted variable declarations in config.status
from all marked shell variables.
(_LT_LIBTOOL_DECLARE): Expand to commented and quoted variable
declaration for libtool tag section.
(_LT_LIBTOOL_CONFIG_VARS, _LT_LIBTOOL_TAG_VARS): Pass all marked
variables to _LT_LIBTOOL_DECLARE.
(_LT_CONFIG_COMMANDS): Use _LT_CONFIG_STATUS_DECLARATIONS and
friends to generate all the variable passing shell code for
config.status, to get marked variables from libtool.m4 into
libtool itself eventually.
(AC_LIBTOOL_CONFIG): Generate marked variable code for libtool tag
configuration. Changed all client macros to mark variables
suitably rather than the hand pasting that was necessary
previously.
(AC_PROG_SED): Renamed from LT_AC_PROG_SED.
(LT_AC_PROG_SED): Wrap AC_PROG_SED, and mark shell variables for
propogation to the libtool script.
2004-01-07 20:26:25 +08:00
|
|
|
# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*-
|
|
|
|
#
|
2005-01-09 05:17:57 +08:00
|
|
|
# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
|
A complete rewrite of the m4 code involved in the generation of
libtool via config.status. The old way involved manually
synchronising disparate bits of shell code in several macros, to
quote a copy of a shell variable, put that in config.status, maybe
add it to some quotation loops to prevent early expansion, and
then add a block to _LT_CONFIG_COMMANDS to bring it into the
libtool script. The new way is to mark shell variables for
propogation using _LT_DECL for language independent variables, or
_LT_TAGDECL for those that need to be propogated in several
language flavours. The marking can be done in the macro that
probes the variables, and this new m4 machinery takes care of
synchronising all the other bits of code at autoconf time:
* m4/ltsugar.m4: New file. Macros that are useful outside the
context of libtool. Initially, contains some generalised list
management macros, and the scaffolding for dictionary type data
storage and retrieval.
* Makefile.am (aclocal_macros): Install ltsugar.m4.
* m4/libtool.m4 (_LT_DECL): Mark a shell variable for export to
the libtool script, along with a comment, and hints for quoting
and renaming.
(_LT_TAGDECL): Similarly mark a tagged shell variable for export
in each tag.
(lt_decl_tag_varnames, lt_decl_quote_varnames)
(lt_decl_dquote_varnames, lt_decl_varnames_tagged)
(lt_decl_all_varnames): New utility macros for managing lists of
shell variable names from _LT_DECL and _LT_TAGDECL.
(_LT_CONFIG_STATUS_DECLARATIONS, _LT_CONFIG_STATUS_DECLARE):
Expand to correctly quoted variable declarations in config.status
from all marked shell variables.
(_LT_LIBTOOL_DECLARE): Expand to commented and quoted variable
declaration for libtool tag section.
(_LT_LIBTOOL_CONFIG_VARS, _LT_LIBTOOL_TAG_VARS): Pass all marked
variables to _LT_LIBTOOL_DECLARE.
(_LT_CONFIG_COMMANDS): Use _LT_CONFIG_STATUS_DECLARATIONS and
friends to generate all the variable passing shell code for
config.status, to get marked variables from libtool.m4 into
libtool itself eventually.
(AC_LIBTOOL_CONFIG): Generate marked variable code for libtool tag
configuration. Changed all client macros to mark variables
suitably rather than the hand pasting that was necessary
previously.
(AC_PROG_SED): Renamed from LT_AC_PROG_SED.
(LT_AC_PROG_SED): Wrap AC_PROG_SED, and mark shell variables for
propogation to the libtool script.
2004-01-07 20:26:25 +08:00
|
|
|
# Written by Gary V. Vaughan.
|
|
|
|
#
|
2005-01-09 05:17:57 +08:00
|
|
|
# This file is free software; the Free Software Foundation gives
|
|
|
|
# unlimited permission to copy and/or distribute it, with or without
|
|
|
|
# modifications, as long as this notice is preserved.
|
A complete rewrite of the m4 code involved in the generation of
libtool via config.status. The old way involved manually
synchronising disparate bits of shell code in several macros, to
quote a copy of a shell variable, put that in config.status, maybe
add it to some quotation loops to prevent early expansion, and
then add a block to _LT_CONFIG_COMMANDS to bring it into the
libtool script. The new way is to mark shell variables for
propogation using _LT_DECL for language independent variables, or
_LT_TAGDECL for those that need to be propogated in several
language flavours. The marking can be done in the macro that
probes the variables, and this new m4 machinery takes care of
synchronising all the other bits of code at autoconf time:
* m4/ltsugar.m4: New file. Macros that are useful outside the
context of libtool. Initially, contains some generalised list
management macros, and the scaffolding for dictionary type data
storage and retrieval.
* Makefile.am (aclocal_macros): Install ltsugar.m4.
* m4/libtool.m4 (_LT_DECL): Mark a shell variable for export to
the libtool script, along with a comment, and hints for quoting
and renaming.
(_LT_TAGDECL): Similarly mark a tagged shell variable for export
in each tag.
(lt_decl_tag_varnames, lt_decl_quote_varnames)
(lt_decl_dquote_varnames, lt_decl_varnames_tagged)
(lt_decl_all_varnames): New utility macros for managing lists of
shell variable names from _LT_DECL and _LT_TAGDECL.
(_LT_CONFIG_STATUS_DECLARATIONS, _LT_CONFIG_STATUS_DECLARE):
Expand to correctly quoted variable declarations in config.status
from all marked shell variables.
(_LT_LIBTOOL_DECLARE): Expand to commented and quoted variable
declaration for libtool tag section.
(_LT_LIBTOOL_CONFIG_VARS, _LT_LIBTOOL_TAG_VARS): Pass all marked
variables to _LT_LIBTOOL_DECLARE.
(_LT_CONFIG_COMMANDS): Use _LT_CONFIG_STATUS_DECLARATIONS and
friends to generate all the variable passing shell code for
config.status, to get marked variables from libtool.m4 into
libtool itself eventually.
(AC_LIBTOOL_CONFIG): Generate marked variable code for libtool tag
configuration. Changed all client macros to mark variables
suitably rather than the hand pasting that was necessary
previously.
(AC_PROG_SED): Renamed from LT_AC_PROG_SED.
(LT_AC_PROG_SED): Wrap AC_PROG_SED, and mark shell variables for
propogation to the libtool script.
2004-01-07 20:26:25 +08:00
|
|
|
|
2005-01-09 05:17:57 +08:00
|
|
|
# serial 2
|
A complete rewrite of the m4 code involved in the generation of
libtool via config.status. The old way involved manually
synchronising disparate bits of shell code in several macros, to
quote a copy of a shell variable, put that in config.status, maybe
add it to some quotation loops to prevent early expansion, and
then add a block to _LT_CONFIG_COMMANDS to bring it into the
libtool script. The new way is to mark shell variables for
propogation using _LT_DECL for language independent variables, or
_LT_TAGDECL for those that need to be propogated in several
language flavours. The marking can be done in the macro that
probes the variables, and this new m4 machinery takes care of
synchronising all the other bits of code at autoconf time:
* m4/ltsugar.m4: New file. Macros that are useful outside the
context of libtool. Initially, contains some generalised list
management macros, and the scaffolding for dictionary type data
storage and retrieval.
* Makefile.am (aclocal_macros): Install ltsugar.m4.
* m4/libtool.m4 (_LT_DECL): Mark a shell variable for export to
the libtool script, along with a comment, and hints for quoting
and renaming.
(_LT_TAGDECL): Similarly mark a tagged shell variable for export
in each tag.
(lt_decl_tag_varnames, lt_decl_quote_varnames)
(lt_decl_dquote_varnames, lt_decl_varnames_tagged)
(lt_decl_all_varnames): New utility macros for managing lists of
shell variable names from _LT_DECL and _LT_TAGDECL.
(_LT_CONFIG_STATUS_DECLARATIONS, _LT_CONFIG_STATUS_DECLARE):
Expand to correctly quoted variable declarations in config.status
from all marked shell variables.
(_LT_LIBTOOL_DECLARE): Expand to commented and quoted variable
declaration for libtool tag section.
(_LT_LIBTOOL_CONFIG_VARS, _LT_LIBTOOL_TAG_VARS): Pass all marked
variables to _LT_LIBTOOL_DECLARE.
(_LT_CONFIG_COMMANDS): Use _LT_CONFIG_STATUS_DECLARATIONS and
friends to generate all the variable passing shell code for
config.status, to get marked variables from libtool.m4 into
libtool itself eventually.
(AC_LIBTOOL_CONFIG): Generate marked variable code for libtool tag
configuration. Changed all client macros to mark variables
suitably rather than the hand pasting that was necessary
previously.
(AC_PROG_SED): Renamed from LT_AC_PROG_SED.
(LT_AC_PROG_SED): Wrap AC_PROG_SED, and mark shell variables for
propogation to the libtool script.
2004-01-07 20:26:25 +08:00
|
|
|
|
|
|
|
# This is to help aclocal find these macros, as it can't see m4_define.
|
|
|
|
AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
|
|
|
|
|
|
|
|
|
|
|
|
# lt_join(SEP, ARG1, [ARG2...])
|
|
|
|
# -----------------------------
|
|
|
|
# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
|
|
|
|
# associated separator.
|
|
|
|
m4_define([lt_join],
|
|
|
|
[m4_case([$#],
|
|
|
|
[0], [m4_fatal([$0: too few arguments: $#])],
|
|
|
|
[1], [],
|
|
|
|
[2], [[$2]],
|
|
|
|
[m4_ifval([$2],
|
|
|
|
[m4_ifval([$3],
|
|
|
|
[[$2][$1][]$0([$1], m4_shiftn(2, $@))],
|
|
|
|
[m4_if([$#], [3],
|
|
|
|
[$2],
|
|
|
|
[$0([$1], [$2], m4_shiftn(3, $@))])])],
|
|
|
|
[$0([$1], m4_shiftn(2, $@))])])[]dnl
|
|
|
|
])
|
|
|
|
|
|
|
|
|
2005-06-17 20:42:34 +08:00
|
|
|
# lt_car(LIST)
|
|
|
|
# lt_cdr(LIST)
|
|
|
|
# ------------
|
|
|
|
# Manipulate m4 lists.
|
|
|
|
# These macros are necessary as long as will still need to support
|
|
|
|
# Autoconf-2.59 which quotes differently.
|
|
|
|
m4_define([lt_car], [[$1]])
|
|
|
|
m4_define([lt_cdr],
|
|
|
|
[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
|
|
|
|
[$#], 1, [],
|
|
|
|
[m4_dquote(m4_shift($@))])])
|
|
|
|
|
|
|
|
|
A complete rewrite of the m4 code involved in the generation of
libtool via config.status. The old way involved manually
synchronising disparate bits of shell code in several macros, to
quote a copy of a shell variable, put that in config.status, maybe
add it to some quotation loops to prevent early expansion, and
then add a block to _LT_CONFIG_COMMANDS to bring it into the
libtool script. The new way is to mark shell variables for
propogation using _LT_DECL for language independent variables, or
_LT_TAGDECL for those that need to be propogated in several
language flavours. The marking can be done in the macro that
probes the variables, and this new m4 machinery takes care of
synchronising all the other bits of code at autoconf time:
* m4/ltsugar.m4: New file. Macros that are useful outside the
context of libtool. Initially, contains some generalised list
management macros, and the scaffolding for dictionary type data
storage and retrieval.
* Makefile.am (aclocal_macros): Install ltsugar.m4.
* m4/libtool.m4 (_LT_DECL): Mark a shell variable for export to
the libtool script, along with a comment, and hints for quoting
and renaming.
(_LT_TAGDECL): Similarly mark a tagged shell variable for export
in each tag.
(lt_decl_tag_varnames, lt_decl_quote_varnames)
(lt_decl_dquote_varnames, lt_decl_varnames_tagged)
(lt_decl_all_varnames): New utility macros for managing lists of
shell variable names from _LT_DECL and _LT_TAGDECL.
(_LT_CONFIG_STATUS_DECLARATIONS, _LT_CONFIG_STATUS_DECLARE):
Expand to correctly quoted variable declarations in config.status
from all marked shell variables.
(_LT_LIBTOOL_DECLARE): Expand to commented and quoted variable
declaration for libtool tag section.
(_LT_LIBTOOL_CONFIG_VARS, _LT_LIBTOOL_TAG_VARS): Pass all marked
variables to _LT_LIBTOOL_DECLARE.
(_LT_CONFIG_COMMANDS): Use _LT_CONFIG_STATUS_DECLARATIONS and
friends to generate all the variable passing shell code for
config.status, to get marked variables from libtool.m4 into
libtool itself eventually.
(AC_LIBTOOL_CONFIG): Generate marked variable code for libtool tag
configuration. Changed all client macros to mark variables
suitably rather than the hand pasting that was necessary
previously.
(AC_PROG_SED): Renamed from LT_AC_PROG_SED.
(LT_AC_PROG_SED): Wrap AC_PROG_SED, and mark shell variables for
propogation to the libtool script.
2004-01-07 20:26:25 +08:00
|
|
|
# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
|
|
|
|
# ----------------------------------------------------------
|
|
|
|
# Produce a SEP delimited list of all paired combinations of elements of
|
|
|
|
# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list
|
|
|
|
# has the form PREFIXmINFIXSUFFIXn.
|
|
|
|
m4_define([lt_combine],
|
2005-06-11 19:11:45 +08:00
|
|
|
[m4_if([$2], [], [],
|
2005-06-27 22:54:09 +08:00
|
|
|
[lt_join(m4_quote(m4_default([$1], [[, ]])),
|
2005-06-17 20:42:34 +08:00
|
|
|
_$0([$1], lt_car($2)[$3], m4_shiftn(3, $@)),
|
|
|
|
$0([$1], lt_cdr($2), m4_shiftn(2, $@)))])])
|
A complete rewrite of the m4 code involved in the generation of
libtool via config.status. The old way involved manually
synchronising disparate bits of shell code in several macros, to
quote a copy of a shell variable, put that in config.status, maybe
add it to some quotation loops to prevent early expansion, and
then add a block to _LT_CONFIG_COMMANDS to bring it into the
libtool script. The new way is to mark shell variables for
propogation using _LT_DECL for language independent variables, or
_LT_TAGDECL for those that need to be propogated in several
language flavours. The marking can be done in the macro that
probes the variables, and this new m4 machinery takes care of
synchronising all the other bits of code at autoconf time:
* m4/ltsugar.m4: New file. Macros that are useful outside the
context of libtool. Initially, contains some generalised list
management macros, and the scaffolding for dictionary type data
storage and retrieval.
* Makefile.am (aclocal_macros): Install ltsugar.m4.
* m4/libtool.m4 (_LT_DECL): Mark a shell variable for export to
the libtool script, along with a comment, and hints for quoting
and renaming.
(_LT_TAGDECL): Similarly mark a tagged shell variable for export
in each tag.
(lt_decl_tag_varnames, lt_decl_quote_varnames)
(lt_decl_dquote_varnames, lt_decl_varnames_tagged)
(lt_decl_all_varnames): New utility macros for managing lists of
shell variable names from _LT_DECL and _LT_TAGDECL.
(_LT_CONFIG_STATUS_DECLARATIONS, _LT_CONFIG_STATUS_DECLARE):
Expand to correctly quoted variable declarations in config.status
from all marked shell variables.
(_LT_LIBTOOL_DECLARE): Expand to commented and quoted variable
declaration for libtool tag section.
(_LT_LIBTOOL_CONFIG_VARS, _LT_LIBTOOL_TAG_VARS): Pass all marked
variables to _LT_LIBTOOL_DECLARE.
(_LT_CONFIG_COMMANDS): Use _LT_CONFIG_STATUS_DECLARATIONS and
friends to generate all the variable passing shell code for
config.status, to get marked variables from libtool.m4 into
libtool itself eventually.
(AC_LIBTOOL_CONFIG): Generate marked variable code for libtool tag
configuration. Changed all client macros to mark variables
suitably rather than the hand pasting that was necessary
previously.
(AC_PROG_SED): Renamed from LT_AC_PROG_SED.
(LT_AC_PROG_SED): Wrap AC_PROG_SED, and mark shell variables for
propogation to the libtool script.
2004-01-07 20:26:25 +08:00
|
|
|
m4_define([_lt_combine],
|
|
|
|
[m4_if([$3], [], [],
|
2005-06-27 22:54:09 +08:00
|
|
|
[lt_join(m4_quote(m4_default([$1], [[, ]])),
|
A complete rewrite of the m4 code involved in the generation of
libtool via config.status. The old way involved manually
synchronising disparate bits of shell code in several macros, to
quote a copy of a shell variable, put that in config.status, maybe
add it to some quotation loops to prevent early expansion, and
then add a block to _LT_CONFIG_COMMANDS to bring it into the
libtool script. The new way is to mark shell variables for
propogation using _LT_DECL for language independent variables, or
_LT_TAGDECL for those that need to be propogated in several
language flavours. The marking can be done in the macro that
probes the variables, and this new m4 machinery takes care of
synchronising all the other bits of code at autoconf time:
* m4/ltsugar.m4: New file. Macros that are useful outside the
context of libtool. Initially, contains some generalised list
management macros, and the scaffolding for dictionary type data
storage and retrieval.
* Makefile.am (aclocal_macros): Install ltsugar.m4.
* m4/libtool.m4 (_LT_DECL): Mark a shell variable for export to
the libtool script, along with a comment, and hints for quoting
and renaming.
(_LT_TAGDECL): Similarly mark a tagged shell variable for export
in each tag.
(lt_decl_tag_varnames, lt_decl_quote_varnames)
(lt_decl_dquote_varnames, lt_decl_varnames_tagged)
(lt_decl_all_varnames): New utility macros for managing lists of
shell variable names from _LT_DECL and _LT_TAGDECL.
(_LT_CONFIG_STATUS_DECLARATIONS, _LT_CONFIG_STATUS_DECLARE):
Expand to correctly quoted variable declarations in config.status
from all marked shell variables.
(_LT_LIBTOOL_DECLARE): Expand to commented and quoted variable
declaration for libtool tag section.
(_LT_LIBTOOL_CONFIG_VARS, _LT_LIBTOOL_TAG_VARS): Pass all marked
variables to _LT_LIBTOOL_DECLARE.
(_LT_CONFIG_COMMANDS): Use _LT_CONFIG_STATUS_DECLARATIONS and
friends to generate all the variable passing shell code for
config.status, to get marked variables from libtool.m4 into
libtool itself eventually.
(AC_LIBTOOL_CONFIG): Generate marked variable code for libtool tag
configuration. Changed all client macros to mark variables
suitably rather than the hand pasting that was necessary
previously.
(AC_PROG_SED): Renamed from LT_AC_PROG_SED.
(LT_AC_PROG_SED): Wrap AC_PROG_SED, and mark shell variables for
propogation to the libtool script.
2004-01-07 20:26:25 +08:00
|
|
|
[$2$3],
|
|
|
|
$0([$1], [$2], m4_shiftn(3, $@)))])[]dnl
|
|
|
|
])
|
|
|
|
|
|
|
|
|
|
|
|
# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
|
|
|
|
# -----------------------------------------------------------------------
|
|
|
|
# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
|
|
|
|
# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
|
|
|
|
m4_define([lt_if_append_uniq],
|
|
|
|
[m4_ifdef([$1],
|
|
|
|
[m4_bmatch($3[]m4_defn([$1])$3, $3[]m4_re_escape([$2])$3,
|
|
|
|
[$5],
|
|
|
|
[m4_append([$1], [$2], [$3])$4])],
|
|
|
|
[m4_append([$1], [$2], [$3])$4])])
|
|
|
|
|
|
|
|
|
|
|
|
# lt_dict_add(DICT, KEY, VALUE)
|
|
|
|
# -----------------------------
|
|
|
|
m4_define([lt_dict_add],
|
|
|
|
[m4_define([$1($2)], [$4])])
|
|
|
|
|
|
|
|
|
|
|
|
# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
|
|
|
|
# --------------------------------------------
|
|
|
|
m4_define([lt_dict_add_subkey],
|
|
|
|
[m4_define([$1($2:$3)], [$4])])
|
|
|
|
|
|
|
|
|
|
|
|
# lt_dict_fetch(DICT, KEY, [SUBKEY])
|
|
|
|
# ----------------------------------
|
|
|
|
m4_define([lt_dict_fetch],
|
|
|
|
[m4_ifval([$3],
|
|
|
|
m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
|
|
|
|
m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
|
|
|
|
|
|
|
|
|
|
|
|
# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
|
|
|
|
# -----------------------------------------------------------------
|
|
|
|
m4_define([lt_if_dict_fetch],
|
|
|
|
[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
|
|
|
|
[$5],
|
|
|
|
[$6])])
|
|
|
|
|
|
|
|
|
|
|
|
# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
|
|
|
|
# ------------------------------------------------------------
|
|
|
|
m4_define([lt_dict_filter],
|
|
|
|
[m4_if([$5], [], [],
|
|
|
|
[lt_join(m4_quote(m4_default([$4], [[, ]])),
|
|
|
|
m4_quote(lt_if_dict_fetch([$1], [$5], [$2], [$3], [$5])),
|
|
|
|
m4_quote($0([$1], [$2], [$3], [$4], m4_shiftn(5, $@))))])dnl
|
|
|
|
])
|