Files
oldlinux-files/bin-src/elle-new-makefile
2024-02-19 00:21:55 -05:00

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