########################################################################
# Makefile.in - Processed by autosetup's configure script to generate
# the GNU make(1) file for building the PiDP-8/I software.
#
# If you are seeing this at the top of a file called Makefile and you
# intend to make edits, do that in Makefile.in. Saying "make" will then
# re-build Makefile from that modified Makefile.in before proceeding to
# do the "make" operation.
#
# Copyright © 2015 by Oscar Vermeulen, © 2016-2018 by Warren Young
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
# "Software"), to deal in the Software without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so, subject to
# the following conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
# IN NO EVENT SHALL THE AUTHORS LISTED ABOVE BE LIABLE FOR ANY CLAIM,
# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
# OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
# OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
# Except as contained in this notice, the names of the authors above
# shall not be used in advertising or otherwise to promote the sale,
# use or other dealings in this Software without prior written
# authorization from those authors.
########################################################################
# Git commit ID of the latest version of the SIMH 4 project on GitHub
# that has been merged into this source base.
SGCID=2b9ce757fd1c576b0d9b4e3d057c54d5ea0b7ad6
# C build flags for the PDP-8 simulator and its PiDP-8/I extensions.
SIM_CFLAGS := @CFLAGS@ @BUILDMODE@ \
-Wno-unused-result -Wno-parentheses \
-DUSE_READER_THREAD -DHAVE_DLOPEN=$(subst .,,@SH_SOEXT@) -DPIDP8I \
-DSIM_ASYNCH_IO -DHAVE_REGEX_H -DHAVE_GLOB \
-DSIM_GIT_COMMIT_ID=$(SGCID) -D_GNU_SOURCE \
-U__STRICT_ANSI__ \
-I @srcdir@/src/SIMH -I @srcdir@/src/pidp8i -I src -I src/SIMH -I src/pidp8i
PIDP8I_CFLAGS = $(SIM_CFLAGS)
SIMH_CFLAGS = $(SIM_CFLAGS)
SIMH_PDP8_CFLAGS = $(SIM_CFLAGS)
# Greatly stripped-down build options for the cc8 cross-compiler
# primarily because it's K&R C. Building under SIM_CFLAGS spews
# pages of warnings. The only thing we share is whether to build
# a debug or optimized version, from BUILDMODE, set by auto.def.
CC8_CROSS_CFLAGS = -w @BUILDMODE@
# Krten's d8tape doesn't need much in the way of options. It builds
# without warnings under the supported version of Raspbian. On some
# other OS types, it complains about one of the printf() format
# specifiers, which we cannot fix portably, so we suppress that one.
D8TAPE_CFLAGS = -Wno-format @BUILDMODE@
# Simpler options for src/misc/*.c
MISC_CFLAGS = -I @srcdir@/src/pidp8i -I src/pidp8i @BUILDMODE@ -std=c99
# Even simpler options for palbart.
PALBART_CFLAGS = @BUILDMODE@
SIM = bin/pidp8i-sim
BINS = $(SIM) @CC8_CROSS@ \
bin/d8tape \
bin/palbart \
bin/pidp8i-test \
bin/ptp2txt \
libexec/scanswitch
BIN_SCRIPTS = \
bin/pidp8i \
bin/usb-mount \
@srcdir@/bin/teco-pi-demo
# Some *.py files are generated by Autosetup, so they need different
# handling than the other libraries for the out-of-tree build case.
PIDP8I_DIRS := lib/pidp8i/dirs.py
PIDP8I_DIN := @srcdir@/$(PIDP8I_DIRS).in
GENNED_PY := \
lib/pidp8i/__init__.py \
lib/pidp8i/ips.py \
$(PIDP8I_DIRS)
SIMH_PY := lib/simh.py
SIMH_PY_SRC := @srcdir@/$(SIMH_PY)
OS8RUN := bin/os8-run
MKOS8_LIB := @srcdir@/lib/mkos8
MKOS8_PY := \
$(MKOS8_LIB)/__init__.py \
$(MKOS8_LIB)/argparser.py \
lib/mkos8/opts.py \
lib/mkos8/os8scripty.py
MKOS8_PY_ALL := $(GENNED_PY) $(MKOS8_PY) $(SIMH_PY_SRC)
MKOS8_SRCS := $(OS8RUN) $(MKOS8_PY_ALL) $(PIDP8I_DIN)
# If you edit this directory list, you should probably also edit
# the argument list to the mkadrules call in auto.def!
BUILDDIRS := \
bin \
libexec \
obj/cc8/cross \
obj/d8tape \
obj/misc \
obj/palbart \
obj/pidp8i \
obj/SIMH \
obj/SIMH/PDP8
INSTDIRS := bin etc lib/mkos8 lib/pidp8i libexec share/boot share/media share/include share/man/man1
SIM_OBJS := \
obj/pidp8i/gpio-common.o \
obj/pidp8i/main.o \
obj/SIMH/PDP8/pdp8_df.o \
obj/SIMH/PDP8/pdp8_cpu.o \
obj/SIMH/PDP8/pdp8_clk.o \
obj/SIMH/PDP8/pdp8_ct.o \
obj/SIMH/PDP8/pdp8_dt.o \
obj/SIMH/PDP8/pdp8_fpp.o \
obj/SIMH/PDP8/pdp8_lp.o \
obj/SIMH/PDP8/pdp8_mt.o \
obj/SIMH/PDP8/pdp8_pt.o \
obj/SIMH/PDP8/pdp8_rf.o \
obj/SIMH/PDP8/pdp8_rk.o \
obj/SIMH/PDP8/pdp8_rl.o \
obj/SIMH/PDP8/pdp8_rx.o \
obj/SIMH/PDP8/pdp8_sys.o \
obj/SIMH/PDP8/pdp8_td.o \
obj/SIMH/PDP8/pdp8_tsc.o \
obj/SIMH/PDP8/pdp8_tt.o \
obj/SIMH/PDP8/pdp8_ttx.o \
obj/SIMH/scp.o \
obj/SIMH/sim_console.o \
obj/SIMH/sim_disk.o \
obj/SIMH/sim_ether.o \
obj/SIMH/sim_fio.o \
obj/SIMH/sim_serial.o \
obj/SIMH/sim_sock.o \
obj/SIMH/sim_tape.o \
obj/SIMH/sim_timer.o \
obj/SIMH/sim_tmxr.o \
obj/SIMH/sim_video.o
CC8_OBJS := \
obj/cc8/cross/code8.o \
obj/cc8/cross/data.o \
obj/cc8/cross/error.o \
obj/cc8/cross/expr.o \
obj/cc8/cross/function.o \
obj/cc8/cross/gen.o \
obj/cc8/cross/io.o \
obj/cc8/cross/lex.o \
obj/cc8/cross/main.o \
obj/cc8/cross/preproc.o \
obj/cc8/cross/primary.o \
obj/cc8/cross/stmt.o \
obj/cc8/cross/sym.o \
obj/cc8/cross/while.o
D8TAPE_OBJS := \
obj/d8tape/dasm.o \
obj/d8tape/flow.o \
obj/d8tape/main.o \
obj/d8tape/version.o
MISC_OBJS := \
obj/misc/ptp2txt.o \
obj/misc/scanswitch.o \
obj/misc/test.o
PALBART_OBJS := obj/palbart/palbart.o
ifeq (@BUILD_DEEPER_THOUGHT@, 1)
BINS += bin/deeper
endif
LIBS = -lm -ldl -lpthread
ASM_PTS := $(wildcard @srcdir@/src/asm/*.pal)
ASM_PTS := $(subst @srcdir@/src/asm,bin,$(ASM_PTS))
ASM_PTS := $(ASM_PTS:.pal=-pal.pt)
FC_EX_PTS := $(wildcard @srcdir@/examples/*.fc)
FC_EX_PTS := $(subst @srcdir@/examples,bin,$(FC_EX_PTS))
FC_EX_PTS := $(FC_EX_PTS:.fc=-focal.pt)
PAL_EX_PTS := $(wildcard @srcdir@/examples/*.pal)
PAL_EX_PTS := $(subst @srcdir@/examples,bin,$(PAL_EX_PTS))
PAL_EX_PTS := $(PAL_EX_PTS:.pal=-pal.pt)
LISTINGS := $(ASM_PTS:-pal.pt=.lst) $(PAL_EX_PTS:-pal.pt=.lst)
LISTINGS := $(subst bin/,obj/,$(LISTINGS))
BOOTSCRIPTS := $(LISTINGS:.lst=.script)
BOOTSCRIPTS := $(subst obj/,boot/,$(BOOTSCRIPTS)) \
boot/1.script \
boot/5.script
# List of *.in files from auto.def file, except for this present file
# (Makefile.in) which is handled separately. This list should only
# change when the list of "make-template" calls in auto.def changes.
#
# The MKOS8_INFILES set of files are those which, if changed, require
# rebuilding the OS/8 media. Touching the combined set merely causes
# a reconfig and build.
#
# The PRECIOUS set are those whose outfiles we want make(1) to treat as
# "precious", meaning it won't delete files generated by a target if the
# rule being processed to create that target fails.
#
# The rest have no special treatment.
MKOS8_INFILES = \
@srcdir@/lib/pidp8i/__init__.py.in \
@srcdir@/lib/pidp8i/ips.py.in \
@srcdir@/media/os8/init.tx.in \
@srcdir@/src/pidp8i/main.c.in \
$(PIDP8I_DIN)
PRECIOUS_INFILES = \
@srcdir@/Makefile.in \
@srcdir@/examples/Makefile.in \
@srcdir@/src/Makefile.in \
@srcdir@/src/cc8/Makefile.in \
@srcdir@/src/SIMH/Makefile.in \
@srcdir@/src/SIMH/PDP8/Makefile.in
INFILES = \
@srcdir@/bin/pidp8i.in \
@srcdir@/boot/0.script.in \
@srcdir@/boot/2.script.in \
@srcdir@/boot/3.script.in \
@srcdir@/boot/4.script.in \
@srcdir@/boot/6.script.in \
@srcdir@/boot/7.script.in \
@srcdir@/boot/run.script.in \
@srcdir@/etc/pidp8i-init.in \
@srcdir@/etc/sudoers.in \
@srcdir@/etc/usb-mount@.service.in \
@srcdir@/src/pidp8i/gpio-common.c.in \
@srcdir@/tools/simh-update.in \
$(MKOS8_INFILES)
MKOS8_OUTFILES := $(subst @srcdir@/,,$(MKOS8_INFILES))
MKOS8_OUTFILES := $(subst .in,,$(MKOS8_OUTFILES))
PRECIOUS_OUTFILES := $(subst @srcdir@/,,$(PRECIOUS_INFILES))
PRECIOUS_OUTFILES := $(subst .in,,$(PRECIOUS_OUTFILES))
OUTFILES := $(subst @srcdir@/,,$(INFILES))
OUTFILES := $(subst .in,,$(OUTFILES))
OS8_BIN_RK05 = bin/os8v3d-bin.rk05
OS8_SRC_RK05 = @OS8_SRC_RK05@
OS8_RK05S = $(OS8_BIN_RK05) $(OS8_SRC_RK05)
OS8_SCRIPTS_DIR = @srcdir@/media/os8/scripts
MKOS8_BIN_SCRIPT = $(OS8_SCRIPTS_DIR)/os8v3d-bin.mkos8
MKOS8_SRC_SCRIPT = $(OS8_SCRIPTS_DIR)/os8v3d-src.mkos8
ifneq (@MKOS8_BIN_PATCHES@,)
MKOS8_PATCH_SCRIPT = $(OS8_SCRIPTS_DIR)/os8v3d-patch.mkos8
endif
OS8CP := bin/os8-cp
V3F_SRCDIR = @srcdir@/src/os8/v3f
V3F_BUILD_RK05 = os8-v3f-build.rk05
V3F_MANIFEST = actions.txt
V3F_MADE_RK05 = bin/os8-v3f-made.rk05
V3F_MAKER = $(OS8_SCRIPTS_DIR)/v3f-control.mkos8
V3F_TC08_SCRIPT = $(OS8_SCRIPTS_DIR)/os8-v3f-tape.mkos8
V3F_TD12K_SCRIPT = $(OS8_SCRIPTS_DIR)/os8-v3f-tape.mkos8 --enable td12k
SYS_DTCOPY_INCLUDE = $(OS8_SCRIPTS_DIR)/sys-dectape-copy.mkos8
V3F_TCO8_TU56 = bin/system_v3f_tc08.tu56
V3F_TD12K_TU56 = bin/system_v3f_td12k.tu56
CLTXT = /boot/cmdline.txt
ADF := adrules.mk
.PHONY: all tags
.PRECIOUS: $(PRECIOUS_OUTFILES)
all: $(OUTFILES) $(PRECIOUS_OUTFILES) $(BUILDDIRS) $(BINS) $(BOOTSCRIPTS) $(LISTINGS) $(ASM_PTS) $(FC_EX_PTS) $(PAL_EX_PTS) $(OS8_RK05S) $(V3F_MADE_RK05)
clean:
@rm -f $(BINS) $(BOOTSCRIPTS) $(ASM_PTS) $(PAL_EX_PTS) $(LISTINGS) \
$(OUTFILES) $(ADF) \
config.log cscope.out tags \
bin/*.pt bin/*.rk05 bin/*.save bin/txt2ptp \
lib/*.pyc lib/*/*.pyc lib/mkos8/opts.py \
obj/*.log obj/*.pt obj/mkos8.opts \
src/config.h \
@srcdir@/examples/*.err
@find obj \( -name \*.o -o -name \*.d \) -delete
@-rmdir -p $(BUILDDIRS) 2> /dev/null || true
distclean: clean
@rm -f \
$(PRECIOUS_OUTFILES) \
config.log \
autosetup/jimsh0 \
src/config.h
ctags tags:
ctags -R @srcdir@/src @srcdir@/lib @srcdir@/libexec/mkos8
ifeq (@HAVE_PROG_CSCOPE@, 1)
@cscope -bR -s@srcdir@
endif
install: all instdirs
@echo Installing to @prefix@...
@# Install files into those dirs and set their perms
@for f in $(BINS) ; do \
dest=@prefix@/$$f ; \
echo "Installing binary $$dest..." ; \
@INSTALL@ -m 755 -D -s $$f $$dest ; \
done
@for f in $(BIN_SCRIPTS) ; do \
dest=@prefix@/bin/$$(basename $$f) ; \
echo "Installing script $$dest..." ; \
@INSTALL@ -m 755 -D $$f $$dest ; \
done
@( cd @prefix@/bin ; \
echo "Installing txt2ptp symlink..." ; \
ln -f ptp2txt txt2ptp ; \
)
@(test -x /sbin/setcap && \
for f in @prefix@/bin/pidp8i-* ; do \
echo "Setting real-time priority capabilities on $$(basename $$f)..." ; \
/sbin/setcap 'cap_sys_nice=eip' $$f ; \
done \
) || true
@test -e @MEDIADIR@/os8/os8.rk05 || echo "Installing media..." && $(MAKE) mediainstall
@# If this is a Debian-type system, install needed helper programs
@test -x /usr/bin/apt-get -a ! -x /usr/bin/screen && apt-get -y install screen || true
@# Remove usbmount: we've replaced that with bin/usb-mount and friends.
@test -x /usr/bin/apt-get -a -d /etc/usbmount && apt-get -y remove usbmount || true
@# Install the usb-mount systemd unit file and udev rules
( test -d /etc/systemd && \
@INSTALL@ -m 644 etc/usb-mount@.service /etc/systemd/system && \
@INSTALL@ -m 644 @srcdir@/etc/udev.rules /etc/udev/rules.d/68-usb-mount.rules && \
sed -i -e 's/MountFlags=slave/MountFlags=shared/' \
/lib/systemd/system/systemd-udevd.service && \
/bin/systemctl daemon-reload && \
/sbin/udevadm control --reload-rules && \
/sbin/udevadm trigger \
) || true
@# Disable competing services if this is a Raspberry Pi
@(test -x /bin/systemctl && /bin/systemctl disable deeper || true)
@(test -x /bin/systemctl && /bin/systemctl disable pidp8 || true)
@# Install the init script if this system is systemd based.
@@INSTALL@ -m 755 @srcdir@/etc/pidp8i-init @prefix@/etc
@( test -w /etc/init.d -a -x /bin/systemctl && \
ln -sf @ABSPREFIX@/etc/pidp8i-init /etc/init.d/pidp8i && \
/bin/systemctl enable pidp8i \
) || true
@# Give the install user permission to use GPIO if done on a Pi
@grep -q '^gpio:' /etc/group && usermod -a -G gpio @INSTUSR@ || true
@# Give the install user permission to shut down and reboot the Pi
@# if this is a systemd/sudo based system.
@( test -d /etc/sudoers.d -a -w /etc/sudoers.d -a -x /bin/systemctl && \
@INSTALL@ -m 440 -o root -g root @srcdir@/etc/sudoers \
/etc/sudoers.d/099_pidp8i \
) || true
@# Add installation bin dir to the non-root user's PATH unless it's
@# already in there or we aren't running under sudo.
@(for p in .profile .bash_profile ; do \
test -n "$$SUDO_USER" -a -w "/home/$$SUDO_USER/$$p" && \
! grep -qF "@ABSPREFIX@/bin" "/home/$$SUDO_USER/$$p" && \
echo "export PATH=\$$PATH:@ABSPREFIX@/bin" >> "/home/$$SUDO_USER/$$p" ; \
done) || true
@# Ditto for MANPATH
@(for p in .profile .bash_profile ; do \
test -n "$$SUDO_USER" -a -w "/home/$$SUDO_USER/$$p" && \
! grep -qF "@ABSPREFIX@/share/man" "/home/$$SUDO_USER/$$p" && \
echo "export MANPATH=\$$MANPATH:@ABSPREFIX@/share/man" >> "/home/$$SUDO_USER/$$p" ; \
done \
) || true
@# If serial mod is disabled, turn off serial console and kgdb stuff
@# in case they were enabled previously, else they will fight with
@# our use of GPIO.
@( test -z "@PCB_SERIAL_MOD_ANY@" -a -r $(CLTXT) && ! -w $(CLTXT) && \
cp -p $(CLTXT) "$(CLTXT)"_orig && \
sed -e 's/console\=[a-zA-Z0-9]+,[0-9]+ //' \
-e 's/kgdboc\=[a-zA-Z0-9]+,[0-9]+ //' -i $(CLTXT) \
) || true
@# Install CC8 stuff if built
@test -n "@CC8_CROSS@" && \
echo "Installing cc8 cross-compiler..." ; \
@INSTALL@ -m 755 bin/cc8 @prefix@/bin && \
@INSTALL@ -m 644 @srcdir@/src/cc8/include/* @prefix@/share/include
@# Install palbart stuff
@@INSTALL@ -m 755 bin/palbart @prefix@/bin
@@INSTALL@ -m 644 @srcdir@/src/palbart/palbart.1 @prefix@/share/man/man1
@# Install mkos8 and its dependencies
@echo "Installing mkos8..."
@@INSTALL@ -m 775 -g @INSTGRP@ $(OS8RUN) @prefix@/libexec
@( for src in $(MKOS8_PY_ALL) ; do \
test -e $$src || src=@srcdir@/$$src ; \
dest=@prefix@/$$(echo $$src | sed -e 's_^@srcdir@/__') ; \
echo "Installing $$src to $$dest..." ; \
@INSTALL@ -m 644 -g @INSTGRP@ -D $${src} $${dest} ; \
@INSTALL@ -m 644 -g @INSTGRP@ -D $${src}c $${dest}c ; \
done \
)
@sed -e 's#^build =.*#build = "@ABSPREFIX@"#' \
-e 's#^media =.*#media = os.path.join (build, "share/media/")#' \
-e 's#^os8mo =.*#os8mo = os8mi#' \
< $(PIDP8I_DIRS) > @prefix@/$(PIDP8I_DIRS)
@chgrp @INSTGRP@ @prefix@/$(PIDP8I_DIRS)
instdirs:
@echo "Creating installation directory tree..."
@for d in $(INSTDIRS) ; do @INSTALL@ -m 755 -d @prefix@/$$d ; done
mediainstall: instdirs
@echo "[Re]installing OS and program media..."
@cd @srcdir@ ; \
find media \( \
-name \*.mkos8 -o \
-name \*.bin -o \
-name \*.dsk -o \
-name \*.rk05 -o \
-name \*.tu56 \
\) -exec @INSTALL@ -D -m 664 -o @INSTUSR@ -g @INSTGRP@ {} @ABSPREFIX@/share/{} \;
@@INSTALL@ -m 644 -o @INSTUSR@ -g @INSTGRP@ bin/os8v3d-*.rk05 @ABSPREFIX@/share/media/os8
@@INSTALL@ -m 644 -o @INSTUSR@ -g @INSTGRP@ media/os8/scripts/*.mkos8 @ABSPREFIX@/share/media/os8/scripts
@@INSTALL@ -m 664 -o @INSTUSR@ -g @INSTGRP@ boot/*.script @BOOTDIR@
# No-dependencies versions of the bin/os8v3d-*.rk05 targets used by
# tools/test-mkos8, because there's no point rebuilding the simulator
# on each iteration.
os8-bin:
$(OS8RUN)@MKOS8_OPTS@ $(MKOS8_BIN_SCRIPT)
os8-patched:
$(OS8RUN)@MKOS8_OPTS@ $(MKOS8_BIN_SCRIPT) $(MKOS8_PATCH_SCRIPT)
reconfig:
@AUTOREMAKE@
release: all
@srcdir@/tools/mkrel
run: $(SIM)
$(SIM) boot/run.script
run-tss8: $(SIM)
$(SIM) boot/tss8.script
simh-update simh-update-f:
@@srcdir@/tools/simh-update $(subst simh-update,,$@)
test-mkos8:
tools/test-mkos8
# Build the OS/8 binary media needed by 0.script.
#
# We use order-only prerequisites for the simulator here because we only
# care that it *exists*, not whether it is newer than the previously
# built RK05 media or not.
#
# Also notice that the init.tx file is not a prerequisite: we purposely
# do not rebiuld the RK05 media just because the configure script was
# re-run, which *always* regenerates the init.tx file because the
# timestamp always changes from one run to the next. (Until computers
# get fast enough to do a complete re-configure in under a second,
# anyway!) The thing is, we only want the RK05 bin media rebuilt when
# the configure --*-os8-* options change. *That* is when we care about
# the updated init.tx file, not before. We needn't even make it an
# order-only prereq because configure and the INFILES rules above ensure
# that it always exists.
OS8_BIN_SRCS := \
$(OS8RUN) $(PIDP8I_DIN) \
lib/pidp8i/dirs.py \
$(MKOS8_BIN_SCRIPT) \
@srcdir@/media/os8/al-*-ba-*.tu56 \
@srcdir@/media/os8/subsys/*.tu56
ifneq (@MKOS8_BIN_PATCHES@,)
OS8_BIN_SRCS += $(MKOS8_PATCH_SCRIPT)
endif
$(OS8_BIN_RK05): $(OS8_BIN_SRCS) | $(SIM) $(MKOS8_OUTFILES)
$(OS8RUN)@MKOS8_OPTS@ $(MKOS8_BIN_SCRIPT) $(MKOS8_PATCH_SCRIPT)
# Also build an OS/8 source disk, as a convenience to avoid the
# need to mount up the 7 source tapes in succession.
#
# Using an order-only dependency for the simulator and the bin disk: we
# only need *a* version of each, they don't have to be recent!
OS8_SRC_SRCS = \
$(OS8RUN) $(PIDP8I_DIN) \
lib/pidp8i/dirs.py \
$(MKOS8_SRC_SCRIPT) \
@srcdir@/media/os8/al-*-sa-*.tu56
$(OS8_SRC_RK05): $(OS8_SRC_SRCS) | $(SIM) $(OS8_BIN_RK05)
$(OS8RUN)@MKOS8_OPTS@ $(MKOS8_SRC_SCRIPT)
# Build the source disk for OS/8 V3F
bin/$(V3F_BUILD_RK05): $(V3F_SRCDIR)/$(V3F_MANIFEST)
cd $(V3F_SRCDIR); @builddir@/$(OS8CP) --action-file $(V3F_MANIFEST)
mv $(V3F_SRCDIR)/$(V3F_BUILD_RK05) bin
# Make a disk with binaries assembled from the V3F source disk
$(V3F_MADE_RK05): bin/$(V3F_BUILD_RK05) $(V3F_MAKER)
$(OS8RUN) $(V3F_MAKER)
# Make a bootable OS/8 v3f TCO8 DECtape image
$(V3F_TCO8_TU56): $(V3F_MADE_RK05) $(V3F_TC08_SCRIPT) $(SYS_DTCOPY_INCLUDE)
$(OS8RUN) $(V3F_TC08_SCRIPT)
# Make a bootable OS/8 v3f TD8E 12K DECtape image
$(V3F_TD12K_TU56): $(V3F_MADE_RK05) $(V3F_TD12K_SCRIPT) $(SYS_DTCOPY_INCLUDE)
$(OS8RUN) $(V3F_TD12K_SCRIPT)
# Rule for building PAL assembly language programs in src/asm/*.pal.
obj/%.lst bin/%-pal.pt: @srcdir@/src/asm/%.pal bin/palbart
bin/palbart -lr $< || cat obj/$*.err
mv @srcdir@/src/asm/$*.lst obj
mv @srcdir@/src/asm/$*.rim bin/$*-pal.pt
# Ditto for those in examples/*.pal.
obj/%.lst bin/%-pal.pt: @srcdir@/examples/%.pal bin/palbart
bin/palbart -lr $< || cat obj/$*.err
mv @srcdir@/examples/$*.lst obj
mv @srcdir@/examples/$*.rim bin/$*-pal.pt
# Rule for converting ASCII FOCAL examples in examples/*.fc to
# bin/*-focal.pt.
bin/%-focal.pt: @srcdir@/examples/%.fc bin/txt2ptp
bin/txt2ptp < $< > bin/$*-focal.pt
# Rule for translating PAL assembly language program listings to SIMH
# boot scripts.
boot/%.script: obj/%.lst
@srcdir@/tools/mkbootscript $<
# Rules for making aliases of named example programs translated to boot
# scripts as special numbered boot scripts
boot/1.script: boot/hs-rim-loader.script
ln -f $< $@
boot/5.script: boot/ac-mq-blinker.script
ln -f $< $@
$(BUILDDIRS):
mkdir -p $@
$(SIM): $(SIM_OBJS) obj/pidp8i/gpio-@LED_DRIVER_MODULE@ls.o
$(CC) -o $@ $^ $(LIBS)
bin/cc8: $(CC8_OBJS)
$(CC) -o $@ $^ $(LIBS)
bin/d8tape: $(D8TAPE_OBJS)
$(CC) -o $@ $^
bin/palbart: $(PALBART_OBJS)
$(CC) -o $@ $^
bin/pidp8i-test: obj/misc/test.o obj/pidp8i/gpio-nls.o obj/pidp8i/gpio-common.o
$(CC) -o $@ $^ $(LIBS) -lncurses
bin/ptp2txt: obj/misc/ptp2txt.o
$(CC) -o $@ $^
ln -f bin/ptp2txt bin/txt2ptp
bin/txt2ptp: bin/ptp2txt
ln -f bin/ptp2txt bin/txt2ptp
bin/deeper: obj/deeper.o obj/pidp8i/gpio-@LED_DRIVER_MODULE@ls.o obj/pidp8i/gpio-common.o
$(CC) -o $@ $^ $(LIBS)
libexec/scanswitch: obj/misc/scanswitch.o obj/pidp8i/gpio-nls.o obj/pidp8i/gpio-common.o
$(CC) -o $@ $^ $(LIBS)
# Reconfigure whenever one of the *.in or autosetup files changes unless
# this is "make clean".
#
# We purposely list only one of the OUTFILES on the left hand side
# because to list them all is to invite Make to run N copies of the
# configure script in parallel up to the limit of -j or the number of
# files in INFILES, whichever is lower. Order-only prerequisites can't
# help here (|) as that only affects the right hand side.
ifeq ($(findstring clean,$(MAKECMDGOALS)),)
media/os8/init.tx: $(INFILES) $(PRECIOUS_INFILES) @AUTODEPS@
@AUTOREMAKE@ && $(MAKE)
# Also do it if the autodep tool is newer than its output, suggesting
# that if re-run, it would generate different output.
$(ADF): @srcdir@/tools/mkadrules
@AUTOREMAKE@ && $(MAKE)
endif
# Rebuild simulator if the version string tool changes, since its output
# may have changed.
src/pidp8i/gpio-common.c: @srcdir@/tools/version
# Pull in *.d files generated by the autodependency mechanism. See the
# header comment of tools/mkadrules.
-include \
$(SIM_OBJS:.o=.d) \
$(CC8_OBJS:.o=.d) \
$(D8TAPE_OBJS:.o=.d) \
$(MISC_OBJS:.o=.d) \
$(PALBART_OBJS:.o=.d)
-include $(ADF)