Files
create/src/Mod/Assembly/CMakeLists.txt
forbes 934cdf5767
All checks were successful
Build and Test / build (pull_request) Successful in 29m11s
test(assembly): regression tests for KCSolve solver refactor (#296)
Phase 1e: Add C++ gtest and Python unittest coverage for the pluggable
solver system introduced in Phases 1a-1d.

C++ tests (KCSolve_tests_run):
- SolverRegistryTest (8 tests): register/get, duplicates, defaults,
  available list, joints_for capability queries
- OndselAdapterTest (10 tests): identity checks, supported/unsupported
  joints, Fixed/Revolute solve round-trips, no-grounded-parts handling,
  exception safety, drag protocol (pre_drag/drag_step/post_drag),
  redundant constraint diagnostics

Python tests (TestSolverIntegration):
- Full-stack solve via AssemblyObject → IKCSolver → OndselAdapter
- Fixed joint placement matching, revolute joint success
- No-ground error code (-6), redundancy detection (-2)
- ASMT export produces non-empty file
- Deterministic solve stability (solve twice → same result)
2026-02-19 16:56:11 -06:00

99 lines
2.0 KiB
CMake

# SPDX-License-Identifier: LGPL-2.1-or-later
if (NOT FREECAD_USE_EXTERNAL_ONDSELSOLVER)
include_directories(
${CMAKE_SOURCE_DIR}/src/3rdParty/OndselSolver
)
else ()
check_include_file_cxx(OndselSolver/enum.h HAVE_ONDSELSOLVER_H)
if (NOT HAVE_ONDSELSOLVER_H)
message(FATAL_ERROR "FREECAD_USE_EXTERNAL_ONDSELSOLVER is set but the required system includes are not available")
endif ()
endif ()
add_subdirectory(Solver)
add_subdirectory(App)
if(BUILD_GUI)
add_subdirectory(Gui)
endif(BUILD_GUI)
set(Assembly_Scripts
Init.py
CommandCreateAssembly.py
CommandCreateBom.py
CommandInsertLink.py
CommandInsertNewPart.py
CommandSolveAssembly.py
CommandCreateJoint.py
CommandCreateView.py
CommandCreateSimulation.py
CommandExportASMT.py
TestAssemblyWorkbench.py
JointObject.py
Preferences.py
AssemblyImport.py
SoSwitchMarker.py
UtilsAssembly.py
)
if(BUILD_GUI)
list (APPEND Assembly_Scripts InitGui.py)
endif(BUILD_GUI)
INSTALL(
FILES
${Assembly_Scripts}
DESTINATION
Mod/Assembly
)
SET(AssemblyScripts_SRCS
Assembly/__init__.py
)
SET(AssemblyTests_SRCS
AssemblyTests/__init__.py
AssemblyTests/TestCore.py
AssemblyTests/TestCommandInsertLink.py
AssemblyTests/TestSolverIntegration.py
AssemblyTests/mocks/__init__.py
AssemblyTests/mocks/MockGui.py
)
SET(all_files
${AssemblyTests_SRCS}
${AssemblyScripts_SRCS}
)
ADD_CUSTOM_TARGET(AssemblyScripts ALL
SOURCES ${all_files}
)
SET(test_files
${Assembly_Scripts}
${AssemblyTests_SRCS}
)
ADD_CUSTOM_TARGET(AssemblyTests ALL
SOURCES ${test_files}
)
fc_copy_sources(AssemblyScripts "${CMAKE_BINARY_DIR}/Mod/Assembly" ${all_files})
fc_copy_sources(AssemblyTests "${CMAKE_BINARY_DIR}/Mod/Assembly" ${test_files})
INSTALL(
FILES
${AssemblyTests_SRCS}
DESTINATION
Mod/Assembly/AssemblyTests
)
INSTALL(
FILES
${AssemblyScripts_SRCS}
DESTINATION
Mod/Assembly/Assembly
)