CMake: Updates

Issue #294: "apple silicon build problem(s?)": If the "--flavor/-f" flag
is not specified on the command line, then complain loudly, print help
and exit. The script used to default to "Unix Makefiles".

Updates:

- Add missing "-DHAVE_LIBPNG" compiler command line define when the PNG
  library is detected/present for screen capture support.

- Add "clang64" to the list of MinGW64 platforms for which the
  .travis/deps.sh script can install build dependencies.

- Add PThread4W_FOUND to the condition that sets async I/O for Win32
  when using vcpkg for build dependencies.

- Add vs2022-x64, vs2019-x64 and vs2017-x64 build environments to
  build 64-bit Windows executables.

- Use simulator AIO only where needed by the simulator (i.e., the
  simulator calls/uses AIO_CHECK_EVENT in sim_instr())

  - Add "USES_AIO" flag to add_simulator() to mark a simulator that
    acutally uses asynchronous I/O.

  - Build "_aio" SIMH core library variants that have AIO turned on,
    link with the "_aio" variant when a simulator sets USES_AIO.

  - Emit a warning message when WITH_ASYNC is False (CMake configuration
    option) to notify the user/developer that some functionality will be
    crippled.

  Affected simulator builds: 3b2 family, PDP-6, PDP-11, VAX family,
  IMLAC and TT2500. The makefile and cmake/generate.py also updated
  to remain in sync with CMake.

  N.B.: Simulators still link with the underlying platform's threading
  library. SEL32 requires pthreads or equivalent threading library,
  independent of AIO.

- cmake/cmake-builder.sh

  - New "--no-aio" flag: Build simulators without async I/O.

  - New "--no-aio-intrinsics" flag: Don't build async I/O using compiler
    compare-exchange, atomic load intrinsics.

- cmake/cmake-builder.ps1

  - New "-noaio" flag: Build simulators without async I/O.

  - New "-noaiointrinsics" flag: Don't build async I/O using compiler
    compare-exchange, atomic load intrinsics.

CMake 3.28.1 INTERFACE_LINK_LIBRARIES behavior change: The file name
must now be an absolute path. Relative paths no longer accepted.
Internally, SIMH enforces this if CMAKE_VERSION >= 3.19, when REAL_PATH
was first implemented.
This commit is contained in:
B. Scott Michel 2023-12-04 11:33:00 -08:00 committed by Paul Koning
parent f4c39a325c
commit d9d0e8bd74
18 changed files with 324 additions and 139 deletions

View file

@ -45,8 +45,22 @@ install_ucrt64() {
mingw-w64-ucrt-x86_64-libpcap
}
install_clang64() {
pacman -S --needed mingw-w64-clang-x86_64-ninja \
mingw-w64-clang-x86_64-cmake \
mingw-w64-clang-x86_64-extra-cmake-modules \
mingw-w64-clang-x86_64-clang \
mingw-w64-clang-x86_64-make \
mingw-w64-clang-x86_64-pcre \
mingw-w64-clang-x86_64-freetype \
mingw-w64-clang-x86_64-SDL2 \
mingw-w64-clang-x86_64-SDL2_ttf \
mingw-w64-clang-x86_64-libpcap
}
case "$1" in
osx|linux|mingw64|ucrt64)
osx|linux|mingw64|ucrt64|clang64)
install_"$1"
;;
*)

View file

@ -38,6 +38,7 @@ add_simulator(3b2
DEFINES
REV2
FEATURE_FULL64
USES_AIO
LABEL 3B2
PKG_FAMILY att3b2_family
TEST 3b2)
@ -65,6 +66,7 @@ add_simulator(3b2-700
DEFINES
REV3
FEATURE_FULL64
USES_AIO
LABEL 3B2
PKG_FAMILY att3b2_family
TEST 3b2-700)

View file

@ -28,6 +28,13 @@ if (CMAKE_VERSION VERSION_LESS "3.21" AND NOT DEFINED SIMH_INSTALLER_WARNING)
set(SIMH_INSTALLER_WARNING TRUE CACHE BOOL "Installer/CPack warning issued when CMAKE_VERSION < 3.21" FORCE)
endif ()
## SIMH Version variables:
set(SIMH_VERSION_MAJOR 4)
set(SIMH_VERSION_MINOR 1)
set(SIMH_VERSION_PATCH 0)
set(SIMH_VERSION "${SIMH_VERSION_MAJOR}.${SIMH_VERSION_MINOR}.${SIMH_VERSION_PATCH}"
CACHE PATH "Open-Simh version string.")
# Places to look for CMake modules/includes
set(SIMH_INCLUDE_PATH_LIST
${CMAKE_SOURCE_DIR}/cmake
@ -73,12 +80,6 @@ if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.15)
cmake_policy(SET CMP0091 NEW)
endif()
## SIMH Version variables:
set(SIMH_VERSION_MAJOR 4)
set(SIMH_VERSION_MINOR 1)
set(SIMH_VERSION_PATCH 0)
set(SIMH_VERSION "${SIMH_VERSION_MAJOR}.${SIMH_VERSION_MINOR}.${SIMH_VERSION_PATCH}")
project(simh VERSION "${SIMH_VERSION}" LANGUAGES C CXX)
include(vcpkg-setup)

View file

@ -226,6 +226,7 @@ add_simulator(pdp6
FEATURE_INT64
FEATURE_VIDEO
FEATURE_DISPLAY
USES_AIO
LABEL PDP10
PKG_FAMILY decpdp_family
TEST pdp6)

View file

