home *** CD-ROM | disk | FTP | other *** search
- #! /bin/sh
- # Installation script for less.
- # This script prompts the operator for various information
- # and constructs a makefile.
-
- echo "This script will build a makefile for less."
- echo "If you already have a file called \"makefile\" it will be overwritten."
- echo "Press RETURN to continue."
- read ans
-
- echo "I will ask you some questions about your system."
- echo "If you do not know the answer to any question,"
- echo "just press RETURN and I will choose a default for you."
- echo "Press RETURN now."
- read ans
-
- ECHO=./vecho
- if [ ! -x $ECHO ]
- then
- echo "One moment..."
- cc -o $ECHO vecho.c
- echo ""
- fi
-
- $ECHO "Most Unix systems are derived from either System V"
- $ECHO "or Berkeley BSD 4.1, 4.2, 4.3, etc."
- $ECHO ""
- $ECHO "Is your system closest to:"
- $ECHO " 1. System V"
- $ECHO " 2. BSD 4.1"
- $ECHO " 3. BSD 4.2 or later"
- $ECHO " 4. Xenix"
- $ECHO "Enter a number, or just RETURN if you don't know: \c"
- read ans
- xenix=0
- case "X$ans" in
- X1) sys=sys5; sysname="System V" ;;
- X2) sys=bsd; bsd41=1; sysname="BSD 4.1" ;;
- X3) sys=bsd; bsd41=0; sysname="BSD 4.2" ;;
- X4) sys=sys5; xenix=1; sysname="Xenix" ;;
- *) sys=unknown ;;
- esac
- $ECHO ""
-
- DATE=`date`
- cat >makefile <<EOF
- # Makefile for "less"
- # Generated $DATE by $0.
- EOF
-
- cat >>makefile <<"EOF"
- #
- # Invoked as:
- # make all
- # or make install
- # Plain "make" is equivalent to "make all".
- #
- # If you add or delete functions, remake funcs.h by doing:
- # make newfuncs
- # This depends on the coding convention of function headers looking like:
- # " \t public <function-type> \n <function-name> ( ... ) "
- #
- # Also provided:
- # make lint # Runs "lint" on all the sources.
- # make clean # Removes "less" and the .o files.
- # make clobber # Pretty much the same as make "clean".
-
- SHELL = /bin/sh
-
- EOF
-
- cat >defines.h <<EOF
- /* Definition file for less */
- /* Generated $DATE by $0. */
-
- EOF
-
- cat >>defines.h <<EOF
- /*
- * Define XENIX if running under XENIX 3.0.
- */
- #define XENIX $xenix
-
- EOF
- $ECHO ""
-
-
-
- if [ "X$sys" = "Xunknown" ]
- then
- alldefault=0
- else
- def=yes
- alldefault=1
- $ECHO "Do you want to use ALL the defaults for $sysname?"
- $ECHO " Enter \"yes\" if you have a STANDARD $sysname."
- $ECHO " Enter \"no\" if you want to change any of the defaults. [$def] \c"
- read ans
- case "X$ans" in
- X[yY]*) alldefault=1 ;;
- X[nN]*) alldefault=0 ;;
- esac
- $ECHO ""
- fi
-
- if [ $alldefault = 0 ]
- then
- alloptional=0
- else
- def=yes
- alloptional=1
- $ECHO "Do you want to use all the optional features of less?"
- $ECHO " Less has several features which you may or may not"
- $ECHO " wish to include, such as shell escapes."
- $ECHO " Enter \"yes\" if you want to include ALL the optional features."
- $ECHO " Enter \"no\" if you want to select individual features. [$def] \c"
- read ans
- case "X$ans" in
- X[yY]*) alloptional=1 ;;
- X[nN]*) alloptional=0 ;;
- esac
- $ECHO ""
- fi
-
-
-
- def=yes
- x=1
- if [ $alldefault = 0 ]
- then
- $ECHO "Does your C compiler support the \"void\" type? [$def] \c"
- read ans
- case "X$ans" in
- X[yY]*) x=1 ;;
- X[nN]*) x=0 ;;
- esac
- $ECHO ""
- fi
- cat >>defines.h <<EOF
- /*
- * VOID is 1 if your C compiler supports the "void" type,
- * 0 if it does not.
- */
- #define VOID $x
-
- EOF
-
-
-
- def=long
- if [ $alldefault = 0 ]
- then
- $ECHO "What type is the \"offset\" argument to lseek? [$def] \c"
- read ans
- if [ "X$ans" != "X" ]
- then
- def=$ans
- fi
- $ECHO ""
- fi
- cat >>defines.h <<EOF
- /*
- * offset_t is the type which lseek() returns.
- * It is also the type of lseek()'s second argument.
- */
- #define offset_t $def
-
- EOF
-
-
-
-
- def=yes; x=1
- if [ $alldefault = 0 ]
- then
- $ECHO "Most Unix systems provide the stat() function."
- $ECHO "Does your system have stat()? [$def] \c"
- read ans
- case "X$ans" in
- X[yY]*) x=1 ;;
- X[nN]*) x=0 ;;
- esac
- $ECHO ""
- fi
- cat >>defines.h <<EOF
- /*
- * STAT is 1 if your system has the stat() call.
- */
- #define STAT $x
-
- EOF
-
-
-
-
- def=yes; x=1
- if [ $alldefault = 0 ]
- then
- $ECHO "Most Unix systems provide the perror() function."
- $ECHO "Does your system have perror()? [$def] \c"
- read ans
- case "X$ans" in
- X[yY]*) x=1 ;;
- X[nN]*) x=0 ;;
- esac
- $ECHO ""
- fi
- cat >>defines.h <<EOF
- /*
- * PERROR is 1 if your system has the perror() call.
- * (Actually, if it has sys_errlist, sys_nerr and errno.)
- */
- #define PERROR $x
-
- EOF
-
-
-
-
- def=yes; x=1
- if [ $alldefault = 0 ]
- then
- $ECHO "Most Unix systems provide the time() function."
- $ECHO "Does your system have time()? [$def] \c"
- read ans
- case "X$ans" in
- X[yY]*) x=1 ;;
- X[nN]*) x=0 ;;
- esac
- $ECHO ""
- fi
- cat >>defines.h <<EOF
- /*
- * GET_TIME is 1 if your system has the time() call.
- */
- #define GET_TIME $x
-
- EOF
-
- if [ $x = 0 ]
- then
- $ECHO "What is the APPROXIMATE performance of your"
- $ECHO "machine, as a percentage of a Vax 11/750?"
- $ECHO "(Enter 100 if your machine is as fast as a Vax,"
- $ECHO " 50 if it is half as fast, 200 if it is twice as fast, etc.)"
- $ECHO "The accuracy of this information is not critical."
- while :
- do
- $ECHO "Percent of Vax 11/750 [100]: \c"
- read ans
- if [ "X$ans" = "X" ]
- then
- ans=100
- fi
- longloop=`expr "$ans" "*" 3`
- if [ $? = 0 ]
- then
- break
- fi
- $ECHO "Enter a number please!"
- done
- $ECHO ""
-
- cat >>defines.h <<EOF
- /*
- * LONGLOOP is the number of lines we should process in the line number
- * scan before displaying a warning that it will take a while.
- */
- #define LONGLOOP ($longloop)
- EOF
- fi
-
-
-
-
- if [ "$sys" = "bsd" ]
- then
- def=no; x=0
- else
- def=yes; x=1
- fi
- if [ $alldefault = 0 ]
- then
- $ECHO "Most System V systems have termio.h, while most"
- $ECHO "Berkeley-derived systems have sgtty.h."
- $ECHO "Does your system have termio.h? [$def] \c"
- read ans
- case "X$ans" in
- X[yY]*) x=1 ;;
- X[nN]*) x=0 ;;
- esac
- $ECHO ""
- fi
- cat >>defines.h <<EOF
- /*
- * TERMIO is 1 if your system has /usr/include/termio.h.
- * This is normally the case for System 5.
- * If TERMIO is 0 your system must have /usr/include/sgtty.h.
- * This is normally the case for BSD.
- */
- #define TERMIO $x
-
- EOF
-
-
-
-
- if [ "$sys" = "bsd" -a "$bsd41" = "0" ]
- then
- def=yes; x=1
- else
- def=no; x=0
- fi
- if [ $alldefault = 0 ]
- then
- $ECHO "Most BSD 4.2 and 4.3 systems have the sigsetmask() call."
- $ECHO "Most System V and BSD 4.1 systems do not."
- $ECHO "Does your system have sigsetmask()? [$def] \c"
- read ans
- case "X$ans" in
- X[yY]*) x=1 ;;
- X[nN]*) x=0 ;;
- esac
- $ECHO ""
- fi
- cat >>defines.h <<EOF
- /*
- * SIGSETMASK is 1 if your system has the sigsetmask() call.
- * This is normally the case only for BSD 4.2,
- * not for BSD 4.1 or System 5.
- */
- #define SIGSETMASK $x
-
- EOF
-
-
-
- if [ "$sys" = "bsd" ]
- then
- def=2; REGCMP=0;RECOMP=1
- else
- def=1; REGCMP=1;RECOMP=0
- fi
- if [ $alldefault = 0 ]
- then
- $ECHO "Most System V systems have the regcmp() function."
- $ECHO "Most Berkeley-derived systems have the re_comp() function."
- $ECHO "Does your system have:"
- $ECHO " 1. regcmp"
- $ECHO " 2. re_comp"
- $ECHO " 3. neither [$def] \c"
- read ans
- case "X$ans" in
- X1) REGCMP=1;RECOMP=0 ;;
- X2) REGCMP=0;RECOMP=1 ;;
- X3) REGCMP=0;RECOMP=0 ;;
- esac
- $ECHO ""
- fi
- cat >>defines.h <<EOF
- /*
- * REGCMP is 1 if your system has the regcmp() function.
- * This is normally the case for System 5.
- * RECOMP is 1 if your system has the re_comp() function.
- * This is normally the case for BSD.
- * If neither is 1, pattern matching is supported, but without metacharacters.
- */
- #define REGCMP $REGCMP
- #define RECOMP $RECOMP
-
- EOF
-
-
-
-
- def=yes
- x=1
- if [ $alloptional = 0 ]
- then
- $ECHO "Do you wish to allow shell escapes? [$def] \c"
- read ans
- case "X$ans" in
- X[yY]*) x=1 ;;
- X[nN]*) x=0 ;;
- esac
- $ECHO ""
- fi
- cat >>defines.h <<EOF
- /*
- * SHELL_ESCAPE is 1 if you wish to allow shell escapes.
- * (This is possible only if your system supplies the system() function.)
- */
- #define SHELL_ESCAPE $x
-
- EOF
-
-
-
- def=yes
- x=1
- edname="vi"
- if [ $alloptional = 0 ]
- then
- $ECHO "Do you wish to allow editor escapes? [$def] \c"
- read ans
- case "X$ans" in
- X[nN]*) x=0; edname="" ;;
- X[yY]*) x=1
- $ECHO "What is the pathname of the default editor? [$edname] \c"
- read ans
- if [ "x$ans" != "x" ]
- then
- edname=$ans
- fi
- ;;
- esac
- $ECHO ""
- fi
- cat >>defines.h <<EOF
- /*
- * EDITOR is 1 if you wish to allow editor invocation (the "v" command).
- * (This is possible only if your system supplies the system() function.)
- * EDIT_PGM is the name of the (default) editor to be invoked.
- */
- #define EDITOR $x
- #define EDIT_PGM "$edname"
-
- EOF
-
-
-
-
- def=yes
- x=1
- if [ $alloptional = 0 ]
- then
- $ECHO "Do you wish to support \"tag\" files? [$def] \c"
- read ans
- case "X$ans" in
- X[yY]*) x=1 ;;
- X[nN]*) x=0 ;;
- esac
- $ECHO ""
- fi
- cat >>defines.h <<EOF
- /*
- * TAGS is 1 if you wish to support tag files.
- */
- #define TAGS $x
-
- EOF
-
-
-
- def=yes
- x=1
- if [ $alloptional = 0 ]
- then
- $ECHO "Do you wish to allow user-defined key definitions? [$def] \c"
- read ans
- case "X$ans" in
- X[yY]*) x=1 ;;
- X[nN]*) x=0 ;;
- esac
- $ECHO ""
- fi
- USERFILE=$x
- cat >>defines.h <<EOF
- /*
- * USERFILE is 1 if you wish to allow a .less file to specify
- * user-defined key bindings.
- */
- #define USERFILE $x
-
- EOF
-
-
-
- def=yes
- x=1
- if [ $alldefault = 0 ]
- then
- $ECHO "If your system provides the popen() function and"
- $ECHO "the \"$ECHO\" shell command, you may allow shell metacharacters"
- $ECHO "to be expanded in filenames."
- $ECHO "Do you wish to allow shell metacharacters in filenames? [$def] \c"
- read ans
- case "X$ans" in
- X[yY]*) x=1 ;;
- X[nN]*) x=0 ;;
- esac
- $ECHO ""
- fi
- cat >>defines.h <<EOF
- /*
- * GLOB is 1 if you wish to have shell metacharacters expanded in filenames.
- * This will generally work if your system provides the "popen" function
- * and the "$ECHO" shell command.
- */
- #define GLOB $x
-
- EOF
-
-
-
- def=yes
- x=1
- if [ $alloptional = 0 ]
- then
- $ECHO "Do you wish to allow log files (-l option)? [$def] \c"
- read ans
- case "X$ans" in
- X[yY]*) x=1 ;;
- X[nN]*) x=0 ;;
- esac
- $ECHO ""
- fi
- cat >>defines.h <<EOF
- /*
- * LOGFILE is 1 if you wish to allow the -l option (to create log files).
- */
- #define LOGFILE $x
-
- EOF
-
- cat >>defines.h <<EOF
- /*
- * ONLY_RETURN is 1 if you want RETURN to be the only input which
- * will continue past an error message.
- * Otherwise, any key will continue past an error message.
- */
- #define ONLY_RETURN 0
-
- EOF
-
- cat >>makefile <<EOF
-
- ##########################################################################
- # Compilation environment.
- ##########################################################################
-
- EOF
-
-
-
- if [ "$xenix" = "1" ]
- then
- LIBS="-ltermlib"
- elif [ "$sys" = "bsd" ]
- then
- LIBS="-ltermcap"
- else
- LIBS="-lcurses -ltermcap -lPW"
- fi
- if [ $alldefault = 0 ]
- then
- $ECHO "To build \"less\", you must link with libraries supplied by your system."
- $ECHO "(If this needs to be changed later, edit the makefile"
- $ECHO "and change the definition of LIBS.)"
- $ECHO "What libraries should be used [$LIBS] \c"
- read ans
- if [ "X$ans" != "X" ]
- then
- LIBS="$ans"
- fi
- $ECHO ""
- fi
- cat >>makefile <<EOF
- # LIBS is the list of libraries needed.
- LIBS = $LIBS
-
- EOF
-
-
-
- INSTALL_LESS="/usr/local/bin/less"
- INSTALL_KEY="/usr/local/bin/lesskey"
- INSTALL_HELP="/usr/local/bin/less.help"
- INSTALL_LESSMAN="/usr/man/man1/less.1"
- INSTALL_KEYMAN="/usr/man/man1/lesskey.1"
- LESS_MANUAL="less.nro"
- KEY_MANUAL="lesskey.nro"
- if [ $alldefault = 0 ]
- then
- $ECHO "What is the name of the \"public\" (installed) version of less?"
- $ECHO " [$INSTALL_LESS] \c"
- read ans
- if [ "X$ans" != "X" ]
- then
- INSTALL_LESS="$ans"
- fi
- $ECHO "What is the name of the \"public\" (installed) version of lesskey?"
- $ECHO " [$INSTALL_KEY] \c"
- read ans
- if [ "X$ans" != "X" ]
- then
- INSTALL_KEY="$ans"
- fi
- $ECHO "What is the name of the \"public\" (installed) version of the help file?"
- $ECHO " [$INSTALL_HELP] \c"
- read ans
- if [ "X$ans" != "X" ]
- then
- INSTALL_HELP="$ans"
- fi
- $ECHO "What is the name of the \"public\" (installed) version of the less manual page?"
- $ECHO " [$INSTALL_LESSMAN] \c"
- read ans
- if [ "X$ans" != "X" ]
- then
- INSTALL_LESSMAN="$ans"
- fi
- $ECHO "What is the name of the \"public\" (installed) version of the lesskey manual page?"
- $ECHO " [$INSTALL_KEYMAN] \c"
- read ans
- if [ "X$ans" != "X" ]
- then
- INSTALL_KEYMAN="$ans"
- fi
- $ECHO ""
- fi
- cat >>makefile <<EOF
- # INSTALL_LESS is a list of the public versions of less.
- # INSTALL_KEY is a list of the public versions of lesskey.
- # INSTALL_HELP is a list of the public version of the help file.
- # INSTALL_LESSMAN is a list of the public versions of the less manual page.
- # INSTALL_KEYMAN is a list of the public versions of the lesskey manual page.
- INSTALL_LESS = \$(ROOT)$INSTALL_LESS
- INSTALL_KEY = \$(ROOT)$INSTALL_KEY
- INSTALL_HELP = \$(ROOT)$INSTALL_HELP
- INSTALL_LESSMAN = \$(ROOT)$INSTALL_LESSMAN
- INSTALL_KEYMAN = \$(ROOT)$INSTALL_KEYMAN
- LESS_MANUAL = $LESS_MANUAL
- KEY_MANUAL = $KEY_MANUAL
- HELPFILE = $INSTALL_HELP
-
-
- EOF
-
-
-
- cat >>makefile <<"EOF"
- # OPTIM is passed to the compiler and the loader.
- # It is normally "-O" but may be, for example, "-g".
- OPTIM = -O
-
- CFLAGS = $(OPTIM)
-
-
-
- ##########################################################################
- # Files
- ##########################################################################
-
- SRC1 = main.c option.c prim.c ch.c position.c input.c linenum.c
- SRC2 = screen.c prompt.c line.c signal.c os.c help.c ttyin.c command.c
- SRC3 = output.c decode.c tags.c version.c
- SRC = $(SRC1) $(SRC2) $(SRC3)
- OBJ = main.o option.o prim.o ch.o position.o input.o output.o \
- screen.o prompt.o line.o signal.o os.o help.o ttyin.o \
- decode.o command.o linenum.o tags.o version.o
-
-
- ##########################################################################
- # Rules for building stuff
- ##########################################################################
-
- EOF
-
- if [ "$USERFILE" = "1" ]
- then
- cat >>makefile <<"EOF"
- all: less lesskey
- install: install_less install_help install_key install_lman install_kman
- EOF
- else
- cat >>makefile <<"EOF"
- all: less
- install: install_less install_help install_lman
- EOF
- fi
-
- cat >>makefile <<"EOF"
-
- less: $(OBJ)
- $(CC) $(LDFLAGS) $(OPTIM) -o less $(OBJ) $(LIBS) $(LDLIBS)
-
- lesskey: lesskey.o
- $(CC) $(LDFLAGS) $(OPTIM) -o lesskey lesskey.o $(LDLIBS)
-
- # help.o depends on makefile for the definition of HELPFILE
- help.o: makefile
- $(CC) $(CFLAGS) -c -DHELPFILE=\"$(HELPFILE)\" help.c
-
- install_less: less
- for f in $(INSTALL_LESS); do rm -f $$f; cp less $$f; done
- touch install_less
-
- install_key: lesskey
- for f in $(INSTALL_KEY); do rm -f $$f; cp lesskey $$f; done
- touch install_key
-
- install_help: less.help
- for f in $(INSTALL_HELP); do rm -f $$f; cp less.help $$f; done
- touch install_help
-
- install_lman: $(LESS_MANUAL)
- for f in $(INSTALL_LESSMAN); do rm -f $$f; cp $(LESS_MANUAL) $$f; done
- touch install_lman
-
- install_kman: $(KEY_MANUAL)
- for f in $(INSTALL_KEYMAN); do rm -f $$f; cp $(KEY_MANUAL) $$f; done
- touch install_kman
-
- ##########################################################################
- # Maintenance
- ##########################################################################
-
- lint:
- lint -hp $(SRC)
-
- newfuncs funcs.h:
- if [ -f funcs.h ]; then mv funcs.h funcs.h.OLD; fi
- awk -f mkfuncs.awk $(SRC) >funcs.h
-
- clean:
- rm -f $(OBJ) lesskey.o less lesskey vecho
-
- clobber:
- rm -f *.o less lesskey vecho install_less install_key \
- install_help install_lman install_kman
-
- shar:
- shar -v linstall less.h position.h funcs.h cmd.h \
- vecho.c lesskey.c less.nro lesskey.nro lesskey.man > less.shar.a
- shar -v $(SRC1) > less.shar.b
- shar -v $(SRC2) > less.shar.c
- shar -v $(SRC3) less.man README less.help *.awk >less.shar.d
-
-
- ##########################################################################
- # Dependencies
- ##########################################################################
-
- $(OBJ): less.h funcs.h defines.h position.h
- command.o decode.o: cmd.h
- lesskey.o: less.h funcs.h defines.h cmd.h
-
- EOF
- $ECHO ""
-
- $ECHO "The makefile has been built."
- $ECHO "You should check it to make sure everything is as you want it to be."
- $ECHO "When you are satisfied with the makefile, just type \"make\""
- $ECHO "and \"less\" will be built."
-