Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CMake: Updates #328

Merged
merged 1 commit into from
Feb 1, 2024
Merged

CMake: Updates #328

merged 1 commit into from
Feb 1, 2024

Conversation

bscottm
Copy link
Contributor

@bscottm bscottm commented Dec 4, 2023

"--flavor"/"-f" flag not specified on the command line: Complain loudly, print help and exit. The script used to default to "Unix Makefiles".

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

@bscottm bscottm force-pushed the have-libpng branch 3 times, most recently from 4d6835f to 69e5024 Compare December 27, 2023 17:42
@bscottm bscottm force-pushed the have-libpng branch 3 times, most recently from 1efe338 to befb177 Compare December 30, 2023 23:04
@bscottm bscottm changed the title CMake: Default build flavor, HAVE_LIBPNG define CMake: Updates Jan 8, 2024
@bscottm
Copy link
Contributor Author

bscottm commented Jan 13, 2024

@pkoning2 (@sethm, @XVilka) This is now a raftload of CMake-related 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 actually 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 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.

@bscottm
Copy link
Contributor Author

bscottm commented Jan 13, 2024

@sethm: "Affected" means "really needs AIO". There are only a handful of simulators that really need AIO.

Issue open-simh#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.
@pkoning2 pkoning2 merged commit d9d0e8b into open-simh:master Feb 1, 2024
18 checks passed
@bscottm bscottm deleted the have-libpng branch February 23, 2024 23:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants