Merge deletion of many undead files.
This commit is contained in:
@@ -1,10 +0,0 @@
|
||||
case $# in
|
||||
1) DEST="$1"
|
||||
SRC=`basename $DEST`
|
||||
;;
|
||||
2) DEST="$2"
|
||||
SRC="$1"
|
||||
;;
|
||||
*) echo $0 [source] destination ;;
|
||||
esac
|
||||
cmp "$SRC" ../../$DEST
|
||||
@@ -1,267 +0,0 @@
|
||||
#define C_aar O_aar
|
||||
#define C_aar_narg O_aar_narg
|
||||
#define C_adf O_adf
|
||||
#define C_adf_narg O_adf_narg
|
||||
#define C_adi O_adi
|
||||
#define C_adi_narg O_adi_narg
|
||||
#define C_adp O_adp
|
||||
#define C_ads O_ads
|
||||
#define C_ads_narg O_ads_narg
|
||||
#define C_adu O_adu
|
||||
#define C_adu_narg O_adu_narg
|
||||
#define C_and O_and
|
||||
#define C_and_narg O_and_narg
|
||||
#define C_asp O_asp
|
||||
#define C_ass O_ass
|
||||
#define C_ass_narg O_ass_narg
|
||||
#define C_beq O_beq
|
||||
#define C_bge O_bge
|
||||
#define C_bgt O_bgt
|
||||
#define C_ble O_ble
|
||||
#define C_blm O_blm
|
||||
#define C_bls O_bls
|
||||
#define C_bls_narg O_bls_narg
|
||||
#define C_blt O_blt
|
||||
#define C_bne O_bne
|
||||
#define C_bra O_bra
|
||||
#define C_bss_cst O_bss_cst
|
||||
#define C_bss_fcon O_bss_fcon
|
||||
#define C_bss_pnam O_bss_pnam
|
||||
#define C_bss_ucon O_bss_ucon
|
||||
#define C_cai O_cai
|
||||
#define C_cal O_cal
|
||||
#define C_cff O_cff
|
||||
#define C_cfi O_cfi
|
||||
#define C_cfu O_cfu
|
||||
#define C_cif O_cif
|
||||
#define C_cii O_cii
|
||||
#define C_ciu O_ciu
|
||||
#define C_close O_close
|
||||
#define C_cmf O_cmf
|
||||
#define C_cmf_narg O_cmf_narg
|
||||
#define C_cmi O_cmi
|
||||
#define C_cmi_narg O_cmi_narg
|
||||
#define C_cmp O_cmp
|
||||
#define C_cms O_cms
|
||||
#define C_cms_narg O_cms_narg
|
||||
#define C_cmu O_cmu
|
||||
#define C_cmu_narg O_cmu_narg
|
||||
#define C_com O_com
|
||||
#define C_com_narg O_com_narg
|
||||
#define C_con_cst O_con_cst
|
||||
#define C_con_fcon O_con_fcon
|
||||
#define C_con_pnam O_con_pnam
|
||||
#define C_con_scon O_con_scon
|
||||
#define C_con_ucon O_con_ucon
|
||||
#define C_csa O_csa
|
||||
#define C_csa_narg O_csa_narg
|
||||
#define C_csb O_csb
|
||||
#define C_csb_narg O_csb_narg
|
||||
#define C_cst O_cst
|
||||
#define C_cuf O_cuf
|
||||
#define C_cui O_cui
|
||||
#define C_cuu O_cuu
|
||||
#define C_dch O_dch
|
||||
#define C_dec O_dec
|
||||
#define C_dee O_dee
|
||||
#define C_del O_del
|
||||
#define C_df_dlb O_df_dlb
|
||||
#define C_df_dnam O_df_dnam
|
||||
#define C_df_ilb O_df_ilb
|
||||
#define C_dlb O_dlb
|
||||
#define C_dnam O_dnam
|
||||
#define C_dup O_dup
|
||||
#define C_dus O_dus
|
||||
#define C_dus_narg O_dus_narg
|
||||
#define C_dvf O_dvf
|
||||
#define C_dvf_narg O_dvf_narg
|
||||
#define C_dvi O_dvi
|
||||
#define C_dvi_narg O_dvi_narg
|
||||
#define C_dvu O_dvu
|
||||
#define C_dvu_narg O_dvu_narg
|
||||
#define C_end O_end
|
||||
#define C_end_narg O_end_narg
|
||||
#define C_exc O_exc
|
||||
#define C_exg O_exg
|
||||
#define C_exg_narg O_exg_narg
|
||||
#define C_exp O_exp
|
||||
#define C_fcon O_fcon
|
||||
#define C_fef O_fef
|
||||
#define C_fef_narg O_fef_narg
|
||||
#define C_fif O_fif
|
||||
#define C_fif_narg O_fif_narg
|
||||
#define C_fil O_fil
|
||||
#define C_gto O_gto
|
||||
#define C_hol_cst O_hol_cst
|
||||
#define C_hol_fcon O_hol_fcon
|
||||
#define C_hol_pnam O_hol_pnam
|
||||
#define C_hol_ucon O_hol_ucon
|
||||
#define C_icon O_icon
|
||||
#define C_ilb O_ilb
|
||||
#define C_inc O_inc
|
||||
#define C_ine O_ine
|
||||
#define C_init O_init
|
||||
#define C_inl O_inl
|
||||
#define C_inn O_inn
|
||||
#define C_inn_narg O_inn_narg
|
||||
#define C_inp O_inp
|
||||
#define C_ior O_ior
|
||||
#define C_ior_narg O_ior_narg
|
||||
#define C_lae O_lae
|
||||
#define C_lal O_lal
|
||||
#define C_lar O_lar
|
||||
#define C_lar_narg O_lar_narg
|
||||
#define C_ldc O_ldc
|
||||
#define C_lde O_lde
|
||||
#define C_ldf O_ldf
|
||||
#define C_ldl O_ldl
|
||||
#define C_lfr O_lfr
|
||||
#define C_lil O_lil
|
||||
#define C_lim O_lim
|
||||
#define C_lin O_lin
|
||||
#define C_lni O_lni
|
||||
#define C_loc O_loc
|
||||
#define C_loe O_loe
|
||||
#define C_lof O_lof
|
||||
#define C_loi O_loi
|
||||
#define C_lol O_lol
|
||||
#define C_lor O_lor
|
||||
#define C_los O_los
|
||||
#define C_los_narg O_los_narg
|
||||
#define C_lpb O_lpb
|
||||
#define C_lpi O_lpi
|
||||
#define C_lxa O_lxa
|
||||
#define C_lxl O_lxl
|
||||
#define C_magic O_magic
|
||||
#define C_mes_begin O_mes_begin
|
||||
#define C_mes_end O_mes_end
|
||||
#define C_mlf O_mlf
|
||||
#define C_mlf_narg O_mlf_narg
|
||||
#define C_mli O_mli
|
||||
#define C_mli_narg O_mli_narg
|
||||
#define C_mlu O_mlu
|
||||
#define C_mlu_narg O_mlu_narg
|
||||
#define C_mon O_mon
|
||||
#define C_ngf O_ngf
|
||||
#define C_ngf_narg O_ngf_narg
|
||||
#define C_ngi O_ngi
|
||||
#define C_ngi_narg O_ngi_narg
|
||||
#define C_nop O_nop
|
||||
#define C_open O_open
|
||||
#define C_pnam O_pnam
|
||||
#define C_pro O_pro
|
||||
#define C_pro_narg O_pro_narg
|
||||
#define C_rck O_rck
|
||||
#define C_rck_narg O_rck_narg
|
||||
#define C_ret O_ret
|
||||
#define C_rmi O_rmi
|
||||
#define C_rmi_narg O_rmi_narg
|
||||
#define C_rmu O_rmu
|
||||
#define C_rmu_narg O_rmu_narg
|
||||
#define C_rol O_rol
|
||||
#define C_rol_narg O_rol_narg
|
||||
#define C_rom_cst O_rom_cst
|
||||
#define C_rom_fcon O_rom_fcon
|
||||
#define C_rom_pnam O_rom_pnam
|
||||
#define C_rom_scon O_rom_scon
|
||||
#define C_rom_ucon O_rom_ucon
|
||||
#define C_ror O_ror
|
||||
#define C_ror_narg O_ror_narg
|
||||
#define C_rtt O_rtt
|
||||
#define C_sar O_sar
|
||||
#define C_sar_narg O_sar_narg
|
||||
#define C_sbf O_sbf
|
||||
#define C_sbf_narg O_sbf_narg
|
||||
#define C_sbi O_sbi
|
||||
#define C_sbi_narg O_sbi_narg
|
||||
#define C_sbs O_sbs
|
||||
#define C_sbs_narg O_sbs_narg
|
||||
#define C_sbu O_sbu
|
||||
#define C_sbu_narg O_sbu_narg
|
||||
#define C_scon O_scon
|
||||
#define C_sde O_sde
|
||||
#define C_sdf O_sdf
|
||||
#define C_sdl O_sdl
|
||||
#define C_set O_set
|
||||
#define C_set_narg O_set_narg
|
||||
#define C_sig O_sig
|
||||
#define C_sil O_sil
|
||||
#define C_sim O_sim
|
||||
#define C_sli O_sli
|
||||
#define C_sli_narg O_sli_narg
|
||||
#define C_slu O_slu
|
||||
#define C_slu_narg O_slu_narg
|
||||
#define C_sri O_sri
|
||||
#define C_sri_narg O_sri_narg
|
||||
#define C_sru O_sru
|
||||
#define C_sru_narg O_sru_narg
|
||||
#define C_ste O_ste
|
||||
#define C_stf O_stf
|
||||
#define C_sti O_sti
|
||||
#define C_stl O_stl
|
||||
#define C_str O_str
|
||||
#define C_sts O_sts
|
||||
#define C_sts_narg O_sts_narg
|
||||
#define C_teq O_teq
|
||||
#define C_tge O_tge
|
||||
#define C_tgt O_tgt
|
||||
#define C_tle O_tle
|
||||
#define C_tlt O_tlt
|
||||
#define C_tne O_tne
|
||||
#define C_trp O_trp
|
||||
#define C_ucon O_ucon
|
||||
#define C_xor O_xor
|
||||
#define C_xor_narg O_xor_narg
|
||||
#define C_zeq O_zeq
|
||||
#define C_zer O_zer
|
||||
#define C_zer_narg O_zer_narg
|
||||
#define C_zge O_zge
|
||||
#define C_zgt O_zgt
|
||||
#define C_zle O_zle
|
||||
#define C_zlt O_zlt
|
||||
#define C_zne O_zne
|
||||
#define C_zre O_zre
|
||||
#define C_zrf O_zrf
|
||||
#define C_zrf_narg O_zrf_narg
|
||||
#define C_zrl O_zrl
|
||||
|
||||
#define _10_C_hol_ilb _10_O_hol_ilb
|
||||
#define _11_C_bss_dnam _11_O_bss_dnam
|
||||
#define _12_C_bss_dlb _12_O_bss_dlb
|
||||
#define _13_C_bss_icon _13_O_bss_icon
|
||||
#define _14_C_bss_ilb _14_O_bss_ilb
|
||||
#define _15_C_con_dnam _15_O_con_dnam
|
||||
#define _16_C_con_dlb _16_O_con_dlb
|
||||
#define _17_C_con_icon _17_O_con_icon
|
||||
#define _18_C_con_ilb _18_O_con_ilb
|
||||
#define _19_C_gto_dnam _19_O_gto_dnam
|
||||
#define _1_C_lae_dnam _1_O_lae_dnam
|
||||
#define _20_C_gto_dlb _20_O_gto_dlb
|
||||
#define _21_C_ine_dnam _21_O_ine_dnam
|
||||
#define _22_C_ine_dlb _22_O_ine_dlb
|
||||
#define _23_C_rom_dnam _23_O_rom_dnam
|
||||
#define _24_C_rom_dlb _24_O_rom_dlb
|
||||
#define _25_C_ina_dnam _25_O_ina_dnam
|
||||
#define _26_C_ina_dlb _26_O_ina_dlb
|
||||
#define _27_C_rom_icon _27_O_rom_icon
|
||||
#define _28_C_rom_ilb _28_O_rom_ilb
|
||||
#define _29_C_ste_dnam _29_O_ste_dnam
|
||||
#define _2_C_lae_dlb _2_O_lae_dlb
|
||||
#define _30_C_ste_dlb _30_O_ste_dlb
|
||||
#define _31_C_fil_dnam _31_O_fil_dnam
|
||||
#define _32_C_fil_dlb _32_O_fil_dlb
|
||||
#define _33_C_lde_dnam _33_O_lde_dnam
|
||||
#define _34_C_lde_dlb _34_O_lde_dlb
|
||||
#define _35_C_loe_dnam _35_O_loe_dnam
|
||||
#define _36_C_loe_dlb _36_O_loe_dlb
|
||||
#define _37_C_exa_dnam _37_O_exa_dnam
|
||||
#define _38_C_exa_dlb _38_O_exa_dlb
|
||||
#define _39_C_dee_dnam _39_O_dee_dnam
|
||||
#define _3_C_sde_dnam _3_O_sde_dnam
|
||||
#define _40_C_dee_dlb _40_O_dee_dlb
|
||||
#define _4_C_sde_dlb _4_O_sde_dlb
|
||||
#define _5_C_zre_dnam _5_O_zre_dnam
|
||||
#define _6_C_zre_dlb _6_O_zre_dlb
|
||||
#define _7_C_hol_dnam _7_O_hol_dnam
|
||||
#define _8_C_hol_dlb _8_O_hol_dlb
|
||||
#define _9_C_hol_icon _9_O_hol_icon
|
||||
@@ -1,33 +0,0 @@
|
||||
case $# in
|
||||
1) DEST="$1"
|
||||
SRC=`basename $DEST`
|
||||
;;
|
||||
2) DEST="$2"
|
||||
SRC="$1"
|
||||
;;
|
||||
*) echo 'Usage:' $0 [source] destination 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
DIR=`expr "$DEST" ':' '\(.*\)/[^/]*' '|' "XXXX"`
|
||||
case $DIR in
|
||||
XXXX) echo 'Illegal desination argument:' "$DEST"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
mkdir ../../$DIR > /dev/null 2>&1
|
||||
chmod 775 ../../$DIR > /dev/null 2>&1
|
||||
if cp "$SRC" ../../$DEST >/dev/null 2>&1 ||
|
||||
{ rm -f ../../$DEST >/dev/null 2>&1 &&
|
||||
cp "$SRC" ../../$DEST >/dev/null 2>&1
|
||||
}
|
||||
then
|
||||
if (ar t ../../$DEST | grep __.SYMDEF ) >/dev/null 2>&1
|
||||
then
|
||||
ranlib ../../$DEST
|
||||
fi
|
||||
exit 0
|
||||
else
|
||||
echo Sorry, can not create "$DEST".
|
||||
exit 1
|
||||
fi
|
||||
@@ -1,63 +0,0 @@
|
||||
EMHOME=../../..
|
||||
HDIR = $(EMHOME)/modules/h
|
||||
INSTALL=$(EMHOME)/modules/install
|
||||
COMPARE=$(EMHOME)/modules/compare
|
||||
INCLUDES = -I. -I$(HDIR)
|
||||
AR = ar
|
||||
SUF = o
|
||||
LIBSUF = a
|
||||
|
||||
CFLAGS = -O $(INCLUDES) $(COPT)
|
||||
|
||||
CSRC = Malloc.c\
|
||||
Salloc.c\
|
||||
Srealloc.c\
|
||||
Realloc.c\
|
||||
botch.c\
|
||||
clear.c\
|
||||
st_alloc.c\
|
||||
std_alloc.c \
|
||||
No_Mem.c
|
||||
SOURCES = alloc.h\
|
||||
$(CSRC)
|
||||
|
||||
OBJECTS = botch.$(SUF) clear.$(SUF) st_alloc.$(SUF) Malloc.$(SUF) \
|
||||
Salloc.$(SUF) \
|
||||
Srealloc.$(SUF) Realloc.$(SUF) std_alloc.$(SUF) No_Mem.$(SUF)
|
||||
|
||||
.SUFFIXES: .$(SUF)
|
||||
.c.$(SUF):
|
||||
$(CC) -c $(CFLAGS) $*.c
|
||||
|
||||
all: liballoc.$(LIBSUF)
|
||||
|
||||
liballoc.$(LIBSUF): $(OBJECTS)
|
||||
$(AR) cr liballoc.$(LIBSUF) $(OBJECTS)
|
||||
-sh -c 'ranlib liballoc.$(LIBSUF)'
|
||||
|
||||
install: all
|
||||
$(INSTALL) lib/liballoc.$(LIBSUF)
|
||||
$(INSTALL) man/alloc.3
|
||||
$(INSTALL) h/alloc.h
|
||||
|
||||
cmp: all
|
||||
-$(COMPARE) lib/liballoc.$(LIBSUF)
|
||||
-$(COMPARE) man/alloc.3
|
||||
-$(COMPARE) h/alloc.h
|
||||
|
||||
pr:
|
||||
@pr Makefile $(SOURCES)
|
||||
|
||||
opr:
|
||||
make pr | opr
|
||||
|
||||
clean:
|
||||
rm -f *.$(SUF) *.$(LIBSUF)
|
||||
|
||||
lintlib:
|
||||
lint $(INCLUDES) -Calloc $(CSRC)
|
||||
mv llib-lalloc.ln $(EMHOME)/modules/lib
|
||||
|
||||
st_alloc.$(SUF): alloc.h
|
||||
std_alloc.$(SUF): alloc.h
|
||||
Malloc.$(SUF): alloc.h
|
||||
@@ -1,12 +0,0 @@
|
||||
/* $Header$ */
|
||||
/*
|
||||
* (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
|
||||
* See the copyright notice in the ACK home directory, in the file "Copyright".
|
||||
*/
|
||||
#ifdef DEBUG
|
||||
#define PRIVATE
|
||||
#else
|
||||
#define PRIVATE static
|
||||
#endif
|
||||
|
||||
#define EXPORT
|
||||
@@ -1,43 +0,0 @@
|
||||
EMHOME=../../..
|
||||
MODULES=$(EMHOME)/modules
|
||||
HDIR = $(MODULES)/h
|
||||
INCLUDES = -I$(HDIR)
|
||||
CFLAGS = $(INCLUDES) -O $(COPT)
|
||||
INSTALL = $(MODULES)/install
|
||||
COMPARE = $(MODULES)/compare
|
||||
AR = ar
|
||||
SUF = o
|
||||
LIBSUF = a
|
||||
|
||||
.SUFFIXES: .$(SUF)
|
||||
.c.$(SUF):
|
||||
$(CC) -c $(CFLAGS) $*.c
|
||||
|
||||
all: libassert.$(LIBSUF)
|
||||
|
||||
libassert.$(LIBSUF): BadAssert.$(SUF)
|
||||
$(AR) r libassert.$(LIBSUF) BadAssert.$(SUF)
|
||||
-sh -c 'ranlib libassert.$(LIBSUF)'
|
||||
|
||||
install: all
|
||||
$(INSTALL) lib/libassert.$(LIBSUF)
|
||||
$(INSTALL) man/assert.3
|
||||
$(INSTALL) h/assert.h
|
||||
|
||||
cmp: all
|
||||
-$(COMPARE) lib/libassert.$(LIBSUF)
|
||||
-$(COMPARE) man/assert.3
|
||||
-$(COMPARE) h/assert.h
|
||||
|
||||
pr:
|
||||
@pr Makefile assert.h BadAssert.c
|
||||
|
||||
opr:
|
||||
make pr | opr
|
||||
|
||||
clean:
|
||||
rm -f *.$(LIBSUF) *.$(SUF)
|
||||
|
||||
lintlib:
|
||||
lint $(INCLUDES) -Cassert BadAssert.c
|
||||
mv llib-lassert.ln $(MODULES)/lib
|
||||
@@ -1,68 +0,0 @@
|
||||
EMHOME = ../../..
|
||||
ETC = $(EMHOME)/etc
|
||||
INSTALL = $(EMHOME)/modules/install
|
||||
COMPARE = $(EMHOME)/modules/compare
|
||||
CFLAGS = -I$(EMHOME)/h -I$(EMHOME)/modules/h -I$(EMHOME)/modules/src/read_em -I. -O $(COPT)
|
||||
AR = ar
|
||||
SUF = o
|
||||
LIBSUF = a
|
||||
SRC = bhcst.c bhdlb.c bhdnam.c bhfcon.c bhicon.c bhilb.c bhpnam.c bhucon.c \
|
||||
crcst.c crdlb.c crdnam.c crxcon.c crilb.c crpnam.c crscon.c \
|
||||
cst.c dfdlb.c dfdnam.c dfilb.c dlb.c dnam.c end.c endarg.c \
|
||||
exc.c fcon.c getid.c icon.c ilb.c insert.c internerr.c \
|
||||
msend.c op.c opcst.c opdlb.c opdnam.c opilb.c opnarg.c oppnam.c pnam.c \
|
||||
pro.c pronarg.c msstart.c psdlb.c psdnam.c pspnam.c scon.c ucon.c \
|
||||
C_out.c failed.c em.c
|
||||
|
||||
OBS = failed.$(SUF) insert.$(SUF) internerr.$(SUF) getid.$(SUF)
|
||||
|
||||
.SUFFIXES: .$(SUF)
|
||||
.c.$(SUF):
|
||||
$(CC) -c $(CFLAGS) $*.c
|
||||
|
||||
all: em_codeEK.h libeme.$(LIBSUF) libemk.$(LIBSUF) em_code.3
|
||||
|
||||
install: all
|
||||
$(INSTALL) lib/libeme.$(LIBSUF)
|
||||
$(INSTALL) lib/libemk.$(LIBSUF)
|
||||
$(INSTALL) man/em_code.3
|
||||
$(INSTALL) h/em_codeEK.h
|
||||
|
||||
compare: all
|
||||
-$(COMPARE) lib/libeme.$(LIBSUF)
|
||||
-$(COMPARE) lib/libemk.$(LIBSUF)
|
||||
-$(COMPARE) man/em_code.3
|
||||
-$(COMPARE) h/em_codeEK.h
|
||||
|
||||
em_code.3: em_code.3X
|
||||
-sh -c 'tbl < em_code.3X > em_code.3'
|
||||
-sh -c 'if test -s em_code.3 ; then : ; else cp em_code.3X em_code.3 ; fi '
|
||||
|
||||
libeme.$(LIBSUF): em_private.h $(SRC) $(OBS)
|
||||
EMHOME=$(EMHOME); cc="$(CC)"; suf="$(SUF)"; libsuf="$(LIBSUF)"; cflags="-c -DREADABLE_EM $(CFLAGS)"; ar="$(AR)"; export EMHOME cc ar suf libsuf cflags; sh make.sh e $(SRC)
|
||||
-sh -c 'ranlib libeme.$(LIBSUF)'
|
||||
|
||||
libemk.$(LIBSUF): em_private.h $(SRC) $(OBS)
|
||||
EMHOME=$(EMHOME); cc="$(CC)"; suf="$(SUF)"; libsuf="$(LIBSUF)"; cflags="-c $(CFLAGS)"; ar="$(AR)"; export EMHOME cc ar suf libsuf cflags; sh make.sh k $(SRC)
|
||||
-sh -c 'ranlib libemk.$(LIBSUF)'
|
||||
|
||||
em_codeEK.h: make.em.gen $(ETC)/em_table em.nogen
|
||||
make.em.gen $(ETC)/em_table > em_codeEK.h
|
||||
cat em.nogen >> em_codeEK.h
|
||||
|
||||
pr:
|
||||
@pr Makefile em.nogen make.em.gen make.sh insert.h $(SRC) em_private.h
|
||||
|
||||
opr:
|
||||
make pr | opr
|
||||
|
||||
clean:
|
||||
rm -f *.$(SUF) *.$(LIBSUF) em_code.3 em_codeEK.h
|
||||
|
||||
lintlib: make.sh
|
||||
lint -I. -I../../h -I../../../h -Ceme -DREADABLE_EM $(SRC)
|
||||
lint -I. -I../../h -I../../../h -Cemk $(SRC)
|
||||
mv llib-leme.ln llib-lemk.ln $(EMHOME)/modules/lib
|
||||
|
||||
insert.$(SUF): insert.c insert.h
|
||||
$(CC) $(CFLAGS) -c insert.c
|
||||
@@ -1,15 +0,0 @@
|
||||
#include "em_private.h"
|
||||
|
||||
/* $Header$ */
|
||||
|
||||
CC_crfcon(op, v, s)
|
||||
char *v;
|
||||
arith s;
|
||||
{
|
||||
/* CON or ROM with argument FCON(v,z)
|
||||
*/
|
||||
PS(op);
|
||||
WCON(sp_fcon, v, s);
|
||||
CEND();
|
||||
NL();
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
#include "em_private.h"
|
||||
|
||||
/* $Header$ */
|
||||
|
||||
CC_cricon(op, v, s)
|
||||
char *v;
|
||||
arith s;
|
||||
{
|
||||
/* CON or ROM with argument ICON(v,z)
|
||||
*/
|
||||
PS(op);
|
||||
WCON(sp_icon, v, s);
|
||||
CEND();
|
||||
NL();
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
#include "em_private.h"
|
||||
|
||||
/* $Header$ */
|
||||
|
||||
CC_crucon(op, v, s)
|
||||
char *v;
|
||||
arith s;
|
||||
{
|
||||
/* CON or ROM with argument UCON(v,z)
|
||||
*/
|
||||
PS(op);
|
||||
WCON(sp_ucon, v, s);
|
||||
CEND();
|
||||
NL();
|
||||
}
|
||||
@@ -1,52 +0,0 @@
|
||||
TMP=tmp$$
|
||||
cat $* >$TMP
|
||||
ed - $TMP <<'--EOI--'
|
||||
g/^%/d
|
||||
g/^$/d
|
||||
g/^ /.-1,.j
|
||||
1,$s/[ ]*|[ ]*/|/g
|
||||
g/NOTIMPLEMENTED/d
|
||||
1,$s/\([^|]*\)|\([^|]*\)|\(.*\)$/\
|
||||
NAME \1\
|
||||
HEAD \1\
|
||||
PLST \2\
|
||||
DECL \2\
|
||||
BODY \3/
|
||||
$a
|
||||
END
|
||||
.
|
||||
g/^NAME/m$
|
||||
g/^PLST/s/[ ][ ]*\([^:]*\):\([^ ]*\)/,\2/g
|
||||
g/^PLST,/s//PLST /
|
||||
g/^PLST /s/^PLST \(.*\)$/(\1)/
|
||||
g/^HEAD/.,.+1j
|
||||
g/^HEAD /s/^HEAD \([^(]*\)\(.*\)$/cat >\1.c <<'--EOF--'\
|
||||
#include "em_private.h"\
|
||||
\
|
||||
\1\2/
|
||||
g/^DECL/s/[ ][ ]*\([^:]*\):\([^ ]*\)/\
|
||||
\1 \2;/g
|
||||
g/^DECL/d
|
||||
g/^BODY/s/^BODY \(.*\)$/{\
|
||||
\1;\
|
||||
}\
|
||||
--EOF--/
|
||||
1,/^END/-1p
|
||||
1,/^END/d
|
||||
g:^NAME:s:^NAME \(.*\)$:cc -c -O -I$1 -I$EMHOME/modules/h -I$EMHOME/h \1.c:
|
||||
1i
|
||||
cat >make.sh <<'--EOF--'
|
||||
: script for making lib
|
||||
rm -f C_*.o
|
||||
.
|
||||
$a
|
||||
rm -f libem$1.a
|
||||
cc -c -O -I. -I$1 -I$EMHOME/modules/h -I$EMHOME/h $1/em.c
|
||||
mv em.o em$1.o
|
||||
ar rc libem$1.a C_*.o em$1.o insert.o failed.o internerr.o getid.o
|
||||
rm -f C_*.o
|
||||
--EOF--
|
||||
.
|
||||
1,$p
|
||||
--EOI--
|
||||
rm -f $TMP
|
||||
@@ -1,15 +0,0 @@
|
||||
/* $Header$ */
|
||||
/*
|
||||
* (c) copyright 1990 by the Vrije Universiteit, Amsterdam, The Netherlands.
|
||||
* See the copyright notice in the ACK home directory, in the file "Copyright".
|
||||
*/
|
||||
#include <em.h>
|
||||
#include <em_mes.h>
|
||||
|
||||
C_ms_lin(l)
|
||||
int l;
|
||||
{
|
||||
C_mes_begin(ms_lin);
|
||||
C_cst((arith) l);
|
||||
C_mes_end();
|
||||
}
|
||||
@@ -1,65 +0,0 @@
|
||||
EMHOME = ../../..
|
||||
HDIR = $(EMHOME)/modules/h
|
||||
INSTALL = $(EMHOME)/modules/install
|
||||
COMPARE = $(EMHOME)/modules/compare
|
||||
INCLUDES=-I$(EMHOME)/h -I$(HDIR)
|
||||
CFLAGS = $(INCLUDES) -O $(COPT)
|
||||
AR = ar
|
||||
SUF = o
|
||||
LIBSUF = a
|
||||
|
||||
SRC = C_ms_err.c C_ms_opt.c C_ms_emx.c C_ms_reg.c C_ms_src.c\
|
||||
C_ms_flt.c C_ms_com.c C_ms_par.c C_ms_ego.c C_ms_gto.c\
|
||||
C_ms_stb.c C_ms_std.c
|
||||
OBJ = C_ms_err.$(SUF) C_ms_opt.$(SUF) C_ms_emx.$(SUF) C_ms_reg.$(SUF) C_ms_src.$(SUF)\
|
||||
C_ms_flt.$(SUF) C_ms_com.$(SUF) C_ms_par.$(SUF) C_ms_ego.$(SUF) C_ms_gto.$(SUF)\
|
||||
C_ms_stb.$(SUF) C_ms_std.$(SUF)
|
||||
|
||||
.SUFFIXES: .$(SUF)
|
||||
.c.$(SUF):
|
||||
$(CC) -c $(CFLAGS) $*.c
|
||||
|
||||
all: libem_mes.$(LIBSUF) libem_mesCE.$(LIBSUF) libem_mesO.$(LIBSUF)
|
||||
libem_mes.$(LIBSUF): $(OBJ)
|
||||
rm -f libem_mes.$(LIBSUF)
|
||||
$(AR) cr libem_mes.$(LIBSUF) $(OBJ)
|
||||
-sh -c 'ranlib libem_mes.$(LIBSUF)'
|
||||
|
||||
libem_mesO.$(LIBSUF):
|
||||
rm -f *.$(SUF) libem_mesO.$(LIBSUF)
|
||||
$(CC) -c $(CFLAGS) -DPEEPHOLE $(SRC)
|
||||
$(AR) cr libem_mesO.$(LIBSUF) $(OBJ)
|
||||
-sh -c 'ranlib libem_mesO.$(LIBSUF)'
|
||||
rm -f *.$(SUF)
|
||||
|
||||
libem_mesCE.$(LIBSUF):
|
||||
rm -f *.$(SUF) libem_mesCE.$(LIBSUF)
|
||||
$(CC) -c $(CFLAGS) -DCODE_EXPANDER $(SRC)
|
||||
$(AR) cr libem_mesCE.$(LIBSUF) $(OBJ)
|
||||
-sh -c 'ranlib libem_mesCE.$(LIBSUF)'
|
||||
rm -f *.$(SUF)
|
||||
|
||||
install: all
|
||||
$(INSTALL) lib/libem_mes.$(LIBSUF)
|
||||
$(INSTALL) lib/libem_mesO.$(LIBSUF)
|
||||
$(INSTALL) lib/libem_mesCE.$(LIBSUF)
|
||||
$(INSTALL) man/em_mes.3
|
||||
|
||||
cmp: all
|
||||
-$(COMPARE) lib/libem_mes.$(LIBSUF)
|
||||
-$(COMPARE) lib/libem_mesO.$(LIBSUF)
|
||||
-$(COMPARE) lib/libem_mesCE.$(LIBSUF)
|
||||
-$(COMPARE) man/em_mes.3
|
||||
|
||||
pr:
|
||||
@pr Makefile $(SRC)
|
||||
|
||||
opr:
|
||||
make pr | opr
|
||||
|
||||
clean:
|
||||
rm -f *.$(SUF) *.$(LIBSUF)
|
||||
|
||||
lintlib:
|
||||
lint $(INCLUDES) -Cem_mes $(SRC)
|
||||
mv llib-lem_mes.ln $(EMHOME)/modules/lib
|
||||
@@ -1,180 +0,0 @@
|
||||
# $Header$
|
||||
EMHOME = ../../..
|
||||
INSTALL = $(EMHOME)/modules/install
|
||||
COMPARE = $(EMHOME)/modules/compare
|
||||
LINT = lint
|
||||
BINDIR = $(EMHOME)/lib
|
||||
|
||||
# set HOWMUCH to head -20 to limit number of patterns used
|
||||
#HOWMUCH = head -20
|
||||
HOWMUCH = cat
|
||||
|
||||
LEXLIB = -ll
|
||||
INCLDIR = -I$(EMHOME)/h -I$(EMHOME)/modules/h -I$(EMHOME)/modules/pkg
|
||||
PREFLAGS = $(INCLDIR) -DPRIVATE=static# -DDEBUG
|
||||
|
||||
# Enable the next line to produce a version that output's the line number
|
||||
# from the patterns file each time an optimization is performed.
|
||||
#PREFLAGS = $(PREFLAGS) -DSTATS
|
||||
|
||||
PROFFLAG = -O
|
||||
CFLAGS = $(PREFLAGS) $(PROFFLAG) $(COPT)
|
||||
LINTFLAGS = $(PREFLAGS) -DNORCSID
|
||||
LLOPT =
|
||||
CMD = '$(CC) -c $(CFLAGS)'
|
||||
AR = ar
|
||||
SUF = o
|
||||
LIBSUF = a
|
||||
|
||||
LIBOPT = libemopt.$(LIBSUF)
|
||||
LIBCEOPT = libCEopt.$(LIBSUF)
|
||||
|
||||
.SUFFIXES: .d .r
|
||||
|
||||
.r.d: ; CMD=$(CMD); export CMD; awk -f makefuns.awk $*.r | sh -x
|
||||
touch $@
|
||||
|
||||
.SUFFIXES: .$(SUF)
|
||||
.c.$(SUF):
|
||||
$(CC) -c $(CFLAGS) $*.c
|
||||
|
||||
CSRC = main.c nopt.c mkstrct.c aux.c outputdfa.c outcalls.c\
|
||||
findworst.c initlex.c
|
||||
|
||||
SRCS = Makefile nopt.h parser.h parser.g syntax.l pseudo.r\
|
||||
patterns $(CSRC)
|
||||
|
||||
NOFILES = nopt.$(SUF) dfa.$(SUF) trans.$(SUF) aux.$(SUF) mkstrct.$(SUF)
|
||||
|
||||
POFILES = parser.$(SUF) syntax.$(SUF) outputdfa.$(SUF) outcalls.$(SUF) findworst.$(SUF)\
|
||||
initlex.$(SUF) Lpars.$(SUF)
|
||||
|
||||
GENFILES = Lpars.h Lpars.c parserdummy parser.c syntax.c \
|
||||
dfa.c dfa.c.new trans.c trans.c.new\
|
||||
incalls.d incalls.r incalls.r.new pseudo.d
|
||||
|
||||
all: em_nopt $(LIBOPT) $(LIBCEOPT) em_opt.3
|
||||
|
||||
install: all
|
||||
$(INSTALL) lib/$(LIBOPT)
|
||||
$(INSTALL) lib/$(LIBCEOPT)
|
||||
$(INSTALL) man/em_opt.3
|
||||
cp em_nopt.6 $(EMHOME)/man
|
||||
cp em_nopt $(BINDIR)/em_nopt
|
||||
|
||||
cmp: all
|
||||
-$(COMPARE) lib/$(LIBOPT)
|
||||
-$(COMPARE) lib/$(LIBCEOPT)
|
||||
-$(COMPARE) man/em_opt.3
|
||||
-cmp em_nopt $(BINDIR)/em_nopt
|
||||
|
||||
pr:
|
||||
@pr $(SRCS)
|
||||
|
||||
opr:
|
||||
make pr | opr
|
||||
|
||||
lint: lintparser lintnopt
|
||||
|
||||
clean:
|
||||
rm -f O_*.$(SUF)
|
||||
rm -f O_*.c
|
||||
rm -f $(NOFILES) main.$(SUF) $(POFILES)
|
||||
rm -f $(GENFILES) parser em_nopt $(LIBOPT) $(LIBCEOPT)
|
||||
|
||||
# How to build stand alone version of the optimizer
|
||||
|
||||
NOPTLIB = $(EMHOME)/modules/lib/libread_emk.$(LIBSUF)\
|
||||
$(EMHOME)/modules/lib/libemk.$(LIBSUF)\
|
||||
$(EMHOME)/modules/lib/liballoc.$(LIBSUF)\
|
||||
$(EMHOME)/modules/lib/malloc.$(SUF)\
|
||||
$(EMHOME)/modules/lib/libprint.$(LIBSUF)\
|
||||
$(EMHOME)/modules/lib/libstring.$(LIBSUF)\
|
||||
$(EMHOME)/modules/lib/libsystem.$(LIBSUF)\
|
||||
$(EMHOME)/lib/em_data.$(LIBSUF)
|
||||
|
||||
em_nopt: incalls.r main.$(SUF) $(NOFILES)
|
||||
$(CC) -o em_nopt main.$(SUF) $(NOFILES) $(NOPTLIB)
|
||||
|
||||
OLINT = main.c mkstrct.c nopt.c aux.c dfa.c trans.c
|
||||
|
||||
OLINTLIB = $(EMHOME)/modules/lib/llib-lread_emkV.ln\
|
||||
$(EMHOME)/modules/lib/llib-lemk.ln\
|
||||
$(EMHOME)/modules/lib/llib-lsystem.ln\
|
||||
$(EMHOME)/modules/lib/llib-lalloc.ln\
|
||||
$(EMHOME)/modules/lib/llib-lprint.ln\
|
||||
$(EMHOME)/modules/lib/llib-lstring.ln
|
||||
|
||||
lintnopt: incalls.r $(OLINT)
|
||||
$(LINT) $(LINTFLAGS) $(OLINT) $(OLINTLIB)
|
||||
|
||||
# How to build the library version of the optimizer
|
||||
|
||||
$(LIBOPT): $(NOFILES) pseudo.d incalls.d
|
||||
rm -f $(LIBOPT)
|
||||
ar rc $(LIBOPT) O_*.$(SUF) $(NOFILES)
|
||||
-sh -c 'ranlib $(LIBOPT)'
|
||||
|
||||
$(LIBCEOPT): incalls.r
|
||||
rm -f O_*.$(SUF) $(NOFILES) pseudo.d incalls.d
|
||||
-mv $(LIBOPT) $(LIBOPT).saved
|
||||
make "EMHOME="$(EMHOME) PREFLAGS='$(INCLDIR) -DPRIVATE=static -DCODE_EXPANDER' $(LIBOPT)
|
||||
mv $(LIBOPT) $(LIBCEOPT)
|
||||
-mv $(LIBOPT).saved $(LIBOPT)
|
||||
rm -f O_*.$(SUF) $(NOFILES)
|
||||
|
||||
incalls.r: patterns parser
|
||||
-$(EMHOME)/lib/cpp patterns | $(HOWMUCH) >/tmp/patts
|
||||
parser </tmp/patts
|
||||
-rm /tmp/patts
|
||||
|
||||
# How to build the lint library for the optimizer
|
||||
|
||||
LLINT = nopt.c mkstrct.c aux.c dfa.c trans.c
|
||||
|
||||
lintlib: incalls.r $(LLINT)
|
||||
$(LINT) $(LINTFLAGS) $(LLINT) -Cemopt
|
||||
mv llib-lemopt.ln $(EMHOME)/modules/lib
|
||||
|
||||
# How to build program to parse patterns table and build c files.
|
||||
|
||||
PARSERLIB = $(EMHOME)/lib/em_data.$(LIBSUF)\
|
||||
$(EMHOME)/modules/lib/liballoc.$(LIBSUF)\
|
||||
$(EMHOME)/modules/lib/libstring.$(LIBSUF)\
|
||||
$(EMHOME)/modules/lib/libsystem.$(LIBSUF)
|
||||
|
||||
parser: parserdummy $(POFILES) $(PARSERLIB)
|
||||
$(CC) -o parser $(LDFLAGS) $(POFILES) $(PARSERLIB) $(LEXLIB)
|
||||
|
||||
parserdummy: parser.g
|
||||
LLgen $(LLOPT) parser.g
|
||||
touch parserdummy
|
||||
|
||||
PLINT = parser.c syntax.c outputdfa.c outcalls.c\
|
||||
findworst.c initlex.c Lpars.c
|
||||
|
||||
PLINTLIB = $(EMHOME)/modules/lib/llib-lalloc.ln\
|
||||
$(EMHOME)/modules/lib/llib-lstring.ln\
|
||||
$(EMHOME)/modules/lib/llib-lsystem.ln
|
||||
|
||||
lintparser: parserdummy $(PLINT)
|
||||
$(LINT) $(LINTFLAGS) $(PLINT) $(PLINTLIB)
|
||||
|
||||
# Dependancies
|
||||
|
||||
main.$(SUF): nopt.h
|
||||
nopt.$(SUF): nopt.h
|
||||
mkstrct.$(SUF): nopt.h
|
||||
aux.$(SUF): nopt.h
|
||||
pseudo.d: nopt.h makefuns.awk
|
||||
dfa.$(SUF): nopt.h
|
||||
trans.$(SUF): nopt.h
|
||||
incalls.d: nopt.h makefuns.awk
|
||||
|
||||
parser.$(SUF): Lpars.h parser.h
|
||||
Lpars.$(SUF): Lpars.h
|
||||
syntax.$(SUF): syntax.l parser.h Lpars.h
|
||||
outputdfa.$(SUF): parser.h Lpars.h
|
||||
outcalls.$(SUF): parser.h
|
||||
findworst.$(SUF): parser.h
|
||||
initlex.$(SUF): parser.h
|
||||
@@ -1,434 +0,0 @@
|
||||
.TL
|
||||
A Tour of the Peephole Optimizer Library
|
||||
.AU
|
||||
B. J. McKenzie
|
||||
.NH
|
||||
Introduction
|
||||
.LP
|
||||
The peephole optimizer consists of three major parts:
|
||||
.IP a)
|
||||
the table describing the optimization to be performed
|
||||
.IP b)
|
||||
a program to parse these tables and build input and output routines to
|
||||
interface to the library and a dfa based routine to recognize patterns and
|
||||
make the requested replacements.
|
||||
.IP c)
|
||||
common routines for the library that are independent of the table of a)
|
||||
.LP
|
||||
The library conforms to the
|
||||
.I EM_CODE(3)
|
||||
module interface with entry points with names like
|
||||
.I C_xxx.
|
||||
The library module results in calls to a module with an identical interface
|
||||
but with calls to routines with names of the form
|
||||
.I O_xxx.
|
||||
|
||||
.LP
|
||||
We shall now describe each of these in turn in some detail.
|
||||
|
||||
.NH
|
||||
The optimization table
|
||||
.LP
|
||||
The file
|
||||
.I patterns
|
||||
contains the patterns of EM instructions to be recognized by the optimizer
|
||||
and the EM instructions to replace them. Each pattern may have an
|
||||
optional restriction that must be satisfied before the replacement is made.
|
||||
The syntax of the table will be described using extended BNF notation
|
||||
used by
|
||||
.I LLGen
|
||||
where:
|
||||
.DS
|
||||
.I
|
||||
[...] - are used to group items
|
||||
| - is used to separate alternatives
|
||||
; - terminates a rule
|
||||
? - indicates item is optional
|
||||
* - indicates item is repeated zero or more times
|
||||
+ - indicates item is repeated one or more times
|
||||
.R
|
||||
.DE
|
||||
The format of each rule in the table is:
|
||||
.DS
|
||||
.I
|
||||
rule : pattern global_restriction? ':' replacement
|
||||
;
|
||||
.R
|
||||
.DE
|
||||
Each rule must be on a single line except that it may be broken after the
|
||||
colon if the next line begins with a tab character.
|
||||
The pattern has the syntax:
|
||||
.DS
|
||||
.I
|
||||
pattern : [ EM_mnem [ local_restriction ]? ]+
|
||||
;
|
||||
EM-mnem : "An EM instruction mnemonic"
|
||||
| 'lab'
|
||||
;
|
||||
.R
|
||||
.DE
|
||||
and consists of a sequence of one or more EM instructions or
|
||||
.I lab
|
||||
which stands for a defined instruction label. Each EM-mnem may optionally be
|
||||
followed by a local restriction on the argument of the mnemonic and take
|
||||
one of the following forms depending on the type of the EM instruction it
|
||||
follows:
|
||||
.DS
|
||||
.I
|
||||
local_restriction : normal_restriction
|
||||
| opt_arg_restriction
|
||||
| ext_arg_restriction
|
||||
;
|
||||
.R
|
||||
.DE
|
||||
A normal restriction is used after all types of EM instruction except for
|
||||
those that allow an optional argument, (such as
|
||||
.I adi
|
||||
) or those involving external names, (such as
|
||||
.I lae
|
||||
)
|
||||
and takes the form:
|
||||
.DS
|
||||
.I
|
||||
normal_restriction : [ rel_op ]? expression
|
||||
;
|
||||
rel_op : '=='
|
||||
| '!='
|
||||
| '<='
|
||||
| '<'
|
||||
| '>='
|
||||
| '>'
|
||||
;
|
||||
.R
|
||||
.DE
|
||||
If the rel_op is missing, the equality
|
||||
.I ==
|
||||
operator is assumed. The general form of expression is defined later but
|
||||
basically it involves simple constants, references to EM_mnem arguments
|
||||
that appear earlier in the pattern and expressions similar to those used
|
||||
in C expressions.
|
||||
|
||||
The form of the restriction after those EM instructions like
|
||||
.I adi
|
||||
whose arguments are optional takes the form:
|
||||
.DS
|
||||
.I
|
||||
opt_arg_restriction : normal_restriction
|
||||
| 'defined'
|
||||
| 'undefined'
|
||||
;
|
||||
.R
|
||||
.DE
|
||||
The
|
||||
.I defined
|
||||
and
|
||||
.I undefined
|
||||
indicate that the argument is present
|
||||
or absent respectively. The normal restriction form implies that the
|
||||
argument is present and satisfies the restriction.
|
||||
|
||||
The form of the restriction after those EM instructions like
|
||||
.I lae
|
||||
whose arguments refer to external object take the form:
|
||||
.DS
|
||||
.I
|
||||
ext_arg_restriction : patarg offset_part?
|
||||
;
|
||||
offset_part : [ '+' | '-' ] expression
|
||||
;
|
||||
.R
|
||||
.DE
|
||||
Such an argument has one of three forms: a offset with no name, an
|
||||
offset form a name or an offset from a label. With no offset part
|
||||
the restriction requires the argument to be identical to a previous
|
||||
external argument. With an offset part it requires an identical name
|
||||
part, (either empty, same name or same label) and supplies a relationship
|
||||
among the offset parts. It is possible to refer to test for the same
|
||||
external argument, the same name or to obtain the offset part of an external
|
||||
argument using the
|
||||
.I sameext
|
||||
,
|
||||
.I samenam
|
||||
and
|
||||
.I offset
|
||||
functions given below.
|
||||
.LP
|
||||
The general form of an expression is:
|
||||
.DS
|
||||
.I
|
||||
expression : expression binop expression
|
||||
| unaryop expression
|
||||
| '(' expression ')'
|
||||
| bin_function '(' expression ',' expression ')'
|
||||
| ext_function '(' patarg ',' patarg ')'
|
||||
| 'offset' '(' patarg ')'
|
||||
| patarg
|
||||
| 'p'
|
||||
| 'w'
|
||||
| INTEGER
|
||||
;
|
||||
.R
|
||||
.DE
|
||||
.DS
|
||||
.I
|
||||
bin_function : 'sfit'
|
||||
| 'ufit'
|
||||
| 'samesign'
|
||||
| 'rotate'
|
||||
;
|
||||
.R
|
||||
.DE
|
||||
.DS
|
||||
.I
|
||||
ext_function : 'samenam'
|
||||
| 'sameext'
|
||||
;
|
||||
patarg : '$' INTEGER
|
||||
;
|
||||
binop : "As for C language"
|
||||
unaryop : "As for C language"
|
||||
.R
|
||||
.DE
|
||||
The INTEGER in the
|
||||
.I patarg
|
||||
refers to the first, second, etc. argument in the pattern and it is
|
||||
required to refer to a pattern that appears earlier in the pattern
|
||||
The
|
||||
.I w
|
||||
and
|
||||
.I p
|
||||
refer to the word size and pointer size (in bytes) respectively. The
|
||||
various function test for:
|
||||
.IP sfit 10
|
||||
the first argument fits as a signed value of
|
||||
the number of bit specified by the second argument.
|
||||
.IP ufit 10
|
||||
as for sfit but for unsigned values.
|
||||
.IP samesign 10
|
||||
the first argument has the same sign as the second.
|
||||
.IP rotate 10
|
||||
the value of the first argument rotated by the number of bit specified
|
||||
by the second argument.
|
||||
.IP samenam 10
|
||||
both arguments refer to externals and have either no name, the same name
|
||||
or same label.
|
||||
.IP sameext 10
|
||||
both arguments refer to the same external.
|
||||
.IP offset 10
|
||||
the argument is an external and this yields it offset part.
|
||||
|
||||
.LP
|
||||
The global restriction takes the form:
|
||||
.DS
|
||||
.I
|
||||
global_restriction : '?' expression
|
||||
;
|
||||
.R
|
||||
.DE
|
||||
and is used to express restrictions that cannot be expressed as simple
|
||||
restrictions on a single argument or are can be expressed in a more
|
||||
readable fashion as a global restriction. An example of such a rule is:
|
||||
.DS
|
||||
.I
|
||||
dup w ldl stf ? p==2*w : ldl $2 stf $3 ldl $2 lof $3
|
||||
.R
|
||||
.DE
|
||||
which says that this rule only applies if the pointer size is twice the
|
||||
word size.
|
||||
|
||||
.NH
|
||||
Incompatibilities with Previous Optimizer
|
||||
.LP
|
||||
The current table format is not compatible with previous versions of the
|
||||
peephole optimizer tables. In particular the previous table had no provision
|
||||
for local restrictions and only the equivalent of the global restriction.
|
||||
This meant that our
|
||||
.I '?'
|
||||
character that announces the presence of the optional global restriction was
|
||||
not required. The previous optimizer performed a number of other tasks that
|
||||
were unrelated to optimization that were possible because the old optimizer
|
||||
read the EM code for a complete procedure at a time. This included task such
|
||||
as register variable reference counting and moving the information regarding
|
||||
the number of bytes of local storage required by a procedure from it
|
||||
.I end
|
||||
pseudo instruction to it's
|
||||
.I pro
|
||||
pseudo instruction. These tasks are no longer done. If there are required
|
||||
then the must be performed by some other program in the pipeline.
|
||||
|
||||
.NH
|
||||
The Parser
|
||||
.LP
|
||||
The program to parse the tables and build the pattern table dependent dfa
|
||||
routines is built from the files:
|
||||
.IP parser.h 15
|
||||
header file
|
||||
.IP parser.g 15
|
||||
LLGen source file defining syntax of table
|
||||
.IP syntax.l 15
|
||||
Lex sources file defining form of tokens in table.
|
||||
.IP initlex.c 15
|
||||
Uses the data in the library
|
||||
.I em_data.a
|
||||
to initialize the lexical analyser to recognize EM instruction mnemonics.
|
||||
.IP outputdfa.c 15
|
||||
Routines to output dfa when it has been constructed.
|
||||
.IP outcalls.c 15
|
||||
Routines to output the file
|
||||
.I incalls.c
|
||||
defined in section 4.
|
||||
.IP findworst.c 15
|
||||
Routines to analyze patterns to find how to continue matching after a
|
||||
successful replacement or failed match.
|
||||
|
||||
.LP
|
||||
The parser checks that the tables conform to the syntax outlined in the
|
||||
previous section and also mades a number of semantic checks on their
|
||||
validity. Further versions could make further checks such as looking for
|
||||
cycles in the rules or checking that each replacement leaves the same
|
||||
number of bytes on the stack as the pattern it replaces. The parser
|
||||
builds an internal dfa representation of the rules by combining rules with
|
||||
common prefixes. All local and global restrictions are combined into a single
|
||||
test to be performed are a complete pattern has been detected in the input.
|
||||
The idea is to build a structure so that each of the patterns can be matched
|
||||
and then the corresponding tests made and the first that succeeds is replaced.
|
||||
If two rules have the same pattern and both their tests also succeed the one
|
||||
that appears first in the tables file will be done. Somewhat less obvious
|
||||
is that id one pattern is a proper prefix of a longer pattern and its test
|
||||
succeeds then the second pattern will not be checked for.
|
||||
|
||||
A major task of the parser if to decide on the action to take when a rule has
|
||||
been partially matched or when a pattern has been completely matched but its
|
||||
test does not succeed. This requires a search of all patterns to see if any
|
||||
part of the part matched could be part of some other pattern. for example
|
||||
given the two patterns:
|
||||
.DS
|
||||
.I
|
||||
loc adi w loc adi w : loc $1+$3 adi w
|
||||
loc adi w loc sbi w : loc $1-$3 adi w
|
||||
.R
|
||||
.DE
|
||||
If the first pattern fails after seeing the input:
|
||||
.DS
|
||||
.I
|
||||
loc adi loc
|
||||
.R
|
||||
.DE
|
||||
the parser will still need to check whether the second pattern matches.
|
||||
This requires a decision on how to fix up any internal data structures in
|
||||
the dfa matcher, such as moving some instructions from the pattern to the
|
||||
output queue and moving the pattern along and then deciding what state
|
||||
it should continue from. Similar decisions are requires after a pattern
|
||||
has been replaced. For example if the replacement is empty it is necessary
|
||||
to backup
|
||||
.I n-1
|
||||
instructions where
|
||||
.I n
|
||||
is the length of the longest pattern in the tables.
|
||||
|
||||
.NH
|
||||
Structure of the Resulting Library
|
||||
|
||||
.LP
|
||||
The major data structures maintained by the library consist of three queues;
|
||||
an
|
||||
.I output
|
||||
queue of instructions awaiting output, a
|
||||
.I pattern
|
||||
queue containing instructions that match the current prefix, and a
|
||||
.I backup
|
||||
queue of instructions that have been backed up over and need to be reparsed
|
||||
for further pattern matches.
|
||||
|
||||
.LP
|
||||
If no errors are detected by the parser in the tables it output the following
|
||||
files:
|
||||
.IP dfa.c 10
|
||||
this consists of a large switch statement that maintains the current state of
|
||||
the dfa and makes a transition to the next state if the next input instruction
|
||||
matches.
|
||||
.IP incalls.r 10
|
||||
this contains an entry for every EM instruction (plus
|
||||
.I lab
|
||||
) giving information on how to build a routine with the name
|
||||
.I C_xxx
|
||||
that conforms to the
|
||||
.I EM_CODE(3)
|
||||
modules interface. If the EM instruction does not appear in the tables
|
||||
patterns at all then the dfa routine is called to flush any current queued
|
||||
output and the the output
|
||||
.I O_xxx
|
||||
routine is called. If the EM instruction does appear in a pattern then the instruction is added onto the end of the pattern queue and the dfa routines called
|
||||
to attempted to make a transition. This file is input to the
|
||||
.I awk
|
||||
program
|
||||
.I makefuns.awk
|
||||
to produce individual C files with names like
|
||||
.I C_xxx.c
|
||||
each containing a single function definition. This enables the loader to
|
||||
only load those routines that are actually needed when the library is loaded.
|
||||
.IP trans.c 10
|
||||
this contains a routine that is called after each transition to a state that
|
||||
contains restrictions and replacements. The restrictions a converted to
|
||||
C expressions and the replacements coded as calls to output instructions
|
||||
into the output queue.
|
||||
|
||||
.LP
|
||||
The following files contain code that is independent of the pattern tables:
|
||||
.IP nopt.c 10
|
||||
general routines to initialize, and maintain the data structures.
|
||||
.IP aux.c 10
|
||||
routines to implement the functions used in the rules.
|
||||
.IP mkcalls.c 10
|
||||
code to convert the internal data structures to calls on the output
|
||||
.I O_xxx
|
||||
routines when the output queue is flushed.
|
||||
|
||||
.NH
|
||||
Miscellaneous Issues
|
||||
.LP
|
||||
The size of the output and backup queues are fixed in size according to the
|
||||
values of
|
||||
.I MAXOUTPUT
|
||||
and
|
||||
.I MAXBACKUP
|
||||
defined in the file
|
||||
.I nopt.h.
|
||||
The size of the pattern queue is set to the length of the maximum pattern
|
||||
length by the tables output by the parser. The queues are implemented as
|
||||
arrays of pointers to structures containing the instruction and its arguments.
|
||||
The space for the structures are initially obtained by calls to
|
||||
.I Malloc
|
||||
(from the
|
||||
.I alloc(3)
|
||||
module),
|
||||
and freed when the output queue or patterns queue is cleared. These freed
|
||||
structures are collected on a free list and reused to avoid the overheads
|
||||
of repeated calls to
|
||||
.I malloc
|
||||
and
|
||||
.I free.
|
||||
|
||||
.LP
|
||||
The fixed size of the output and pattern queues causes no difficulty in
|
||||
practice and can only result in some potential optimizations being missed.
|
||||
When the output queue fills it is simply prematurely flushed and backups
|
||||
when the backup queue is fill are simply ignored. A possible improvement
|
||||
would be to flush only part of the output queue when it fills. It should
|
||||
be noted that it is not possible to statically determine the maximum possible
|
||||
size for these queues as they need to be unbounded in the worst case. A
|
||||
study of the rule
|
||||
.DS
|
||||
.I
|
||||
inc dec :
|
||||
.R
|
||||
.DE
|
||||
with the input consisting of
|
||||
.I N
|
||||
.I inc
|
||||
and then
|
||||
.I N
|
||||
.I dec
|
||||
instructions requires an output queue length of
|
||||
.I N-1
|
||||
to find all possible replacements.
|
||||
@@ -1,303 +0,0 @@
|
||||
#ifndef NORCSID
|
||||
static char rcsid[] = "$Header$";
|
||||
#endif
|
||||
|
||||
#include "nopt.h"
|
||||
|
||||
static Linenumber = 0; /* Local optimization of lin to lni if possible */
|
||||
|
||||
OO_mkcalls(p)
|
||||
struct instr *p;
|
||||
{
|
||||
switch(p->opcode) {
|
||||
case op_aar:
|
||||
O_aar(p->acst); break;
|
||||
case op_adf:
|
||||
O_adf(p->acst); break;
|
||||
case op_adi:
|
||||
O_adi(p->acst); break;
|
||||
case op_adp:
|
||||
O_adp(p->acst); break;
|
||||
case op_ads:
|
||||
O_ads(p->acst); break;
|
||||
case op_adu:
|
||||
O_adu(p->acst); break;
|
||||
case op_and:
|
||||
O_and(p->acst); break;
|
||||
case op_asp:
|
||||
O_asp(p->acst); break;
|
||||
case op_ass:
|
||||
O_ass(p->acst); break;
|
||||
case op_beq:
|
||||
O_beq((label)p->acst); break;
|
||||
case op_bge:
|
||||
O_bge((label)p->acst); break;
|
||||
case op_bgt:
|
||||
O_bgt((label)p->acst); break;
|
||||
case op_ble:
|
||||
O_ble((label)p->acst); break;
|
||||
case op_blm:
|
||||
O_blm(p->acst); break;
|
||||
case op_bls:
|
||||
O_bls(p->acst); break;
|
||||
case op_blt:
|
||||
O_blt((label)p->acst); break;
|
||||
case op_bne:
|
||||
O_bne((label)p->acst); break;
|
||||
case op_bra:
|
||||
O_bra((label)p->acst); break;
|
||||
case op_cai:
|
||||
O_cai(); break;
|
||||
case op_cal:
|
||||
O_cal(p->apnam); break;
|
||||
case op_cff:
|
||||
O_cff(); break;
|
||||
case op_cfi:
|
||||
O_cfi(); break;
|
||||
case op_cfu:
|
||||
O_cfu(); break;
|
||||
case op_cif:
|
||||
O_cif(); break;
|
||||
case op_cii:
|
||||
O_cii(); break;
|
||||
case op_ciu:
|
||||
O_ciu(); break;
|
||||
case op_cmf:
|
||||
O_cmf(p->acst); break;
|
||||
case op_cmi:
|
||||
O_cmi(p->acst); break;
|
||||
case op_cmp:
|
||||
O_cmp(); break;
|
||||
case op_cms:
|
||||
O_cms(p->acst); break;
|
||||
case op_cmu:
|
||||
O_cmu(p->acst); break;
|
||||
case op_com:
|
||||
O_com(p->acst); break;
|
||||
case op_csa:
|
||||
O_csa(p->acst); break;
|
||||
case op_csb:
|
||||
O_csb(p->acst); break;
|
||||
case op_cuf:
|
||||
O_cuf(); break;
|
||||
case op_cui:
|
||||
O_cui(); break;
|
||||
case op_cuu:
|
||||
O_cuu(); break;
|
||||
case op_dch:
|
||||
O_dch(); break;
|
||||
case op_dec:
|
||||
O_dec(); break;
|
||||
case op_dee:
|
||||
if(p->argtype==nof_ptyp) O_dee_dlb(p->adlb, p->anoff);
|
||||
else O_dee_dnam(p->adnam, p->asoff); break;
|
||||
case op_del:
|
||||
O_del(p->acst); break;
|
||||
case op_dup:
|
||||
O_dup(p->acst); break;
|
||||
case op_dus:
|
||||
O_dus(p->acst); break;
|
||||
case op_dvf:
|
||||
O_dvf(p->acst); break;
|
||||
case op_dvi:
|
||||
O_dvi(p->acst); break;
|
||||
case op_dvu:
|
||||
O_dvu(p->acst); break;
|
||||
case op_exg:
|
||||
O_exg(p->acst); break;
|
||||
case op_fef:
|
||||
O_fef(p->acst); break;
|
||||
case op_fif:
|
||||
O_fif(p->acst); break;
|
||||
case op_fil:
|
||||
Linenumber = 0;
|
||||
if(p->argtype==nof_ptyp) O_fil_dlb(p->adlb, p->anoff);
|
||||
else O_fil_dnam(p->adnam, p->asoff); break;
|
||||
case op_gto:
|
||||
if(p->argtype==nof_ptyp) O_gto_dlb(p->adlb, p->anoff);
|
||||
else O_gto_dnam(p->adnam, p->asoff); break;
|
||||
case op_inc:
|
||||
O_inc(); break;
|
||||
case op_ine:
|
||||
if(p->argtype==nof_ptyp) O_ine_dlb(p->adlb, p->anoff);
|
||||
else O_ine_dnam(p->adnam, p->asoff); break;
|
||||
case op_inl:
|
||||
O_inl(p->acst); break;
|
||||
case op_inn:
|
||||
O_inn(p->acst); break;
|
||||
case op_ior:
|
||||
O_ior(p->acst); break;
|
||||
case op_lab:
|
||||
Linenumber = 0;
|
||||
O_df_ilb(p->alab); break;
|
||||
case op_lae:
|
||||
if(p->argtype==nof_ptyp) O_lae_dlb(p->adlb, p->anoff);
|
||||
else O_lae_dnam(p->adnam, p->asoff); break;
|
||||
case op_lal:
|
||||
O_lal(p->acst); break;
|
||||
case op_lar:
|
||||
O_lar(p->acst); break;
|
||||
case op_ldc:
|
||||
O_ldc(p->acst); break;
|
||||
case op_lde:
|
||||
if(p->argtype==nof_ptyp) O_lde_dlb(p->adlb, p->anoff);
|
||||
else O_lde_dnam(p->adnam, p->asoff); break;
|
||||
case op_ldf:
|
||||
O_ldf(p->acst); break;
|
||||
case op_ldl:
|
||||
O_ldl(p->acst); break;
|
||||
case op_lfr:
|
||||
O_lfr(p->acst); break;
|
||||
case op_lil:
|
||||
O_lil(p->acst); break;
|
||||
case op_lim:
|
||||
O_lim(); break;
|
||||
case op_lin:
|
||||
if(Linenumber && p->acst == ++Linenumber) {
|
||||
O_lni();
|
||||
}
|
||||
else {
|
||||
O_lin(p->acst);
|
||||
Linenumber = p->acst;
|
||||
}
|
||||
break;
|
||||
case op_lni:
|
||||
O_lni();
|
||||
Linenumber++;
|
||||
break;
|
||||
case op_loc:
|
||||
O_loc(p->acst); break;
|
||||
case op_loe:
|
||||
if(p->argtype==nof_ptyp) O_loe_dlb(p->adlb, p->anoff);
|
||||
else O_loe_dnam(p->adnam, p->asoff); break;
|
||||
case op_lof:
|
||||
O_lof(p->acst); break;
|
||||
case op_loi:
|
||||
O_loi(p->acst); break;
|
||||
case op_lol:
|
||||
O_lol(p->acst); break;
|
||||
case op_lor:
|
||||
O_lor(p->acst); break;
|
||||
case op_los:
|
||||
O_los(p->acst); break;
|
||||
case op_lpb:
|
||||
O_lpb(); break;
|
||||
case op_lpi:
|
||||
O_lpi(p->apnam); break;
|
||||
case op_lxa:
|
||||
O_lxa(p->acst); break;
|
||||
case op_lxl:
|
||||
O_lxl(p->acst); break;
|
||||
case op_mlf:
|
||||
O_mlf(p->acst); break;
|
||||
case op_mli:
|
||||
O_mli(p->acst); break;
|
||||
case op_mlu:
|
||||
O_mlu(p->acst); break;
|
||||
case op_mon:
|
||||
O_mon(); break;
|
||||
case op_ngf:
|
||||
O_ngf(p->acst); break;
|
||||
case op_ngi:
|
||||
O_ngi(p->acst); break;
|
||||
case op_nop:
|
||||
O_nop(); break;
|
||||
case op_rck:
|
||||
O_rck(p->acst); break;
|
||||
case op_ret:
|
||||
O_ret(p->acst); break;
|
||||
case op_rmi:
|
||||
O_rmi(p->acst); break;
|
||||
case op_rmu:
|
||||
O_rmu(p->acst); break;
|
||||
case op_rol:
|
||||
O_rol(p->acst); break;
|
||||
case op_ror:
|
||||
O_ror(p->acst); break;
|
||||
case op_rtt:
|
||||
O_rtt(); break;
|
||||
case op_sar:
|
||||
O_sar(p->acst); break;
|
||||
case op_sbf:
|
||||
O_sbf(p->acst); break;
|
||||
case op_sbi:
|
||||
O_sbi(p->acst); break;
|
||||
case op_sbs:
|
||||
O_sbs(p->acst); break;
|
||||
case op_sbu:
|
||||
O_sbu(p->acst); break;
|
||||
case op_sde:
|
||||
if(p->argtype==nof_ptyp) O_sde_dlb(p->adlb, p->anoff);
|
||||
else O_sde_dnam(p->adnam, p->asoff); break;
|
||||
case op_sdf:
|
||||
O_sdf(p->acst); break;
|
||||
case op_sdl:
|
||||
O_sdl(p->acst); break;
|
||||
case op_set:
|
||||
O_set(p->acst); break;
|
||||
case op_sig:
|
||||
O_sig(); break;
|
||||
case op_sil:
|
||||
O_sil(p->acst); break;
|
||||
case op_sim:
|
||||
O_sim(); break;
|
||||
case op_sli:
|
||||
O_sli(p->acst); break;
|
||||
case op_slu:
|
||||
O_slu(p->acst); break;
|
||||
case op_sri:
|
||||
O_sri(p->acst); break;
|
||||
case op_sru:
|
||||
O_sru(p->acst); break;
|
||||
case op_ste:
|
||||
if(p->argtype==nof_ptyp) O_ste_dlb(p->adlb, p->anoff);
|
||||
else O_ste_dnam(p->adnam, p->asoff); break;
|
||||
case op_stf:
|
||||
O_stf(p->acst); break;
|
||||
case op_sti:
|
||||
O_sti(p->acst); break;
|
||||
case op_stl:
|
||||
O_stl(p->acst); break;
|
||||
case op_str:
|
||||
O_str(p->acst); break;
|
||||
case op_sts:
|
||||
O_sts(p->acst); break;
|
||||
case op_teq:
|
||||
O_teq(); break;
|
||||
case op_tge:
|
||||
O_tge(); break;
|
||||
case op_tgt:
|
||||
O_tgt(); break;
|
||||
case op_tle:
|
||||
O_tle(); break;
|
||||
case op_tlt:
|
||||
O_tlt(); break;
|
||||
case op_tne:
|
||||
O_tne(); break;
|
||||
case op_trp:
|
||||
O_trp(); break;
|
||||
case op_xor:
|
||||
O_xor(p->acst); break;
|
||||
case op_zeq:
|
||||
O_zeq((label)p->acst); break;
|
||||
case op_zer:
|
||||
O_zer(p->acst); break;
|
||||
case op_zge:
|
||||
O_zge((label)p->acst); break;
|
||||
case op_zgt:
|
||||
O_zgt((label)p->acst); break;
|
||||
case op_zle:
|
||||
O_zle((label)p->acst); break;
|
||||
case op_zlt:
|
||||
O_zlt((label)p->acst); break;
|
||||
case op_zne:
|
||||
O_zne((label)p->acst); break;
|
||||
case op_zre:
|
||||
if(p->argtype==nof_ptyp) O_zre_dlb(p->adlb, p->anoff);
|
||||
else O_zre_dnam(p->adnam, p->asoff); break;
|
||||
case op_zrf:
|
||||
O_zrf(p->acst); break;
|
||||
case op_zrl:
|
||||
O_zrl(p->acst); break;
|
||||
}
|
||||
}
|
||||
@@ -1,75 +0,0 @@
|
||||
# $Header$
|
||||
EMHOME = ../../..
|
||||
MODDIR=$(EMHOME)/modules
|
||||
INSTALL = $(MODDIR)/install
|
||||
COMPARE = $(MODDIR)/compare
|
||||
INCLUDES = -I. -I$(MODDIR)/h
|
||||
CFLAGS = -O $(INCLUDES) $(COPT)
|
||||
AR = ar
|
||||
SUF = o
|
||||
LIBSUF = a
|
||||
|
||||
LIBFLT = libflt.$(LIBSUF)
|
||||
|
||||
SRC = flt_ar2flt.c flt_div.c flt_flt2ar.c flt_modf.c flt_str2fl.c \
|
||||
flt_cmp.c flt_add.c b64_add.c flt_mul.c flt_nrm.c b64_sft.c \
|
||||
flt_umin.c flt_chk.c split.c ucmp.c
|
||||
|
||||
OBJ = flt_ar2flt.$(SUF) flt_div.$(SUF) flt_flt2ar.$(SUF) flt_modf.$(SUF) \
|
||||
flt_str2fl.$(SUF) flt_cmp.$(SUF) flt_add.$(SUF) b64_add.$(SUF) \
|
||||
flt_mul.$(SUF) flt_nrm.$(SUF) b64_sft.$(SUF) flt_umin.$(SUF) \
|
||||
flt_chk.$(SUF) split.$(SUF) ucmp.$(SUF)
|
||||
|
||||
.SUFFIXES: .$(SUF)
|
||||
.c.$(SUF):
|
||||
$(CC) -c $(CFLAGS) $*.c
|
||||
|
||||
all: $(LIBFLT)
|
||||
|
||||
test: $(LIBFLT) test.o
|
||||
$(CC) -o tst test.o $(LIBFLT)
|
||||
./tst
|
||||
|
||||
$(LIBFLT): $(OBJ)
|
||||
rm -f $(LIBFLT)
|
||||
$(AR) r $(LIBFLT) $(OBJ)
|
||||
-sh -c 'ranlib $(LIBFLT)'
|
||||
|
||||
install: all
|
||||
$(INSTALL) lib/$(LIBFLT)
|
||||
$(INSTALL) h/flt_arith.h
|
||||
$(INSTALL) man/flt_arith.3
|
||||
|
||||
cmp: all
|
||||
-$(COMPARE) lib/$(LIBFLT)
|
||||
-$(COMPARE) h/flt_arith.h
|
||||
-$(COMPARE) man/flt_arith.3
|
||||
|
||||
pr:
|
||||
@pr Makefile $(SRC)
|
||||
|
||||
opr:
|
||||
make pr | opr
|
||||
|
||||
clean:
|
||||
rm -f *.$(SUF) $(LIBFLT)
|
||||
|
||||
lintlib:
|
||||
lint $(INCLUDES) -Cflt $(SRC)
|
||||
mv llib-lflt.ln $(MODDIR)/lib
|
||||
|
||||
b64_add.$(SUF): flt_misc.h flt_arith.h
|
||||
flt_ar2flt.$(SUF): flt_misc.h flt_arith.h
|
||||
flt_div.$(SUF): flt_misc.h flt_arith.h
|
||||
flt_nrm.$(SUF): flt_misc.h flt_arith.h
|
||||
b64_sft.$(SUF): flt_misc.h flt_arith.h
|
||||
flt_chk.$(SUF): flt_misc.h flt_arith.h
|
||||
flt_flt2ar.$(SUF): flt_misc.h flt_arith.h
|
||||
flt_str2fl.$(SUF): flt_misc.h flt_arith.h
|
||||
flt_add.$(SUF): flt_misc.h flt_arith.h
|
||||
flt_cmp.$(SUF): flt_misc.h flt_arith.h
|
||||
flt_mul.$(SUF): flt_misc.h flt_arith.h
|
||||
flt_modf.$(SUF): flt_misc.h flt_arith.h
|
||||
flt_umin.$(SUF): flt_misc.h
|
||||
ucmp.$(SUF): flt_misc.h flt_arith.h
|
||||
split.$(SUF): flt_misc.h flt_arith.h
|
||||
@@ -1,22 +0,0 @@
|
||||
/*
|
||||
* (c) copyright 1989 by the Vrije Universiteit, Amsterdam, The Netherlands.
|
||||
* See the copyright notice in the ACK home directory, in the file "Copyright".
|
||||
*/
|
||||
/* $Header$ */
|
||||
|
||||
#include <flt_arith.h>
|
||||
|
||||
/* some short-hands ... */
|
||||
#define m1 flt_mantissa.flt_h_32
|
||||
#define m2 flt_mantissa.flt_l_32
|
||||
|
||||
/* some constants */
|
||||
#define EXT_MAX 16384 /* max exponent */
|
||||
#define EXT_MIN (-16384) /* min exponent */
|
||||
|
||||
/* hiding of names: */
|
||||
#define ucmp flt__ucmp
|
||||
#define flt_nrm flt__nrm
|
||||
#define flt_chk flt__chk
|
||||
#define flt_b64_add flt__64add
|
||||
#define flt_split flt__split
|
||||
@@ -1,23 +0,0 @@
|
||||
EMHOME = ../../..
|
||||
INSTALL = $(EMHOME)/modules/install
|
||||
COMPARE = $(EMHOME)/modules/compare
|
||||
|
||||
all:
|
||||
|
||||
install: all
|
||||
$(INSTALL) pkg/idf_pkg.body
|
||||
$(INSTALL) pkg/idf_pkg.spec
|
||||
$(INSTALL) man/idf.3
|
||||
|
||||
cmp: all
|
||||
-$(COMPARE) pkg/idf_pkg.body
|
||||
-$(COMPARE) pkg/idf_pkg.spec
|
||||
-$(COMPARE) man/idf.3
|
||||
|
||||
pr:
|
||||
@pr Makefile idf_pkg.spec idf_pkg.body
|
||||
|
||||
opr:
|
||||
make pr | opr
|
||||
|
||||
clean:
|
||||
@@ -1,46 +0,0 @@
|
||||
EMHOME = ../../..
|
||||
MODULES = $(EMHOME)/modules
|
||||
INSTALL = $(MODULES)/install
|
||||
COMPARE = $(MODULES)/compare
|
||||
CFLAGS = -O $(COPT)
|
||||
AR = ar
|
||||
SUF = o
|
||||
LIBSUF = a
|
||||
|
||||
OBJECTS = AtEoIF.$(SUF)\
|
||||
AtEoIT.$(SUF)
|
||||
|
||||
.SUFFIXES: .$(SUF)
|
||||
.c.$(SUF):
|
||||
$(CC) -c $(CFLAGS) $*.c
|
||||
|
||||
all: libinput.$(LIBSUF)
|
||||
|
||||
libinput.$(LIBSUF): $(OBJECTS)
|
||||
$(AR) cr libinput.$(LIBSUF) $(OBJECTS)
|
||||
-sh -c 'ranlib libinput.$(LIBSUF)'
|
||||
|
||||
install: all
|
||||
$(INSTALL) lib/libinput.$(LIBSUF)
|
||||
$(INSTALL) man/input.3
|
||||
$(INSTALL) pkg/inp_pkg.body
|
||||
$(INSTALL) pkg/inp_pkg.spec
|
||||
|
||||
cmp: all
|
||||
-$(COMPARE) lib/libinput.$(LIBSUF)
|
||||
-$(COMPARE) man/input.3
|
||||
-$(COMPARE) pkg/inp_pkg.body
|
||||
-$(COMPARE) pkg/inp_pkg.spec
|
||||
|
||||
pr:
|
||||
@pr Makefile inp_pkg.spec inp_pkg.body AtEoIF.c AtEoIT.c
|
||||
|
||||
opr:
|
||||
make pr | opr
|
||||
|
||||
clean:
|
||||
rm -f *.$(SUF) *.$(LIBSUF)
|
||||
|
||||
lintlib:
|
||||
lint -Cinput AtEoIF.c AtEoIT.c
|
||||
mv llib-linput.ln $(MODULES)/lib
|
||||
@@ -1,44 +0,0 @@
|
||||
EMHOME = ../../..
|
||||
INSTALL = $(EMHOME)/modules/install
|
||||
COMPARE = $(EMHOME)/modules/compare
|
||||
CFLAGS = -O -I$(EMHOME)/modules/h $(COPT)
|
||||
SUF = o
|
||||
RCC = cc #$ must produce a runnable object
|
||||
|
||||
MALLOCSRC = READ_ME size_type.h gensize_type.h param.h impl.h check.h log.h phys.h \
|
||||
mal.c log.c phys.c check.c
|
||||
|
||||
.SUFFIXES: .$(SUF)
|
||||
.c.$(SUF):
|
||||
$(CC) -c $(CFLAGS) $*.c
|
||||
|
||||
all: malloc.$(SUF)
|
||||
|
||||
install: all
|
||||
$(INSTALL) lib/malloc.$(SUF)
|
||||
|
||||
cmp: all
|
||||
-$(COMPARE) lib/malloc.$(SUF)
|
||||
|
||||
malloc1.c: $(MALLOCSRC) Makefile add_file
|
||||
rm -f malloc1.c
|
||||
for i in $(MALLOCSRC) ; do add_file $$i >> malloc1.c ; done
|
||||
|
||||
malloc.c: malloc1.c
|
||||
cclash -l7 -c malloc1.c > clashes
|
||||
cid -Fclashes < malloc1.c > malloc.c
|
||||
|
||||
pr:
|
||||
@pr Makefile add_file $(MALLOCSRC)
|
||||
|
||||
opr:
|
||||
make pr | opr
|
||||
|
||||
clean:
|
||||
rm -f *.$(SUF) clashes malloc1.c gensize_type.h getsize malloc.c
|
||||
|
||||
gensize_type.h: getsize
|
||||
getsize > gensize_type.h
|
||||
|
||||
getsize: getsize.c
|
||||
$(RCC) -o getsize getsize.c
|
||||
@@ -1,80 +0,0 @@
|
||||
EMHOME = ../../..
|
||||
MODULES = $(EMHOME)/modules
|
||||
INSTALL = $(MODULES)/install
|
||||
COMPARE = $(MODULES)/compare
|
||||
INCLUDES = -I$(EMHOME)/h
|
||||
CFLAGS = -O $(INCLUDES) $(COPT)
|
||||
AR = ar
|
||||
SUF = o
|
||||
LIBSUF = a
|
||||
RCC = cc # must produce a runnable object
|
||||
|
||||
CFILES = rd_arhdr.c wr_arhdr.c \
|
||||
rd_ranlib.c wr_ranlib.c \
|
||||
rd_bytes.c wr_bytes.c \
|
||||
rd.c wr.c \
|
||||
wr_putc.c \
|
||||
rd_int2.c wr_int2.c \
|
||||
rd_unsig2.c \
|
||||
rd_long.c wr_long.c
|
||||
# do not change the order in OFILES
|
||||
OFILES = rd.$(SUF) rd_arhdr.$(SUF) rd_int2.$(SUF) rd_long.$(SUF) rd_ranlib.$(SUF) rd_unsig2.$(SUF) \
|
||||
rd_bytes.$(SUF) wr_arhdr.$(SUF) wr_int2.$(SUF) wr_long.$(SUF) wr_putc.$(SUF) wr.$(SUF) \
|
||||
wr_ranlib.$(SUF) wr_bytes.$(SUF)
|
||||
|
||||
.SUFFIXES: .$(SUF)
|
||||
.c.$(SUF):
|
||||
$(CC) -c $(CFLAGS) $*.c
|
||||
|
||||
all: libobject.$(LIBSUF)
|
||||
|
||||
install: all
|
||||
$(INSTALL) lib/libobject.$(LIBSUF)
|
||||
$(INSTALL) man/object.3
|
||||
|
||||
compare: all
|
||||
-$(COMPARE) lib/libobject.$(LIBSUF)
|
||||
-$(COMPARE) man/object.3
|
||||
|
||||
pr:
|
||||
@pr Makefile byte_order.c object.h $(CFILES)
|
||||
|
||||
opr:
|
||||
make pr | opr
|
||||
|
||||
clean:
|
||||
rm -f *.$(SUF) *.$(LIBSUF) nohup.out Out byte_order byte_order.h
|
||||
|
||||
libobject.$(LIBSUF): $(OFILES)
|
||||
$(AR) r libobject.$(LIBSUF) $(OFILES)
|
||||
-sh -c 'ranlib libobject.$(LIBSUF)'
|
||||
|
||||
depend: byte_order.h
|
||||
sed '/^#AUTOAUTO/,$$d' Makefile > Makefile.new
|
||||
echo '#AUTOAUTOAUTOAUTOAUTOAUTOAUTO' >> Makefile.new
|
||||
mkdep $(CFILES) | sed 's/\.c:/\.$(SUF):/' >> Makefile.new
|
||||
mv Makefile Makefile.$(SUF)ld
|
||||
mv Makefile.new Makefile
|
||||
|
||||
byte_order: byte_order.c
|
||||
$(RCC) -o byte_order byte_order.c
|
||||
|
||||
byte_order.h: byte_order
|
||||
byte_order > byte_order.h
|
||||
|
||||
lintlib: byte_order.h
|
||||
lint $(INCLUDES) -Cobject $(CFILES)
|
||||
mv llib-lobject.ln $(MODULES)/lib
|
||||
|
||||
#AUTOAUTOAUTOAUTOAUTOAUTOAUTO
|
||||
rd_arhdr.$(SUF): byte_order.h object.h
|
||||
wr_arhdr.$(SUF): byte_order.h object.h
|
||||
rd_ranlib.$(SUF): byte_order.h object.h
|
||||
wr_ranlib.$(SUF): byte_order.h object.h
|
||||
rd.$(SUF): byte_order.h object.h
|
||||
wr.$(SUF): byte_order.h object.h
|
||||
rd_int2.$(SUF): byte_order.h object.h
|
||||
wr_int2.$(SUF): byte_order.h object.h
|
||||
rd_unsig2.$(SUF): byte_order.h object.h
|
||||
rd_long.$(SUF): byte_order.h object.h
|
||||
wr_long.$(SUF): byte_order.h object.h
|
||||
@@ -1,54 +0,0 @@
|
||||
/* $Header$ */
|
||||
/*
|
||||
* (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
|
||||
* See the copyright notice in the ACK home directory, in the file "Copyright".
|
||||
*/
|
||||
#include <stdio.h>
|
||||
|
||||
char bytes_reversed = 0;
|
||||
char words_reversed = 0;
|
||||
char char_unsigned = 0;
|
||||
|
||||
/*
|
||||
* Determine the byte/word order in shorts/longs, assuming the size of a short
|
||||
* is 2 chars, and the size of a long is 4 chars. Not all theoretical
|
||||
* possibilities are tested; only bytes reversed and/or words reversed.
|
||||
*/
|
||||
determine_ordering()
|
||||
{
|
||||
short s;
|
||||
long l;
|
||||
register char *cp;
|
||||
register short *sp;
|
||||
|
||||
cp = (char *)&s;
|
||||
cp[0] = 0x01; cp[1] = 0x02;
|
||||
if (s != 0x01 + (0x02 << 8))
|
||||
bytes_reversed = 1;
|
||||
sp = (short *)&l;
|
||||
sp[0] = 0x0001; sp[1] = 0x0002;
|
||||
if (l != 0x0001 + (0x0002L << 16))
|
||||
words_reversed = 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* determine whether characters are unsigned or signed
|
||||
*/
|
||||
|
||||
uns_char()
|
||||
{
|
||||
char c = 0200;
|
||||
int i = c;
|
||||
|
||||
if (i > 0) char_unsigned = 1;
|
||||
}
|
||||
|
||||
main()
|
||||
{
|
||||
determine_ordering();
|
||||
uns_char();
|
||||
printf("#define BYTES_REVERSED %d\n", bytes_reversed);
|
||||
printf("#define WORDS_REVERSED %d\n", words_reversed);
|
||||
printf("#define CHAR_UNSIGNED %d\n", char_unsigned);
|
||||
return 0;
|
||||
}
|
||||
@@ -1,51 +0,0 @@
|
||||
EMHOME = ../../..
|
||||
MODDIR=$(EMHOME)/modules
|
||||
INSTALL = $(MODDIR)/install
|
||||
COMPARE = $(MODDIR)/compare
|
||||
INCLUDES = -I$(MODDIR)/h
|
||||
CFLAGS = -O $(INCLUDES) $(COPT)
|
||||
AR = ar
|
||||
SUF = o
|
||||
LIBSUF = a
|
||||
|
||||
LIBPRINT = libprint.$(LIBSUF)
|
||||
|
||||
SRC = doprnt.c fprint.c print.c sprint.c format.c
|
||||
OBJ = doprnt.$(SUF) fprint.$(SUF) print.$(SUF) sprint.$(SUF) format.$(SUF)
|
||||
|
||||
.SUFFIXES: .$(SUF)
|
||||
.c.$(SUF):
|
||||
$(CC) -c $(CFLAGS) $*.c
|
||||
|
||||
all: $(LIBPRINT)
|
||||
|
||||
$(LIBPRINT): $(OBJ)
|
||||
rm -f $(LIBPRINT)
|
||||
$(AR) r $(LIBPRINT) $(OBJ)
|
||||
-sh -c 'ranlib $(LIBPRINT)'
|
||||
|
||||
install: all
|
||||
$(INSTALL) lib/$(LIBPRINT)
|
||||
$(INSTALL) man/print.3
|
||||
|
||||
cmp: all
|
||||
-$(COMPARE) lib/$(LIBPRINT)
|
||||
-$(COMPARE) man/print.3
|
||||
|
||||
pr:
|
||||
@pr Makefile $(SRC)
|
||||
|
||||
opr:
|
||||
make pr | opr
|
||||
|
||||
clean:
|
||||
rm -f *.$(SUF) $(LIBPRINT)
|
||||
|
||||
lintlib:
|
||||
lint $(INCLUDES) -Cprint $(SRC)
|
||||
mv llib-lprint.ln $(MODDIR)/lib
|
||||
|
||||
doprnt.$(SUF): param.h
|
||||
fprint.$(SUF): param.h
|
||||
print.$(SUF): param.h
|
||||
sprint.$(SUF): param.h
|
||||
@@ -1,119 +0,0 @@
|
||||
EMHOME = ../../..
|
||||
MODULES = $(EMHOME)/modules
|
||||
HDIR = $(MODULES)/h
|
||||
EMHDIR = $(EMHOME)/h
|
||||
INCLUDES = -I$(HDIR) -I$(EMHDIR)
|
||||
DEFINES = -DPRIVATE=static -DEXPORT=
|
||||
CFLAGS = -O $(INCLUDES) $(DEFINES) $(COPT)
|
||||
INSTALL = $(MODULES)/install
|
||||
COMPARE = $(MODULES)/compare
|
||||
AR = ar
|
||||
SUF = o
|
||||
LIBSUF = a
|
||||
|
||||
TARGETS = libread_emk.$(LIBSUF)\
|
||||
libread_emkV.$(LIBSUF)\
|
||||
libread_emeV.$(LIBSUF) # makecallsO.$(SUF) makecallsCE.$(SUF)
|
||||
|
||||
ESRCFILES = read_em.c\
|
||||
mkcalls.c\
|
||||
EM_vars.c
|
||||
|
||||
KSRCFILES = read_em.c\
|
||||
mkcalls.c\
|
||||
EM_vars.c
|
||||
|
||||
SRCFILES = em_comp.h\
|
||||
read_em.c\
|
||||
reade.c\
|
||||
readk.c \
|
||||
mkcalls.c\
|
||||
EM_vars.c
|
||||
|
||||
EV_OFILES = read_emeV.$(SUF) makecallsV.$(SUF) EM_vars.$(SUF)
|
||||
KV_OFILES = read_emkV.$(SUF) makecallsV.$(SUF) EM_vars.$(SUF)
|
||||
K_OFILES = read_emk.$(SUF) makecalls.$(SUF) EM_vars.$(SUF)
|
||||
|
||||
.SUFFIXES: .$(SUF)
|
||||
.c.$(SUF):
|
||||
$(CC) -c $(CFLAGS) $*.c
|
||||
|
||||
all: $(TARGETS)
|
||||
|
||||
install: all
|
||||
$(INSTALL) h/em_comp.h
|
||||
$(INSTALL) lib/libread_emk.$(LIBSUF)
|
||||
$(INSTALL) lib/libread_emkV.$(LIBSUF)
|
||||
$(INSTALL) lib/libread_emeV.$(LIBSUF)
|
||||
$(INSTALL) man/read_em.3
|
||||
# $(INSTALL) lib/makecallsO.$(SUF)
|
||||
# $(INSTALL) lib/makecallsCE.$(SUF)
|
||||
|
||||
cmp: all
|
||||
-$(COMPARE) h/em_comp.h
|
||||
-$(COMPARE) lib/libread_emk.$(LIBSUF)
|
||||
-$(COMPARE) lib/libread_emkV.$(LIBSUF)
|
||||
-$(COMPARE) lib/libread_emeV.$(LIBSUF)
|
||||
-$(COMPARE) man/read_em.3
|
||||
# -$(COMPARE) lib/makecallsO.$(SUF)
|
||||
# -$(COMPARE) lib/makecallsCE.$(SUF)
|
||||
|
||||
pr:
|
||||
@pr Makefile m_C_mnem m_C_mnem_na argtype $(SRCFILES)
|
||||
|
||||
opr:
|
||||
make pr | opr
|
||||
|
||||
clean:
|
||||
rm -f *.$(SUF) *.$(LIBSUF) C_mnem C_mnem_narg
|
||||
|
||||
libread_emk.$(LIBSUF): $(K_OFILES)
|
||||
$(AR) r libread_emk.$(LIBSUF) $(K_OFILES)
|
||||
-sh -c 'ranlib libread_emk.$(LIBSUF)'
|
||||
|
||||
libread_emkV.$(LIBSUF): $(KV_OFILES)
|
||||
$(AR) r libread_emkV.$(LIBSUF) $(KV_OFILES)
|
||||
-sh -c 'ranlib libread_emkV.$(LIBSUF)'
|
||||
|
||||
libread_emeV.$(LIBSUF): $(EV_OFILES)
|
||||
$(AR) r libread_emeV.$(LIBSUF) $(EV_OFILES)
|
||||
-sh -c 'ranlib libread_emeV.$(LIBSUF)'
|
||||
|
||||
read_emk.$(SUF): read_em.c em_comp.h readk.c
|
||||
$(CC) -c $(CFLAGS) -DCOMPACT read_em.c
|
||||
mv read_em.$(SUF) read_emk.$(SUF)
|
||||
|
||||
read_emkV.$(SUF): read_em.c em_comp.h readk.c
|
||||
$(CC) -c $(CFLAGS) -DCOMPACT -DCHECKING read_em.c
|
||||
mv read_em.$(SUF) read_emkV.$(SUF)
|
||||
|
||||
read_emeV.$(SUF): read_em.c em_comp.h reade.c
|
||||
$(CC) -c $(CFLAGS) -DCHECKING read_em.c
|
||||
mv read_em.$(SUF) read_emeV.$(SUF)
|
||||
|
||||
makecalls.$(SUF): C_mnem C_mnem_narg em_comp.h mkcalls.c
|
||||
$(CC) -c $(CFLAGS) mkcalls.c
|
||||
mv mkcalls.$(SUF) makecalls.$(SUF)
|
||||
|
||||
makecallsV.$(SUF): C_mnem C_mnem_narg em_comp.h mkcalls.c
|
||||
$(CC) -c $(CFLAGS) -DCHECKING mkcalls.c
|
||||
mv mkcalls.$(SUF) makecallsV.$(SUF)
|
||||
|
||||
makecallsO.$(SUF): C_mnem C_mnem_narg em_comp.h mkcalls.c
|
||||
$(CC) -c -DPEEPHOLE $(CFLAGS) mkcalls.c
|
||||
mv mkcalls.$(SUF) makecallsO.$(SUF)
|
||||
|
||||
makecallsCE.$(SUF): C_mnem C_mnem_narg em_comp.h mkcalls.c
|
||||
$(CC) -c -DCODE_EXPANDER $(CFLAGS) mkcalls.c
|
||||
mv mkcalls.$(SUF) makecallsCE.$(SUF)
|
||||
|
||||
C_mnem: m_C_mnem argtype
|
||||
sh m_C_mnem > C_mnem
|
||||
|
||||
C_mnem_narg: m_C_mnem_na argtype
|
||||
sh m_C_mnem_na > C_mnem_narg
|
||||
|
||||
lintlib: C_mnem C_mnem_narg
|
||||
lint $(INCLUDES) $(DEFINES) -DCOMPACT -DCHECKING -Cread_emkV $(KSRCFILES)
|
||||
lint $(INCLUDES) $(DEFINES) -DCHECKING -Cread_emeV $(ESRCFILES)
|
||||
mv llib-lread_emeV.ln llib-lread_emkV.ln $(MODULES)/lib
|
||||
@@ -1,25 +0,0 @@
|
||||
EM_TABLE=../../../etc/em_table
|
||||
ed - $EM_TABLE << EOF
|
||||
1,/^\$/d
|
||||
1,/^\$/d
|
||||
1,\$s/^\(...\).*/int C_\\1();/
|
||||
w blabla1
|
||||
q
|
||||
EOF
|
||||
ed - $EM_TABLE << A
|
||||
1,/^\$/d
|
||||
1,/^\$/d
|
||||
/^\$/d
|
||||
1,\$s/^\(...\).*/C_\\1,/
|
||||
\$a
|
||||
};
|
||||
.
|
||||
1i
|
||||
static int (*C_funcs[])() = {
|
||||
0,
|
||||
.
|
||||
w blabla2
|
||||
q
|
||||
A
|
||||
cat blabla1 blabla2 > C_funcs
|
||||
rm blabla1 blabla2
|
||||
@@ -1,49 +0,0 @@
|
||||
EMHOME = ../../..
|
||||
MODULES = $(EMHOME)/modules
|
||||
INSTALL = $(MODULES)/install
|
||||
COMPARE = $(MODULES)/compare
|
||||
AR = ar
|
||||
SUF = o
|
||||
LIBSUF = a
|
||||
|
||||
CFLAGS = -O $(COPT)
|
||||
|
||||
SRC = bts2str.c btscat.c btscmp.c btscpy.c btszero.c long2str.c \
|
||||
str2bts.c str2long.c strcat.c strcmp.c strcpy.c strindex.c \
|
||||
strlen.c strncat.c strncmp.c strncpy.c strrindex.c strzero.c
|
||||
OBJ = bts2str.$(SUF) btscat.$(SUF) btscmp.$(SUF) btscpy.$(SUF) \
|
||||
btszero.$(SUF) long2str.$(SUF) str2bts.$(SUF) str2long.$(SUF) \
|
||||
strcat.$(SUF) strcmp.$(SUF) strcpy.$(SUF) strindex.$(SUF) \
|
||||
strlen.$(SUF) strncat.$(SUF) strncmp.$(SUF) strncpy.$(SUF) \
|
||||
strrindex.$(SUF) strzero.$(SUF)
|
||||
|
||||
.SUFFIXES: .$(SUF)
|
||||
.c.$(SUF):
|
||||
$(CC) -c $(CFLAGS) $*.c
|
||||
|
||||
all: libstring.$(LIBSUF)
|
||||
|
||||
libstring.$(LIBSUF): $(OBJ) Makefile
|
||||
$(AR) r libstring.$(LIBSUF) $(OBJ)
|
||||
-sh -c 'ranlib libstring.$(LIBSUF)'
|
||||
|
||||
install: all
|
||||
$(INSTALL) lib/libstring.$(LIBSUF)
|
||||
$(INSTALL) man/string.3
|
||||
|
||||
cmp: all
|
||||
-$(COMPARE) lib/libstring.$(LIBSUF)
|
||||
-$(COMPARE) man/string.3
|
||||
|
||||
pr:
|
||||
@pr Makefile $(SRC)
|
||||
|
||||
opr:
|
||||
make pr | opr
|
||||
|
||||
clean:
|
||||
rm -f *.$(SUF) *.$(LIBSUF)
|
||||
|
||||
lintlib:
|
||||
lint -Cstring $(SRC)
|
||||
mv llib-lstring.ln $(MODULES)/lib
|
||||
@@ -1,63 +0,0 @@
|
||||
EMHOME = ../../..
|
||||
MODULES = $(EMHOME)/modules
|
||||
INSTALL = $(MODULES)/install
|
||||
COMPARE = $(MODULES)/compare
|
||||
INCLUDES = -I.
|
||||
CFLAGS = $(INCLUDES) -O $(COPT)
|
||||
AR = ar
|
||||
SUF = o
|
||||
LIBSUF = a
|
||||
|
||||
LIBSYS = libsystem.$(LIBSUF)
|
||||
OBJ = access.$(SUF) break.$(SUF) chmode.$(SUF) close.$(SUF) create.$(SUF) \
|
||||
filesize.$(SUF) modtime.$(SUF) lock.$(SUF) open.$(SUF) read.$(SUF) \
|
||||
remove.$(SUF) stop.$(SUF) system.$(SUF) time.$(SUF) unlock.$(SUF) \
|
||||
write.$(SUF) seek.$(SUF) rename.$(SUF)
|
||||
CSRC = access.c break.c chmode.c close.c create.c filesize.c \
|
||||
modtime.c lock.c open.c read.c remove.c stop.c \
|
||||
system.c time.c unlock.c write.c seek.c rename.c
|
||||
SRC = Makefile system.h $(CSRC)
|
||||
|
||||
.SUFFIXES: .$(SUF)
|
||||
.c.$(SUF):
|
||||
$(CC) -c $(CFLAGS) $*.c
|
||||
|
||||
all: $(LIBSYS)
|
||||
|
||||
$(LIBSYS): $(OBJ)
|
||||
rm -f $(LIBSYS)
|
||||
$(AR) r $(LIBSYS) $(OBJ)
|
||||
-sh -c 'ranlib $(LIBSYS)'
|
||||
|
||||
install: all
|
||||
$(INSTALL) lib/$(LIBSYS)
|
||||
$(INSTALL) man/system.3
|
||||
$(INSTALL) h/system.h
|
||||
|
||||
cmp: all
|
||||
-$(COMPARE) lib/$(LIBSYS)
|
||||
-$(COMPARE) man/system.3
|
||||
-$(COMPARE) h/system.h
|
||||
|
||||
clean:
|
||||
rm -f *.$(SUF) *.$(LIBSUF)
|
||||
|
||||
pr:
|
||||
@pr $(SRC)
|
||||
|
||||
opr:
|
||||
make pr | opr
|
||||
|
||||
lintlib:
|
||||
lint $(INCLUDES) -Csystem $(CSRC)
|
||||
mv llib-lsystem.ln $(MODULES)/lib
|
||||
|
||||
access.$(SUF): system.h
|
||||
break.$(SUF): system.h
|
||||
close.$(SUF): system.h
|
||||
create.$(SUF): system.h
|
||||
open.$(SUF): system.h
|
||||
read.$(SUF): system.h
|
||||
stop.$(SUF): system.h
|
||||
system.$(SUF): system.h
|
||||
write.$(SUF): system.h
|
||||
@@ -1,13 +0,0 @@
|
||||
/*
|
||||
* (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
|
||||
* See the copyright notice in the ACK home directory, in the file "Copyright".
|
||||
*/
|
||||
/* $Header$ */
|
||||
/* called by /lib/crt0.o; needed to suppress the loading of the
|
||||
standard exit() which performs unnecessary cleanup actions
|
||||
*/
|
||||
|
||||
exit(n)
|
||||
{
|
||||
_exit(n);
|
||||
}
|
||||
Reference in New Issue
Block a user