165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- 265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. 465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Written by Gary V. Vaughan, 2004 565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# This file is free software; the Free Software Foundation gives 765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# unlimited permission to copy and/or distribute it, with or without 865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# modifications, as long as this notice is preserved. 965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 1065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# serial 6 ltsugar.m4 1165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 1265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# This is to help aclocal find these macros, as it can't see m4_define. 1365de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) 1465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 1565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 1665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# lt_join(SEP, ARG1, [ARG2...]) 1765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ----------------------------- 1865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their 1965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# associated separator. 2065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier 2165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# versions in m4sugar had bugs. 2265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichm4_define([lt_join], 2365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich[m4_if([$#], [1], [], 2465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich [$#], [2], [[$2]], 2565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) 2665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichm4_define([_lt_join], 2765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich[m4_if([$#$2], [2], [], 2865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) 2965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 3065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 3165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# lt_car(LIST) 3265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# lt_cdr(LIST) 3365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ------------ 3465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Manipulate m4 lists. 3565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# These macros are necessary as long as will still need to support 3665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Autoconf-2.59 which quotes differently. 3765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichm4_define([lt_car], [[$1]]) 3865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichm4_define([lt_cdr], 3965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], 4065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich [$#], 1, [], 4165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich [m4_dquote(m4_shift($@))])]) 4265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichm4_define([lt_unquote], $1) 4365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 4465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 4565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# lt_append(MACRO-NAME, STRING, [SEPARATOR]) 4665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ------------------------------------------ 4765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. 4865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Note that neither SEPARATOR nor STRING are expanded; they are appended 4965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). 5065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# No SEPARATOR is output if MACRO-NAME was previously undefined (different 5165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# than defined and empty). 5265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 5365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# This macro is needed until we can rely on Autoconf 2.62, since earlier 5465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. 5565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichm4_define([lt_append], 5665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich[m4_define([$1], 5765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) 5865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 5965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 6065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 6165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) 6265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ---------------------------------------------------------- 6365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Produce a SEP delimited list of all paired combinations of elements of 6465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list 6565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# has the form PREFIXmINFIXSUFFIXn. 6665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Needed until we can rely on m4_combine added in Autoconf 2.62. 6765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichm4_define([lt_combine], 6865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich[m4_if(m4_eval([$# > 3]), [1], 6965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl 7065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich[[m4_foreach([_Lt_prefix], [$2], 7165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich [m4_foreach([_Lt_suffix], 7265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, 7365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) 7465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 7565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 7665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) 7765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ----------------------------------------------------------------------- 7865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited 7965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. 8065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichm4_define([lt_if_append_uniq], 8165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich[m4_ifdef([$1], 8265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], 8365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich [lt_append([$1], [$2], [$3])$4], 8465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich [$5])], 8565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich [lt_append([$1], [$2], [$3])$4])]) 8665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 8765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 8865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# lt_dict_add(DICT, KEY, VALUE) 8965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ----------------------------- 9065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichm4_define([lt_dict_add], 9165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich[m4_define([$1($2)], [$3])]) 9265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 9365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 9465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) 9565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# -------------------------------------------- 9665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichm4_define([lt_dict_add_subkey], 9765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich[m4_define([$1($2:$3)], [$4])]) 9865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 9965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 10065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# lt_dict_fetch(DICT, KEY, [SUBKEY]) 10165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ---------------------------------- 10265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichm4_define([lt_dict_fetch], 10365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich[m4_ifval([$3], 10465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), 10565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) 10665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 10765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 10865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) 10965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# ----------------------------------------------------------------- 11065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichm4_define([lt_if_dict_fetch], 11165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], 11265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich [$5], 11365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich [$6])]) 11465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 11565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich 11665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) 11765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# -------------------------------------------------------------- 11865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichm4_define([lt_dict_filter], 11965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich[m4_if([$5], [], [], 12065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich [lt_join(m4_quote(m4_default([$4], [[, ]])), 12165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), 12265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl 12365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich]) 124