diff --git a/.travis/deps.sh b/.travis/deps.sh index fb18ddf77..f9cf1251c 100755 --- a/.travis/deps.sh +++ b/.travis/deps.sh @@ -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" ;; *) diff --git a/3B2/CMakeLists.txt b/3B2/CMakeLists.txt index 8319b70a8..c86106891 100644 --- a/3B2/CMakeLists.txt +++ b/3B2/CMakeLists.txt @@ -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) diff --git a/CMakeLists.txt b/CMakeLists.txt index a926652d1..a715f9a6c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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) diff --git a/PDP10/CMakeLists.txt b/PDP10/CMakeLists.txt index 714c569a2..c8b680335 100644 --- a/PDP10/CMakeLists.txt +++ b/PDP10/CMakeLists.txt @@ -226,6 +226,7 @@ add_simulator(pdp6 FEATURE_INT64 FEATURE_VIDEO FEATURE_DISPLAY + USES_AIO LABEL PDP10 PKG_FAMILY decpdp_family TEST pdp6) diff --git a/PDP11/CMakeLists.txt b/PDP11/CMakeLists.txt index 7a077796a..475ec4890 100644 --- a/PDP11/CMakeLists.txt +++ b/PDP11/CMakeLists.txt @@ -74,6 +74,7 @@ add_simulator(pdp11 VM_PDP11 FEATURE_VIDEO FEATURE_DISPLAY + USES_AIO BUILDROMS LABEL PDP11 PKG_FAMILY pdp11_family diff --git a/README-CMake.md b/README-CMake.md index 4e1780851..406a3db51 100644 --- a/README-CMake.md +++ b/README-CMake.md @@ -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 @@ -1213,14 +1215,31 @@ The `CMake` build infrastructure avoids repeatedly compiling the simulator 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` | +| 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` | + +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) diff --git a/VAX/CMakeLists.txt b/VAX/CMakeLists.txt index ab400d42d..c28380dec 100644 --- a/VAX/CMakeLists.txt +++ b/VAX/CMakeLists.txt @@ -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 diff --git a/cmake/add_simulator.cmake b/cmake/add_simulator.cmake index 301139a56..9e79654db 100644 --- a/cmake/add_simulator.cmake +++ b/cmake/add_simulator.cmake @@ -42,67 +42,78 @@ 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 - C_STANDARD 99 - ) - 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}) - - # Make sure that the top-level directory is part of the libary's include path: - target_include_directories("${_targ}" PUBLIC "${CMAKE_SOURCE_DIR}") + foreach (lib IN ITEMS "${_targ}" "${sim_aio_lib}") + set_target_properties(${lib} PROPERTIES + C_STANDARD 99 + EXCLUDE_FROM_ALL True + ) + 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("${lib}" PUBLIC "${CMAKE_SOURCE_DIR}") + + if (SIMH_INT64) + target_compile_definitions(${lib} PUBLIC USE_INT64) + endif (SIMH_INT64) + + if (SIMH_ADDR64) + target_compile_definitions(${lib} PUBLIC USE_ADDR64) + endif (SIMH_ADDR64) + + if (SIMH_VIDEO) + if (WITH_VIDEO) + # It's the video library + 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 + ## to be defined, it belongs in the simh_video interface library. + ## (b) BESM6 doesn't use SIMH's video capabilities correctly and + ## 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. + target_compile_definitions("${lib}" PUBLIC SDL_MAIN_AVAILABLE) + endif () + endif () - if (SIMH_INT64) - target_compile_definitions(${_targ} PUBLIC USE_INT64) - endif (SIMH_INT64) + # Define SIM_BUILD_TOOL for the simulator' + target_compile_definitions("${lib}" PRIVATE + "SIM_BUILD_TOOL=CMake (${CMAKE_GENERATOR})" + ) - if (SIMH_ADDR64) - target_compile_definitions(${_targ} PUBLIC USE_ADDR64) - endif (SIMH_ADDR64) + target_link_libraries(${lib} PUBLIC + simh_network + simh_regexp + os_features + thread_lib + ) - 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) - endif () - if (CMAKE_HOST_APPLE AND NOT SIMH_BESM6_SDL_HACK) - ## (a) The BESM6 SDL hack is temporary. If SDL_MAIN_AVAILABLE needs - ## to be defined, it belongs in the simh_video interface library. - ## (b) BESM6 doesn't use SIMH's video capabilities correctly and - ## 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. - target_compile_definitions("${_targ}" PUBLIC SDL_MAIN_AVAILABLE) + # Ensure that sim_rev.h picks up .git-commit-id.h if the git command is + # available. + if (GIT_COMMAND) + target_compile_definitions("${lib}" PRIVATE SIM_NEED_GIT_COMMIT_ID) endif () - endif () - - target_link_libraries(${_targ} 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) - endif () + add_dependencies(${lib} update_sim_commit) + endforeach () - add_dependencies(${_targ} update_sim_commit) + 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,11 @@ 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") + message(WARNING "!!! {_targ}: Some features will be crippled, notably networking.") + endif () + add_executable("${_targ}" "${SIMH_SOURCES}") set_target_properties(${_targ} PROPERTIES C_STANDARD 99 @@ -227,6 +244,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 () diff --git a/cmake/cmake-builder.ps1 b/cmake/cmake-builder.ps1 index f39dc77f0..d2e12bcc9 100644 --- a/cmake/cmake-builder.ps1 +++ b/cmake/cmake-builder.ps1 @@ -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 @@ -196,10 +199,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, "", @()) diff --git a/cmake/cmake-builder.sh b/cmake/cmake-builder.sh index 0ea8d6eef..b1d437a5d 100755 --- a/cmake/cmake-builder.sh +++ b/cmake/cmake-builder.sh @@ -7,14 +7,11 @@ showHelp() cat < \"${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") diff --git a/cmake/git-commit-id.cmake b/cmake/git-commit-id.cmake index 373f04d50..6c7df4e05 100644 --- a/cmake/git-commit-id.cmake +++ b/cmake/git-commit-id.cmake @@ -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.") diff --git a/cmake/pthreads-dep.cmake b/cmake/pthreads-dep.cmake index 1ea0723a6..ff7b06148 100644 --- a/cmake/pthreads-dep.cmake +++ b/cmake/pthreads-dep.cmake @@ -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() diff --git a/cmake/simgen/basic_simulator.py b/cmake/simgen/basic_simulator.py index 39c9c64b6..4959ada98 100644 --- a/cmake/simgen/basic_simulator.py +++ b/cmake/simgen/basic_simulator.py @@ -14,12 +14,14 @@ def __init__(self, sim_name, dir_macro, test_name, buildrom): self.int64 = False self.full64 = False self.buildrom = buildrom - ## self.has_display -> True if there is a specific display used by the simulator. + ## self.has_display -> True if there is a specific display used by the simulator. self.has_display = False - ## self.uses_video -> True if USE_SIM_VIDEO appears in the simulator's preprocessor defn's. + ## self.uses_video -> True if USE_SIM_VIDEO appears in the simulator's preprocessor defn's. 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,27 +49,33 @@ def scan_for_flags(self, defs): if use_int64 or use_addr64: self.int64 = use_int64 and not use_addr64 self.full64 = use_int64 and use_addr64 - try: - self.defines.remove('USE_INT64') - except: - pass - try: - self.defines.remove('USE_ADDR64') - except: - pass + for defn in ['USE_INT64', 'USE_ADDR64']: + try: + self.defines.remove(defn) + except: + pass ## Video support: self.has_display = any(map(lambda s: 'DISPLAY' in SPM.shallow_expand_vars(s, defs), self.sources)) if self.has_display: - try: - self.sources.remove('${DISPLAYL}') - self.sources.remove('$(DISPLAYL)') - except: - pass + for src in ['${DISPLAYL}', '$(DISPLAYL)']: + try: + 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 @@ def write_section(self, stream, section, indent, test_label='default', additiona 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) diff --git a/cmake/vcpkg-setup.cmake b/cmake/vcpkg-setup.cmake index a3c5c9b6a..8c4494075 100644 --- a/cmake/vcpkg-setup.cmake +++ b/cmake/vcpkg-setup.cmake @@ -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 - "--no-print-usage" -) +if (NOT ("--no-print-usage" IN_LIST VCPKG_INSTALL_OPTIONS)) + list(APPEND VCPKG_INSTALL_OPTIONS + "--no-print-usage" + ) +endif () include(${SIMH_CMAKE_TOOLCHAIN_FILE}) diff --git a/imlac/CMakeLists.txt b/imlac/CMakeLists.txt index 9a2e38abd..3ac3a28ac 100644 --- a/imlac/CMakeLists.txt +++ b/imlac/CMakeLists.txt @@ -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) diff --git a/makefile b/makefile index 8971c748a..32a3514ab 100644 --- a/makefile +++ b/makefile @@ -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 \ diff --git a/tt2500/CMakeLists.txt b/tt2500/CMakeLists.txt index 9aace873d..af37ddbfb 100644 --- a/tt2500/CMakeLists.txt +++ b/tt2500/CMakeLists.txt @@ -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)