13aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- 23aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# 33aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. 43aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Written by Gary V. Vaughan, 2004 53aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# 63aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# This file is free software; the Free Software Foundation gives 73aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# unlimited permission to copy and/or distribute it, with or without 83aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# modifications, as long as this notice is preserved. 93aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# serial 6 ltsugar.m4 113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# This is to help aclocal find these macros, as it can't see m4_define. 133aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevAC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) 143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# lt_join(SEP, ARG1, [ARG2...]) 173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# ----------------------------- 183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their 193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# associated separator. 203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier 213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# versions in m4sugar had bugs. 223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevm4_define([lt_join], 233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev[m4_if([$#], [1], [], 243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev [$#], [2], [[$2]], 253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) 263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevm4_define([_lt_join], 273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev[m4_if([$#$2], [2], [], 283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) 293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# lt_car(LIST) 323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# lt_cdr(LIST) 333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# ------------ 343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Manipulate m4 lists. 353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# These macros are necessary as long as will still need to support 363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Autoconf-2.59 which quotes differently. 373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevm4_define([lt_car], [[$1]]) 383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevm4_define([lt_cdr], 393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], 403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev [$#], 1, [], 413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev [m4_dquote(m4_shift($@))])]) 423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevm4_define([lt_unquote], $1) 433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# lt_append(MACRO-NAME, STRING, [SEPARATOR]) 463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# ------------------------------------------ 473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. 483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Note that neither SEPARATOR nor STRING are expanded; they are appended 493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). 503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# No SEPARATOR is output if MACRO-NAME was previously undefined (different 513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# than defined and empty). 523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# 533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# This macro is needed until we can rely on Autoconf 2.62, since earlier 543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. 553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevm4_define([lt_append], 563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev[m4_define([$1], 573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) 583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) 623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# ---------------------------------------------------------- 633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Produce a SEP delimited list of all paired combinations of elements of 643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list 653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# has the form PREFIXmINFIXSUFFIXn. 663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Needed until we can rely on m4_combine added in Autoconf 2.62. 673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevm4_define([lt_combine], 683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev[m4_if(m4_eval([$# > 3]), [1], 693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl 703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev[[m4_foreach([_Lt_prefix], [$2], 713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev [m4_foreach([_Lt_suffix], 723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, 733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) 743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) 773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# ----------------------------------------------------------------------- 783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited 793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. 803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevm4_define([lt_if_append_uniq], 813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev[m4_ifdef([$1], 823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], 833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev [lt_append([$1], [$2], [$3])$4], 843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev [$5])], 853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev [lt_append([$1], [$2], [$3])$4])]) 863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# lt_dict_add(DICT, KEY, VALUE) 893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# ----------------------------- 903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevm4_define([lt_dict_add], 913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev[m4_define([$1($2)], [$3])]) 923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) 953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# -------------------------------------------- 963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevm4_define([lt_dict_add_subkey], 973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev[m4_define([$1($2:$3)], [$4])]) 983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 1003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# lt_dict_fetch(DICT, KEY, [SUBKEY]) 1013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# ---------------------------------- 1023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevm4_define([lt_dict_fetch], 1033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev[m4_ifval([$3], 1043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), 1053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) 1063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 1073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 1083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) 1093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# ----------------------------------------------------------------- 1103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevm4_define([lt_if_dict_fetch], 1113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], 1123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev [$5], 1133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev [$6])]) 1143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 1153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev 1163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) 1173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# -------------------------------------------------------------- 1183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevm4_define([lt_dict_filter], 1193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev[m4_if([$5], [], [], 1203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev [lt_join(m4_quote(m4_default([$4], [[, ]])), 1213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), 1223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl 1233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev]) 124