zsh-workers
 help / color / mirror / code / Atom feed
c4611d8b39a603f522ad69f2263d29449aae267d blob 3598 bytes (raw)

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
 
#! /bin/sh
#
# mkbltnmlst.sh: generate boot code for linked-in modules
#
# Written by Andrew Main
#

srcdir=${srcdir-`echo $0|sed 's%/[^/][^/]*$%%'`}
test "x$srcdir" = "x$0" && srcdir=.
test "x$srcdir" = "x"   && srcdir=.
CFMOD=${CFMOD-$srcdir/../config.modules}

bin_mods="`grep ' link=static' $CFMOD | sed -e '/^#/d' \
-e 's/ .*/ /' -e 's/^name=/ /'`"

x_mods="`grep ' load=yes' $CFMOD | sed -e '/^#/d' -e '/ link=no/d' \
-e 's/ .*/ /' -e 's/^name=/ /'`"

trap "rm -f $1; exit 1" 1 2 15

exec > $1

for x_mod in $x_mods; do
    modfile="`grep '^name='$x_mod' ' $CFMOD | sed -e 's/^.* modfile=//' \
      -e 's/ .*//'`"
    if test "x$modfile" = x; then
	echo >&2 "WARNING: no name for \`$x_mod' in $CFMOD (ignored)"
	continue
    fi
    case "$bin_mods" in
    *" $x_mod "*)
        echo "/* linked-in known module \`$x_mod' */"
	linked=yes
	;;
    *)
        echo "#ifdef DYNAMIC"
        echo "/* non-linked-in known module \`$x_mod' */"
	linked=no
    esac
    unset moddeps autofeatures autofeatures_emu
    . $srcdir/../$modfile
    if test "x$autofeatures" != x; then
        if test "x$autofeatures_emu" != x; then
            echo "  {"
	    echo "    char *zsh_features[] = { "
	    for feature in $autofeatures; do
		echo "      \"$feature\","
	    done
	    echo "      NULL"
	    echo "    }; "
	    echo "    char *emu_features[] = { "
	    for feature in $autofeatures_emu; do
		echo "      \"$feature\","
	    done
	    echo "      NULL"
	    echo "    }; "
	    echo "    autofeatures(\"zsh\", \"$x_mod\","
	    echo "       EMULATION(EMULATE_ZSH) ? zsh_features : emu_features,"
	    echo "       0, 1);"
	    echo "  }"
        else
	    echo "  if (EMULATION(EMULATE_ZSH)) {"
	    echo "    char *features[] = { "
	    for feature in $autofeatures; do
		echo "      \"$feature\","
	    done
	    echo "      NULL"
	    echo "    }; "
	    echo "    autofeatures(\"zsh\", \"$x_mod\", features, 0, 1);"
	    echo "  }"
	fi
    fi
    for dep in $moddeps; do
	echo "  add_dep(\"$x_mod\", \"$dep\");"
    done
    test "x$linked" = xno && echo "#endif"
done

echo
done_mods=" "
for bin_mod in $bin_mods; do
    q_bin_mod=`echo $bin_mod | sed 's,Q,Qq,g;s,_,Qu,g;s,/,Qs,g'`
    modfile="`grep '^name='$bin_mod' ' $CFMOD | sed -e 's/^.* modfile=//' \
      -e 's/ .*//'`"
    echo "/* linked-in module \`$bin_mod' */"
    unset moddeps
    . $srcdir/../$modfile
    for dep in $moddeps; do
	# This assumes there are no circular dependencies in the builtin
	# modules.  Better ordering of config.modules would be necessary
	# to enforce stricter dependency checking.
	case $bin_mods in
	    *" $dep "*)
		echo "    /* depends on \`$dep' */" ;;
	    *)	echo >&2 "ERROR: linked-in module \`$bin_mod' depends on \`$dep'"
		rm -f $1
		exit 1 ;;
	esac
    done
    echo "    {"
    echo "        extern int setup_${q_bin_mod} _((Module));"
    echo "        extern int boot_${q_bin_mod} _((Module));"
    echo "        extern int features_${q_bin_mod} _((Module,char***));"
    echo "        extern int enables_${q_bin_mod} _((Module,int**));"
    echo "        extern int cleanup_${q_bin_mod} _((Module));"
    echo "        extern int finish_${q_bin_mod} _((Module));"
    echo
    echo "        register_module(\"$bin_mod\","
    echo "                        setup_${q_bin_mod},"
    echo "                        features_${q_bin_mod},"
    echo "                        enables_${q_bin_mod},"
    echo "                        boot_${q_bin_mod},"
    echo "                        cleanup_${q_bin_mod}, finish_${q_bin_mod});"
    echo "    }"
    done_mods="$done_mods$bin_mod "
done
debug log:

solving c4611d8b3 ...
found c4611d8b3 in https://git.vuxu.org/mirror/zsh/

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).