#!/bin/sh # This script writes to stdout, a single source file (e.g. jimsh0.c) # which can be compiled to provide a bootstrap version of jimsh. # e.g. cc -o jimsh0 jimsh0.c makeext() { source="$1" basename=`basename "$source" .tcl` cat < #ifndef S_IRWXG #define S_IRWXG 0 #endif #ifndef S_IRWXO #define S_IRWXO 0 #endif #else #define TCL_PLATFORM_OS "unknown" #define TCL_PLATFORM_PLATFORM "unix" #define TCL_PLATFORM_PATH_SEPARATOR ":" #ifdef _MINIX #define vfork fork #define _POSIX_SOURCE #else #define _GNU_SOURCE #endif #define HAVE_VFORK #define HAVE_WAITPID #define HAVE_ISATTY #define HAVE_MKSTEMP #define HAVE_LINK #define HAVE_SYS_TIME_H #define HAVE_DIRENT_H #define HAVE_UNISTD_H #define HAVE_UMASK #endif EOF # get JIM_VERSION from auto.def sed -n -e 's/^\(define JIM_VERSION.*\)/#\1/p' auto.def outputsource() { sed -e '/#include.*jim/d' -e '/#include.*utf8/d' \ -e '/^#.*if.*JIM_BOOTSTRAP/,/^#endif.*JIM_BOOTSTRAP/d' \ -e 's/[ ]*\/\*.*\*\///' -e '/^[ ]*\/\*/,/\*\//d' $1 } # Now output header files, removing references to jim header files for i in jim-win32compat.h utf8.h jim.h jim-subcmd.h jimregexp.h jim-signal.h jimiocompat.h; do outputsource $i done # Now extension source code for i in $tclexts; do makeext $i.tcl done for i in $cexts; do outputsource jim-$i.c done makeloadexts $allexts # And finally the core source code for i in jim.c jim-subcmd.c utf8.c jim-format.c jimregexp.c jimiocompat.c jim-win32compat.c jim-nosignal.c; do outputsource $i done echo "#ifndef JIM_BOOTSTRAP_LIB_ONLY" outputsource jim-interactive.c outputsource jimsh.c echo "#endif"