1fa225cbcSrjs# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- 2fa225cbcSrjs# 3fa225cbcSrjs# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. 4fa225cbcSrjs# Written by Gary V. Vaughan, 2004 5fa225cbcSrjs# 6fa225cbcSrjs# This file is free software; the Free Software Foundation gives 7fa225cbcSrjs# unlimited permission to copy and/or distribute it, with or without 8fa225cbcSrjs# modifications, as long as this notice is preserved. 9fa225cbcSrjs 10fa225cbcSrjs# serial 6 ltsugar.m4 11fa225cbcSrjs 12fa225cbcSrjs# This is to help aclocal find these macros, as it can't see m4_define. 13fa225cbcSrjsAC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) 14fa225cbcSrjs 15fa225cbcSrjs 16fa225cbcSrjs# lt_join(SEP, ARG1, [ARG2...]) 17fa225cbcSrjs# ----------------------------- 18fa225cbcSrjs# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their 19fa225cbcSrjs# associated separator. 20fa225cbcSrjs# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier 21fa225cbcSrjs# versions in m4sugar had bugs. 22fa225cbcSrjsm4_define([lt_join], 23fa225cbcSrjs[m4_if([$#], [1], [], 24fa225cbcSrjs [$#], [2], [[$2]], 25fa225cbcSrjs [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) 26fa225cbcSrjsm4_define([_lt_join], 27fa225cbcSrjs[m4_if([$#$2], [2], [], 28fa225cbcSrjs [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) 29fa225cbcSrjs 30fa225cbcSrjs 31fa225cbcSrjs# lt_car(LIST) 32fa225cbcSrjs# lt_cdr(LIST) 33fa225cbcSrjs# ------------ 34fa225cbcSrjs# Manipulate m4 lists. 35fa225cbcSrjs# These macros are necessary as long as will still need to support 36fa225cbcSrjs# Autoconf-2.59 which quotes differently. 37fa225cbcSrjsm4_define([lt_car], [[$1]]) 38fa225cbcSrjsm4_define([lt_cdr], 39fa225cbcSrjs[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], 40fa225cbcSrjs [$#], 1, [], 41fa225cbcSrjs [m4_dquote(m4_shift($@))])]) 42fa225cbcSrjsm4_define([lt_unquote], $1) 43fa225cbcSrjs 44fa225cbcSrjs 45fa225cbcSrjs# lt_append(MACRO-NAME, STRING, [SEPARATOR]) 46fa225cbcSrjs# ------------------------------------------ 47fa225cbcSrjs# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. 48fa225cbcSrjs# Note that neither SEPARATOR nor STRING are expanded; they are appended 49fa225cbcSrjs# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). 50fa225cbcSrjs# No SEPARATOR is output if MACRO-NAME was previously undefined (different 51fa225cbcSrjs# than defined and empty). 52fa225cbcSrjs# 53fa225cbcSrjs# This macro is needed until we can rely on Autoconf 2.62, since earlier 54fa225cbcSrjs# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. 55fa225cbcSrjsm4_define([lt_append], 56fa225cbcSrjs[m4_define([$1], 57fa225cbcSrjs m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) 58fa225cbcSrjs 59fa225cbcSrjs 60fa225cbcSrjs 61fa225cbcSrjs# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) 62fa225cbcSrjs# ---------------------------------------------------------- 63fa225cbcSrjs# Produce a SEP delimited list of all paired combinations of elements of 64fa225cbcSrjs# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list 65fa225cbcSrjs# has the form PREFIXmINFIXSUFFIXn. 66fa225cbcSrjs# Needed until we can rely on m4_combine added in Autoconf 2.62. 67fa225cbcSrjsm4_define([lt_combine], 68fa225cbcSrjs[m4_if(m4_eval([$# > 3]), [1], 69fa225cbcSrjs [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl 70fa225cbcSrjs[[m4_foreach([_Lt_prefix], [$2], 71fa225cbcSrjs [m4_foreach([_Lt_suffix], 72fa225cbcSrjs ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, 73fa225cbcSrjs [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) 74fa225cbcSrjs 75fa225cbcSrjs 76fa225cbcSrjs# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) 77fa225cbcSrjs# ----------------------------------------------------------------------- 78fa225cbcSrjs# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited 79fa225cbcSrjs# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. 80fa225cbcSrjsm4_define([lt_if_append_uniq], 81fa225cbcSrjs[m4_ifdef([$1], 82fa225cbcSrjs [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], 83fa225cbcSrjs [lt_append([$1], [$2], [$3])$4], 84fa225cbcSrjs [$5])], 85fa225cbcSrjs [lt_append([$1], [$2], [$3])$4])]) 86fa225cbcSrjs 87fa225cbcSrjs 88fa225cbcSrjs# lt_dict_add(DICT, KEY, VALUE) 89fa225cbcSrjs# ----------------------------- 90fa225cbcSrjsm4_define([lt_dict_add], 91fa225cbcSrjs[m4_define([$1($2)], [$3])]) 92fa225cbcSrjs 93fa225cbcSrjs 94fa225cbcSrjs# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) 95fa225cbcSrjs# -------------------------------------------- 96fa225cbcSrjsm4_define([lt_dict_add_subkey], 97fa225cbcSrjs[m4_define([$1($2:$3)], [$4])]) 98fa225cbcSrjs 99fa225cbcSrjs 100fa225cbcSrjs# lt_dict_fetch(DICT, KEY, [SUBKEY]) 101fa225cbcSrjs# ---------------------------------- 102fa225cbcSrjsm4_define([lt_dict_fetch], 103fa225cbcSrjs[m4_ifval([$3], 104fa225cbcSrjs m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), 105fa225cbcSrjs m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) 106fa225cbcSrjs 107fa225cbcSrjs 108fa225cbcSrjs# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) 109fa225cbcSrjs# ----------------------------------------------------------------- 110fa225cbcSrjsm4_define([lt_if_dict_fetch], 111fa225cbcSrjs[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], 112fa225cbcSrjs [$5], 113fa225cbcSrjs [$6])]) 114fa225cbcSrjs 115fa225cbcSrjs 116fa225cbcSrjs# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) 117fa225cbcSrjs# -------------------------------------------------------------- 118fa225cbcSrjsm4_define([lt_dict_filter], 119fa225cbcSrjs[m4_if([$5], [], [], 120fa225cbcSrjs [lt_join(m4_quote(m4_default([$4], [[, ]])), 121fa225cbcSrjs lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), 122fa225cbcSrjs [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl 123fa225cbcSrjs]) 124