Files
bs_explorer/CMakeLists.txt
François 831bd7c129 svf: extract player core into standalone libsvf, keep bscan glue
The SVF player now lives in electronics/libsvf behind a five-function
JTAG ops table, shared with the wifi_jtag_programmer Zephyr firmware.
src/modules/svf/ shrinks to the bscan_*-backed port (bs_svf_play),
which also keeps the FTDI stale-FIFO warm-up. Local checkout override:
-DFETCHCONTENT_SOURCE_DIR_SVF=<path>.
2026-06-13 00:14:07 +02:00

68 lines
2.5 KiB
CMake

cmake_minimum_required(VERSION 3.14)
project(BoundaryScanExplorer)
# Put the built executable at the build/ root (build/bs), not nested under
# build/src/bs/ where the source tree would otherwise mirror it.
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
# ---- libbsdl (BSDL parser, extracted from this repo and now standalone) ----
# Pulled via FetchContent from the canonical Gitea URL. For a local checkout,
# set -DFETCHCONTENT_SOURCE_DIR_BSDL=/path/to/libbsdl at configure time
# (built-in FetchContent override — no clone happens).
include(FetchContent)
set(BSDL_BUILD_CLI OFF CACHE BOOL "" FORCE)
set(BSDL_BUILD_TESTS OFF CACHE BOOL "" FORCE)
FetchContent_Declare(bsdl
GIT_REPOSITORY ssh://gitea@git.beafrancois.fr:8329/electronics/libbsdl.git
GIT_TAG main
)
FetchContent_MakeAvailable(bsdl)
# ---- libsvf (SVF player, extracted from this repo and now standalone) ----
# Same pattern as libbsdl. Local checkout override:
# -DFETCHCONTENT_SOURCE_DIR_SVF=/path/to/libsvf
FetchContent_Declare(svf
GIT_REPOSITORY ssh://gitea@git.beafrancois.fr:8329/electronics/libsvf.git
GIT_TAG main
)
FetchContent_MakeAvailable(svf)
# Digilent JTAG-SMT* backend. The driver dlopen's libdjtg/libdmgr at
# runtime and degrades to "no probe" if they're absent, so building it
# in costs nothing — default ON. Needs <dlfcn.h>, so UNIX only.
if(UNIX)
set(BS_DIGILENT_DEFAULT ON)
else()
set(BS_DIGILENT_DEFAULT OFF)
endif()
option(BS_ENABLE_DIGILENT
"Enable Digilent JTAG-SMT* backend (dlopen libdjtg.so / libdmgr.so at runtime; Adept Runtime only needed to actually use such a probe)"
${BS_DIGILENT_DEFAULT})
# script and jtag_core must be the last linked archive for the application to compile
set(BS_MODULES script jtag_core)
set(DIR_MODULES ${CMAKE_SOURCE_DIR}/src/modules)
set(DIR_LIBS ${CMAKE_SOURCE_DIR}/src/libs)
# We dive into submodules
file(GLOB MODULES_DIRS RELATIVE ${DIR_MODULES} ${DIR_MODULES}/*)
foreach(module ${MODULES_DIRS})
set(module_path "${DIR_MODULES}/${module}")
# checks if it is a sub-directory and if it contains a cmake file
if(IS_DIRECTORY ${module_path} AND EXISTS "${module_path}/CMakeLists.txt")
message(STATUS "Submodule : ${module}")
# already existing modules are not included in the list
if(NOT ${module} IN_LIST BS_MODULES)
list(APPEND BS_MODULES ${module})
endif()
# We'll compile the module
add_subdirectory(src/modules/${module})
else()
message(STATUS "Ignored : ${module}")
endif()
endforeach()
add_subdirectory(src/bs)