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:
parent
f4c39a325c
commit
d9d0e8bd74
18 changed files with 324 additions and 139 deletions
|
@ -45,8 +45,22 @@ install_ucrt64() {
|
||||||
mingw-w64-ucrt-x86_64-libpcap
|
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
|
case "$1" in
|
||||||
osx|linux|mingw64|ucrt64)
|
osx|linux|mingw64|ucrt64|clang64)
|
||||||
install_"$1"
|
install_"$1"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
|
|
@ -38,6 +38,7 @@ add_simulator(3b2
|
||||||
DEFINES
|
DEFINES
|
||||||
REV2
|
REV2
|
||||||
FEATURE_FULL64
|
FEATURE_FULL64
|
||||||
|
USES_AIO
|
||||||
LABEL 3B2
|
LABEL 3B2
|
||||||
PKG_FAMILY att3b2_family
|
PKG_FAMILY att3b2_family
|
||||||
TEST 3b2)
|
TEST 3b2)
|
||||||
|
@ -65,6 +66,7 @@ add_simulator(3b2-700
|
||||||
DEFINES
|
DEFINES
|
||||||
REV3
|
REV3
|
||||||
FEATURE_FULL64
|
FEATURE_FULL64
|
||||||
|
USES_AIO
|
||||||
LABEL 3B2
|
LABEL 3B2
|
||||||
PKG_FAMILY att3b2_family
|
PKG_FAMILY att3b2_family
|
||||||
TEST 3b2-700)
|
TEST 3b2-700)
|
||||||
|
|
|
@ -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)
|
set(SIMH_INSTALLER_WARNING TRUE CACHE BOOL "Installer/CPack warning issued when CMAKE_VERSION < 3.21" FORCE)
|
||||||
endif ()
|
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
|
# Places to look for CMake modules/includes
|
||||||
set(SIMH_INCLUDE_PATH_LIST
|
set(SIMH_INCLUDE_PATH_LIST
|
||||||
${CMAKE_SOURCE_DIR}/cmake
|
${CMAKE_SOURCE_DIR}/cmake
|
||||||
|
@ -73,12 +80,6 @@ if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.15)
|
||||||
cmake_policy(SET CMP0091 NEW)
|
cmake_policy(SET CMP0091 NEW)
|
||||||
endif()
|
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)
|
project(simh VERSION "${SIMH_VERSION}" LANGUAGES C CXX)
|
||||||
|
|
||||||
include(vcpkg-setup)
|
include(vcpkg-setup)
|
||||||
|
|
|
@ -226,6 +226,7 @@ add_simulator(pdp6
|
||||||
FEATURE_INT64
|
FEATURE_INT64
|
||||||
FEATURE_VIDEO
|
FEATURE_VIDEO
|
||||||
FEATURE_DISPLAY
|
FEATURE_DISPLAY
|
||||||
|
USES_AIO
|
||||||
LABEL PDP10
|
LABEL PDP10
|
||||||
PKG_FAMILY decpdp_family
|
PKG_FAMILY decpdp_family
|
||||||
TEST pdp6)
|
TEST pdp6)
|
||||||
|
|
|
@ -74,6 +74,7 @@ add_simulator(pdp11
|
||||||
VM_PDP11
|
VM_PDP11
|
||||||
FEATURE_VIDEO
|
FEATURE_VIDEO
|
||||||
FEATURE_DISPLAY
|
FEATURE_DISPLAY
|
||||||
|
USES_AIO
|
||||||
BUILDROMS
|
BUILDROMS
|
||||||
LABEL PDP11
|
LABEL PDP11
|
||||||
PKG_FAMILY pdp11_family
|
PKG_FAMILY pdp11_family
|
||||||
|
|
|
@ -1189,13 +1189,15 @@ add_simulator(3b2
|
||||||
convention `[sim]_test.ini` -- the argument to the `TEST` parameter is the
|
convention `[sim]_test.ini` -- the argument to the `TEST` parameter is the
|
||||||
`[sim]` portion of the test script's name.
|
`[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.
|
linked with the simulator.
|
||||||
|
|
||||||
- `FEATURE_INT64`: 64-bit integers, 32-bit pointers
|
- `FEATURE_INT64`: 64-bit integers, 32-bit pointers
|
||||||
- `FEATURE_FULL64`: 64-bit integers, 64-bit pointers
|
- `FEATURE_FULL64`: 64-bit integers, 64-bit pointers
|
||||||
- `FEATURE_VIDEO`: Simulator video support.
|
- `FEATURE_VIDEO`: Simulator video support.
|
||||||
- `FEATURE_DISPLAY`: Video display 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
|
- `PKG_FAMILY` option: This option adds the simulator to a package "family" or
|
||||||
simulator packaging group, e.g., "DEC PDP simulators". The default package
|
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
|
libraries that represents the combination of required features: 32/64 bit
|
||||||
support and video:
|
support and video:
|
||||||
|
|
||||||
| Library | Video | Integer size | Address size | `add_simulator` flags |
|
| Library | Video | Integer size | Address size | `add_simulator` flags |
|
||||||
| :--------------- | :---: | -----------: | -----------: | :-------------------- |
|
| :---------------- | :---: | -----------: | -----------: | :-------------------- |
|
||||||
| simhcore.a | N | 32 | 32 | |
|
| simhcore.a | N | 32 | 32 | |
|
||||||
| simhi64.a | N | 64 | 32 | `FEATURE_INT64` |
|
| simhi64.a | N | 64 | 32 | `FEATURE_INT64` |
|
||||||
| simhz64.a | N | 64 | 64 | `FEATURE_FULL64` |
|
| simhz64.a | N | 64 | 64 | `FEATURE_FULL64` |
|
||||||
| simhcore_video.a | Y | 32 | 32 | `FEATURE_VIDEO` |
|
| simhcore\_video.a | Y | 32 | 32 | `FEATURE_VIDEO` |
|
||||||
| simhi64_video.a | Y | 64 | 32 | `FEATURE_INT64`, `FEATURE_VIDEO` |
|
| simhi64\_video.a | Y | 64 | 32 | `FEATURE_INT64`, `FEATURE_VIDEO` |
|
||||||
| simhz64_video.a | Y | 64 | 64 | `FEATURE_FULL64`, `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
|
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
|
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
|
## in conjunction with FEATURE_VIDEO
|
||||||
FEATURE_DISPLAY
|
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,
|
## Packaging "family" (group) to which the simulator belongs,
|
||||||
## for packagers that support grouping (Windows: NSIS .exe,
|
## for packagers that support grouping (Windows: NSIS .exe,
|
||||||
## WIX .msi; macOS)
|
## WIX .msi; macOS)
|
||||||
|
|
|
@ -140,6 +140,7 @@ add_simulator(infoserver100
|
||||||
VAX_411
|
VAX_411
|
||||||
FEATURE_FULL64
|
FEATURE_FULL64
|
||||||
FEATURE_VIDEO
|
FEATURE_VIDEO
|
||||||
|
USES_AIO
|
||||||
BUILDROMS
|
BUILDROMS
|
||||||
LABEL VAX
|
LABEL VAX
|
||||||
PKG_FAMILY vax_family
|
PKG_FAMILY vax_family
|
||||||
|
@ -169,6 +170,7 @@ add_simulator(infoserver1000
|
||||||
VM_VAX
|
VM_VAX
|
||||||
IS_1000
|
IS_1000
|
||||||
FEATURE_FULL64
|
FEATURE_FULL64
|
||||||
|
USES_AIO
|
||||||
BUILDROMS
|
BUILDROMS
|
||||||
LABEL VAX
|
LABEL VAX
|
||||||
PKG_FAMILY vax_family
|
PKG_FAMILY vax_family
|
||||||
|
@ -186,6 +188,7 @@ add_simulator(infoserver150vxt
|
||||||
VAX_412
|
VAX_412
|
||||||
FEATURE_FULL64
|
FEATURE_FULL64
|
||||||
FEATURE_VIDEO
|
FEATURE_VIDEO
|
||||||
|
USES_AIO
|
||||||
BUILDROMS
|
BUILDROMS
|
||||||
LABEL VAX
|
LABEL VAX
|
||||||
PKG_FAMILY vax_family
|
PKG_FAMILY vax_family
|
||||||
|
@ -230,6 +233,7 @@ add_simulator(microvax1
|
||||||
VAX_610
|
VAX_610
|
||||||
FEATURE_FULL64
|
FEATURE_FULL64
|
||||||
FEATURE_VIDEO
|
FEATURE_VIDEO
|
||||||
|
USES_AIO
|
||||||
BUILDROMS
|
BUILDROMS
|
||||||
LABEL VAX
|
LABEL VAX
|
||||||
PKG_FAMILY vax_family
|
PKG_FAMILY vax_family
|
||||||
|
@ -246,6 +250,7 @@ add_simulator(microvax2
|
||||||
VAX_630
|
VAX_630
|
||||||
FEATURE_FULL64
|
FEATURE_FULL64
|
||||||
FEATURE_VIDEO
|
FEATURE_VIDEO
|
||||||
|
USES_AIO
|
||||||
BUILDROMS
|
BUILDROMS
|
||||||
LABEL VAX
|
LABEL VAX
|
||||||
PKG_FAMILY vax_family
|
PKG_FAMILY vax_family
|
||||||
|
@ -283,6 +288,7 @@ add_simulator(microvax2000
|
||||||
VAX_410
|
VAX_410
|
||||||
FEATURE_FULL64
|
FEATURE_FULL64
|
||||||
FEATURE_VIDEO
|
FEATURE_VIDEO
|
||||||
|
USES_AIO
|
||||||
BUILDROMS
|
BUILDROMS
|
||||||
LABEL VAX
|
LABEL VAX
|
||||||
PKG_FAMILY vax_family
|
PKG_FAMILY vax_family
|
||||||
|
@ -300,6 +306,7 @@ add_simulator(microvax3100
|
||||||
VAX_41A
|
VAX_41A
|
||||||
FEATURE_FULL64
|
FEATURE_FULL64
|
||||||
FEATURE_VIDEO
|
FEATURE_VIDEO
|
||||||
|
USES_AIO
|
||||||
BUILDROMS
|
BUILDROMS
|
||||||
LABEL VAX
|
LABEL VAX
|
||||||
PKG_FAMILY vax_family
|
PKG_FAMILY vax_family
|
||||||
|
@ -317,6 +324,7 @@ add_simulator(microvax3100e
|
||||||
VAX_41D
|
VAX_41D
|
||||||
FEATURE_FULL64
|
FEATURE_FULL64
|
||||||
FEATURE_VIDEO
|
FEATURE_VIDEO
|
||||||
|
USES_AIO
|
||||||
BUILDROMS
|
BUILDROMS
|
||||||
LABEL VAX
|
LABEL VAX
|
||||||
PKG_FAMILY vax_family
|
PKG_FAMILY vax_family
|
||||||
|
@ -332,6 +340,7 @@ add_simulator(microvax3100m80
|
||||||
VAX_440
|
VAX_440
|
||||||
VAX_47
|
VAX_47
|
||||||
FEATURE_FULL64
|
FEATURE_FULL64
|
||||||
|
USES_AIO
|
||||||
BUILDROMS
|
BUILDROMS
|
||||||
LABEL VAX
|
LABEL VAX
|
||||||
PKG_FAMILY vax_family
|
PKG_FAMILY vax_family
|
||||||
|
@ -362,6 +371,7 @@ add_simulator(vax
|
||||||
VM_VAX
|
VM_VAX
|
||||||
FEATURE_FULL64
|
FEATURE_FULL64
|
||||||
FEATURE_VIDEO
|
FEATURE_VIDEO
|
||||||
|
USES_AIO
|
||||||
BUILDROMS
|
BUILDROMS
|
||||||
LABEL VAX
|
LABEL VAX
|
||||||
PKG_FAMILY vax_family
|
PKG_FAMILY vax_family
|
||||||
|
@ -435,6 +445,7 @@ add_simulator(vax730
|
||||||
VM_VAX
|
VM_VAX
|
||||||
VAX_730
|
VAX_730
|
||||||
FEATURE_FULL64
|
FEATURE_FULL64
|
||||||
|
USES_AIO
|
||||||
BUILDROMS
|
BUILDROMS
|
||||||
LABEL VAX
|
LABEL VAX
|
||||||
PKG_FAMILY vax_family
|
PKG_FAMILY vax_family
|
||||||
|
@ -485,6 +496,7 @@ add_simulator(vax750
|
||||||
VM_VAX
|
VM_VAX
|
||||||
VAX_750
|
VAX_750
|
||||||
FEATURE_FULL64
|
FEATURE_FULL64
|
||||||
|
USES_AIO
|
||||||
BUILDROMS
|
BUILDROMS
|
||||||
LABEL VAX
|
LABEL VAX
|
||||||
PKG_FAMILY vax_family
|
PKG_FAMILY vax_family
|
||||||
|
@ -536,6 +548,7 @@ add_simulator(vax780
|
||||||
VM_VAX
|
VM_VAX
|
||||||
VAX_780
|
VAX_780
|
||||||
FEATURE_FULL64
|
FEATURE_FULL64
|
||||||
|
USES_AIO
|
||||||
BUILDROMS
|
BUILDROMS
|
||||||
LABEL VAX
|
LABEL VAX
|
||||||
PKG_FAMILY vax_family
|
PKG_FAMILY vax_family
|
||||||
|
@ -584,6 +597,7 @@ add_simulator(vax8200
|
||||||
VM_VAX
|
VM_VAX
|
||||||
VAX_820
|
VAX_820
|
||||||
FEATURE_FULL64
|
FEATURE_FULL64
|
||||||
|
USES_AIO
|
||||||
BUILDROMS
|
BUILDROMS
|
||||||
LABEL VAX
|
LABEL VAX
|
||||||
PKG_FAMILY vax_family
|
PKG_FAMILY vax_family
|
||||||
|
@ -633,6 +647,7 @@ add_simulator(vax8600
|
||||||
VM_VAX
|
VM_VAX
|
||||||
VAX_860
|
VAX_860
|
||||||
FEATURE_FULL64
|
FEATURE_FULL64
|
||||||
|
USES_AIO
|
||||||
BUILDROMS
|
BUILDROMS
|
||||||
LABEL VAX
|
LABEL VAX
|
||||||
PKG_FAMILY vax_family
|
PKG_FAMILY vax_family
|
||||||
|
@ -650,6 +665,7 @@ add_simulator(vaxstation3100m30
|
||||||
VAX_42A
|
VAX_42A
|
||||||
FEATURE_FULL64
|
FEATURE_FULL64
|
||||||
FEATURE_VIDEO
|
FEATURE_VIDEO
|
||||||
|
USES_AIO
|
||||||
BUILDROMS
|
BUILDROMS
|
||||||
LABEL VAX
|
LABEL VAX
|
||||||
PKG_FAMILY vax_family
|
PKG_FAMILY vax_family
|
||||||
|
@ -667,6 +683,7 @@ add_simulator(vaxstation3100m38
|
||||||
VAX_42B
|
VAX_42B
|
||||||
FEATURE_FULL64
|
FEATURE_FULL64
|
||||||
FEATURE_VIDEO
|
FEATURE_VIDEO
|
||||||
|
USES_AIO
|
||||||
BUILDROMS
|
BUILDROMS
|
||||||
LABEL VAX
|
LABEL VAX
|
||||||
PKG_FAMILY vax_family
|
PKG_FAMILY vax_family
|
||||||
|
@ -702,6 +719,7 @@ add_simulator(vaxstation3100m76
|
||||||
VAX_43
|
VAX_43
|
||||||
FEATURE_FULL64
|
FEATURE_FULL64
|
||||||
FEATURE_VIDEO
|
FEATURE_VIDEO
|
||||||
|
USES_AIO
|
||||||
BUILDROMS
|
BUILDROMS
|
||||||
LABEL VAX
|
LABEL VAX
|
||||||
PKG_FAMILY vax_family
|
PKG_FAMILY vax_family
|
||||||
|
@ -717,6 +735,7 @@ add_simulator(vaxstation4000m60
|
||||||
VAX_440
|
VAX_440
|
||||||
VAX_46
|
VAX_46
|
||||||
FEATURE_FULL64
|
FEATURE_FULL64
|
||||||
|
USES_AIO
|
||||||
BUILDROMS
|
BUILDROMS
|
||||||
LABEL VAX
|
LABEL VAX
|
||||||
PKG_FAMILY vax_family
|
PKG_FAMILY vax_family
|
||||||
|
@ -732,6 +751,7 @@ add_simulator(vaxstation4000vlc
|
||||||
VAX_440
|
VAX_440
|
||||||
VAX_48
|
VAX_48
|
||||||
FEATURE_FULL64
|
FEATURE_FULL64
|
||||||
|
USES_AIO
|
||||||
BUILDROMS
|
BUILDROMS
|
||||||
LABEL VAX
|
LABEL VAX
|
||||||
PKG_FAMILY vax_family
|
PKG_FAMILY vax_family
|
||||||
|
|
|
@ -42,67 +42,78 @@ set(SIM_VIDEO_SOURCES
|
||||||
${CMAKE_SOURCE_DIR}/display/display.c
|
${CMAKE_SOURCE_DIR}/display/display.c
|
||||||
${CMAKE_SOURCE_DIR}/display/sim_ws.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)
|
function(build_simcore _targ)
|
||||||
cmake_parse_arguments(SIMH "VIDEO;INT64;ADDR64;BESM6_SDL_HACK" "" "" ${ARGN})
|
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})
|
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
|
# Components that need to be turned on while building the library, but
|
||||||
# don't export out to the dependencies (hence PRIVATE.)
|
# don't export out to the dependencies (hence PRIVATE.)
|
||||||
set_target_properties(${_targ} PROPERTIES
|
foreach (lib IN ITEMS "${_targ}" "${sim_aio_lib}")
|
||||||
C_STANDARD 99
|
set_target_properties(${lib} PROPERTIES
|
||||||
)
|
C_STANDARD 99
|
||||||
target_compile_definitions(${_targ} PRIVATE USE_SIM_CARD USE_SIM_IMD)
|
EXCLUDE_FROM_ALL True
|
||||||
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:
|
# 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)
|
if (SIMH_INT64)
|
||||||
target_compile_definitions(${_targ} PUBLIC USE_INT64)
|
target_compile_definitions(${lib} PUBLIC USE_INT64)
|
||||||
endif (SIMH_INT64)
|
endif (SIMH_INT64)
|
||||||
|
|
||||||
if (SIMH_ADDR64)
|
if (SIMH_ADDR64)
|
||||||
target_compile_definitions(${_targ} PUBLIC USE_ADDR64)
|
target_compile_definitions(${lib} PUBLIC USE_ADDR64)
|
||||||
endif (SIMH_ADDR64)
|
endif (SIMH_ADDR64)
|
||||||
|
|
||||||
if (SIMH_VIDEO)
|
if (SIMH_VIDEO)
|
||||||
if (WITH_VIDEO)
|
if (WITH_VIDEO)
|
||||||
# It's the video library
|
# It's the video library
|
||||||
target_sources(${_targ} PRIVATE ${SIM_VIDEO_SOURCES})
|
target_sources(${lib} PRIVATE ${SIM_VIDEO_SOURCES})
|
||||||
target_link_libraries(${_targ} PUBLIC simh_video)
|
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. <sigh!>
|
||||||
|
target_compile_definitions("${lib}" PUBLIC SDL_MAIN_AVAILABLE)
|
||||||
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
if (CMAKE_HOST_APPLE AND NOT SIMH_BESM6_SDL_HACK)
|
|
||||||
## (a) The BESM6 SDL hack is temporary. If SDL_MAIN_AVAILABLE needs
|
# Define SIM_BUILD_TOOL for the simulator'
|
||||||
## to be defined, it belongs in the simh_video interface library.
|
target_compile_definitions("${lib}" PRIVATE
|
||||||
## (b) BESM6 doesn't use SIMH's video capabilities correctly and
|
"SIM_BUILD_TOOL=CMake (${CMAKE_GENERATOR})"
|
||||||
## 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_link_libraries(${lib} PUBLIC
|
||||||
target_compile_definitions("${_targ}" PUBLIC SDL_MAIN_AVAILABLE)
|
simh_network
|
||||||
|
simh_regexp
|
||||||
|
os_features
|
||||||
|
thread_lib
|
||||||
|
)
|
||||||
|
|
||||||
|
# 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 ()
|
||||||
endif ()
|
|
||||||
|
|
||||||
target_link_libraries(${_targ} PUBLIC
|
add_dependencies(${lib} update_sim_commit)
|
||||||
simh_network
|
endforeach ()
|
||||||
simh_regexp
|
|
||||||
os_features
|
|
||||||
thread_lib
|
|
||||||
)
|
|
||||||
|
|
||||||
# Define SIM_BUILD_TOOL for the simulator'
|
target_compile_definitions(${sim_aio_lib} PUBLIC ${AIO_FLAGS})
|
||||||
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(${_targ} update_sim_commit)
|
|
||||||
|
|
||||||
# Create target cppcheck rule, if detected.
|
# Create target cppcheck rule, if detected.
|
||||||
if (ENABLE_CPPCHECK AND cppcheck_cmd)
|
if (ENABLE_CPPCHECK AND cppcheck_cmd)
|
||||||
|
@ -142,6 +153,7 @@ list(APPEND ADD_SIMULATOR_OPTIONS
|
||||||
"FEATURE_DISPLAY"
|
"FEATURE_DISPLAY"
|
||||||
"NO_INSTALL"
|
"NO_INSTALL"
|
||||||
"BESM6_SDL_HACK"
|
"BESM6_SDL_HACK"
|
||||||
|
"USES_AIO"
|
||||||
)
|
)
|
||||||
|
|
||||||
## TEST: The test script name that will be executed by the simulator within CTest.
|
## 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?")
|
message(FATAL_ERROR "${_targ}: No source files?")
|
||||||
endif (NOT DEFINED SIMH_SOURCES)
|
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}")
|
add_executable("${_targ}" "${SIMH_SOURCES}")
|
||||||
set_target_properties(${_targ} PROPERTIES
|
set_target_properties(${_targ} PROPERTIES
|
||||||
C_STANDARD 99
|
C_STANDARD 99
|
||||||
|
@ -227,6 +245,11 @@ function (simh_executable_template _targ)
|
||||||
endif ()
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
# Uses AIO...
|
||||||
|
if (SIMH_USES_AIO)
|
||||||
|
set(SIMH_SIMLIB "${SIMH_SIMLIB}_aio")
|
||||||
|
endif()
|
||||||
|
|
||||||
target_link_libraries("${_targ}" PUBLIC "${SIMH_SIMLIB}")
|
target_link_libraries("${_targ}" PUBLIC "${SIMH_SIMLIB}")
|
||||||
endfunction ()
|
endfunction ()
|
||||||
|
|
||||||
|
|
|
@ -74,10 +74,13 @@ param (
|
||||||
## ------------------
|
## ------------------
|
||||||
## vs2022 Visual Studio 2022 (default)
|
## vs2022 Visual Studio 2022 (default)
|
||||||
## vs2022-xp Visual Studio 2022 XP compat
|
## vs2022-xp Visual Studio 2022 XP compat
|
||||||
|
## vs2022-x64 Visual Studio 2022 64-bit
|
||||||
## vs2019 Visual Studio 2019
|
## vs2019 Visual Studio 2019
|
||||||
## vs2019-xp Visual Studio 2019 XP compat
|
## vs2019-xp Visual Studio 2019 XP compat
|
||||||
|
## vs2019-x64 Visual Studio 2019 64-bit
|
||||||
## vs2017 Visual Studio 2017
|
## vs2017 Visual Studio 2017
|
||||||
## vs2017-xp Visual Studio 2017 XP compat
|
## vs2017-xp Visual Studio 2017 XP compat
|
||||||
|
## vs2017-x64 Visual Studio 2017 64-bit
|
||||||
## vs2015 Visual Studio 2015
|
## vs2015 Visual Studio 2015
|
||||||
## mingw-make MinGW GCC/mingw32-make
|
## mingw-make MinGW GCC/mingw32-make
|
||||||
## mingw-ninja MinGW GCC/ninja
|
## mingw-ninja MinGW GCC/ninja
|
||||||
|
@ -115,6 +118,15 @@ param (
|
||||||
[Parameter(Mandatory=$false)]
|
[Parameter(Mandatory=$false)]
|
||||||
[switch] $novideo = $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.
|
## Disable the build's tests.
|
||||||
[Parameter(Mandatory=$false)]
|
[Parameter(Mandatory=$false)]
|
||||||
[switch] $notest = $false,
|
[switch] $notest = $false,
|
||||||
|
@ -196,10 +208,13 @@ $singleConfig = $true
|
||||||
$cmakeGenMap = @{
|
$cmakeGenMap = @{
|
||||||
"vs2022" = [GeneratorInfo]::new("Visual Studio 17 2022", $multiConfig, $false, "", @("-A", "Win32"));
|
"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-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" = [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-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" = [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-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, "", @());
|
"vs2015" = [GeneratorInfo]::new("Visual Studio 14 2015", $multiConfig, $false, "", @());
|
||||||
"mingw-make" = [GeneratorInfo]::new("MinGW Makefiles", $singleConfig, $false, "", @());
|
"mingw-make" = [GeneratorInfo]::new("MinGW Makefiles", $singleConfig, $false, "", @());
|
||||||
"mingw-ninja" = [GeneratorInfo]::new("Ninja", $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")
|
$generateArgs += @("-DWITH_VIDEO:Bool=Off")
|
||||||
}
|
}
|
||||||
|
if ($noaio)
|
||||||
|
{
|
||||||
|
$generateArgs += @("-DWITH_ASYNC:Bool=Off")
|
||||||
|
}
|
||||||
|
if ($noaiointrinsics)
|
||||||
|
{
|
||||||
|
$generateArgs += @("-DDONT_USE_AIO_INTRINSICS:Bool=On")
|
||||||
|
}
|
||||||
if ($lto)
|
if ($lto)
|
||||||
{
|
{
|
||||||
$generateArgs += @("-DRELEASE_LTO:Bool=On")
|
$generateArgs += @("-DRELEASE_LTO:Bool=On")
|
||||||
|
|
|
@ -7,23 +7,18 @@ showHelp()
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
Configure and build simh simulators on Linux and *nix-like platforms.
|
Configure and build simh simulators on Linux and *nix-like platforms.
|
||||||
|
|
||||||
Subdirectories:
|
-Compile/Build options:
|
||||||
cmake/build-unix: Makefile-based build simulators
|
-----------------------
|
||||||
cmake/build-ninja: Ninja build-based simulators
|
|
||||||
|
|
||||||
Options:
|
|
||||||
--------
|
|
||||||
--clean (-x) Remove the build subdirectory
|
--clean (-x) Remove the build subdirectory
|
||||||
--generate (-g) Generate the build environment, don't compile/build
|
--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)
|
--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
|
--notest Do not execute 'ctest' test cases
|
||||||
--noinstall Do not install SIMH simulators.
|
--noinstall Do not install SIMH simulators.
|
||||||
--testonly Do not build, execute the 'ctest' test cases
|
--testonly Do not build, execute the 'ctest' test cases
|
||||||
--installonly Do not build, install the SIMH simulators
|
--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
|
unix
|
||||||
ninja
|
ninja
|
||||||
xcode
|
xcode
|
||||||
|
@ -46,6 +41,19 @@ Options:
|
||||||
|
|
||||||
--verbose Turn on verbose build output
|
--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.
|
--help (-h) Print this help.
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
@ -57,8 +65,8 @@ generateArgs=
|
||||||
buildArgs=
|
buildArgs=
|
||||||
buildPostArgs=""
|
buildPostArgs=""
|
||||||
buildClean=
|
buildClean=
|
||||||
buildFlavor="Unix Makefiles"
|
buildFlavor=
|
||||||
buildSubdir=build-unix
|
buildSubdir=
|
||||||
buildConfig=Release
|
buildConfig=Release
|
||||||
testArgs=
|
testArgs=
|
||||||
notest=no
|
notest=no
|
||||||
|
@ -152,6 +160,7 @@ fi
|
||||||
|
|
||||||
longopts=clean,help,flavor:,config:,nonetwork,novideo,notest,parallel,generate,testonly
|
longopts=clean,help,flavor:,config:,nonetwork,novideo,notest,parallel,generate,testonly
|
||||||
longopts=${longopts},noinstall,installonly,verbose,target:,lto,debugWall,cppcheck,cpack_suffix:
|
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 -- "$@")
|
ARGS=$(${getopt_prog} --longoptions $longopts --options xhf:c:pg -- "$@")
|
||||||
if [ $? -ne 0 ] ; then
|
if [ $? -ne 0 ] ; then
|
||||||
|
@ -219,6 +228,14 @@ while true; do
|
||||||
generateArgs="${generateArgs} -DWITH_VIDEO:Bool=Off"
|
generateArgs="${generateArgs} -DWITH_VIDEO:Bool=Off"
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
|
--no-aio)
|
||||||
|
generateArgs="${generateArgs} -DWITH_ASYNC:Bool=Off"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--no-aio-intrinsics)
|
||||||
|
generateArgs="${generateArgs} -DDONT_USE_AIO_INTRINSICS:Bool=On"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
--notest)
|
--notest)
|
||||||
notest=yes
|
notest=yes
|
||||||
shift
|
shift
|
||||||
|
@ -251,6 +268,11 @@ while true; do
|
||||||
generateOnly=yes
|
generateOnly=yes
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
|
--cache)
|
||||||
|
generateOnly=yes
|
||||||
|
generateArgs="${generateArgs} -LA"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
--testonly)
|
--testonly)
|
||||||
testOnly=yes
|
testOnly=yes
|
||||||
shift
|
shift
|
||||||
|
@ -276,6 +298,14 @@ while true; do
|
||||||
esac
|
esac
|
||||||
done
|
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:
|
## Determine the SIMH top-level source directory:
|
||||||
simhTopDir=$(${dirname} $(${realpath} $0))
|
simhTopDir=$(${dirname} $(${realpath} $0))
|
||||||
while [ "x${simhTopDir}" != x -a ! -f "${simhTopDir}/CMakeLists.txt" ]; do
|
while [ "x${simhTopDir}" != x -a ! -f "${simhTopDir}/CMakeLists.txt" ]; do
|
||||||
|
@ -296,6 +326,7 @@ if [[ x"$buildClean" != x ]]; then
|
||||||
echo "${scriptName}: Cleaning ${buildSubdir}"
|
echo "${scriptName}: Cleaning ${buildSubdir}"
|
||||||
rm -rf ${buildSubdir}
|
rm -rf ${buildSubdir}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ ! -d ${buildSubdir} ]]; then
|
if [[ ! -d ${buildSubdir} ]]; then
|
||||||
mkdir ${buildSubdir}
|
mkdir ${buildSubdir}
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -20,7 +20,14 @@ get_target_property(_aliased ${_targ} ALIASED_TARGET)
|
||||||
set(fixed_libs)
|
set(fixed_libs)
|
||||||
get_property(orig_libs TARGET ${_targ} PROPERTY INTERFACE_LINK_LIBRARIES)
|
get_property(orig_libs TARGET ${_targ} PROPERTY INTERFACE_LINK_LIBRARIES)
|
||||||
foreach(each_lib IN LISTS ${_lib})
|
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 ${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})
|
list(APPEND fixed_libs ${stripped_lib})
|
||||||
message("** \"${each_lib}\" -> \"${stripped_lib}\"")
|
message("** \"${each_lib}\" -> \"${stripped_lib}\"")
|
||||||
endforeach ()
|
endforeach ()
|
||||||
|
@ -33,7 +40,14 @@ endfunction ()
|
||||||
function (fix_libraries _lib)
|
function (fix_libraries _lib)
|
||||||
set(fixed_libs)
|
set(fixed_libs)
|
||||||
foreach(each_lib IN LISTS ${_lib})
|
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})
|
list(APPEND fixed_libs ${stripped_lib})
|
||||||
endforeach ()
|
endforeach ()
|
||||||
set(${_lib} ${fixed_libs} PARENT_SCOPE)
|
set(${_lib} ${fixed_libs} PARENT_SCOPE)
|
||||||
|
@ -48,6 +62,11 @@ IF (WITH_VIDEO)
|
||||||
foreach (lname ${FREETYPE_LIBRARIES} ${FREETYPE_LIBRARY} ${HARFBUZZ_LIBRARIES} ${HARFBUZZ_LIBRARY})
|
foreach (lname ${FREETYPE_LIBRARIES} ${FREETYPE_LIBRARY} ${HARFBUZZ_LIBRARIES} ${HARFBUZZ_LIBRARY})
|
||||||
get_filename_component(dirname "${lname}" DIRECTORY)
|
get_filename_component(dirname "${lname}" DIRECTORY)
|
||||||
if (dirname)
|
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})
|
list(APPEND ldirs ${dirname})
|
||||||
endif()
|
endif()
|
||||||
endforeach ()
|
endforeach ()
|
||||||
|
@ -128,6 +147,8 @@ IF (WITH_VIDEO)
|
||||||
ENDIF ()
|
ENDIF ()
|
||||||
|
|
||||||
IF (PNG_FOUND)
|
IF (PNG_FOUND)
|
||||||
|
target_compile_definitions(simh_video INTERFACE HAVE_LIBPNG)
|
||||||
|
|
||||||
if (TARGET PNG::PNG)
|
if (TARGET PNG::PNG)
|
||||||
target_link_libraries(simh_video INTERFACE PNG::PNG)
|
target_link_libraries(simh_video INTERFACE PNG::PNG)
|
||||||
list(APPEND VIDEO_PKG_STATUS "interface PNG")
|
list(APPEND VIDEO_PKG_STATUS "interface PNG")
|
||||||
|
|
|
@ -6,8 +6,6 @@
|
||||||
set(GIT_COMMIT_ID ${GIT_COMMIT_DEST}/.git-commit-id)
|
set(GIT_COMMIT_ID ${GIT_COMMIT_DEST}/.git-commit-id)
|
||||||
set(GIT_COMMIT_ID_H ${GIT_COMMIT_DEST}/.git-commit-id.h)
|
set(GIT_COMMIT_ID_H ${GIT_COMMIT_DEST}/.git-commit-id.h)
|
||||||
|
|
||||||
message(STATUS "Updating GIT commit ID")
|
|
||||||
|
|
||||||
find_program(GIT_COMMAND git)
|
find_program(GIT_COMMAND git)
|
||||||
if (GIT_COMMAND)
|
if (GIT_COMMAND)
|
||||||
execute_process(COMMAND ${GIT_COMMAND} "log" "-1" "--pretty=%H"
|
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})
|
string(REPLACE "T" " " SIMH_GIT_COMMIT_TIME ${SIMH_GIT_COMMIT_TIME})
|
||||||
|
|
||||||
if (HAVE_UNCOMMITTED_CHANGES)
|
if (HAVE_UNCOMMITTED_CHANGES)
|
||||||
message(STATUS "Git detected uncommitted changes.")
|
## message(STATUS "Git detected uncommitted changes.")
|
||||||
string(APPEND SIMH_GIT_COMMIT_HASH "+uncommitted-changes")
|
string(APPEND SIMH_GIT_COMMIT_HASH "+uncommitted-changes")
|
||||||
else ()
|
else ()
|
||||||
message(STATUS "Clean working directory, no uncommitted changes.")
|
message(STATUS "Clean working directory, no uncommitted changes.")
|
||||||
endif ()
|
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)
|
set(WRITE_GIT_COMMIT_FILES True)
|
||||||
if (EXISTS ${GIT_COMMIT_ID})
|
if (EXISTS ${GIT_COMMIT_ID})
|
||||||
set(EXISTING_GIT_COMMIT_HASH)
|
set(EXISTING_GIT_COMMIT_HASH)
|
||||||
|
@ -55,12 +50,16 @@ if (GIT_COMMAND AND NOT (HAVE_GIT_COMMIT_HASH OR HAVE_GIT_COMMIT_TIME))
|
||||||
endforeach()
|
endforeach()
|
||||||
if (EXISTING_GIT_COMMIT_HASH STREQUAL SIMH_GIT_COMMIT_HASH AND
|
if (EXISTING_GIT_COMMIT_HASH STREQUAL SIMH_GIT_COMMIT_HASH AND
|
||||||
EXISTING_GIT_COMMIT_TIME STREQUAL SIMH_GIT_COMMIT_TIME)
|
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)
|
set(WRITE_GIT_COMMIT_FILES False)
|
||||||
endif ()
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (WRITE_GIT_COMMIT_FILES)
|
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}")
|
message(STATUS "Writing ${GIT_COMMIT_ID}")
|
||||||
file(WRITE ${GIT_COMMIT_ID}
|
file(WRITE ${GIT_COMMIT_ID}
|
||||||
"SIM_GIT_COMMIT_ID ${SIMH_GIT_COMMIT_HASH}\n"
|
"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}
|
file(WRITE ${GIT_COMMIT_ID_H}
|
||||||
"#define SIM_GIT_COMMIT_ID ${SIMH_GIT_COMMIT_HASH}\n"
|
"#define SIM_GIT_COMMIT_ID ${SIMH_GIT_COMMIT_HASH}\n"
|
||||||
"#define SIM_GIT_COMMIT_TIME ${SIMH_GIT_COMMIT_TIME}\n")
|
"#define SIM_GIT_COMMIT_TIME ${SIMH_GIT_COMMIT_TIME}\n")
|
||||||
else ()
|
## else ()
|
||||||
message(STATUS "No changes to ${GIT_COMMIT_ID}")
|
## message(STATUS "No changes to ${GIT_COMMIT_ID}")
|
||||||
message(STATUS "No changes to ${GIT_COMMIT_ID_H}")
|
## message(STATUS "No changes to ${GIT_COMMIT_ID_H}")
|
||||||
endif ()
|
endif ()
|
||||||
else ()
|
else ()
|
||||||
message(STATUS "SIM_GIT_COMMIT_ID not set.")
|
message(STATUS "SIM_GIT_COMMIT_ID not set.")
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
#~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=
|
#~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=
|
||||||
|
|
||||||
add_library(thread_lib INTERFACE)
|
add_library(thread_lib INTERFACE)
|
||||||
|
set(AIO_FLAGS)
|
||||||
|
|
||||||
if (WITH_ASYNC)
|
if (WITH_ASYNC)
|
||||||
include(ExternalProject)
|
include(ExternalProject)
|
||||||
|
@ -64,12 +65,12 @@ if (WITH_ASYNC)
|
||||||
set(THREADING_PKG_STATUS "Platform-detected threading support")
|
set(THREADING_PKG_STATUS "Platform-detected threading support")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (THREADS_FOUND OR PTW_FOUND)
|
if (THREADS_FOUND OR PTW_FOUND OR PThreads4W_FOUND)
|
||||||
target_compile_definitions(thread_lib INTERFACE USE_READER_THREAD SIM_ASYNCH_IO)
|
set(AIO_FLAGS USE_READER_THREAD SIM_ASYNCH_IO)
|
||||||
else ()
|
else ()
|
||||||
target_compile_definitions(thread_lib INTERFACE DONT_USE_READER_THREAD)
|
set(AIO_FLAGS DONT_USE_READER_THREAD)
|
||||||
endif ()
|
endif ()
|
||||||
else (WITH_ASYNC)
|
else()
|
||||||
target_compile_definitions(thread_lib INTERFACE DONT_USE_READER_THREAD)
|
target_compile_definitions(thread_lib INTERFACE DONT_USE_READER_THREAD)
|
||||||
set(THREADING_PKG_STATUS "asynchronous I/O disabled.")
|
set(THREADING_PKG_STATUS "asynchronous I/O disabled.")
|
||||||
endif (WITH_ASYNC)
|
endif()
|
||||||
|
|
|
@ -14,12 +14,14 @@ class SIMHBasicSimulator:
|
||||||
self.int64 = False
|
self.int64 = False
|
||||||
self.full64 = False
|
self.full64 = False
|
||||||
self.buildrom = buildrom
|
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.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.uses_video = False
|
||||||
## self.besm6_sdl_hack -> Only set/used by the BESM6 simulator.
|
## self.besm6_sdl_hack -> Only set/used by the BESM6 simulator.
|
||||||
self.besm6_sdl_hack = False
|
self.besm6_sdl_hack = False
|
||||||
|
## self.uses_aio -> True if the simulator uses AIO
|
||||||
|
self.uses_aio = False
|
||||||
self.sources = []
|
self.sources = []
|
||||||
self.defines = []
|
self.defines = []
|
||||||
self.includes = []
|
self.includes = []
|
||||||
|
@ -47,27 +49,33 @@ class SIMHBasicSimulator:
|
||||||
if use_int64 or use_addr64:
|
if use_int64 or use_addr64:
|
||||||
self.int64 = use_int64 and not use_addr64
|
self.int64 = use_int64 and not use_addr64
|
||||||
self.full64 = use_int64 and use_addr64
|
self.full64 = use_int64 and use_addr64
|
||||||
try:
|
for defn in ['USE_INT64', 'USE_ADDR64']:
|
||||||
self.defines.remove('USE_INT64')
|
try:
|
||||||
except:
|
self.defines.remove(defn)
|
||||||
pass
|
except:
|
||||||
try:
|
pass
|
||||||
self.defines.remove('USE_ADDR64')
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
|
|
||||||
## Video support:
|
## Video support:
|
||||||
|
|
||||||
self.has_display = any(map(lambda s: 'DISPLAY' in SPM.shallow_expand_vars(s, defs), self.sources))
|
self.has_display = any(map(lambda s: 'DISPLAY' in SPM.shallow_expand_vars(s, defs), self.sources))
|
||||||
if self.has_display:
|
if self.has_display:
|
||||||
try:
|
for src in ['${DISPLAYL}', '$(DISPLAYL)']:
|
||||||
self.sources.remove('${DISPLAYL}')
|
try:
|
||||||
self.sources.remove('$(DISPLAYL)')
|
self.sources.remove(src)
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
self.uses_video = 'USE_SIM_VIDEO' in self.defines or self.has_display
|
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):
|
def cleanup_defines(self):
|
||||||
"""Remove command line defines that aren't needed (because the CMake interface libraries
|
"""Remove command line defines that aren't needed (because the CMake interface libraries
|
||||||
already define them.)
|
already define them.)
|
||||||
|
@ -118,6 +126,8 @@ class SIMHBasicSimulator:
|
||||||
stream.write('\n' + indent4 + "FEATURE_DISPLAY")
|
stream.write('\n' + indent4 + "FEATURE_DISPLAY")
|
||||||
if self.besm6_sdl_hack:
|
if self.besm6_sdl_hack:
|
||||||
stream.write('\n' + indent4 + "BESM6_SDL_HACK")
|
stream.write('\n' + indent4 + "BESM6_SDL_HACK")
|
||||||
|
if self.uses_aio:
|
||||||
|
stream.write('\n' + indent4 + "USES_AIO")
|
||||||
if self.buildrom:
|
if self.buildrom:
|
||||||
stream.write('\n' + indent4 + "BUILDROMS")
|
stream.write('\n' + indent4 + "BUILDROMS")
|
||||||
stream.write('\n' + indent4 + "LABEL " + test_label)
|
stream.write('\n' + indent4 + "LABEL " + test_label)
|
||||||
|
|
|
@ -16,12 +16,12 @@ if (NOT DEFINED VCPKG_TARGET_TRIPLET)
|
||||||
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||||
## Default to x64, unless otherwise directed:
|
## Default to x64, unless otherwise directed:
|
||||||
set(SIMH_VCPKG_ARCH "x64")
|
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")
|
set(SIMH_VCPKG_ARCH "x86")
|
||||||
elseif(CMAKE_GENERATOR_PLATFORM MATCHES "ARM")
|
elseif(CMAKE_GENERATOR_PLATFORM MATCHES "[Aa][Rr][Mm]64")
|
||||||
set(SIMH_VCPKG_ARCH "arm")
|
|
||||||
elseif(CMAKE_GENERATOR_PLATFORM MATCHES "ARM64")
|
|
||||||
set(SIMH_VCPKG_ARCH "arm64")
|
set(SIMH_VCPKG_ARCH "arm64")
|
||||||
|
elseif(CMAKE_GENERATOR_PLATFORM MATCHES "[Aa][Rr][Mm]")
|
||||||
|
set(SIMH_VCPKG_ARCH "arm")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (MSVC OR CMAKE_C_COMPILER_ID MATCHES ".*Clang")
|
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.
|
## 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
|
## VCPKG_INSTALL_OPTIONS are additional args to 'vcpkg install'. Don't need to see the
|
||||||
## usage instructions each time...
|
## usage instructions each time...
|
||||||
list(APPEND VCPKG_INSTALL_OPTIONS
|
if (NOT ("--no-print-usage" IN_LIST VCPKG_INSTALL_OPTIONS))
|
||||||
"--no-print-usage"
|
list(APPEND VCPKG_INSTALL_OPTIONS
|
||||||
)
|
"--no-print-usage"
|
||||||
|
)
|
||||||
|
endif ()
|
||||||
|
|
||||||
include(${SIMH_CMAKE_TOOLCHAIN_FILE})
|
include(${SIMH_CMAKE_TOOLCHAIN_FILE})
|
||||||
|
|
|
@ -28,6 +28,7 @@ add_simulator(imlac
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}
|
${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
FEATURE_VIDEO
|
FEATURE_VIDEO
|
||||||
FEATURE_DISPLAY
|
FEATURE_DISPLAY
|
||||||
|
USES_AIO
|
||||||
LABEL imlac
|
LABEL imlac
|
||||||
PKG_FAMILY imlac_family
|
PKG_FAMILY imlac_family
|
||||||
TEST imlac)
|
TEST imlac)
|
||||||
|
|
65
makefile
65
makefile
|
@ -98,10 +98,14 @@
|
||||||
#
|
#
|
||||||
# CC Command (and platform available options). (Poor man's autoconf)
|
# CC Command (and platform available options). (Poor man's autoconf)
|
||||||
#
|
#
|
||||||
|
|
||||||
|
OS_CCDEFS=
|
||||||
|
AIO_CCDEFS=
|
||||||
|
|
||||||
ifneq (,${GREP_OPTIONS})
|
ifneq (,${GREP_OPTIONS})
|
||||||
$(info GREP_OPTIONS is defined in your environment.)
|
$(info GREP_OPTIONS is defined in your environment.)
|
||||||
$(info )
|
$(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 )
|
||||||
$(info The GREP_OPTIONS environment variable feature of grep is deprecated)
|
$(info The GREP_OPTIONS environment variable feature of grep is deprecated)
|
||||||
$(info for exactly this reason and will be removed from future versions of)
|
$(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 =
|
LTO_EXCLUDE_VERSIONS =
|
||||||
PCAPLIB = pcap
|
PCAPLIB = pcap
|
||||||
ifeq (agcc,$(findstring agcc,${GCC})) # Android target build?
|
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
|
OS_LDFLAGS = -lm
|
||||||
else # Non-Android (or Native Android) Builds
|
else # Non-Android (or Native Android) Builds
|
||||||
ifeq (,$(INCLUDES)$(LIBRARIES))
|
ifeq (,$(INCLUDES)$(LIBRARIES))
|
||||||
|
@ -573,23 +578,23 @@ ifeq (${WIN32},) #*nix Environments (&& cygwin)
|
||||||
endif
|
endif
|
||||||
ifneq (,$(call find_include,pthread))
|
ifneq (,$(call find_include,pthread))
|
||||||
ifneq (,$(call find_lib,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
|
OS_LDFLAGS += -lpthread
|
||||||
$(info using libpthread: $(call find_lib,pthread) $(call find_include,pthread))
|
$(info using libpthread: $(call find_lib,pthread) $(call find_include,pthread))
|
||||||
else
|
else
|
||||||
LIBEXTSAVE := ${LIBEXT}
|
LIBEXTSAVE := ${LIBEXT}
|
||||||
LIBEXT = a
|
LIBEXT = a
|
||||||
ifneq (,$(call find_lib,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
|
OS_LDFLAGS += -lpthread
|
||||||
$(info using libpthread: $(call find_lib,pthread) $(call find_include,pthread))
|
$(info using libpthread: $(call find_lib,pthread) $(call find_include,pthread))
|
||||||
else
|
else
|
||||||
ifneq (,$(findstring Haiku,$(OSTYPE)))
|
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))
|
$(info using libpthread: $(call find_include,pthread))
|
||||||
else
|
else
|
||||||
ifeq (Darwin,$(OSTYPE))
|
ifeq (Darwin,$(OSTYPE))
|
||||||
OS_CCDEFS += -DUSE_READER_THREAD -DSIM_ASYNCH_IO
|
AIO_CCDEFS += -DUSE_READER_THREAD -DSIM_ASYNCH_IO
|
||||||
OS_LDFLAGS += -lpthread
|
OS_LDFLAGS += -lpthread
|
||||||
$(info using macOS libpthread: $(call find_include,pthread))
|
$(info using macOS libpthread: $(call find_include,pthread))
|
||||||
endif
|
endif
|
||||||
|
@ -1131,11 +1136,13 @@ else
|
||||||
$(info include paths are: ${INCPATH})
|
$(info include paths are: ${INCPATH})
|
||||||
# Give preference to any MinGW provided threading (if available)
|
# Give preference to any MinGW provided threading (if available)
|
||||||
ifneq (,$(call find_include,pthread))
|
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
|
PTHREADS_LDFLAGS = -lpthread
|
||||||
else
|
else
|
||||||
ifeq (pthreads,$(shell if exist ..\windows-build\pthreads\Pre-built.2\include\pthread.h echo pthreads))
|
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
|
PTHREADS_LDFLAGS = -lpthreadGC2 -L..\windows-build\pthreads\Pre-built.2\lib
|
||||||
endif
|
endif
|
||||||
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_ng.c ${PDP11D}/pdp11_daz.c ${PDP11D}/pdp11_tv.c \
|
||||||
${PDP11D}/pdp11_mb.c ${PDP11D}/pdp11_rr.c \
|
${PDP11D}/pdp11_mb.c ${PDP11D}/pdp11_rr.c \
|
||||||
${DISPLAYL} ${DISPLAYNG} ${DISPLAYVT}
|
${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
|
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_dz.c ${PDP11D}/pdp11_lp.c ${PDP11D}/pdp11_tq.c \
|
||||||
${PDP11D}/pdp11_xq.c ${PDP11D}/pdp11_vh.c ${PDP11D}/pdp11_cr.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
|
${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 \
|
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_rd.c ${VAXD}/vax4xx_rz80.c ${VAXD}/vax_xs.c \
|
||||||
${VAXD}/vax4xx_va.c ${VAXD}/vax4xx_vc.c ${VAXD}/vax_lk.c \
|
${VAXD}/vax4xx_va.c ${VAXD}/vax4xx_vc.c ${VAXD}/vax_lk.c \
|
||||||
${VAXD}/vax_vs.c ${VAXD}/vax_gpx.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 \
|
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_rd.c ${VAXD}/vax4xx_rz80.c ${VAXD}/vax_xs.c \
|
||||||
${VAXD}/vax4xx_va.c ${VAXD}/vax4xx_vc.c ${VAXD}/vax4xx_ve.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
|
${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
|
VAX411_OPT = ${VAX420_OPT} -DVAX_411
|
||||||
VAX412_OPT = ${VAX420_OPT} -DVAX_412
|
VAX412_OPT = ${VAX420_OPT} -DVAX_412
|
||||||
VAX41A_OPT = ${VAX420_OPT} -DVAX_41A
|
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}/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_rz80.c ${VAXD}/vax_xs.c ${VAXD}/vax4xx_vc.c \
|
||||||
${VAXD}/vax4xx_ve.c ${VAXD}/vax_lk.c ${VAXD}/vax_vs.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 \
|
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}/vax_watch.c ${VAXD}/vax_nar.c ${VAXD}/vax4xx_stddev.c \
|
||||||
${VAXD}/vax440_sysdev.c ${VAXD}/vax440_syslist.c ${VAXD}/vax4xx_dz.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
|
${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
|
VAX46_OPT = ${VAX440_OPT} -DVAX_46
|
||||||
VAX47_OPT = ${VAX440_OPT} -DVAX_47
|
VAX47_OPT = ${VAX440_OPT} -DVAX_47
|
||||||
VAX48_OPT = ${VAX440_OPT} -DVAX_48
|
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}/vax_watch.c ${VAXD}/vax_nar.c ${VAXD}/vax_xs.c \
|
||||||
${VAXD}/vax4xx_rz94.c ${VAXD}/vax4nn_stddev.c \
|
${VAXD}/vax4xx_rz94.c ${VAXD}/vax4nn_stddev.c \
|
||||||
${VAXD}/is1000_sysdev.c ${VAXD}/is1000_syslist.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 \
|
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_dz.c ${PDP11D}/pdp11_lp.c ${PDP11D}/pdp11_tq.c \
|
||||||
${PDP11D}/pdp11_xq.c ${PDP11D}/pdp11_vh.c ${PDP11D}/pdp11_cr.c \
|
${PDP11D}/pdp11_xq.c ${PDP11D}/pdp11_vh.c ${PDP11D}/pdp11_cr.c \
|
||||||
${PDP11D}/pdp11_td.c ${PDP11D}/pdp11_io_lib.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 \
|
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_xq.c ${PDP11D}/pdp11_vh.c ${PDP11D}/pdp11_cr.c \
|
||||||
${PDP11D}/pdp11_td.c ${PDP11D}/pdp11_io_lib.c ${PDP11D}/pdp11_dup.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}
|
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 \
|
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_hk.c ${PDP11D}/pdp11_vh.c ${PDP11D}/pdp11_dmc.c \
|
||||||
${PDP11D}/pdp11_td.c ${PDP11D}/pdp11_tc.c ${PDP11D}/pdp11_rk.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
|
${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 \
|
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_vh.c ${PDP11D}/pdp11_dmc.c ${PDP11D}/pdp11_dup.c \
|
||||||
${PDP11D}/pdp11_td.c ${PDP11D}/pdp11_tc.c ${PDP11D}/pdp11_rk.c \
|
${PDP11D}/pdp11_td.c ${PDP11D}/pdp11_tc.c ${PDP11D}/pdp11_rk.c \
|
||||||
${PDP11D}/pdp11_io_lib.c ${PDP11D}/pdp11_ch.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 \
|
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_vh.c ${PDP11D}/pdp11_dmc.c ${PDP11D}/pdp11_dup.c \
|
||||||
${PDP11D}/pdp11_td.c ${PDP11D}/pdp11_tc.c ${PDP11D}/pdp11_rk.c \
|
${PDP11D}/pdp11_td.c ${PDP11D}/pdp11_tc.c ${PDP11D}/pdp11_rk.c \
|
||||||
${PDP11D}/pdp11_io_lib.c ${PDP11D}/pdp11_ch.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 \
|
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_hk.c ${PDP11D}/pdp11_vh.c ${PDP11D}/pdp11_dmc.c \
|
||||||
${PDP11D}/pdp11_td.c ${PDP11D}/pdp11_tc.c ${PDP11D}/pdp11_rk.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
|
${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 \
|
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_vh.c ${PDP11D}/pdp11_dmc.c ${PDP11D}/pdp11_dup.c \
|
||||||
${PDP11D}/pdp11_td.c ${PDP11D}/pdp11_tc.c ${PDP11D}/pdp11_rk.c \
|
${PDP11D}/pdp11_td.c ${PDP11D}/pdp11_tc.c ${PDP11D}/pdp11_rk.c \
|
||||||
${PDP11D}/pdp11_io_lib.c ${PDP11D}/pdp11_ch.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
|
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_dp.c ${IMLACD}/imlac_crt.c ${IMLACD}/imlac_kbd.c \
|
||||||
${IMLACD}/imlac_tty.c ${IMLACD}/imlac_pt.c ${IMLACD}/imlac_bel.c \
|
${IMLACD}/imlac_tty.c ${IMLACD}/imlac_pt.c ${IMLACD}/imlac_bel.c \
|
||||||
${DISPLAYL}
|
${DISPLAYL}
|
||||||
IMLAC_OPT = -I ${IMLACD} ${DISPLAY_OPT}
|
IMLAC_OPT = -I ${IMLACD} ${DISPLAY_OPT} ${AIO_CCDEFS}
|
||||||
|
|
||||||
|
|
||||||
STUBD = ${SIMHD}/stub
|
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_dpy.c ${TT2500D}/tt2500_crt.c ${TT2500D}/tt2500_tv.c \
|
||||||
${TT2500D}/tt2500_key.c ${TT2500D}/tt2500_uart.c ${TT2500D}/tt2500_rom.c \
|
${TT2500D}/tt2500_key.c ${TT2500D}/tt2500_uart.c ${TT2500D}/tt2500_rom.c \
|
||||||
${DISPLAYL}
|
${DISPLAYL}
|
||||||
TT2500_OPT = -I ${TT2500D} ${DISPLAY_OPT}
|
TT2500_OPT = -I ${TT2500D} ${DISPLAY_OPT} ${AIO_CCDEFS}
|
||||||
|
|
||||||
|
|
||||||
PDP8D = ${SIMHD}/PDP8
|
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}/kx10_cp.c ${PDP6D}/pdp6_dct.c ${PDP6D}/pdp6_dtc.c \
|
||||||
${PDP6D}/pdp6_mtc.c ${PDP6D}/pdp6_dsk.c ${PDP6D}/pdp6_dcs.c \
|
${PDP6D}/pdp6_mtc.c ${PDP6D}/pdp6_dsk.c ${PDP6D}/pdp6_dcs.c \
|
||||||
${PDP6D}/kx10_dpy.c ${PDP6D}/pdp6_slave.c ${DISPLAYL} ${DISPLAY340}
|
${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
|
KA10D = ${SIMHD}/PDP10
|
||||||
ifneq (,${DISPLAY_OPT})
|
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_dmac.c ${ATT3B2D}/3b2_io.c \
|
||||||
${ATT3B2D}/3b2_ports.c ${ATT3B2D}/3b2_ctc.c \
|
${ATT3B2D}/3b2_ports.c ${ATT3B2D}/3b2_ctc.c \
|
||||||
${ATT3B2D}/3b2_ni.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 \
|
ATT3B2M700 = ${ATT3B2D}/3b2_cpu.c ${ATT3B2D}/3b2_sys.c \
|
||||||
${ATT3B2D}/3b2_rev3_sys.c ${ATT3B2D}/3b2_rev3_mmu.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_if.c ${ATT3B2D}/3b2_dmac.c \
|
||||||
${ATT3B2D}/3b2_io.c ${ATT3B2D}/3b2_ports.c \
|
${ATT3B2D}/3b2_io.c ${ATT3B2D}/3b2_ports.c \
|
||||||
${ATT3B2D}/3b2_scsi.c ${ATT3B2D}/3b2_ni.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
|
SIGMAD = ${SIMHD}/sigma
|
||||||
SIGMA = ${SIGMAD}/sigma_cpu.c ${SIGMAD}/sigma_sys.c ${SIGMAD}/sigma_cis.c \
|
SIGMA = ${SIGMAD}/sigma_cpu.c ${SIGMAD}/sigma_sys.c ${SIGMAD}/sigma_cis.c \
|
||||||
|
|
|
@ -28,6 +28,7 @@ add_simulator(tt2500
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}
|
${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
FEATURE_VIDEO
|
FEATURE_VIDEO
|
||||||
FEATURE_DISPLAY
|
FEATURE_DISPLAY
|
||||||
|
USES_AIO
|
||||||
LABEL tt2500
|
LABEL tt2500
|
||||||
PKG_FAMILY default_family
|
PKG_FAMILY default_family
|
||||||
TEST tt2500)
|
TEST tt2500)
|
||||||
|
|
Loading…
Add table
Reference in a new issue