annotate m4/ltsugar.m4 @ 1739:c414850f206f

Add support for -boot flag, which allows in-tree execution of Ur/Web The boot flag rewrites most hardcoded paths to point to the build directory, and also forces static compilation. This is convenient for developing Ur/Web, or if you cannot 'sudo make install' Ur/Web. The following changes were made: * Header files were moved to include/urweb instead of include; this lets FFI users point their C_INCLUDE_PATH at this directory at write <urweb/urweb.h>. For internal Ur/Web executables, we simply pass -I$PATH/include/urweb as normal. * Differentiate between LIB and SRCLIB; SRCLIB is Ur and JavaScript source files, while LIB is compiled products from libtool. For in-tree compilation these live in different places. * No longer reference Config for paths; instead use Settings; these settings can be changed dynamically by Compiler.enableBoot () (TODO: add a disableBoot function.) * config.h is now generated directly in include/urweb/config.h, for consistency's sake (especially since it gets installed along with the rest of the headers!) * All of the autotools build products got updated. * The linkStatic field in protocols now only contains the name of the build product, and not the absolute path. Future users have to be careful not to reference the Settings files to early, lest they get an old version (this was the source of two bugs during development of this patch.)
author Edward Z. Yang <ezyang@mit.edu>
date Wed, 02 May 2012 17:17:57 -0400
parents f6cb1cb2d7a8
children
rev   line source
adamc@1141 1 # ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*-
adamc@1141 2 #
adamc@1141 3 # Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
adamc@1141 4 # Written by Gary V. Vaughan, 2004
adamc@1141 5 #
adamc@1141 6 # This file is free software; the Free Software Foundation gives
adamc@1141 7 # unlimited permission to copy and/or distribute it, with or without
adamc@1141 8 # modifications, as long as this notice is preserved.
adamc@1141 9
adamc@1141 10 # serial 6 ltsugar.m4
adamc@1141 11
adamc@1141 12 # This is to help aclocal find these macros, as it can't see m4_define.
adamc@1141 13 AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
adamc@1141 14
adamc@1141 15
adamc@1141 16 # lt_join(SEP, ARG1, [ARG2...])
adamc@1141 17 # -----------------------------
adamc@1141 18 # Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
adamc@1141 19 # associated separator.
adamc@1141 20 # Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
adamc@1141 21 # versions in m4sugar had bugs.
adamc@1141 22 m4_define([lt_join],
adamc@1141 23 [m4_if([$#], [1], [],
adamc@1141 24 [$#], [2], [[$2]],
adamc@1141 25 [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
adamc@1141 26 m4_define([_lt_join],
adamc@1141 27 [m4_if([$#$2], [2], [],
adamc@1141 28 [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
adamc@1141 29
adamc@1141 30
adamc@1141 31 # lt_car(LIST)
adamc@1141 32 # lt_cdr(LIST)
adamc@1141 33 # ------------
adamc@1141 34 # Manipulate m4 lists.
adamc@1141 35 # These macros are necessary as long as will still need to support
adamc@1141 36 # Autoconf-2.59 which quotes differently.
adamc@1141 37 m4_define([lt_car], [[$1]])
adamc@1141 38 m4_define([lt_cdr],
adamc@1141 39 [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
adamc@1141 40 [$#], 1, [],
adamc@1141 41 [m4_dquote(m4_shift($@))])])
adamc@1141 42 m4_define([lt_unquote], $1)
adamc@1141 43
adamc@1141 44
adamc@1141 45 # lt_append(MACRO-NAME, STRING, [SEPARATOR])
adamc@1141 46 # ------------------------------------------
adamc@1141 47 # Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
adamc@1141 48 # Note that neither SEPARATOR nor STRING are expanded; they are appended
adamc@1141 49 # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
adamc@1141 50 # No SEPARATOR is output if MACRO-NAME was previously undefined (different
adamc@1141 51 # than defined and empty).
adamc@1141 52 #
adamc@1141 53 # This macro is needed until we can rely on Autoconf 2.62, since earlier
adamc@1141 54 # versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
adamc@1141 55 m4_define([lt_append],
adamc@1141 56 [m4_define([$1],
adamc@1141 57 m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
adamc@1141 58
adamc@1141 59
adamc@1141 60
adamc@1141 61 # lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
adamc@1141 62 # ----------------------------------------------------------
adamc@1141 63 # Produce a SEP delimited list of all paired combinations of elements of
adamc@1141 64 # PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list
adamc@1141 65 # has the form PREFIXmINFIXSUFFIXn.
adamc@1141 66 # Needed until we can rely on m4_combine added in Autoconf 2.62.
adamc@1141 67 m4_define([lt_combine],
adamc@1141 68 [m4_if(m4_eval([$# > 3]), [1],
adamc@1141 69 [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
adamc@1141 70 [[m4_foreach([_Lt_prefix], [$2],
adamc@1141 71 [m4_foreach([_Lt_suffix],
adamc@1141 72 ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
adamc@1141 73 [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
adamc@1141 74
adamc@1141 75
adamc@1141 76 # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
adamc@1141 77 # -----------------------------------------------------------------------
adamc@1141 78 # Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
adamc@1141 79 # by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
adamc@1141 80 m4_define([lt_if_append_uniq],
adamc@1141 81 [m4_ifdef([$1],
adamc@1141 82 [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
adamc@1141 83 [lt_append([$1], [$2], [$3])$4],
adamc@1141 84 [$5])],
adamc@1141 85 [lt_append([$1], [$2], [$3])$4])])
adamc@1141 86
adamc@1141 87
adamc@1141 88 # lt_dict_add(DICT, KEY, VALUE)
adamc@1141 89 # -----------------------------
adamc@1141 90 m4_define([lt_dict_add],
adamc@1141 91 [m4_define([$1($2)], [$3])])
adamc@1141 92
adamc@1141 93
adamc@1141 94 # lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
adamc@1141 95 # --------------------------------------------
adamc@1141 96 m4_define([lt_dict_add_subkey],
adamc@1141 97 [m4_define([$1($2:$3)], [$4])])
adamc@1141 98
adamc@1141 99
adamc@1141 100 # lt_dict_fetch(DICT, KEY, [SUBKEY])
adamc@1141 101 # ----------------------------------
adamc@1141 102 m4_define([lt_dict_fetch],
adamc@1141 103 [m4_ifval([$3],
adamc@1141 104 m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
adamc@1141 105 m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
adamc@1141 106
adamc@1141 107
adamc@1141 108 # lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
adamc@1141 109 # -----------------------------------------------------------------
adamc@1141 110 m4_define([lt_if_dict_fetch],
adamc@1141 111 [m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
adamc@1141 112 [$5],
adamc@1141 113 [$6])])
adamc@1141 114
adamc@1141 115
adamc@1141 116 # lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
adamc@1141 117 # --------------------------------------------------------------
adamc@1141 118 m4_define([lt_dict_filter],
adamc@1141 119 [m4_if([$5], [], [],
adamc@1141 120 [lt_join(m4_quote(m4_default([$4], [[, ]])),
adamc@1141 121 lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
adamc@1141 122 [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
adamc@1141 123 ])