1
0
mirror of https://github.com/PDP-10/its.git synced 2026-01-11 23:53:12 +00:00
PDP-10.its/Makefile
Lars Brinkhoff 7b077f3b41 Check for SIMH V3 in two places.
The current version moves to "archive" when a new version comes out.
2024-04-10 07:05:57 +02:00

443 lines
12 KiB
Makefile

# Some important environment variables
EMULATOR ?= pdp10-ka
# Sometimes you _really_ need to use a different `touch` or `rm`.
TOUCH ?= touch
MKDIR ?= mkdir -p
EXPECT ?= expect
CP ?= cp
RM ?= rm
LN ?= ln
SED ?= sed
TEST ?= test
GIT ?= git
CAT ?= cat
WGET ?= wget
TAR ?= tar
ifeq ($(EMULATOR),pdp10-ka)
MCHN ?= KA
else
ifeq ($(EMULATOR),pdp10-kl)
MCHN ?= KL
else
MCHN ?= DB
endif
endif
IMAGES=http://hactrn.kostersitz.com/images
SIMHV3_URL=http://simh.trailing-edge.com/sources
include conf/network
# The directores listed in SRC, DOC, and BIN are put on the sources tape.
SRC = syseng sysen1 sysen2 sysen3 sysnet kshack dragon channa \
_teco_ emacs emacs1 rms klh syshst sra mrc ksc eak gren \
bawden _mail_ l lisp libdoc comlap lspsrc nilcom rwk chprog rg \
inquir acount gz sys decsys ecc alan sail kcc kcc_sy c games archy dcp \
spcwar rwg libmax rat z emaxim rz maxtul aljabr cffk das ell ellen \
jim jm jpg macrak maxdoc maxsrc mrg munfas paulw reh rlb rlb% share \
tensor transl wgd zz graphs lmlib pratt quux scheme gsb ejs mudsys \
draw wl taa tj6 budd sharem ucode rvb kldcp math as imsrc gls demo \
macsym lmcons dmcg hibou agb gt40 rug maeda ms kle aap common \
fonts lcf 11logo kmp info aplogo bkph bbn pdp11 chsncp sca music1 \
moon teach ken lmio1 llogo a2deh chsgtv clib sys3 lmio turnip \
mits_s rab stan_k bs cstacy kp dcp2 -pics- victor imlac rjl mb bh \
lars drnil radia gjd maint bolio cent shrdlu vis cbf digest prs jsf \
decus bsg muds54 hello rrs 2500 minsky danny survey librm3 librm4 \
klotz atlogo clusys cprog r eb cpm mini nova sits nlogo bee gld mprog2 \
cfs libmud librm1 librm2 mprog mprog1 mudbug mudsav _batch combat \
mits_b minits spacy _xgpr_
DOC = info _info_ sysdoc sysnet syshst kshack _teco_ emacs emacs1 c kcc \
chprog sail draw wl pc tj6 share _glpr_ _xgpr_ inquir mudman system \
xfont maxout ucode moon acount alan channa fonts games graphs humor \
kldcp libdoc lisp _mail_ midas quux scheme manual wp chess ms macdoc \
aplogo _temp_ pdp11 chsncp cbf rug bawden llogo eak clib teach pcnet \
combat pdl minits mits_s chaos hal -pics- imlac maint cent ksc klh \
digest prs decus bsg madman hur lmdoc rrs danny netwrk klotz hello \
clu r mini nova sits jay rjl nlogo mprog2 mudbug cfs hudini
BIN = sys sys1 sys2 emacs _teco_ lisp liblsp alan sail comlap \
c decsys graphs draw datdrw fonts fonts1 fonts2 games macsym \
maint _www_ gt40 llogo bawden sysbin -pics- lmman shrdlu imlac \
pdp10 madman survey rrs clu clucmp rws mini mudsav mudsys libmud \
librm1 librm2 librm3 librm4 mbprog mprog1 mprog mprog2 mudbug mudtmp \
_batch
MINSRC = midas system $(DDT) $(SALV) $(KSFEDR) $(DUMP)
# These are not included on the tape.
DOCIGNORE=-e '\.(jpeg|pdf|info|md)$$' -e '^(dcg|github)$$'
# These are on the minsys tape.
BINIGNORE=-e '^(ka10|kl10|ks10|minsys)$$'
# These are on the minsrc tape.
SRCIGNORE=-e '^(system|midas)$$'
SUBMODULES = dasm itstar klh10 mldev simh sims supdup cbridge \
tapeutils tv11 pdp6 vt05 tek4010 chaosnet-tools
# These files are used to create bootable tape images.
RAM = bin/ks10/boot/ram.262
NSALV = bin/ks10/boot/salv.rp06
DSKDMP = bin/ks10/boot/dskdmp.rp06
KLH10=tools/klh10/tmp/bld-ks-its/kn10-ks-its
SIMH=tools/simh/BIN/pdp10
KA10=tools/sims/BIN/pdp10-ka
KL10=tools/sims/BIN/pdp10-kl
KS10=tools/sims/BIN/pdp10-ks
SIMHV3=tools/simhv3/BIN/pdp10
ITSTAR=tools/itstar/itstar
WRITETAPE=tools/tapeutils/tapewrite
MAGFRM=tools/dasm/magfrm
GT40=tools/simh/BIN/pdp11 $(OUT)/bootvt.img
TV11=tools/tv11/tv11
XGP11=tools/tv11/xgp11
PDP6=tools/pdp6/emu/pdp6
KLFEDR=tools/dasm/klfedr
DATAPOINT=tools/vt05/dp3300
VT52=tools/vt05/vt52
TEK=tools/tek4010/tek4010
SIMH_IMLAC=tools/simh/BIN/imlac $(OUT)/ssv22.iml
H3TEXT=$(shell cd build; ls h3text.*)
DDT=$(shell cd src; ls sysen1/ddt.* syseng/lsrtns.* syseng/msgs.* syseng/datime.* syseng/ntsddt.*)
SALV=$(shell cd src; ls kshack/nsalv.* syseng/format.* syseng/rfn.*)
KSFEDR=$(shell cd src; ls kshack/ksfedr.*)
DUMP=$(shell cd src; ls syseng/dump.* sysnet/netwrk.*)
SMF:=$(addprefix tools/,$(addsuffix /.gitignore,$(SUBMODULES)))
OUT=out/$(EMULATOR)
all: its $(OUT)/stamp/test $(OUT)/stamp/emulators \
tools/supdup/supdup tools/cbridge/cbridge \
tools/chaosnet-tools/shutdown
its: $(SMF) $(OUT)/stamp/its
download: $(SMF) $(OUT)/stamp/pdp10
$(WGET) $(IMAGES)/$(EMULATOR).tgz
$(TAR) xzf $(EMULATOR).tgz
$(MKDIR) $(OUT)/stamp
$(TOUCH) $(OUT)/stamp/touch
$(CP) -r $(EMULATOR)/syshst $(OUT)
$(CP) -r $(EMULATOR)/system $(OUT)
$(CP) $(EMULATOR)/*.tape $(OUT)
$(CP) $(EMULATOR)/rp0* $(OUT)
-$(CP) $(EMULATOR)/*.rim $(OUT)
$(CP) $(EMULATOR)/dskdmp* $(OUT)
$(TOUCH) $(OUT)/stamp/its
check: all check-dirs
out/klh10/stamp/its: $(OUT)/rp0.dsk
$(MKDIR) $(OUT)/stamp
$(TOUCH) $@
out/klh10/stamp/emulators:
$(MKDIR) $(OUT)/stamp
$(TOUCH) $@
out/simh/stamp/its: $(OUT)/rp0.dsk
$(MKDIR) $(OUT)/stamp
$(TOUCH) $@
out/simh/stamp/emulators: $(GT40) $(VT52)
$(MKDIR) $(OUT)/stamp
$(TOUCH) $@
out/pdp10-ka/stamp/its: $(OUT)/rp03.2 $(OUT)/rp03.3
$(MKDIR) $(OUT)/stamp
$(TOUCH) $@
out/pdp10-ka/stamp/emulators: $(GT40) $(TV11) $(XGP11) $(PDP6) $(DATAPOINT) $(VT52) $(TEK) $(SIMH_IMLAC)
$(MKDIR) $(OUT)/stamp
$(TOUCH) $@
out/pdp10-kl/stamp/its: $(OUT)/rp04.1
$(MKDIR) $(OUT)/stamp
$(TOUCH) $@
out/pdp10-kl/stamp/emulators: $(VT52) $(TEK)
$(MKDIR) $(OUT)/stamp
$(TOUCH) $@
out/pdp10-ks/stamp/its: $(OUT)/rp0.dsk
$(MKDIR) $(OUT)/stamp
$(TOUCH) $@
out/pdp10-ks/stamp/emulators: $(GT40) $(VT52)
$(MKDIR) $(OUT)/stamp
$(TOUCH) $@
out/simhv3/stamp/its: $(OUT)/rp0.dsk
$(MKDIR) $(OUT)/stamp
$(TOUCH) $@
out/simhv3/stamp/emulators: $(GT40) $(VT52)
$(MKDIR) $(OUT)/stamp
$(TOUCH) $@
$(OUT)/rp0.dsk: build/simh/init $(OUT)/minsys.tape $(OUT)/minsrc.tape $(OUT)/salv.tape $(OUT)/dskdmp.tape build/build.tcl $(OUT)/sources.tape $(OUT)/stamp/pdp10
PATH="$(CURDIR)/tools/$(EMULATOR)/BIN:$$PATH" expect -f build/$(EMULATOR)/build.tcl $(IP) $(GW)
$(OUT)/rp03.2 $(OUT)/rp03.3: $(OUT)/ka-minsys.tape $(OUT)/minsrc.tape $(OUT)/magdmp.tap $(OUT)/sources.tape
$(EXPECT) -f build/$(EMULATOR)/build.tcl $(IP) $(GW)
$(OUT)/rp04.1: $(OUT)/kl-minsys.tape $(OUT)/minsrc.tape $(OUT)/kl-magdmp.tap $(OUT)/sources.tape
$(EXPECT) -f build/$(EMULATOR)/build.tcl $(IP) $(GW)
$(OUT)/magdmp.tap: $(MAGFRM)
cd bin/ka10/boot; ../../../$(MAGFRM) magdmp.bin @.ddt salv.bin > ../../../$@
$(OUT)/kl-magdmp.tap: $(MAGFRM)
cd bin/kl10/boot; ../../../$(MAGFRM) magdmp.bin @.ddt salv.bin > ../../../$@
$(OUT)/stamp/touch: build/timestamps.txt
build/stamp.sh $<
$(MKDIR) $(OUT)/stamp
$(TOUCH) $@
$(OUT)/minsrc.tape: $(OUT)/stamp/touch $(ITSTAR)
$(MKDIR) $(OUT)
$(ITSTAR) -cf $@ -C src $(MINSRC)
$(ITSTAR) -rf $@ -C $(OUT) system
$(OUT)/minsys.tape: $(OUT)/stamp/touch $(ITSTAR) $(OUT)/system
$(MKDIR) $(OUT)
$(ITSTAR) -cf $@ -C bin/ks10 _ sys
$(ITSTAR) -rf $@ -C bin/minsys sys
$(OUT)/ka-minsys.tape: $(OUT)/stamp/touch $(ITSTAR) $(OUT)/system
$(MKDIR) $(OUT)
$(ITSTAR) -cf $@ -C bin/ka10 _ sys
$(ITSTAR) -rf $@ -C bin/minsys sys
leftparen:=(
rightparen:=)
KLDCPDIR=$(OUT)/_klfe_/kldcp.$(leftparen)dir$(rightparen)
$(OUT)/kl-minsys.tape: $(OUT)/stamp/touch $(ITSTAR) $(OUT)/system $(KLDCPDIR)
$(MKDIR) $(OUT)
$(ITSTAR) -cf $@ -C $(OUT) _klfe_
$(ITSTAR) -rf $@ -C bin/kl10 _ sys
$(ITSTAR) -rf $@ -C bin/minsys sys
$(KLDCPDIR): $(KLFEDR)
$(MKDIR) $(OUT)/_klfe_
$(KLFEDR) > "$(OUT)/_klfe_/kldcp.$(leftparen)dir$(rightparen)"
$(OUT)/sources.tape: $(OUT)/stamp/touch $(ITSTAR) $(OUT)/stamp/pdp10 $(OUT)/syshst/$(H3TEXT)
$(MKDIR) $(OUT)
$(RM) -f src/*/*~
$(ITSTAR) -cf $@ -C src $(SRC)
$(ITSTAR) -rf $@ -C doc $(DOC)
$(ITSTAR) -rf $@ -C bin $(BIN)
$(ITSTAR) -rf $@ -C $(OUT) syshst
$(OUT)/salv.tape: $(WRITETAPE) $(RAM) $(NSALV)
$(MKDIR) $(OUT)
$(WRITETAPE) -n 2560 $@ $(RAM) $(NSALV)
$(OUT)/dskdmp.tape: $(WRITETAPE) $(RAM) $(DSKDMP)
$(MKDIR) $(OUT)
$(WRITETAPE) -n 2560 $@ $(RAM) $(DSKDMP)
$(OUT)/bootvt.bin $(OUT)/aplogo.ptp $(OUT)/ssv22.iml: $(OUT)/output.tape
$(RM) -rf $(OUT)/tmp
$(MKDIR) -p $(OUT)/tmp
$(ITSTAR) -xf $< -C $(OUT)/tmp
$(CP) $(OUT)/tmp/gt40/bootvt.bin $(OUT)/bootvt.bin
-$(CP) $(OUT)/tmp/imlac/ssv22.iml $(OUT)/ssv22.iml
-$(CP) $(OUT)/tmp/aplogo/logo.ptp $(OUT)/aplogo.ptp
$(RM) -rf $(OUT)/tmp
tools/dasm/palx: tools/dasm/palx.c
$(MAKE) -C tools/dasm palx
$(OUT)/bootvt.img: $(OUT)/bootvt.bin tools/dasm/palx
$(MKDIR) out/gt40
tools/dasm/palx -I < $< > $@
out/pdp10-ka/stamp/test: out/pdp10-ka/stamp/its
$(KA10) build/pdp10-ka/hhtest.simh
$(TOUCH) $@
out/simh/stamp/test:
out/klh10/stamp/test:
out/pdp10-kl/stamp/test:
out/pdp10-ks/stamp/test:
out/simhv3/stamp/test:
start: build/$(EMULATOR)/start
$(LN) -s $< $*
out/klh10/stamp/pdp10:: $(KLH10) start out/klh10/dskdmp.ini
$(MKDIR) $(OUT)/stamp
$(TOUCH) $@
out/simh/stamp/pdp10: $(SIMH) start out/simh/boot
$(MKDIR) $(OUT)/stamp
$(TOUCH) $@
out/pdp10-ka/stamp/pdp10: $(KA10) start out/pdp10-ka/run
$(MKDIR) $(OUT)/stamp
$(TOUCH) $@
out/pdp10-kl/stamp/pdp10: $(KL10) start
$(MKDIR) $(OUT)/stamp
$(TOUCH) $@
out/pdp10-ks/stamp/pdp10: $(KS10) start
$(MKDIR) $(OUT)/stamp
$(TOUCH) $@
out/simhv3/stamp/pdp10: $(SIMHV3) start
$(MKDIR) $(OUT)/stamp
$(TOUCH) $@
out/klh10/system:
$(MKDIR) $(OUT)/system
x=`echo $(IP) | tr . ,`; \
$(SED) -e "s/%IP%/$$x/" \
-e 's/%NETMASK%/$(NETMASK)/' < build/klh10/config.203 > $(OUT)/system/config.203
out/simh/system:
$(MKDIR) $(OUT)/system
cp build/simh/config.* $(OUT)/system
out/pdp10-ka/system:
$(MKDIR) $(OUT)/system
cp build/pdp10-ka/config.* $(OUT)/system
out/pdp10-kl/system:
$(MKDIR) $(OUT)/system
cp build/pdp10-kl/config.* $(OUT)/system
out/pdp10-ks/system:
$(MKDIR) $(OUT)/system
cp build/pdp10-ks/config.* $(OUT)/system
out/simhv3/system:
$(MKDIR) $(OUT)/system
cp build/simhv3/config.* $(OUT)/system
out/klh10/dskdmp.ini: build/mchn/$(MCHN)/dskdmp.txt Makefile
$(MKDIR) $(OUT)/stamp
$(SED) -e 's/%IP%/$(IP)/' \
-e 's/%GW%/$(GW)/' < $< > $@
out/simh/boot: build/mchn/$(MCHN)/boot
$(MKDIR) $(OUT)/stamp
cp $< $@
out/pdp10-ka/run: build/mchn/$(MCHN)/run
$(MKDIR) $(OUT)/stamp
cp $< $@
$(OUT)/syshst/$(H3TEXT): build/$(H3TEXT)
$(MKDIR) $(OUT)/syshst
$(SED) -e 's/%IP%/$(IP)/' \
-e 's/%HOSTNAME%/$(HOSTNAME)/' < $< > $@
$(CAT) conf/hosts >> $@
$(KLH10):
cd tools/klh10; \
$(RM) -rf tmp; \
./autogen.sh; \
$(MKDIR) tmp; \
cd tmp; \
export CONFFLAGS_USR="-DKLH10_DEV_DPTM03=0 $$CONFFLAGS_USR"; \
../configure --bindir="$(CURDIR)/build/klh10"; \
$(MAKE) -C bld-ks-its; \
$(MAKE) -C bld-ks-its install
$(SIMH):
$(MAKE) -C tools/simh pdp10
$(KA10):
$(MAKE) -C tools/sims pdp10-ka
$(KL10):
$(MAKE) -C tools/sims pdp10-kl
$(KS10):
$(MAKE) -C tools/sims pdp10-ks
$(SIMHV3): tools/simhv3
$(MAKE) -C tools/simhv3 pdp10
tools/simhv3: simhv312-4.zip
unzip $<
mv sim $@
simhv312-4.zip:
$(WGET) $(SIMHV3_URL)/$@ || $(WGET) $(SIMHV3_URL)/archive/$@
$(ITSTAR):
$(MAKE) -C tools/itstar
$(WRITETAPE):
$(MAKE) -C tools/tapeutils
$(MAGFRM) $(KLFEDR):
$(MAKE) -C tools/dasm
$(TV11):
$(MAKE) -C tools/tv11 tv11 CFLAGS=-O3
$(MAKE) -C tools/tv11/tvcon
$(XGP11):
$(MAKE) -C tools/tv11 xgp11 CFLAGS=-O3
$(PDP6):
$(MAKE) -C tools/pdp6/emu
$(DATAPOINT):
$(MAKE) -C tools/vt05 dp3300
$(VT52):
$(MAKE) -C tools/vt05 vt52
tek-hack:
rm -f $(TEK)
$(TEK): tek-hack
$(MAKE) -C tools/tek4010 tek4010
tools/supdup/supdup:
$(MAKE) -C tools/supdup
tools/cbridge/cbridge:
$(MAKE) -C tools/cbridge
tools/chaosnet-tools/shutdown:
$(MAKE) -C tools/chaosnet-tools
$(SMF):
$(GIT) submodule sync --recursive `dirname $@`
$(GIT) submodule update --recursive --init `dirname $@`
tools/simh/BIN/pdp11:
$(MAKE) -C tools/simh pdp11
tools/simh/BIN/imlac:
$(MAKE) -C tools/simh imlac
check-dirs: Makefile
mkdir -p $(OUT)/check
echo $(SRC) | tr ' ' '\n' | sort > $(OUT)/check/src1
cd src; ls -1 | egrep -v $(SRCIGNORE) > ../$(OUT)/check/src2
diff -u $(OUT)/check/src1 $(OUT)/check/src2 > $(OUT)/check/src.diff
echo $(DOC) | tr ' ' '\n' | sort > $(OUT)/check/doc1
cd doc; ls -1d -- */ | tr -d / | sort | \
egrep -v $(DOCIGNORE) > ../$(OUT)/check/doc2
diff -u $(OUT)/check/doc1 $(OUT)/check/doc2 > $(OUT)/check/doc.diff
echo $(BIN) | tr ' ' '\n' | sort > $(OUT)/check/bin1
cd bin; ls -1 | egrep -v $(BINIGNORE) > ../$(OUT)/check/bin2
diff -u $(OUT)/check/bin1 $(OUT)/check/bin2 > $(OUT)/check/bin.diff
clean:
$(RM) -rf out start build/*/stamp