Compare commits

...
10 Commits
Author SHA1 Message Date
Clifford Yapp 0bf111e741 re2c has ext submodule, don't fail fataly w/ local sources 2026-10-13 11:02:23 -04:00
Clifford Yapp 42d8d7ca57 Bake logic for redirecting git URLs into CMake
If we need to use some source other than github.com for our bext
repositories, historically the user had to manually set up the
remappings to make that work.

This commit adds support for a BEXT_REPOSITORY_ROOT CMake variable that
will handle the necessary redirects automatically.
2026-10-10 10:50:17 -04:00
Clifford Yapp 5ccf9b577d Patch IWidgets to avoid a conflict with Tk 2026-10-06 00:54:29 -04:00
Clifford Yapp cfe7b808cf Get plief update 2026-10-05 21:26:15 +00:00
Clifford Yapp f8245e0bb3 See where we stand with macos-15 2026-10-04 13:21:51 -04:00
Christopher Sean Morrison 0682795bcf always build strclear optimized since it's for our builds, and needs to be fast 2026-09-24 12:29:42 -04:00
Christopher Sean Morrison 6d97793557 preserve the compilers we set for nested configures, avoid abi incompat. 2026-09-24 12:28:41 -04:00
Christopher Sean Morrison bbf604b69f ospray superbuild says oidn Debug build on msvc is broken, so accommodate.
should revisit whether it's actually still busted at some point.
2026-09-24 12:27:41 -04:00
Clifford Yapp 31a13bc8d3 Move specialized Xmin discussion to separate file 2026-09-17 10:42:08 -04:00
Clifford Yapp 76e1dbdb3a Correct expat CMakeLists.txt location 2026-09-17 10:33:40 -04:00
15 changed files with 275 additions and 84 deletions
+5 -5
View File
@@ -132,7 +132,7 @@ jobs:
macos_release:
name: macOS Clang Release Build
runs-on: macos-14
runs-on: macos-15
outputs:
artifact-id: ${{ steps.upload.outputs.artifact-id }}
steps:
@@ -158,7 +158,7 @@ jobs:
if: github.ref == 'refs/heads/main'
shell: bash
env:
BEXT_CHANNEL: macos-14-${{ runner.arch }}-release
BEXT_CHANNEL: macos-15-${{ runner.arch }}-release
working-directory: ${{ runner.temp }}/bext_output
run: |
test -d install
@@ -171,8 +171,8 @@ jobs:
id: upload
uses: actions/upload-artifact@v4
with:
name: bext-macos-14-${{ runner.arch }}-release-${{ github.sha }}
path: ${{ runner.temp }}/bext-macos-14-${{ runner.arch }}-release.tar.gz
name: bext-macos-15-${{ runner.arch }}-release-${{ github.sha }}
path: ${{ runner.temp }}/bext-macos-15-${{ runner.arch }}-release.tar.gz
if-no-files-found: error
retention-days: ${{ env.BEXT_ARCHIVE_RETENTION_DAYS }}
compression-level: 0
@@ -205,7 +205,7 @@ jobs:
CURRENT_ARTIFACT_IDS: ${{ needs.linux_release.outputs.artifact-id }},${{ needs.windows_ninja_release.outputs.artifact-id }},${{ needs.macos_release.outputs.artifact-id }},${{ steps.marker.outputs.artifact-id }}
run: |
set -euo pipefail
artifact_pattern='^bext-((ubuntu-24\.04|windows-2025|macos-14)-(X86|X64|ARM|ARM64)-release|production)-'
artifact_pattern='^bext-((ubuntu-24\.04|windows-2025|macos-15)-(X86|X64|ARM|ARM64)-release|production)-'
artifact_rows="$(gh api --paginate "repos/$GITHUB_REPOSITORY/actions/artifacts?per_page=100" --jq '.artifacts[] | [.id, .name] | @tsv')"
while IFS=$'\t' read -r artifact_id artifact_name; do
if [[ "$artifact_name" =~ $artifact_pattern && ",${CURRENT_ARTIFACT_IDS}," != *",${artifact_id},"* ]]; then
+1
View File
@@ -126,6 +126,7 @@
[submodule "itk/itk"]
path = itk/itk
url = https://github.com/BRL-CAD/itk
branch = main
ignore = dirty
shallow = true
[submodule "iwidgets/iwidgets"]
+3 -14
View File
@@ -1,6 +1,8 @@
set(bext_root "${CMAKE_CURRENT_LIST_DIR}/..")
get_filename_component(bext_root "${bext_root}" ABSOLUTE)
include("${CMAKE_CURRENT_LIST_DIR}/BextGit.cmake")
if (NOT DEFINED PROFILE)
message(FATAL_ERROR "Set PROFILE to one of: auto, bundled, minimal, everything")
endif (NOT DEFINED PROFILE)
@@ -73,19 +75,6 @@ if (LIST_ONLY)
return()
endif (LIST_ONLY)
set(git_args submodule update --init --recursive --jobs 8)
if (GIT_SHALLOW_CLONE)
list(APPEND git_args --recommend-shallow)
endif (GIT_SHALLOW_CLONE)
list(APPEND git_args -- ${project_paths})
if (WIN32)
list(PREPEND git_args -c core.longpaths=true)
endif (WIN32)
execute_process(
COMMAND ${GIT_EXECUTABLE} ${git_args}
WORKING_DIRECTORY ${bext_root}
COMMAND_ERROR_IS_FATAL ANY
)
bext_git_submodule_update("${bext_root}" --jobs 8 -- ${project_paths})
message(STATUS "Bootstrap complete for profile ${profile}")
+104
View File
@@ -0,0 +1,104 @@
# Shared repository selection for configure-time and bootstrap submodule updates.
# Keep .gitmodules canonical and scope all overrides to the Git process tree.
include_guard(GLOBAL)
set(_BEXT_GIT_CANONICAL_ROOT "https://github.com/BRL-CAD")
set(BEXT_REPOSITORY_ROOT "${_BEXT_GIT_CANONICAL_ROOT}" CACHE STRING
"Repository URL or local mirror directory containing bext's dependency repositories")
function(bext_git_repository_root out_root out_local)
set(root "${BEXT_REPOSITORY_ROOT}")
set(local FALSE)
if (root STREQUAL "")
message(FATAL_ERROR "BEXT_REPOSITORY_ROOT must be a repository URL or local mirror directory")
endif ()
# Check drive paths before URL schemes or scp-style SSH locations.
if (root MATCHES "^file://")
set(local TRUE)
string(REPLACE "=" "%3D" root "${root}")
elseif (root MATCHES "^[A-Za-z]:[/\\\\]" OR
NOT (root MATCHES "^[A-Za-z][A-Za-z0-9+.-]*://" OR root MATCHES "^[^/]+:.+"))
set(local TRUE)
string(REPLACE "\\" "/" root "${root}")
if (WIN32 OR NOT root MATCHES "^[A-Za-z]:/")
get_filename_component(root "${root}" ABSOLUTE
BASE_DIR "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/..")
endif ()
# Encode path characters with special meaning in a file URL. In
# particular, a literal % in a native path must not become a URL escape.
string(REPLACE "%" "%25" root "${root}")
string(REPLACE " " "%20" root "${root}")
string(REPLACE "#" "%23" root "${root}")
string(REPLACE "?" "%3F" root "${root}")
string(REPLACE "=" "%3D" root "${root}")
if (root MATCHES "^[A-Za-z]:/")
set(root "file:///${root}")
elseif (root MATCHES "^//")
set(root "file:${root}")
else ()
set(root "file://${root}")
endif ()
endif ()
if (NOT root MATCHES "^file:///*$")
string(REGEX REPLACE "/+$" "" root "${root}")
string(APPEND root "/")
else ()
set(root "file:///")
endif ()
set(${out_root} "${root}" PARENT_SCOPE)
set(${out_local} "${local}" PARENT_SCOPE)
endfunction()
function(bext_git_submodule_update working_directory)
find_program(GIT_EXECUTABLE git)
if (NOT GIT_EXECUTABLE)
message(FATAL_ERROR "Need to populate Git submodules, but unable to find git executable")
endif ()
bext_git_repository_root(root local)
set(git_command "${GIT_EXECUTABLE}")
if (WIN32)
list(APPEND git_command -c core.longpaths=true)
endif ()
if (NOT root STREQUAL "${_BEXT_GIT_CANONICAL_ROOT}/")
list(APPEND git_command -c "url.${root}.insteadOf=${_BEXT_GIT_CANONICAL_ROOT}/")
endif ()
set(shallow_args)
if (local)
list(APPEND git_command -c protocol.file.allow=always)
# The environment restriction also reaches recursive Git processes and
# overrides any protocol permissions in the user's Git configuration.
list(PREPEND git_command "${CMAKE_COMMAND}" -E env GIT_ALLOW_PROTOCOL=file --)
list(APPEND shallow_args --no-recommend-shallow)
elseif (GIT_SHALLOW_CLONE)
list(APPEND shallow_args --recommend-shallow)
endif ()
execute_process(
COMMAND ${git_command} submodule update --init --recursive ${shallow_args} ${ARGN}
WORKING_DIRECTORY "${working_directory}"
RESULT_VARIABLE git_result
)
if (NOT git_result STREQUAL "0")
set(local_note "")
if (local)
set(local_note " Only file transport is permitted; all required repositories and pinned commits must be available locally, including recursive submodules.")
endif ()
message(WARNING
"Git submodule update failed in ${working_directory} using BEXT_REPOSITORY_ROOT=${BEXT_REPOSITORY_ROOT} (${git_result}).${local_note}")
endif ()
endfunction()
bext_git_repository_root(_bext_git_root _bext_git_local)
message(STATUS "bext repository root: ${_bext_git_root}")
if (_bext_git_local)
message(STATUS "bext Git updates: file transport only, shallow recommendations disabled")
if (GIT_SHALLOW_CLONE)
message(STATUS "Ignoring GIT_SHALLOW_CLONE for the local repository mirror")
endif ()
endif ()
unset(_bext_git_root)
unset(_bext_git_local)
+5 -19
View File
@@ -34,6 +34,7 @@
#
###
include("${CMAKE_CURRENT_LIST_DIR}/BextGit.cmake")
###############################################################################
# It is common for more complex targets to need to key build settings off of
@@ -102,23 +103,8 @@ endmacro(TargetInstallDeps root)
function(git_submodule_init path checkfile)
string(REGEX REPLACE "[^A-Za-z0-9_+.-]" "_" stamp_name "${path}")
set(sha1_stamp "${CMAKE_CURRENT_BINARY_DIR}/build_sha1_${stamp_name}.txt")
if (NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${path}/${checkfile})
find_program(GIT_EXECUTABLE git)
if (NOT GIT_EXECUTABLE)
message(FATAL_ERROR "Need to populate Git submodule, but unable to find git executable")
endif (NOT GIT_EXECUTABLE)
set(git_args submodule update --init --recursive)
if (GIT_SHALLOW_CLONE)
list(APPEND git_args --recommend-shallow)
endif (GIT_SHALLOW_CLONE)
if (WIN32)
list(PREPEND git_args -c core.longpaths=true)
endif (WIN32)
execute_process(
COMMAND ${GIT_EXECUTABLE} ${git_args} ${path}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMAND_ERROR_IS_FATAL ANY
)
if (NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${path}/${checkfile}")
bext_git_submodule_update("${CMAKE_CURRENT_SOURCE_DIR}" -- "${path}")
if (NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${path}/${checkfile}")
message(FATAL_ERROR "Git submodule ${path} is missing ${checkfile} after checkout")
endif ()
@@ -129,7 +115,7 @@ function(git_submodule_init path checkfile)
OUTPUT_STRIP_TRAILING_WHITESPACE
)
file(WRITE "${sha1_stamp}" ${GIT_SHA1})
else (NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${path}/${checkfile})
else ()
execute_process(
COMMAND git log -1 --format=%H
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${path}
@@ -148,7 +134,7 @@ function(git_submodule_init path checkfile)
endif (NOT "${BUILD_SHA1}" MATCHES "${GIT_SHA1}")
endif()
file(WRITE "${sha1_stamp}" ${GIT_SHA1})
endif (NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${path}/${checkfile})
endif ()
endfunction(git_submodule_init path)
###############################################################################
+52
View File
@@ -50,6 +50,58 @@ Shallow clone options:
Shallow clones are fine for compile-only use, but they are not recommended for
development or for submodule update work.
# Alternate repositories and offline mirrors
`BEXT_REPOSITORY_ROOT` selects the directory containing the dependency
repositories. It defaults to `https://github.com/BRL-CAD`. For another host,
specify the URL of the equivalent repository directory:
```sh
cmake --preset auto -DBEXT_REPOSITORY_ROOT=https://git.example.org/brlcad
```
For offline use, the directory can contain bare Git mirrors such as
`bext.git`, `astyle.git`, and `libpng.git`, as produced by BRL-CAD's
`sh/mirror_repos.sh`. Clone bext first, then let CMake populate the required
submodules:
```sh
git clone /path/to/mirror/BRL-CAD/bext.git
cd bext
cmake --preset auto -DBEXT_REPOSITORY_ROOT=/path/to/mirror/BRL-CAD
```
The root points directly to the repositories; CMake does not append `BRL-CAD`.
Local paths and `file://` URLs are supported, as are remote Git URLs including
`ssh://` URLs. Relative local paths are resolved against the bext source
directory. Quote the `-D` argument if the path contains spaces. The setting
is saved in the configure cache.
The optional bootstrap script accepts the same setting:
```sh
cmake -DPROFILE=auto -DBEXT_REPOSITORY_ROOT=/path/to/mirror/BRL-CAD \
-P CMake/BextBootstrap.cmake
```
Bootstrap runs separately from configure, so pass the setting to both commands
if you use both workflows. `LIST_ONLY=ON` previews bootstrap selection without
fetching.
CMake redirects `https://github.com/BRL-CAD/` URLs using command-scoped Git
configuration, including recursive submodule operations. Local roots enable
file transport and forbid network transport for those Git operations. They
also disable shallow-clone recommendations, even with `GIT_SHALLOW_CLONE=ON`,
so full mirrors can supply older pinned commits. The mirrors must contain all
required commits. Recursive submodules outside that URL prefix need their
own Git URL mappings and local mirrors; otherwise initialization fails.
The override does not change `.gitmodules` or install persistent Git rewrite
settings. To return CMake-driven updates to GitHub, set
`-DBEXT_REPOSITORY_ROOT=https://github.com/BRL-CAD`. Direct Git commands use
their normal configuration. This setting controls submodule fetching, not
network access by dependency build scripts.
# Path and directory caveats
* Avoid symlinked source or build directory paths. `bext` warns about these
+5 -43
View File
@@ -34,6 +34,10 @@ cmake --preset auto
Use `LIST_ONLY=ON` to preview the selected submodules without fetching them,
and `GIT_SHALLOW_CLONE=ON` to specify shallow clones during bootstrap.
Both configure and bootstrap accept `BEXT_REPOSITORY_ROOT` to fetch from an
alternate host or a local Git mirror. See [alternate repositories and offline
mirrors](INSTALL.md#alternate-repositories-and-offline-mirrors) for examples.
# How manual selection works
Build selection happens in three layers:
@@ -61,49 +65,6 @@ When `bext` is driven from a BRL-CAD build, `BRLCAD_COMPONENTS` can further
narrow some BRL-CAD-related packages to only those needed by the requested
component set.
## Xmin-backed bundled toolkits
An installed Xmin SDK can provide the X11 and OpenGL surface for bext's
bundled Tk and Qt. Set `BEXT_XMIN_ROOT` to select the standard Xmin profile:
```sh
cmake -S /path/to/bext -B /path/to/bext-build \
-DBEXT_XMIN_ROOT=/absolute/path/to/xmin-sdk \
-DENABLE_TCL=ON -DENABLE_QT=ON
```
The profile affects only Tk and Qt packages selected for a local build. It
does not enable a package excluded by `USE_*`, `BRLCAD_COMPONENTS`, or an
explicit `DISABLE_*` setting.
* Tk is configured with `--with-xmin` and bext's matching Tk patch.
* Qt is built with the matching Xmin patch, the qxcb desktop-OpenGL profile,
and dependency audits that reject accidental host X11 or OpenGL linkage.
The patches are maintained next to the dependency build logic as
`tk/tk_xmin.patch` and `qt/qt_xmin.patch`. They are tied to the exact Tk
and Qt submodule revisions in this repository. Updating either dependency
therefore requires updating its patch; a stale patch fails during the patch
step rather than silently producing a mixed build.
The Xmin SDK must include toolkit-client support for Tk. Qt additionally
requires the Qt X11 compatibility client and client OpenGL support. Normal
system discovery is unchanged when `BEXT_XMIN_ROOT` is empty.
Qt's installed package metadata retains an explicit dependency on Xmin.
Downstream projects must therefore keep the same SDK discoverable with
`Xmin_DIR` or `CMAKE_PREFIX_PATH`; configuration fails instead of falling back
to host X libraries when that SDK is absent.
## Advanced toolkit patch controls
Unix builds may pass additional, semicolon-separated absolute patch paths in
`TK_EXTRA_PATCHES`, plus additional Tk `configure` arguments in
`TK_CONFIGURE_ARGS`. `QT_EXTRA_PATCHES` provides the corresponding Qt
hook. `QT_XMIN_ROOT` remains available for manually supplied Qt Xmin patches.
These low-level controls are not needed when `BEXT_XMIN_ROOT` selects the
standard profile.
# Official profiles
The supported configure entry points are:
@@ -219,3 +180,4 @@ cmake ../brlcad \
* [DEPENDENCIES.md](DEPENDENCIES.md) - package-to-group reference, output
classification, and dependency addition workflow
* [NOTES.md](NOTES.md) - maintainer notes and submodule procedures
* [XMIN.md](XMIN.md) - testing-only headless X11 support using Xmin
+48
View File
@@ -0,0 +1,48 @@
# Xmin-backed bundled toolkits
Xmin is a small, self-contained X11 server and client library - see
https://github.com/starseeker/Xmin
An installed Xmin SDK can provide the X11 and OpenGL surface for bext's
bundled Tk and Qt, allowing fully interactive automated GUI application testing
in an environment that has neither X nor OpenGL.
Set `BEXT_XMIN_ROOT` to select the standard Xmin profile:
```sh
cmake -S /path/to/bext -B /path/to/bext-build \
-DBEXT_XMIN_ROOT=/absolute/path/to/xmin-sdk \
-DENABLE_TCL=ON -DENABLE_QT=ON
```
The profile affects only Tk and Qt packages selected for a local build. It
does not enable a package excluded by `USE_*`, `BRLCAD_COMPONENTS`, or an
explicit `DISABLE_*` setting.
* Tk is configured with `--with-xmin` and bext's matching Tk patch.
* Qt is built with the matching Xmin patch, the qxcb desktop-OpenGL profile,
and dependency audits that reject accidental host X11 or OpenGL linkage.
The patches are maintained next to the dependency build logic as
`tk/tk_xmin.patch` and `qt/qt_xmin.patch`. They are tied to the exact Tk
and Qt submodule revisions in this repository. Updating either dependency
therefore requires updating its patch; a stale patch fails during the patch
step rather than silently producing a mixed build.
The Xmin SDK must include toolkit-client support for Tk. Qt additionally
requires the Qt X11 compatibility client and client OpenGL support. Normal
system discovery is unchanged when `BEXT_XMIN_ROOT` is empty.
Qt's installed package metadata retains an explicit dependency on Xmin.
Downstream projects must therefore keep the same SDK discoverable with
`Xmin_DIR` or `CMAKE_PREFIX_PATH`; configuration fails instead of falling back
to host X libraries when that SDK is absent.
## Advanced toolkit patch controls
Unix builds may pass additional, semicolon-separated absolute patch paths in
`TK_EXTRA_PATCHES`, plus additional Tk `configure` arguments in
`TK_CONFIGURE_ARGS`. `QT_EXTRA_PATCHES` provides the corresponding Qt
hook. `QT_XMIN_ROOT` remains available for manually supplied Qt Xmin patches.
These low-level controls are not needed when `BEXT_XMIN_ROOT` selects the
standard profile.
+1 -1
View File
@@ -3,7 +3,7 @@ bext_enable(EXPAT)
if (ENABLE_EXPAT)
git_submodule_init(libexpat CMakeLists.txt)
git_submodule_init(libexpat expat/CMakeLists.txt)
RegisterDeps(EXPAT)
+7
View File
@@ -48,6 +48,13 @@ bwish and Archer where Tk was initialized first. The patch uses the fully
qualified ::iwidgets::Labeledwidget class name so both supported initialization
orders behave identically.
Panedwindow's frame hull shares its resource class name with Tk's native
panedwindow widget, whose event bindings call a different widget API. The
patch removes that class tag from the hull's binding list while retaining
Iwidgets' configure and sash bindings and the Panedwindow resource class.
Pointer motion and clicks therefore use the correct handlers without
changing native Tk panedwindow behavior.
These changes are kept as a bext patch rather than modifications to the source
submodule. That keeps the imported upstream revision identifiable and makes
the compatibility delta explicit and independently reviewable. The external
+16
View File
@@ -223,6 +223,22 @@ index 032021e..4f94a4d 100755
-relief sunken -borderwidth 2 -width 10
}
diff --git a/generic/panedwindow.itk b/generic/panedwindow.itk
--- a/generic/panedwindow.itk
+++ b/generic/panedwindow.itk
@@ -134,8 +134,11 @@
# Add binding for the configure event.
#
bind pw-config-$this <Configure> [itcl::code $this _pwConfigureEventHandler %w %h]
+ # Tk's native Panedwindow uses the same class name but a different API.
+ # Keep the hull's resource class and Iwidgets' own event bindings.
bindtags $itk_component(hull) \
- [linsert [bindtags $itk_component(hull)] 0 pw-config-$this]
+ [linsert [lsearch -all -inline -not -exact \
+ [bindtags $itk_component(hull)] Panedwindow] 0 pw-config-$this]
array set _relief {0 sunken 1 raised}
diff --git a/generic/radiobox.itk b/generic/radiobox.itk
index 282eaa7..fe1b11e 100755
--- a/generic/radiobox.itk
+14
View File
@@ -7,6 +7,17 @@ if (ENABLE_OIDN)
RegisterDeps(OIDN)
# OIDN is always built Release, including in a Debug bext tree. On MSVC,
# oneTBB's headers otherwise auto-link tbb12.lib even when the imported
# TBB::tbb target correctly resolves to the tree's tbb12_debug.lib. Rely on
# the explicit CMake target, as OIDN's fallback FindTBB module does.
set(OIDN_CXX_FLAGS_ARGS)
if (MSVC)
list(APPEND OIDN_CXX_FLAGS_ARGS
-DCMAKE_CXX_FLAGS:STRING=/D__TBB_NO_IMPLICIT_LINKAGE=1
)
endif (MSVC)
ExternalProject_Add(OIDN_BLD
URL "${CMAKE_CURRENT_SOURCE_DIR}/oidn"
BUILD_ALWAYS ${EXT_BUILD_ALWAYS} ${LOG_OPTS}
@@ -15,6 +26,7 @@ if (ENABLE_OIDN)
# OIDN's debug builds are broken upstream, so it is always built Release -
# this matches OSPRay's own superbuild recipe (dep_oidn.cmake).
-DCMAKE_BUILD_TYPE=Release
${OIDN_CXX_FLAGS_ARGS}
-DCMAKE_PREFIX_PATH=${CMAKE_BUNDLE_INSTALL_PREFIX}
$<$<BOOL:${ONETBB_TARGET}>:-DTBB_ROOT=${CMAKE_BUNDLE_INSTALL_PREFIX}>
$<$<BOOL:${ISPC_TARGET}>:-DISPC_EXECUTABLE=${CMAKE_BUNDLE_INSTALL_PREFIX}/${BIN_DIR}/ispc${CMAKE_EXECUTABLE_SUFFIX}>
@@ -41,6 +53,8 @@ if (ENABLE_OIDN)
STEP_TARGETS install
)
unset(OIDN_CXX_FLAGS_ARGS)
TargetInstallDeps(OIDN OIDN_DEPENDS)
# ISPC is only produced when a renderer group (e.g. OSPRAY) is active, so wire
# the ordering dependency explicitly the same way embree does.
+8
View File
@@ -26,6 +26,14 @@ endif (NOT WIN32)
# https://doc.qt.io/qt-6/configure-options.html
set(CONFIG_EXTRA_OPTS ${CONFIG_EXTRA_OPTS} -qt-zlib -qt-libpng)
# Qt's configure wrapper performs a nested CMake configure. Preserve the
# toolchain selected for bext instead of allowing another compiler on PATH to
# produce an ABI-incompatible Qt build.
list(APPEND QT_CMAKE_OPTS
"-DCMAKE_C_COMPILER=@CMAKE_C_COMPILER@"
"-DCMAKE_CXX_COMPILER=@CMAKE_CXX_COMPILER@"
)
if (QT_XMIN_ENABLED)
list(APPEND CONFIG_EXTRA_OPTS
-qpa xcb
+5 -1
View File
@@ -20,11 +20,15 @@ if (ENABLE_STRCLEAR)
RegisterDeps(STRCLEAR)
# strclear is a host-side build utility that scans multi-gigabyte library
# trees. It has no ABI relationship with BRL-CAD, and an MSVC Debug build
# is prohibitively slow because checked iterators run inside its search
# loops. Always optimize this helper, including in a Debug bext tree.
ExternalProject_Add(STRCLEAR_BLD
URL "${CMAKE_CURRENT_SOURCE_DIR}/strclear"
BUILD_ALWAYS ${EXT_BUILD_ALWAYS} ${LOG_OPTS}
CMAKE_ARGS
${BUILD_TYPE_SPECIFIER}
-DCMAKE_BUILD_TYPE=Release
-DBIN_DIR=${BIN_DIR}
-DLIB_DIR=${LIB_DIR}
-DDATA_DIR=${DATA_DIR}