@ -74,6 +74,7 @@ add_simulator(pdp11
VM_PDP11
FEATURE_VIDEO
FEATURE_DISPLAY
USES_AIO
BUILDROMS
LABEL PDP11
PKG_FAMILY pdp11_family

View file

@ -1189,13 +1189,15 @@ add_simulator(3b2
convention `[sim]_test.ini` -- the argument to the `TEST` parameter is the
`[sim]` portion of the test script's name.
- Option keywords: These determine which of [six (6) simulator core libraries](#simulator-core-libraries) is
- Option keywords: These determine which of [simulator core libraries](#simulator-core-libraries) is
linked with the simulator.
- `FEATURE_INT64`: 64-bit integers, 32-bit pointers
- `FEATURE_FULL64`: 64-bit integers, 64-bit pointers
- `FEATURE_VIDEO`: Simulator video support.
- `FEATURE_DISPLAY`: Video display support.
- `USES_AIO`: Asynchronous I/O support (primarily useful for simulator
network devices.)
- `PKG_FAMILY` option: This option adds the simulator to a package "family" or
simulator packaging group, e.g., "DEC PDP simulators". The default package
@ -1214,13 +1216,30 @@ libraries that represents the combination of required features: 32/64 bit
support and video:
| Library | Video | Integer size | Address size | `add_simulator` flags |
| :--------------- | :---: | -----------: | -----------: | :-------------------- |
| :---------------- | :---: | -----------: | -----------: | :-------------------- |
| simhcore.a | N | 32 | 32 | |
| simhi64.a | N | 64 | 32 | `FEATURE_INT64` |
| simhz64.a | N | 64 | 64 | `FEATURE_FULL64` |
| simhcore_video.a | Y | 32 | 32 | `FEATURE_VIDEO` |
| simhi64_video.a | Y | 64 | 32 | `FEATURE_INT64`, `FEATURE_VIDEO` |
| simhz64_video.a | Y | 64 | 64 | `FEATURE_FULL64`, `FEATURE_VIDEO` |
| simhcore\_video.a | Y | 32 | 32 | `FEATURE_VIDEO` |
| simhi64\_video.a | Y | 64 | 32 | `FEATURE_INT64`, `FEATURE_VIDEO` |
| simhz64\_video.a | Y | 64 | 64 | `FEATURE_FULL64`, `FEATURE_VIDEO` |
In addition to these six libraries, there are six asynchronous I/O (AIO)
variants that are built and linked into a simulator when the `USES_AIO` feature
flag is present in `add_simulator()`'s arguments:
| Library variant | Description |
| :--------------------- | :---------: |
| simhcore\_aio.a | simhcore.a with AIO support. |
| simhi64\_aio.a | simhi64.a with AIO support. |
| simhz64\_aio.a | simhz64.a with AIO support. |
| simhcore\_video\_aio.a | simhcore\_video.a with AIO support. |
| simhi64\_video\_aio.a | simhi64\_video.a with AIO support. |
| simhz64\_video\_aio.a | simhz64\_video.a with AIO support. |
The `EXCLUDE_FROM_ALL` property is set on each of theses libraries in CMake to
avoid building the entire matrix. Practically speaking, 10 out of the 12 total
libraries actually build for the entire simulator suite.
Internally, these core libraries are [`CMake` interface libraries][cmake_interface_library] -- when they
are added to a simulator's executable via `target_link_libraries`, the simulator
@ -1265,6 +1284,10 @@ add_simulator(simulator_name
## in conjunction with FEATURE_VIDEO
FEATURE_DISPLAY
## Simulator uses asynchronous I/O, i.e., calls AIO_CHECK_EVENT
## in its sim_instr() instruction simulation loop:
USES_AIO
## Packaging "family" (group) to which the simulator belongs,
## for packagers that support grouping (Windows: NSIS .exe,
## WIX .msi; macOS)

View file

@ -140,6 +140,7 @@ add_simulator(infoserver100
VAX_411
FEATURE_FULL64
FEATURE_VIDEO
USES_AIO
BUILDROMS
LABEL VAX
PKG_FAMILY vax_family
@ -169,6 +170,7 @@ add_simulator(infoserver1000
VM_VAX
IS_1000
FEATURE_FULL64
USES_AIO
BUILDROMS
LABEL VAX
PKG_FAMILY vax_family
@ -186,6 +188,7 @@ add_simulator(infoserver150vxt
VAX_412
FEATURE_FULL64
FEATURE_VIDEO
USES_AIO
BUILDROMS
LABEL VAX
PKG_FAMILY vax_family
@ -230,6 +233,7 @@ add_simulator(microvax1
VAX_610
FEATURE_FULL64
FEATURE_VIDEO
USES_AIO
BUILDROMS
LABEL VAX
PKG_FAMILY vax_family
@ -246,6 +250,7 @@ add_simulator(microvax2
VAX_630
FEATURE_FULL64
FEATURE_VIDEO
USES_AIO
BUILDROMS
LABEL VAX
PKG_FAMILY vax_family
@ -283,6 +288,7 @@ add_simulator(microvax2000
VAX_410
FEATURE_FULL64
FEATURE_VIDEO
USES_AIO
BUILDROMS
LABEL VAX
PKG_FAMILY vax_family
@ -300,6 +306,7 @@ add_simulator(microvax3100
VAX_41A
FEATURE_FULL64
FEATURE_VIDEO
USES_AIO
BUILDROMS
LABEL VAX
PKG_FAMILY vax_family
@ -317,6 +324,7 @@ add_simulator(microvax3100e
VAX_41D
FEATURE_FULL64
FEATURE_VIDEO
USES_AIO
BUILDROMS
LABEL VAX
PKG_FAMILY vax_family
@ -332,6 +340,7 @@ add_simulator(microvax3100m80
VAX_440
VAX_47
FEATURE_FULL64
USES_AIO
BUILDROMS
LABEL VAX
PKG_FAMILY vax_family
@ -362,6 +371,7 @@ add_simulator(vax
VM_VAX
FEATURE_FULL64
FEATURE_VIDEO
USES_AIO
BUILDROMS
LABEL VAX
PKG_FAMILY vax_family
@ -435,6 +445,7 @@ add_simulator(vax730
VM_VAX
VAX_730
FEATURE_FULL64
USES_AIO
BUILDROMS
LABEL VAX
PKG_FAMILY vax_family
@ -485,6 +496,7 @@ add_simulator(vax750
VM_VAX
VAX_750
FEATURE_FULL64
USES_AIO
BUILDROMS
LABEL VAX
PKG_FAMILY vax_family
@ -536,6 +548,7 @@ add_simulator(vax780
VM_VAX
VAX_780
FEATURE_FULL64
USES_AIO
BUILDROMS
LABEL VAX
PKG_FAMILY vax_family
@ -584,6 +597,7 @@ add_simulator(vax8200
VM_VAX
VAX_820
FEATURE_FULL64
USES_AIO
BUILDROMS
LABEL VAX
PKG_FAMILY vax_family
@ -633,6 +647,7 @@ add_simulator(vax8600
VM_VAX
VAX_860
FEATURE_FULL64
USES_AIO
BUILDROMS
LABEL VAX
PKG_FAMILY vax_family
@ -650,6 +665,7 @@ add_simulator(vaxstation3100m30
VAX_42A
FEATURE_FULL64
FEATURE_VIDEO
USES_AIO
BUILDROMS
LABEL VAX
PKG_FAMILY vax_family
@ -667,6 +683,7 @@ add_simulator(vaxstation3100m38
VAX_42B
FEATURE_FULL64
FEATURE_VIDEO
USES_AIO
BUILDROMS
LABEL VAX
PKG_FAMILY vax_family
@ -702,6 +719,7 @@ add_simulator(vaxstation3100m76
VAX_43
FEATURE_FULL64
FEATURE_VIDEO
USES_AIO
BUILDROMS
LABEL VAX
PKG_FAMILY vax_family
@ -717,6 +735,7 @@ add_simulator(vaxstation4000m60
VAX_440
VAX_46
FEATURE_FULL64
USES_AIO
BUILDROMS
LABEL VAX
PKG_FAMILY vax_family
@ -732,6 +751,7 @@ add_simulator(vaxstation4000vlc
VAX_440
VAX_48
FEATURE_FULL64
USES_AIO
BUILDROMS
LABEL VAX
PKG_FAMILY vax_family

View file

@ -42,36 +42,44 @@ set(SIM_VIDEO_SOURCES
${CMAKE_SOURCE_DIR}/display/display.c
${CMAKE_SOURCE_DIR}/display/sim_ws.c)
## Build a simulator core library, with and without AIO support. The AIO variant
## has "_aio" appended to its name, e.g., "simhz64_aio" or "simhz64_video_aio".
function(build_simcore _targ)
cmake_parse_arguments(SIMH "VIDEO;INT64;ADDR64;BESM6_SDL_HACK" "" "" ${ARGN})
# Additional library targets that depend on simulator I/O:
add_library(${_targ} STATIC ${SIM_SOURCES})
set(sim_aio_lib "${_targ}_aio")
add_library(${sim_aio_lib} STATIC ${SIM_SOURCES})
# Components that need to be turned on while building the library, but
# don't export out to the dependencies (hence PRIVATE.)
set_target_properties(${_targ} PROPERTIES
foreach (lib IN ITEMS "${_targ}" "${sim_aio_lib}")
set_target_properties(${lib} PROPERTIES
C_STANDARD 99
EXCLUDE_FROM_ALL True
)
target_compile_definitions(${_targ} PRIVATE USE_SIM_CARD USE_SIM_IMD)
target_compile_options(${_targ} PRIVATE ${EXTRA_TARGET_CFLAGS})
target_link_options(${_targ} PRIVATE ${EXTRA_TARGET_LFLAGS})
target_compile_definitions(${lib} PRIVATE USE_SIM_CARD USE_SIM_IMD)
target_compile_options(${lib} PRIVATE ${EXTRA_TARGET_CFLAGS})
target_link_options(${lib} PRIVATE ${EXTRA_TARGET_LFLAGS})
# Make sure that the top-level directory is part of the libary's include path:
target_include_directories("${_targ}" PUBLIC "${CMAKE_SOURCE_DIR}")
target_include_directories("${lib}" PUBLIC "${CMAKE_SOURCE_DIR}")
if (SIMH_INT64)
target_compile_definitions(${_targ} PUBLIC USE_INT64)
target_compile_definitions(${lib} PUBLIC USE_INT64)
endif (SIMH_INT64)
if (SIMH_ADDR64)
target_compile_definitions(${_targ} PUBLIC USE_ADDR64)
target_compile_definitions(${lib} PUBLIC USE_ADDR64)
endif (SIMH_ADDR64)
if (SIMH_VIDEO)
if (WITH_VIDEO)
# It's the video library
target_sources(${_targ} PRIVATE ${SIM_VIDEO_SOURCES})
target_link_libraries(${_targ} PUBLIC simh_video)
target_sources(${lib} PRIVATE ${SIM_VIDEO_SOURCES})
target_link_libraries(${lib} PUBLIC simh_video)
endif ()
if (CMAKE_HOST_APPLE AND NOT SIMH_BESM6_SDL_HACK)
## (a) The BESM6 SDL hack is temporary. If SDL_MAIN_AVAILABLE needs
@ -80,29 +88,32 @@ function(build_simcore _targ)
## the makefile filters out SDL_MAIN_AVAILABLE on macOS.
## (c) This shouldn't be just an Apple platform quirk; SDL_main should
## be used by all platforms. <sigh!>
target_compile_definitions("${_targ}" PUBLIC SDL_MAIN_AVAILABLE)
target_compile_definitions("${lib}" PUBLIC SDL_MAIN_AVAILABLE)
endif ()
endif ()
target_link_libraries(${_targ} PUBLIC
# Define SIM_BUILD_TOOL for the simulator'
target_compile_definitions("${lib}" PRIVATE
"SIM_BUILD_TOOL=CMake (${CMAKE_GENERATOR})"
)
target_link_libraries(${lib} PUBLIC
simh_network
simh_regexp
os_features
thread_lib
)
# Define SIM_BUILD_TOOL for the simulator'
target_compile_definitions("${_targ}" PRIVATE
"SIM_BUILD_TOOL=CMake (${CMAKE_GENERATOR})"
)
# Ensure that sim_rev.h picks up .git-commit-id.h if the git command is
# available.
if (GIT_COMMAND)
target_compile_definitions("${_targ}" PRIVATE SIM_NEED_GIT_COMMIT_ID)
target_compile_definitions("${lib}" PRIVATE SIM_NEED_GIT_COMMIT_ID)
endif ()
add_dependencies(${_targ} update_sim_commit)
add_dependencies(${lib} update_sim_commit)
endforeach ()
target_compile_definitions(${sim_aio_lib} PUBLIC ${AIO_FLAGS})
# Create target cppcheck rule, if detected.
if (ENABLE_CPPCHECK AND cppcheck_cmd)
@ -142,6 +153,7 @@ list(APPEND ADD_SIMULATOR_OPTIONS
"FEATURE_DISPLAY"
"NO_INSTALL"
"BESM6_SDL_HACK"
"USES_AIO"
)
## TEST: The test script name that will be executed by the simulator within CTest.
@ -172,6 +184,12 @@ function (simh_executable_template _targ)
message(FATAL_ERROR "${_targ}: No source files?")
endif (NOT DEFINED SIMH_SOURCES)
if (SIMH_USES_AIO AND NOT WITH_ASYNC)
message(WARNING
"!!! ${_targ}: Asynchronous I/O not enabled, but this simulator specifies USES_AIO\n"
"!!! Some features will be crippled, notably networking.")
endif ()
add_executable("${_targ}" "${SIMH_SOURCES}")
set_target_properties(${_targ} PROPERTIES
C_STANDARD 99
@ -227,6 +245,11 @@ function (simh_executable_template _targ)
endif ()
endif ()
# Uses AIO...
if (SIMH_USES_AIO)
set(SIMH_SIMLIB "${SIMH_SIMLIB}_aio")
endif()
target_link_libraries("${_targ}" PUBLIC "${SIMH_SIMLIB}")
endfunction ()

View file

@ -74,10 +74,13 @@ param (
## ------------------
## vs2022 Visual Studio 2022 (default)
## vs2022-xp Visual Studio 2022 XP compat
## vs2022-x64 Visual Studio 2022 64-bit
## vs2019 Visual Studio 2019
## vs2019-xp Visual Studio 2019 XP compat
## vs2019-x64 Visual Studio 2019 64-bit
## vs2017 Visual Studio 2017
## vs2017-xp Visual Studio 2017 XP compat
## vs2017-x64 Visual Studio 2017 64-bit
## vs2015 Visual Studio 2015
## mingw-make MinGW GCC/mingw32-make
## mingw-ninja MinGW GCC/ninja
@ -115,6 +118,15 @@ param (
[Parameter(Mandatory=$false)]
[switch] $novideo = $false,
## Compile the SIMH simulator without AIO support.
[Parameter(Mandatory=$false)]
[switch] $noaio = $false,
## Compile the SIMH simulator without AIO instrinsics ("lock-free" AIO),
## using lock-based AIO via thread mutexes instead.
[Parameter(Mandatory=$false)]
[switch] $noaiointrinsics = $false,
## Disable the build's tests.
[Parameter(Mandatory=$false)]
[switch] $notest = $false,
@ -196,10 +208,13 @@ $singleConfig = $true
$cmakeGenMap = @{
"vs2022" = [GeneratorInfo]::new("Visual Studio 17 2022", $multiConfig, $false, "", @("-A", "Win32"));
"vs2022-xp" = [GeneratorInfo]::new("Visual Studio 17 2022", $multiConfig, $false, "", @("-A", "Win32", "-T", "v141_xp"));
"vs2022-x64" = [GeneratorInfo]::new("Visual Studio 17 2022", $multiConfig, $false, "", @("-A", "x64", "-T", "host=x64"));
"vs2019" = [GeneratorInfo]::new("Visual Studio 16 2019", $multiConfig, $false, "", @("-A", "Win32"));
"vs2019-xp" = [GeneratorInfo]::new("Visual Studio 16 2019", $multiConfig, $false, "", @("-A", "Win32", "-T", "v141_xp"));
"vs2019-x64" = [GeneratorInfo]::new("Visual Studio 17 2022", $multiConfig, $false, "", @("-A", "x64", "-T", "host=x64"));
"vs2017" = [GeneratorInfo]::new("Visual Studio 15 2017", $multiConfig, $false, "", @("-A", "Win32"));
"vs2017-xp" = [GeneratorInfo]::new("Visual Studio 15 2017", $multiConfig, $false, "", @("-A", "Win32", "-T", "v141_xp"));
"vs2017-x64" = [GeneratorInfo]::new("Visual Studio 17 2022", $multiConfig, $false, "", @("-A", "x64", "-T", "host=x64"));
"vs2015" = [GeneratorInfo]::new("Visual Studio 14 2015", $multiConfig, $false, "", @());
"mingw-make" = [GeneratorInfo]::new("MinGW Makefiles", $singleConfig, $false, "", @());
"mingw-ninja" = [GeneratorInfo]::new("Ninja", $singleConfig, $false, "", @())
@ -411,6 +426,14 @@ if (($scriptPhases -contains "generate") -or ($scriptPhases -contains "build"))
{
$generateArgs += @("-DWITH_VIDEO:Bool=Off")
}
if ($noaio)
{
$generateArgs += @("-DWITH_ASYNC:Bool=Off")
}
if ($noaiointrinsics)
{
$generateArgs += @("-DDONT_USE_AIO_INTRINSICS:Bool=On")
}
if ($lto)
{
$generateArgs += @("-DRELEASE_LTO:Bool=On")

View file

@ -7,23 +7,18 @@ showHelp()
cat <<EOF
Configure and build simh simulators on Linux and *nix-like platforms.
Subdirectories:
cmake/build-unix: Makefile-based build simulators
cmake/build-ninja: Ninja build-based simulators
Options:
--------
-Compile/Build options:
-----------------------
--clean (-x) Remove the build subdirectory
--generate (-g) Generate the build environment, don't compile/build
--cache '--generate' and show CMake's variable cache
--parallel (-p) Enable build parallelism (parallel builds)
--nonetwork Build simulators without network support
--novideo Build simulators without video support
--notest Do not execute 'ctest' test cases
--noinstall Do not install SIMH simulators.
--testonly Do not build, execute the 'ctest' test cases
--installonly Do not build, install the SIMH simulators
--flavor (-f) Specifies the build flavor. Valid flavors are:
--flavor (-f) [Required] Specifies the build flavor. Valid flavors are:
unix
ninja
xcode
@ -46,6 +41,19 @@ Options:
--verbose Turn on verbose build output
SIMH feature control options:
-----------------------------
--nonetwork Build simulators without network support
--novideo Build simulators without video support
--no-aio Build simulators without AIO (asynchronous I/O). NOTE: This will
impact certain devices' functionality, notably networking.
--no-aio-intrinsics
Do not use compiler/platform intrinsics to implement AIO
functions (aka "lock-free" AIO), reverts to lock-based AIO
if threading libraries are detected.
Other options:
--------------
--help (-h) Print this help.
EOF
@ -57,8 +65,8 @@ generateArgs=
buildArgs=
buildPostArgs=""
buildClean=
buildFlavor="Unix Makefiles"
buildSubdir=build-unix
buildFlavor=
buildSubdir=
buildConfig=Release
testArgs=
notest=no
@ -152,6 +160,7 @@ fi
longopts=clean,help,flavor:,config:,nonetwork,novideo,notest,parallel,generate,testonly
longopts=${longopts},noinstall,installonly,verbose,target:,lto,debugWall,cppcheck,cpack_suffix:
longopts=${longopts},cache,no-aio,no-aio-intrinsics
ARGS=$(${getopt_prog} --longoptions $longopts --options xhf:c:pg -- "$@")
if [ $? -ne 0 ] ; then
@ -219,6 +228,14 @@ while true; do
generateArgs="${generateArgs} -DWITH_VIDEO:Bool=Off"
shift
;;
--no-aio)
generateArgs="${generateArgs} -DWITH_ASYNC:Bool=Off"
shift
;;
--no-aio-intrinsics)
generateArgs="${generateArgs} -DDONT_USE_AIO_INTRINSICS:Bool=On"
shift
;;
--notest)
notest=yes
shift
@ -251,6 +268,11 @@ while true; do
generateOnly=yes
shift
;;
--cache)
generateOnly=yes
generateArgs="${generateArgs} -LA"
shift
;;
--testonly)
testOnly=yes
shift
@ -276,6 +298,14 @@ while true; do
esac
done
# Sanity check: buildSubdir should be set, unless the '-f' flag wasn't present.
if [ "x${buildSubdir}" = x ]; then
echo ""
echo "${scriptName}: Build flavor is NOT SET -- see the \"--flavor\"/\"-f\" flag in the help."
echo ""
showHelp
fi
## Determine the SIMH top-level source directory:
simhTopDir=$(${dirname} $(${realpath} $0))
while [ "x${simhTopDir}" != x -a ! -f "${simhTopDir}/CMakeLists.txt" ]; do
@ -296,6 +326,7 @@ if [[ x"$buildClean" != x ]]; then
echo "${scriptName}: Cleaning ${buildSubdir}"
rm -rf ${buildSubdir}
fi
if [[ ! -d ${buildSubdir} ]]; then
mkdir ${buildSubdir}
fi

View file

@ -20,7 +20,14 @@ get_target_property(_aliased ${_targ} ALIASED_TARGET)
set(fixed_libs)
get_property(orig_libs TARGET ${_targ} PROPERTY INTERFACE_LINK_LIBRARIES)
foreach(each_lib IN LISTS ${_lib})
get_filename_component(stripped_lib "${each_lib}" DIRECTORY)
if (stripped_lib)
string(STRIP ${each_lib} stripped_lib)
file(TO_CMAKE_PATH "${stripped_lib}" stripped_lib)
if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.19")
file(REAL_PATH "${stripped_lib}" stripped_lib)
endif ()
endif ()
list(APPEND fixed_libs ${stripped_lib})
message("** \"${each_lib}\" -> \"${stripped_lib}\"")
endforeach ()
@ -33,7 +40,14 @@ endfunction ()
function (fix_libraries _lib)
set(fixed_libs)
foreach(each_lib IN LISTS ${_lib})
string(STRIP ${each_lib} stripped_lib)
get_filename_component(stripped_lib "${each_lib}" DIRECTORY)
if (stripped_lib)
string(STRIP ${stripped_lib} stripped_lib)
file(TO_CMAKE_PATH "${stripped_lib}" stripped_lib)
if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.19")
file(REAL_PATH "${stripped_lib}" stripped_lib)
endif ()
endif ()
list(APPEND fixed_libs ${stripped_lib})
endforeach ()
set(${_lib} ${fixed_libs} PARENT_SCOPE)
@ -48,6 +62,11 @@ IF (WITH_VIDEO)
foreach (lname ${FREETYPE_LIBRARIES} ${FREETYPE_LIBRARY} ${HARFBUZZ_LIBRARIES} ${HARFBUZZ_LIBRARY})
get_filename_component(dirname "${lname}" DIRECTORY)
if (dirname)
string(STRIP ${dirname} dirname)
file(TO_CMAKE_PATH "${dirname}" dirname)
if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.19")
file(REAL_PATH "${dirname}" dirname)
endif ()
list(APPEND ldirs ${dirname})
endif()
endforeach ()
@ -128,6 +147,8 @@ IF (WITH_VIDEO)
ENDIF ()
IF (PNG_FOUND)
target_compile_definitions(simh_video INTERFACE HAVE_LIBPNG)
if (TARGET PNG::PNG)
target_link_libraries(simh_video INTERFACE PNG::PNG)
list(APPEND VIDEO_PKG_STATUS "interface PNG")

View file

@ -6,8 +6,6 @@
set(GIT_COMMIT_ID ${GIT_COMMIT_DEST}/.git-commit-id)
set(GIT_COMMIT_ID_H ${GIT_COMMIT_DEST}/.git-commit-id.h)
message(STATUS "Updating GIT commit ID")
find_program(GIT_COMMAND git)
if (GIT_COMMAND)
execute_process(COMMAND ${GIT_COMMAND} "log" "-1" "--pretty=%H"
@ -32,15 +30,12 @@ if (GIT_COMMAND AND NOT (HAVE_GIT_COMMIT_HASH OR HAVE_GIT_COMMIT_TIME))
string(REPLACE "T" " " SIMH_GIT_COMMIT_TIME ${SIMH_GIT_COMMIT_TIME})
if (HAVE_UNCOMMITTED_CHANGES)
message(STATUS "Git detected uncommitted changes.")
## message(STATUS "Git detected uncommitted changes.")
string(APPEND SIMH_GIT_COMMIT_HASH "+uncommitted-changes")
else ()
message(STATUS "Clean working directory, no uncommitted changes.")
endif ()
message(STATUS "SIM_GIT_COMMIT_ID: ${SIMH_GIT_COMMIT_HASH}")
message(STATUS "SIM_GIT_COMMIT_TIME: ${SIMH_GIT_COMMIT_TIME}")
set(WRITE_GIT_COMMIT_FILES True)
if (EXISTS ${GIT_COMMIT_ID})
set(EXISTING_GIT_COMMIT_HASH)
@ -55,12 +50,16 @@ if (GIT_COMMAND AND NOT (HAVE_GIT_COMMIT_HASH OR HAVE_GIT_COMMIT_TIME))
endforeach()
if (EXISTING_GIT_COMMIT_HASH STREQUAL SIMH_GIT_COMMIT_HASH AND
EXISTING_GIT_COMMIT_TIME STREQUAL SIMH_GIT_COMMIT_TIME)
message(STATUS "GIT hash and time match, not writing files.")
## message(STATUS "GIT hash and time match, not writing files.")
set(WRITE_GIT_COMMIT_FILES False)
endif ()
endif ()
if (WRITE_GIT_COMMIT_FILES)
message(STATUS "Updating GIT commit ID")
message(STATUS "SIM_GIT_COMMIT_ID: ${SIMH_GIT_COMMIT_HASH}")
message(STATUS "SIM_GIT_COMMIT_TIME: ${SIMH_GIT_COMMIT_TIME}")
message(STATUS "Writing ${GIT_COMMIT_ID}")
file(WRITE ${GIT_COMMIT_ID}
"SIM_GIT_COMMIT_ID ${SIMH_GIT_COMMIT_HASH}\n"
@ -70,9 +69,9 @@ if (GIT_COMMAND AND NOT (HAVE_GIT_COMMIT_HASH OR HAVE_GIT_COMMIT_TIME))
file(WRITE ${GIT_COMMIT_ID_H}
"#define SIM_GIT_COMMIT_ID ${SIMH_GIT_COMMIT_HASH}\n"
"#define SIM_GIT_COMMIT_TIME ${SIMH_GIT_COMMIT_TIME}\n")
else ()
message(STATUS "No changes to ${GIT_COMMIT_ID}")
message(STATUS "No changes to ${GIT_COMMIT_ID_H}")
## else ()
## message(STATUS "No changes to ${GIT_COMMIT_ID}")
## message(STATUS "No changes to ${GIT_COMMIT_ID_H}")
endif ()
else ()
message(STATUS "SIM_GIT_COMMIT_ID not set.")

View file

@ -7,6 +7,7 @@
#~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=
add_library(thread_lib INTERFACE)
set(AIO_FLAGS)
if (WITH_ASYNC)
include(ExternalProject)
@ -64,12 +65,12 @@ if (WITH_ASYNC)
set(THREADING_PKG_STATUS "Platform-detected threading support")
endif ()
if (THREADS_FOUND OR PTW_FOUND)
target_compile_definitions(thread_lib INTERFACE USE_READER_THREAD SIM_ASYNCH_IO)
if (THREADS_FOUND OR PTW_FOUND OR PThreads4W_FOUND)
set(AIO_FLAGS USE_READER_THREAD SIM_ASYNCH_IO)
else ()
target_compile_definitions(thread_lib INTERFACE DONT_USE_READER_THREAD)
set(AIO_FLAGS DONT_USE_READER_THREAD)
endif ()
else (WITH_ASYNC)
else()
target_compile_definitions(thread_lib INTERFACE DONT_USE_READER_THREAD)
set(THREADING_PKG_STATUS "asynchronous I/O disabled.")
endif (WITH_ASYNC)
endif()

View file

@ -20,6 +20,8 @@ class SIMHBasicSimulator:
self.uses_video = False
## self.besm6_sdl_hack -> Only set/used by the BESM6 simulator.
self.besm6_sdl_hack = False
## self.uses_aio -> True if the simulator uses AIO
self.uses_aio = False
self.sources = []
self.defines = []
self.includes = []
@ -47,12 +49,9 @@ class SIMHBasicSimulator:
if use_int64 or use_addr64:
self.int64 = use_int64 and not use_addr64
self.full64 = use_int64 and use_addr64
for defn in ['USE_INT64', 'USE_ADDR64']:
try:
self.defines.remove('USE_INT64')
except:
pass
try:
self.defines.remove('USE_ADDR64')
self.defines.remove(defn)
except:
pass
@ -60,14 +59,23 @@ class SIMHBasicSimulator:
self.has_display = any(map(lambda s: 'DISPLAY' in SPM.shallow_expand_vars(s, defs), self.sources))
if self.has_display:
for src in ['${DISPLAYL}', '$(DISPLAYL)']:
try:
self.sources.remove('${DISPLAYL}')
self.sources.remove('$(DISPLAYL)')
self.sources.remove(src)
except:
pass
self.uses_video = 'USE_SIM_VIDEO' in self.defines or self.has_display
## AIO support:
self.uses_aio = 'SIM_ASYNCH_IO' in self.defines
if self.uses_aio:
for defn in ['SIM_ASYNCH_IO', 'USE_READER_THREAD']:
try:
self.defines.remove(defn)
except:
pass
def cleanup_defines(self):
"""Remove command line defines that aren't needed (because the CMake interface libraries
already define them.)
@ -118,6 +126,8 @@ class SIMHBasicSimulator:
stream.write('\n' + indent4 + "FEATURE_DISPLAY")
if self.besm6_sdl_hack:
stream.write('\n' + indent4 + "BESM6_SDL_HACK")
if self.uses_aio:
stream.write('\n' + indent4 + "USES_AIO")
if self.buildrom:
stream.write('\n' + indent4 + "BUILDROMS")
stream.write('\n' + indent4 + "LABEL " + test_label)

View file

@ -16,12 +16,12 @@ if (NOT DEFINED VCPKG_TARGET_TRIPLET)
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
## Default to x64, unless otherwise directed:
set(SIMH_VCPKG_ARCH "x64")
if(CMAKE_GENERATOR_PLATFORM MATCHES "Win32")
if(CMAKE_GENERATOR_PLATFORM MATCHES "[Ww][Ii][Nn]32")
set(SIMH_VCPKG_ARCH "x86")
elseif(CMAKE_GENERATOR_PLATFORM MATCHES "ARM")
set(SIMH_VCPKG_ARCH "arm")
elseif(CMAKE_GENERATOR_PLATFORM MATCHES "ARM64")
elseif(CMAKE_GENERATOR_PLATFORM MATCHES "[Aa][Rr][Mm]64")
set(SIMH_VCPKG_ARCH "arm64")
elseif(CMAKE_GENERATOR_PLATFORM MATCHES "[Aa][Rr][Mm]")
set(SIMH_VCPKG_ARCH "arm")
endif()
if (MSVC OR CMAKE_C_COMPILER_ID MATCHES ".*Clang")
@ -79,8 +79,10 @@ message(STATUS "Executing deferred vcpkg toolchain initialization.\n"
## Initialize vcpkg after CMake detects the compiler and we've to set the platform triplet.
## VCPKG_INSTALL_OPTIONS are additional args to 'vcpkg install'. Don't need to see the
## usage instructions each time...
list(APPEND VCPKG_INSTALL_OPTIONS
if (NOT ("--no-print-usage" IN_LIST VCPKG_INSTALL_OPTIONS))
list(APPEND VCPKG_INSTALL_OPTIONS
"--no-print-usage"
)
)
endif ()
include(${SIMH_CMAKE_TOOLCHAIN_FILE})

View file

@ -28,6 +28,7 @@ add_simulator(imlac
${CMAKE_CURRENT_SOURCE_DIR}
FEATURE_VIDEO
FEATURE_DISPLAY
USES_AIO
LABEL imlac
PKG_FAMILY imlac_family
TEST imlac)

View file

@ -98,10 +98,14 @@
#
# CC Command (and platform available options). (Poor man's autoconf)
#
OS_CCDEFS=
AIO_CCDEFS=
ifneq (,${GREP_OPTIONS})
$(info GREP_OPTIONS is defined in your environment.)
$(info )
$(info This variable interfers with the proper operation of this script.)
$(info This variable interferes with the proper operation of this script.)
$(info )
$(info The GREP_OPTIONS environment variable feature of grep is deprecated)
$(info for exactly this reason and will be removed from future versions of)
@ -361,7 +365,8 @@ ifeq (${WIN32},) #*nix Environments (&& cygwin)
LTO_EXCLUDE_VERSIONS =
PCAPLIB = pcap
ifeq (agcc,$(findstring agcc,${GCC})) # Android target build?
OS_CCDEFS += -D_GNU_SOURCE -DSIM_ASYNCH_IO
OS_CCDEFS += -D_GNU_SOURCE
AIO_CCDEFS += -DSIM_ASYNCH_IO
OS_LDFLAGS = -lm
else # Non-Android (or Native Android) Builds
ifeq (,$(INCLUDES)$(LIBRARIES))
@ -573,23 +578,23 @@ ifeq (${WIN32},) #*nix Environments (&& cygwin)
endif
ifneq (,$(call find_include,pthread))
ifneq (,$(call find_lib,pthread))
OS_CCDEFS += -DUSE_READER_THREAD -DSIM_ASYNCH_IO
AIO_CCDEFS += -DUSE_READER_THREAD -DSIM_ASYNCH_IO
OS_LDFLAGS += -lpthread
$(info using libpthread: $(call find_lib,pthread) $(call find_include,pthread))
else
LIBEXTSAVE := ${LIBEXT}
LIBEXT = a
ifneq (,$(call find_lib,pthread))
OS_CCDEFS += -DUSE_READER_THREAD -DSIM_ASYNCH_IO
AIO_CCDEFS += -DUSE_READER_THREAD -DSIM_ASYNCH_IO
OS_LDFLAGS += -lpthread
$(info using libpthread: $(call find_lib,pthread) $(call find_include,pthread))
else
ifneq (,$(findstring Haiku,$(OSTYPE)))
OS_CCDEFS += -DUSE_READER_THREAD -DSIM_ASYNCH_IO
AIO_CCDEFS += -DUSE_READER_THREAD -DSIM_ASYNCH_IO
$(info using libpthread: $(call find_include,pthread))
else
ifeq (Darwin,$(OSTYPE))
OS_CCDEFS += -DUSE_READER_THREAD -DSIM_ASYNCH_IO
AIO_CCDEFS += -DUSE_READER_THREAD -DSIM_ASYNCH_IO
OS_LDFLAGS += -lpthread
$(info using macOS libpthread: $(call find_include,pthread))
endif
@ -1131,11 +1136,13 @@ else
$(info include paths are: ${INCPATH})
# Give preference to any MinGW provided threading (if available)
ifneq (,$(call find_include,pthread))
PTHREADS_CCDEFS = -DUSE_READER_THREAD -DSIM_ASYNCH_IO
PTHREADS_CCDEFS =
AIO_CCDEFS = -DUSE_READER_THREAD -DSIM_ASYNCH_IO
PTHREADS_LDFLAGS = -lpthread
else
ifeq (pthreads,$(shell if exist ..\windows-build\pthreads\Pre-built.2\include\pthread.h echo pthreads))
PTHREADS_CCDEFS = -DUSE_READER_THREAD -DPTW32_STATIC_LIB -D_POSIX_C_SOURCE -I../windows-build/pthreads/Pre-built.2/include -DSIM_ASYNCH_IO
PTHREADS_CCDEFS = -DPTW32_STATIC_LIB -D_POSIX_C_SOURCE -I../windows-build/pthreads/Pre-built.2/include
AIO_CCDEFS = -DUSE_READER_THREAD -DSIM_ASYNCH_IO
PTHREADS_LDFLAGS = -lpthreadGC2 -L..\windows-build\pthreads\Pre-built.2\lib
endif
endif
@ -1495,7 +1502,7 @@ PDP11 = ${PDP11D}/pdp11_fp.c ${PDP11D}/pdp11_cpu.c ${PDP11D}/pdp11_dz.c \
${PDP11D}/pdp11_ng.c ${PDP11D}/pdp11_daz.c ${PDP11D}/pdp11_tv.c \
${PDP11D}/pdp11_mb.c ${PDP11D}/pdp11_rr.c \
${DISPLAYL} ${DISPLAYNG} ${DISPLAYVT}
PDP11_OPT = -DVM_PDP11 -I ${PDP11D} ${NETWORK_OPT} ${DISPLAY_OPT}
PDP11_OPT = -DVM_PDP11 -I ${PDP11D} ${NETWORK_OPT} ${DISPLAY_OPT} ${AIO_CCDEFS}
UC15D = ${SIMHD}/PDP11
@ -1519,7 +1526,7 @@ VAX = ${VAXD}/vax_cpu.c ${VAXD}/vax_cpu1.c ${VAXD}/vax_fpa.c ${VAXD}/vax_io.c \
${PDP11D}/pdp11_dz.c ${PDP11D}/pdp11_lp.c ${PDP11D}/pdp11_tq.c \
${PDP11D}/pdp11_xq.c ${PDP11D}/pdp11_vh.c ${PDP11D}/pdp11_cr.c \
${PDP11D}/pdp11_td.c ${PDP11D}/pdp11_io_lib.c ${PDP11D}/pdp11_dup.c
VAX_OPT = -DVM_VAX -DUSE_INT64 -DUSE_ADDR64 -DUSE_SIM_VIDEO -I ${VAXD} -I ${PDP11D} ${NETWORK_OPT} ${VIDEO_CCDEFS} ${VIDEO_LDFLAGS}
VAX_OPT = -DVM_VAX -DUSE_INT64 -DUSE_ADDR64 -DUSE_SIM_VIDEO -I ${VAXD} -I ${PDP11D} ${NETWORK_OPT} ${VIDEO_CCDEFS} ${VIDEO_LDFLAGS} ${AIO_CCDEFS}
VAX410 = ${VAXD}/vax_cpu.c ${VAXD}/vax_cpu1.c ${VAXD}/vax_fpa.c \
@ -1530,7 +1537,7 @@ VAX410 = ${VAXD}/vax_cpu.c ${VAXD}/vax_cpu1.c ${VAXD}/vax_fpa.c \
${VAXD}/vax4xx_rd.c ${VAXD}/vax4xx_rz80.c ${VAXD}/vax_xs.c \
${VAXD}/vax4xx_va.c ${VAXD}/vax4xx_vc.c ${VAXD}/vax_lk.c \
${VAXD}/vax_vs.c ${VAXD}/vax_gpx.c
VAX410_OPT = -DVM_VAX -DVAX_410 -DUSE_INT64 -DUSE_ADDR64 -DUSE_SIM_VIDEO -I ${VAXD} ${NETWORK_OPT} ${VIDEO_CCDEFS} ${VIDEO_LDFLAGS}
VAX410_OPT = -DVM_VAX -DVAX_410 -DUSE_INT64 -DUSE_ADDR64 -DUSE_SIM_VIDEO -I ${VAXD} ${NETWORK_OPT} ${VIDEO_CCDEFS} ${VIDEO_LDFLAGS} ${AIO_CCDEFS}
VAX420 = ${VAXD}/vax_cpu.c ${VAXD}/vax_cpu1.c ${VAXD}/vax_fpa.c \
@ -1541,7 +1548,8 @@ VAX420 = ${VAXD}/vax_cpu.c ${VAXD}/vax_cpu1.c ${VAXD}/vax_fpa.c \
${VAXD}/vax4xx_rd.c ${VAXD}/vax4xx_rz80.c ${VAXD}/vax_xs.c \
${VAXD}/vax4xx_va.c ${VAXD}/vax4xx_vc.c ${VAXD}/vax4xx_ve.c \
${VAXD}/vax_lk.c ${VAXD}/vax_vs.c ${VAXD}/vax_gpx.c
VAX420_OPT = -DVM_VAX -DVAX_420 -DUSE_INT64 -DUSE_ADDR64 -DUSE_SIM_VIDEO -I ${VAXD} -I ${PDP11D} ${NETWORK_OPT} ${VIDEO_CCDEFS} ${VIDEO_LDFLAGS}
VAX420_OPT = -DVM_VAX -DVAX_420 -DUSE_INT64 -DUSE_ADDR64 -DUSE_SIM_VIDEO -I ${VAXD} -I ${PDP11D} ${NETWORK_OPT} ${VIDEO_CCDEFS} ${VIDEO_LDFLAGS} \
${AIO_CCDEFS}
VAX411_OPT = ${VAX420_OPT} -DVAX_411
VAX412_OPT = ${VAX420_OPT} -DVAX_412
VAX41A_OPT = ${VAX420_OPT} -DVAX_41A
@ -1557,7 +1565,7 @@ VAX43 = ${VAXD}/vax_cpu.c ${VAXD}/vax_cpu1.c ${VAXD}/vax_fpa.c \
${VAXD}/vax43_sysdev.c ${VAXD}/vax43_syslist.c ${VAXD}/vax4xx_dz.c \
${VAXD}/vax4xx_rz80.c ${VAXD}/vax_xs.c ${VAXD}/vax4xx_vc.c \
${VAXD}/vax4xx_ve.c ${VAXD}/vax_lk.c ${VAXD}/vax_vs.c
VAX43_OPT = -DVM_VAX -DVAX_43 -DUSE_INT64 -DUSE_ADDR64 -DUSE_SIM_VIDEO -I ${VAXD} ${NETWORK_OPT} ${VIDEO_CCDEFS} ${VIDEO_LDFLAGS}
VAX43_OPT = -DVM_VAX -DVAX_43 -DUSE_INT64 -DUSE_ADDR64 -DUSE_SIM_VIDEO -I ${VAXD} ${NETWORK_OPT} ${VIDEO_CCDEFS} ${VIDEO_LDFLAGS} ${AIO_CCDEFS}
VAX440 = ${VAXD}/vax_cpu.c ${VAXD}/vax_cpu1.c ${VAXD}/vax_fpa.c \
@ -1566,7 +1574,7 @@ VAX440 = ${VAXD}/vax_cpu.c ${VAXD}/vax_cpu1.c ${VAXD}/vax_fpa.c \
${VAXD}/vax_watch.c ${VAXD}/vax_nar.c ${VAXD}/vax4xx_stddev.c \
${VAXD}/vax440_sysdev.c ${VAXD}/vax440_syslist.c ${VAXD}/vax4xx_dz.c \
${VAXD}/vax_xs.c ${VAXD}/vax_lk.c ${VAXD}/vax_vs.c ${VAXD}/vax4xx_rz94.c
VAX440_OPT = -DVM_VAX -DVAX_440 -DUSE_INT64 -DUSE_ADDR64 -I ${VAXD} ${NETWORK_OPT}
VAX440_OPT = -DVM_VAX -DVAX_440 -DUSE_INT64 -DUSE_ADDR64 -I ${VAXD} ${NETWORK_OPT} ${AIO_CCDEFS}
VAX46_OPT = ${VAX440_OPT} -DVAX_46
VAX47_OPT = ${VAX440_OPT} -DVAX_47
VAX48_OPT = ${VAX440_OPT} -DVAX_48
@ -1578,7 +1586,7 @@ IS1000 = ${VAXD}/vax_cpu.c ${VAXD}/vax_cpu1.c ${VAXD}/vax_fpa.c \
${VAXD}/vax_watch.c ${VAXD}/vax_nar.c ${VAXD}/vax_xs.c \
${VAXD}/vax4xx_rz94.c ${VAXD}/vax4nn_stddev.c \
${VAXD}/is1000_sysdev.c ${VAXD}/is1000_syslist.c
IS1000_OPT = -DVM_VAX -DIS_1000 -DUSE_INT64 -DUSE_ADDR64 -I ${VAXD} ${NETWORK_OPT}
IS1000_OPT = -DVM_VAX -DIS_1000 -DUSE_INT64 -DUSE_ADDR64 -I ${VAXD} ${NETWORK_OPT} ${AIO_CCDEFS}
VAX610 = ${VAXD}/vax_cpu.c ${VAXD}/vax_cpu1.c ${VAXD}/vax_fpa.c \
@ -1591,7 +1599,8 @@ VAX610 = ${VAXD}/vax_cpu.c ${VAXD}/vax_cpu1.c ${VAXD}/vax_fpa.c \
${PDP11D}/pdp11_dz.c ${PDP11D}/pdp11_lp.c ${PDP11D}/pdp11_tq.c \
${PDP11D}/pdp11_xq.c ${PDP11D}/pdp11_vh.c ${PDP11D}/pdp11_cr.c \
${PDP11D}/pdp11_td.c ${PDP11D}/pdp11_io_lib.c
VAX610_OPT = -DVM_VAX -DVAX_610 -DUSE_INT64 -DUSE_ADDR64 -DUSE_SIM_VIDEO -I ${VAXD} -I ${PDP11D} ${NETWORK_OPT} ${VIDEO_CCDEFS} ${VIDEO_LDFLAGS}
VAX610_OPT = -DVM_VAX -DVAX_610 -DUSE_INT64 -DUSE_ADDR64 -DUSE_SIM_VIDEO -I ${VAXD} -I ${PDP11D} ${NETWORK_OPT} ${VIDEO_CCDEFS} ${VIDEO_LDFLAGS} \
${AIO_CCDEFS}
VAX630 = ${VAXD}/vax_cpu.c ${VAXD}/vax_cpu1.c ${VAXD}/vax_fpa.c \
@ -1606,7 +1615,8 @@ VAX630 = ${VAXD}/vax_cpu.c ${VAXD}/vax_cpu1.c ${VAXD}/vax_fpa.c \
${PDP11D}/pdp11_xq.c ${PDP11D}/pdp11_vh.c ${PDP11D}/pdp11_cr.c \
${PDP11D}/pdp11_td.c ${PDP11D}/pdp11_io_lib.c ${PDP11D}/pdp11_dup.c
VAX620_OPT = -DVM_VAX -DVAX_620 -DUSE_INT64 -DUSE_ADDR64 -I ${VAXD} -I ${PDP11D} ${NETWORK_OPT}
VAX630_OPT = -DVM_VAX -DVAX_630 -DUSE_INT64 -DUSE_ADDR64 -DUSE_SIM_VIDEO -I ${VAXD} -I ${PDP11D} ${NETWORK_OPT} ${VIDEO_CCDEFS} ${VIDEO_LDFLAGS}
VAX630_OPT = -DVM_VAX -DVAX_630 -DUSE_INT64 -DUSE_ADDR64 -DUSE_SIM_VIDEO -I ${VAXD} -I ${PDP11D} ${NETWORK_OPT} ${VIDEO_CCDEFS} ${VIDEO_LDFLAGS} \
${AIO_CCDEFS}
VAX730 = ${VAXD}/vax_cpu.c ${VAXD}/vax_cpu1.c ${VAXD}/vax_fpa.c \
@ -1621,7 +1631,7 @@ VAX730 = ${VAXD}/vax_cpu.c ${VAXD}/vax_cpu1.c ${VAXD}/vax_fpa.c \
${PDP11D}/pdp11_hk.c ${PDP11D}/pdp11_vh.c ${PDP11D}/pdp11_dmc.c \
${PDP11D}/pdp11_td.c ${PDP11D}/pdp11_tc.c ${PDP11D}/pdp11_rk.c \
${PDP11D}/pdp11_io_lib.c ${PDP11D}/pdp11_ch.c ${PDP11D}/pdp11_dup.c
VAX730_OPT = -DVM_VAX -DVAX_730 -DUSE_INT64 -DUSE_ADDR64 -I ${VAXD} -I ${PDP11D} ${NETWORK_OPT}
VAX730_OPT = -DVM_VAX -DVAX_730 -DUSE_INT64 -DUSE_ADDR64 -I ${VAXD} -I ${PDP11D} ${NETWORK_OPT} ${AIO_CCDEFS}
VAX750 = ${VAXD}/vax_cpu.c ${VAXD}/vax_cpu1.c ${VAXD}/vax_fpa.c \
@ -1637,7 +1647,7 @@ VAX750 = ${VAXD}/vax_cpu.c ${VAXD}/vax_cpu1.c ${VAXD}/vax_fpa.c \
${PDP11D}/pdp11_vh.c ${PDP11D}/pdp11_dmc.c ${PDP11D}/pdp11_dup.c \
${PDP11D}/pdp11_td.c ${PDP11D}/pdp11_tc.c ${PDP11D}/pdp11_rk.c \
${PDP11D}/pdp11_io_lib.c ${PDP11D}/pdp11_ch.c
VAX750_OPT = -DVM_VAX -DVAX_750 -DUSE_INT64 -DUSE_ADDR64 -I ${VAXD} -I ${PDP11D} ${NETWORK_OPT}
VAX750_OPT = -DVM_VAX -DVAX_750 -DUSE_INT64 -DUSE_ADDR64 -I ${VAXD} -I ${PDP11D} ${NETWORK_OPT} ${AIO_CCDEFS}
VAX780 = ${VAXD}/vax_cpu.c ${VAXD}/vax_cpu1.c ${VAXD}/vax_fpa.c \
@ -1653,7 +1663,7 @@ VAX780 = ${VAXD}/vax_cpu.c ${VAXD}/vax_cpu1.c ${VAXD}/vax_fpa.c \
${PDP11D}/pdp11_vh.c ${PDP11D}/pdp11_dmc.c ${PDP11D}/pdp11_dup.c \
${PDP11D}/pdp11_td.c ${PDP11D}/pdp11_tc.c ${PDP11D}/pdp11_rk.c \
${PDP11D}/pdp11_io_lib.c ${PDP11D}/pdp11_ch.c
VAX780_OPT = -DVM_VAX -DVAX_780 -DUSE_INT64 -DUSE_ADDR64 -I ${VAXD} -I ${PDP11D} ${NETWORK_OPT}
VAX780_OPT = -DVM_VAX -DVAX_780 -DUSE_INT64 -DUSE_ADDR64 -I ${VAXD} -I ${PDP11D} ${NETWORK_OPT} ${AIO_CCDEFS}
VAX8200 = ${VAXD}/vax_cpu.c ${VAXD}/vax_cpu1.c ${VAXD}/vax_fpa.c \
@ -1668,7 +1678,7 @@ VAX8200 = ${VAXD}/vax_cpu.c ${VAXD}/vax_cpu1.c ${VAXD}/vax_fpa.c \
${PDP11D}/pdp11_hk.c ${PDP11D}/pdp11_vh.c ${PDP11D}/pdp11_dmc.c \
${PDP11D}/pdp11_td.c ${PDP11D}/pdp11_tc.c ${PDP11D}/pdp11_rk.c \
${PDP11D}/pdp11_io_lib.c ${PDP11D}/pdp11_ch.c ${PDP11D}/pdp11_dup.c
VAX8200_OPT = -DVM_VAX -DVAX_820 -DUSE_INT64 -DUSE_ADDR64 -I ${VAXD} -I ${PDP11D} ${NETWORK_OPT}
VAX8200_OPT = -DVM_VAX -DVAX_820 -DUSE_INT64 -DUSE_ADDR64 -I ${VAXD} -I ${PDP11D} ${NETWORK_OPT} ${AIO_CCDEFS}
VAX8600 = ${VAXD}/vax_cpu.c ${VAXD}/vax_cpu1.c ${VAXD}/vax_fpa.c \
@ -1684,7 +1694,7 @@ VAX8600 = ${VAXD}/vax_cpu.c ${VAXD}/vax_cpu1.c ${VAXD}/vax_fpa.c \
${PDP11D}/pdp11_vh.c ${PDP11D}/pdp11_dmc.c ${PDP11D}/pdp11_dup.c \
${PDP11D}/pdp11_td.c ${PDP11D}/pdp11_tc.c ${PDP11D}/pdp11_rk.c \
${PDP11D}/pdp11_io_lib.c ${PDP11D}/pdp11_ch.c
VAX8600_OPT = -DVM_VAX -DVAX_860 -DUSE_INT64 -DUSE_ADDR64 -I ${VAXD} -I ${PDP11D} ${NETWORK_OPT}
VAX8600_OPT = -DVM_VAX -DVAX_860 -DUSE_INT64 -DUSE_ADDR64 -I ${VAXD} -I ${PDP11D} ${NETWORK_OPT} ${AIO_CCDEFS}
PDP10D = ${SIMHD}/PDP10
@ -1703,7 +1713,7 @@ IMLAC = ${IMLACD}/imlac_sys.c ${IMLACD}/imlac_cpu.c \
${IMLACD}/imlac_dp.c ${IMLACD}/imlac_crt.c ${IMLACD}/imlac_kbd.c \
${IMLACD}/imlac_tty.c ${IMLACD}/imlac_pt.c ${IMLACD}/imlac_bel.c \
${DISPLAYL}
IMLAC_OPT = -I ${IMLACD} ${DISPLAY_OPT}
IMLAC_OPT = -I ${IMLACD} ${DISPLAY_OPT} ${AIO_CCDEFS}
STUBD = ${SIMHD}/stub
@ -1716,7 +1726,7 @@ TT2500 = ${TT2500D}/tt2500_sys.c ${TT2500D}/tt2500_cpu.c \
${TT2500D}/tt2500_dpy.c ${TT2500D}/tt2500_crt.c ${TT2500D}/tt2500_tv.c \
${TT2500D}/tt2500_key.c ${TT2500D}/tt2500_uart.c ${TT2500D}/tt2500_rom.c \
${DISPLAYL}
TT2500_OPT = -I ${TT2500D} ${DISPLAY_OPT}
TT2500_OPT = -I ${TT2500D} ${DISPLAY_OPT} ${AIO_CCDEFS}
PDP8D = ${SIMHD}/PDP8
@ -2038,7 +2048,8 @@ PDP6 = ${PDP6D}/kx10_cpu.c ${PDP6D}/kx10_sys.c ${PDP6D}/kx10_cty.c \
${PDP6D}/kx10_cp.c ${PDP6D}/pdp6_dct.c ${PDP6D}/pdp6_dtc.c \
${PDP6D}/pdp6_mtc.c ${PDP6D}/pdp6_dsk.c ${PDP6D}/pdp6_dcs.c \
${PDP6D}/kx10_dpy.c ${PDP6D}/pdp6_slave.c ${DISPLAYL} ${DISPLAY340}
PDP6_OPT = -DPDP6=1 -DUSE_INT64 -I ${PDP6D} -DUSE_SIM_CARD ${DISPLAY_OPT} ${PDP6_DISPLAY_OPT}
PDP6_OPT = -DPDP6=1 -DUSE_INT64 -I ${PDP6D} -DUSE_SIM_CARD ${DISPLAY_OPT} ${PDP6_DISPLAY_OPT} \
${AIO_CCDEFS}
KA10D = ${SIMHD}/PDP10
ifneq (,${DISPLAY_OPT})
@ -2115,7 +2126,7 @@ ATT3B2M400 = ${ATT3B2D}/3b2_cpu.c ${ATT3B2D}/3b2_sys.c \
${ATT3B2D}/3b2_dmac.c ${ATT3B2D}/3b2_io.c \
${ATT3B2D}/3b2_ports.c ${ATT3B2D}/3b2_ctc.c \
${ATT3B2D}/3b2_ni.c
ATT3B2M400_OPT = -DUSE_INT64 -DUSE_ADDR64 -DREV2 -I ${ATT3B2D} ${NETWORK_OPT}
ATT3B2M400_OPT = -DUSE_INT64 -DUSE_ADDR64 -DREV2 -I ${ATT3B2D} ${NETWORK_OPT} ${AIO_CCDEFS}
ATT3B2M700 = ${ATT3B2D}/3b2_cpu.c ${ATT3B2D}/3b2_sys.c \
${ATT3B2D}/3b2_rev3_sys.c ${ATT3B2D}/3b2_rev3_mmu.c \
@ -2125,7 +2136,7 @@ ATT3B2M700 = ${ATT3B2D}/3b2_cpu.c ${ATT3B2D}/3b2_sys.c \
${ATT3B2D}/3b2_if.c ${ATT3B2D}/3b2_dmac.c \
${ATT3B2D}/3b2_io.c ${ATT3B2D}/3b2_ports.c \
${ATT3B2D}/3b2_scsi.c ${ATT3B2D}/3b2_ni.c
ATT3B2M700_OPT = -DUSE_INT64 -DUSE_ADDR64 -DREV3 -I ${ATT3B2D} ${NETWORK_OPT}
ATT3B2M700_OPT = -DUSE_INT64 -DUSE_ADDR64 -DREV3 -I ${ATT3B2D} ${NETWORK_OPT} ${AIO_CCDEFS}
SIGMAD = ${SIMHD}/sigma
SIGMA = ${SIGMAD}/sigma_cpu.c ${SIGMAD}/sigma_sys.c ${SIGMAD}/sigma_cis.c \

View file

@ -28,6 +28,7 @@ add_simulator(tt2500
${CMAKE_CURRENT_SOURCE_DIR}
FEATURE_VIDEO
FEATURE_DISPLAY
USES_AIO
LABEL tt2500
PKG_FAMILY default_family
TEST tt2500)