205 lines
7.3 KiB
Plaintext
205 lines
7.3 KiB
Plaintext
To: Linux-Activists@BLOOM-PICAYUNE.MIT.EDU
|
|
From: gt0178a@prism.gatech.EDU (BURNS)
|
|
Subject: Re: elle(1) and rc(1) ports uploaded to tsx-11.mit.edu
|
|
Date: 10 May 92 08:13:59 GMT
|
|
|
|
I found out why I was getting undefineds from elle's make. There was a
|
|
syntax problem with the '-sh -c if ...' line in Makefile that prevented
|
|
ranlib from processing the made libraries. That, plus adding -ltermcap to
|
|
the link line solved everything. To remake things in mid-stream, I also had
|
|
to reorganize things in sbmake. New make files follow:
|
|
|
|
=========
|
|
Makefile:
|
|
=========
|
|
# ELLE Makefile.
|
|
# The main trickery to notice is that this Makefile invokes itself
|
|
# in order to build ELLE. This allows it to generate sections of
|
|
# the makefile dynamically, namely:
|
|
# makecf.rl - defines the RANLIB macro to use "ranlib" if system has it
|
|
# makecf.fun - defines the FUN_OFILES macro to specify which modules
|
|
# are needed in order to furnish all of the desired
|
|
# functions for a specific ELLE configuration.
|
|
|
|
# Basic definitions
|
|
|
|
CFLAGS = -c -O
|
|
|
|
CONFS = makecf.rl makecf.fun defprf.c eefdef.h eefidx.h
|
|
|
|
CORE_OFILES = eemain.o eecmds.o eesite.o eevini.o\
|
|
eedisp.o eeterm.o eeerr.o eeques.o\
|
|
eebuff.o eefile.o eefed.o eeedit.o eebit.o
|
|
|
|
.c.o:
|
|
cc $(CFLAGS) $*.c
|
|
ar rv elib.a $*.o
|
|
|
|
# ------------------------------------------------------------------
|
|
# Standard ELLE configuration: "elle".
|
|
# Default if no target given to make.
|
|
# Note that "xelle" is created, not "elle".
|
|
|
|
elle: $(CONFS)
|
|
make -f makecf.rl -f makecf.fun -f Makefile B-elle
|
|
|
|
B-elle: $(CORE_OFILES) $(FUN_OFILES) elle.h eesite.h libsb.a
|
|
$(RANLIB) elib.a
|
|
cc -o xelle eemain.o elib.a libsb.a -ltermcap
|
|
|
|
|
|
# Don't flush these files if interrupted, dammit!
|
|
|
|
.PRECIOUS: ellec deffun.e defprf.e $(CONFS) libsb.a
|
|
|
|
# Configuration setup stuff, for files listed by CONFS.
|
|
# If any of the files is missing or outdated, all must be
|
|
# re-generated. We assume the *.t files always exist.
|
|
# A forced re-compilation of eecmds.c must also be done to
|
|
# ensure that the latest .h files are included in ELLE.
|
|
|
|
makecf.fun defprf.c eefdef.h eefidx.h : ellec defprf.e deffun.e
|
|
cat deffun.e defprf.e | ./ellec -CMconf > makecf.fun
|
|
cat deffun.e defprf.e | ./ellec -Pconf > defprf.c
|
|
cat deffun.e defprf.e | ./ellec -Fconf > eefdef.h
|
|
cat deffun.e defprf.e | ./ellec -FXconf > eefidx.h
|
|
rm -f eecmds.o
|
|
|
|
# The following modules make use of eefidx.h and thus must also
|
|
# be recompiled if the configuration is changed.
|
|
|
|
eebuff.o eeerr.o eehelp.o eejust.o eemain.o eeques.o eef1.o : eefidx.h
|
|
cc $(CFLAGS) $*.c
|
|
ar rv elib.a $*.o
|
|
|
|
|
|
# RANLIB definition stuff. The idea here is to automatically check to see
|
|
# whether a system has the "ranlib" program, and set up the RANLIB
|
|
# macro appropriately (use ranlib if possible; else substitute a dummy
|
|
# program, "echo" in this case). The existence of "makecf.rl"
|
|
# indicates that this setup code has been executed; it should never
|
|
# need to be done again.
|
|
makecf.rl:
|
|
echo "RANLIB = echo" > makecf.rl
|
|
-sh -c "if [ ranlib ]; then (echo \"RANLIB = ranlib\" > makecf.rl;) fi"
|
|
|
|
# ELLE profile compiler. Needed to generate makecf files!
|
|
# Although eefdef.h and defprf.c are included by ELLEC, they
|
|
# are not listed as dependencies in order to avoid loops (see
|
|
# their target entries). That is OK because their information is not
|
|
# used when generating the makecf files; it only furnishes default
|
|
# values needed when an ELLE user compiles a user profile.
|
|
|
|
ellec: ellec.c
|
|
cc -o ellec -O ellec.c
|
|
|
|
# SB library, used by ELLE.
|
|
# This target should not be directly invoked by the user since it
|
|
# requires that RANLIB be defined; for direct invocation, better to
|
|
# just do a MAKE of "sb" in the sbmake file.
|
|
|
|
libsb.a:
|
|
make -f sbmake sbnoran
|
|
$(RANLIB) libsb.a
|
|
|
|
# ------------------------------------------------------------------
|
|
# ELLE Variants (system or configuration dependent)
|
|
|
|
# SUN workstation system/configuration.
|
|
# Needs extra libraries to support window hacking; libsb.a comes last
|
|
# so that "valloc" refs can be satisfied from SB library instead of
|
|
# C library.
|
|
# Plus special patch to binary, very installation-dependent!
|
|
|
|
sunelle: $(CONFS)
|
|
make -f makecf.rl -f makecf.fun -f Makefile B-sunelle
|
|
|
|
B-sunelle: $(CORE_OFILES) $(FUN_OFILES) eesun.o elle.h eesite.h libsb.a
|
|
$(RANLIB) elib.a
|
|
cc -o xelle -u _main elib.a -ltermlib\
|
|
-lsuntool -lsunwindow -lpixrect\
|
|
libsb.a
|
|
echo "tool_select+148?W my_select" > esunpat.sh
|
|
adb -w xelle < esunpat.sh
|
|
|
|
# APOLLO system.
|
|
# Linker doesn't understand libraries as regular arguments.
|
|
# May have troubles with duplication of CORE and FUN files.
|
|
# System has no termlib - uses TERMCAP emulation that comes with AUX.
|
|
|
|
SB_OFILES = sbstr.o sbm.o sberr.o
|
|
|
|
apolloelle: $(CONFS)
|
|
make -f makecf.rl -f makecf.fun -f Makefile B-apolloelle
|
|
|
|
B-apolloelle: $(CORE_OFILES) $(FUN_OFILES) elle.h eesite.h libsb.a
|
|
cc -o xelle $(CORE_OFILES) $(FUN_OFILES) $(SB_OFILES) -ltermcap
|
|
|
|
# IBM PC/IX system.
|
|
# Just needs -ltermcap instead of -ltermlib.
|
|
# Does not have/need "ranlib" by the way.
|
|
|
|
pcixelle: $(CONFS)
|
|
make -f makecf.rl -f makecf.fun -f Makefile B-pcixelle
|
|
|
|
B-pcixelle: $(CORE_OFILES) $(FUN_OFILES) elle.h eesite.h libsb.a
|
|
cc -i -o xelle -u _main elib.a libsb.a -ltermcap
|
|
|
|
=========
|
|
sbmake:
|
|
=========
|
|
# SB library makefile.
|
|
# Only funny stuff is handling for the "bcopy" routine, where
|
|
# we try to use the system version if any exists.
|
|
#
|
|
# On PDP-11 systems only, BCOPYSUF can be set to ".s" to use
|
|
# an assembly-language version. The bcopy.s here is
|
|
# better than the BSD2.9 version and can replace it.
|
|
|
|
CFLAGS = -c -O
|
|
|
|
OFILES = sbstr.o sbvall.o sbm.o sberr.o sbbcpy.o
|
|
|
|
BCOPYSUF = .c
|
|
|
|
.c.o:
|
|
cc $(CFLAGS) $*.c
|
|
# ar rv libsb.a $*.o
|
|
|
|
# Default entry - build library and attempt ranlib, but since some
|
|
# systems don't have ranlib, ignore error in latter.
|
|
sb: libsb.a $(OFILES)
|
|
-sh -c "ranlib libsb.a"
|
|
|
|
# Note that ELLE's makefile invokes this entry, since it does the ranlib
|
|
# itself if necessary.
|
|
sbnoran: libsb.a $(OFILES)
|
|
|
|
libsb.a: $(OFILES)
|
|
ar rv libsb.a $(OFILES)
|
|
|
|
# BCOPY special-case handling. If system already appears to have
|
|
# a "bcopy" routine, we use that for best efficiency (normally it
|
|
# is written in assembler to take advantage of things like
|
|
# block move instructions).
|
|
# Otherwise, we use our own C-language version.
|
|
|
|
sbbcpy.o: sbbcpy$(BCOPYSUF)
|
|
cc -c -O sbbcpy$(BCOPYSUF)
|
|
rm -f a.out bnull.c bnull.o bfind.c bfind.o bfind
|
|
echo "sbm_null(){}" > bnull.c
|
|
cc -c bnull.c
|
|
echo "main(){exit(0);bcopy();}" > bfind.c
|
|
-cc -o bfind bfind.c
|
|
-sh -c "if ./bfind;\
|
|
then echo Using system bcopy; (mv bnull.o sbbcpy.o)\
|
|
else echo Using SB bcopy; fi"
|
|
rm -f bfind bfind.c bfind.o a.out bnull.c bnull.o
|
|
ar rv libsb.a sbbcpy.o
|
|
--
|
|
BURNS,JIM (returned student)
|
|
Georgia Institute of Technology, 30178 Georgia Tech Station,
|
|
Atlanta Georgia, 30332 | Internet: gt0178a@prism.gatech.edu
|
|
uucp: ...!{decvax,hplabs,ncar,purdue,rutgers}!gatech!prism!gt0178a
|
|
|