pcbjam/wasm/cmake/Findngspice.cmake

29 lines
1.2 KiB
CMake
Raw Normal View History

# Findngspice.cmake - Stub for WASM builds
# The editor never links libngspice: the simulator engine runs in the
# ngspice_service worker (docs/features/ngspice-split/), and eeschema binds to
# the statically linked sharedspice CLIENT (wasm/stubs/sharedspice_client.cpp)
# in NGSPICE::init_dll()'s __EMSCRIPTEN__ branch.
if(EMSCRIPTEN OR NOT KICAD_SPICE)
message(STATUS "ngspice: WASM build uses the sharedspice client header stub")
# Set variables to indicate ngspice is "found"
set(ngspice_FOUND TRUE)
set(NGSPICE_FOUND TRUE)
# Point at wasm/stubs/ngspice/sharedspice.h: the sharedspice types plus
# the pcbjam_ngSpice_* client declarations. The library link line stays
# empty — the engine lives in ngspice_service.wasm.
set(NGSPICE_INCLUDE_DIR "${CMAKE_CURRENT_LIST_DIR}/../stubs")
set(NGSPICE_LIBRARY "")
set(NGSPICE_LIBRARIES "")
mark_as_advanced(NGSPICE_INCLUDE_DIR NGSPICE_LIBRARY)
else()
# For non-WASM builds, use the system findngspice
find_path(NGSPICE_INCLUDE_DIR ngspice/sharedspice.h)
find_library(NGSPICE_LIBRARY NAMES ngspice)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(ngspice DEFAULT_MSG NGSPICE_LIBRARY NGSPICE_INCLUDE_DIR)
endif()