mirror of
https://github.com/python/cpython.git
synced 2024-11-25 10:54:51 +08:00
72 lines
1.2 KiB
Bash
Executable File
72 lines
1.2 KiB
Bash
Executable File
#! /bin/sh
|
|
|
|
# This script converts Makefile.in.in and config.c.in into Makefile.in
|
|
# and config.c, based on the module definitions found in the file
|
|
# Setup.
|
|
|
|
NL="\\
|
|
"
|
|
|
|
sed -e 's/#.*//' -e '/^[ ]*$/d' ${1-Setup} |
|
|
(
|
|
DEFS=
|
|
MODS=
|
|
OBJS=
|
|
LIBS=
|
|
RULES=
|
|
|
|
while read line
|
|
do
|
|
case $line in
|
|
*=*) DEFS="$DEFS$line$NL"; continue;;
|
|
esac
|
|
objs=
|
|
cpps=
|
|
set $line
|
|
for arg
|
|
do
|
|
case $arg in
|
|
-[IDUC]*) cpps="$cpps $arg";;
|
|
-[Ll]*) LIBS="$LIBS $arg";;
|
|
*.a) LIBS="$LIBS $arg";;
|
|
*.o) objs="$objs $arg";;
|
|
*.*) echo 1>&2 "bad word $arg in $line"
|
|
exit 1;;
|
|
[a-zA-Z_]*) MODS="$MODS $arg";;
|
|
*) echo 1>&2 "bad word $arg in $line"
|
|
exit 1;;
|
|
esac
|
|
done
|
|
for obj in $objs
|
|
do
|
|
src=`basename $obj .o`.c
|
|
RULES="$RULES$obj: $src; \$(CC) \$(CFLAGS) $cpps -c $src$NL"
|
|
done
|
|
OBJS="$OBJS $objs"
|
|
done
|
|
|
|
EXTDECLS=
|
|
INITBITS=
|
|
for mod in $MODS
|
|
do
|
|
EXTDECLS="${EXTDECLS}extern void init$mod();$NL"
|
|
INITBITS="${INITBITS} {\"$mod\", init$mod},$NL"
|
|
done
|
|
sed -e "
|
|
/MARKER 1/i$NL$EXTDECLS
|
|
|
|
/MARKER 2/i$NL$INITBITS
|
|
|
|
" config.c.in >config.c
|
|
|
|
sed -e "
|
|
s%@MODOBJS@%$OBJS%
|
|
s%@MODLIBS@%$LIBS%
|
|
/Rules added by ..makesetup/a$NL$NL$RULES
|
|
|
|
/Definitions added by ..makesetup/a$NL$NL$DEFS
|
|
|
|
" Makefile.in.in >Makefile.in
|
|
|
|
)
|