All checks were successful
Build and Test / build (pull_request) Successful in 29m11s
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)
99 lines
2.0 KiB
CMake
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
|
|
)
|