This repository serves 3 purposes:
- It is a template that can be used by other projects that want to leverage one or more simh simulators either natively or modified for one purpose or another.
- Provide a way to leverage the complex dependencies that the simh makefile addresses that may similarly be needed for different external projects.
- As a place for locally generated simh front panel applications
These purposes are achieved by referencing the core Simh repository as a submodule.
The simh makefile is designed to address the building needs of the whole set of simulators and their general purpose features on a large set of host platforms.
One or more host platforms likely are the only useful place where some extended projects would make sense. Examples of this might be platform specific frontpanel applications or platform specific modified simulators.
This repository allows an arbitrary set of additional or modified targets can exist and always have minimally complex access to the core simh codebase.
A specific target in this repository would have a file named panelname.simh.mk The invoking make at the top of this repository will merge any found mini makefiles into the simh makefile and invoke the specified target. Builds of the local panels and any simh simulators can then be initiated directly with gmake in the top directory of this repository.
The point of imbedding the basic info for relatively small targets allows the platform managing details that are imbedded in the simh makefile to be easily leveraged by the local mini makefiles.
A panelname.simh.mk makefile should look something like this:
# Front Panel for the local PDP-11/70 RT-11 setup
pdp11panel : ${BIN}pdp11panel${EXE} ${BIN}pdp11${EXE}
${BIN}pdp11panel${EXE} : ../PDP11Panel/PDP11Panel.c sim_sock.c sim_frontpanel.c
$(MAKEIT) OPTS="$(OS_CURSES_DEFS)" LNK_OPTS="$(OS_CURSES_LDFLAGS)" TESTS=0
ALL += pdp11panel
Note that optional compile time defines may be passed into the resulting simh makefile so that the compiled simulators (and possibly panel based modules can make that info visible by some display of the binary's version display.
The optional defines are:
- SUPER_PROJECT_NAME
- SUPER_PROJECT_GIT_COMMIT_ID
- SUPER_PROJECT_GIT_COMMIT_TIME
Simh simulator biaries will only display the SUPER_PROJECT_GIT_COMMIT_ID and SUPER_PROJECT_GIT_COMMIT_TIME values if SUPER_PROJECT_NAME is defined.