Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0bf111e741 | ||
|
|
42d8d7ca57 | ||
|
|
5ccf9b577d | ||
|
|
cfe7b808cf | ||
|
|
f8245e0bb3 | ||
|
|
0682795bcf | ||
|
|
6d97793557 | ||
|
|
bbf604b69f | ||
|
|
31a13bc8d3 | ||
|
|
76e1dbdb3a |
@@ -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
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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}")
|
||||
|
||||
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
+1
-1
Submodule plief/plief updated: d8fcc88660...16797b1845
@@ -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
|
||||
|
||||
@@ -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}
|
||||
|
||||
Reference in New Issue
Block a user