Files
Jungfraujoch/tools/CMakeLists.txt
T
leonarski_fandClaude Opus 4.8 1ea5897fca
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 13m59s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 14m9s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 14m24s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 14m44s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 14m46s
Build Packages / build:rpm (rocky8) (push) Successful in 14m48s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 15m27s
Build Packages / XDS test (neggia plugin) (push) Successful in 9m22s
Build Packages / XDS test (durin plugin) (push) Successful in 10m23s
Build Packages / Generate python client (push) Successful in 24s
Build Packages / Create release (push) Skipped
Build Packages / XDS test (JFJoch plugin) (push) Successful in 10m33s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 11m40s
Build Packages / Build documentation (push) Successful in 47s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 12m23s
Build Packages / build:rpm (rocky9) (push) Successful in 13m0s
Build Packages / DIALS test (push) Successful in 13m57s
Build Packages / Unit tests (push) Successful in 59m20s
windows: vendor wingetopt and scope server-only targets out of viewer-only builds
MSVC/Windows build fixes:

- Force JFJOCH_VIEWER_ONLY ON for Windows and macOS; the broker/receiver/FPGA/
  writer server stack is Linux-only, so those platforms build the viewer subset.
- Vendor an OpenBSD/NetBSD getopt/getopt_long shim (tools/wingetopt/, BSD/ISC)
  as a WIN32-only static lib -- the MSVC CRT has no <getopt.h> -- and link it
  into the four portable CLI tools on Windows.
- jfjoch_extract_hkl.cpp: include <getopt.h> explicitly (it relied on glibc's
  transitive <unistd.h>).
- jfjoch_process.cpp: guard <unistd.h> with #ifndef _WIN32.
- Guard JFJochStreamWriter and jfjoch_writer with IF(NOT JFJOCH_VIEWER_ONLY):
  the former pulls in JFJochImagePuller, the latter uses a fork()/waitpid()
  multi-process design; neither belongs to the portable viewer subset.
- Record wingetopt in THIRD_PARTY_NOTICES.md and licenses/.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 18:50:20 +02:00

68 lines
3.2 KiB
CMake

# Offline analysis CLI tools. These link only the portable libraries (reader,
# image_analysis, writer, common), so they build in viewer-only / Windows packages too
# and install into the "viewer" component.
ADD_EXECUTABLE(jfjoch_extract_hkl jfjoch_extract_hkl.cpp
XdsIntegrateParser.cpp
XdsIntegrateParser.h)
TARGET_LINK_LIBRARIES(jfjoch_extract_hkl JFJochReader)
INSTALL(TARGETS jfjoch_extract_hkl RUNTIME COMPONENT viewer)
ADD_EXECUTABLE(jfjoch_process jfjoch_process.cpp)
TARGET_LINK_LIBRARIES(jfjoch_process JFJochReader JFJochImageAnalysis JFJochWriter)
INSTALL(TARGETS jfjoch_process RUNTIME COMPONENT viewer)
ADD_EXECUTABLE(jfjoch_scale jfjoch_scale.cpp)
TARGET_LINK_LIBRARIES(jfjoch_scale JFJochReader JFJochImageAnalysis JFJochWriter)
INSTALL(TARGETS jfjoch_scale RUNTIME COMPONENT viewer)
ADD_EXECUTABLE(jfjoch_azint jfjoch_azint.cpp)
TARGET_LINK_LIBRARIES(jfjoch_azint JFJochReader JFJochImageAnalysis JFJochWriter)
INSTALL(TARGETS jfjoch_azint RUNTIME COMPONENT viewer)
# On Windows these CLIs get getopt/getopt_long from the vendored wingetopt shim (libc has none).
IF (WIN32)
TARGET_LINK_LIBRARIES(jfjoch_extract_hkl wingetopt)
TARGET_LINK_LIBRARIES(jfjoch_process wingetopt)
TARGET_LINK_LIBRARIES(jfjoch_scale wingetopt)
TARGET_LINK_LIBRARIES(jfjoch_azint wingetopt)
ENDIF()
# Online / hardware tools (broker, FPGA, receiver, detector). They link the non-portable
# libraries and are Linux-only, so they are skipped in a viewer-only build.
IF(NOT JFJOCH_VIEWER_ONLY)
ADD_EXECUTABLE(jfjoch_udp_simulator jfjoch_udp_simulator.cpp UDPSimulator.cpp UDPSimulator.h)
TARGET_LINK_LIBRARIES(jfjoch_udp_simulator JFJochCommon)
INSTALL(TARGETS jfjoch_udp_simulator RUNTIME COMPONENT jfjoch)
ADD_EXECUTABLE(jfjoch_hdf5_test jfjoch_hdf5_test.cpp)
TARGET_LINK_LIBRARIES(jfjoch_hdf5_test JFJochWriter JFJochReceiver JFJochCommon)
INSTALL(TARGETS jfjoch_hdf5_test RUNTIME COMPONENT jfjoch)
ADD_EXECUTABLE(jfjoch_pcie_status jfjoch_pcie_status.cpp)
TARGET_LINK_LIBRARIES(jfjoch_pcie_status JFJochDevice JFJochCommon)
INSTALL(TARGETS jfjoch_pcie_status RUNTIME COMPONENT jfjoch)
ADD_EXECUTABLE(jfjoch_pcie_net_cfg jfjoch_pcie_net_cfg.cpp)
TARGET_LINK_LIBRARIES(jfjoch_pcie_net_cfg JFJochDevice JFJochCommon)
INSTALL(TARGETS jfjoch_pcie_net_cfg RUNTIME COMPONENT jfjoch)
ADD_EXECUTABLE(jfjoch_pcie_clear_net_counters jfjoch_pcie_clear_net_counters.cpp)
TARGET_LINK_LIBRARIES(jfjoch_pcie_clear_net_counters JFJochDevice JFJochCommon)
INSTALL(TARGETS jfjoch_pcie_clear_net_counters RUNTIME COMPONENT jfjoch)
ADD_EXECUTABLE(jfjoch_fpga_test jfjoch_fpga_test.cpp)
TARGET_LINK_LIBRARIES(jfjoch_fpga_test JFJochReceiver)
INSTALL(TARGETS jfjoch_fpga_test RUNTIME COMPONENT jfjoch)
ADD_EXECUTABLE(jfjoch_simplon_test jfjoch_simplon_test.cpp)
TARGET_LINK_LIBRARIES(jfjoch_simplon_test JFJochDetector JFJochPreview)
INSTALL(TARGETS jfjoch_simplon_test RUNTIME COMPONENT jfjoch)
ADD_EXECUTABLE(jfjoch_lite_perf_test jfjoch_lite_perf_test.cpp)
TARGET_LINK_LIBRARIES(jfjoch_lite_perf_test JFJochReceiver JFJochWriter)
INSTALL(TARGETS jfjoch_lite_perf_test RUNTIME COMPONENT jfjoch)
ADD_SUBDIRECTORY(xbflash.qspi)
ENDIF()