Merge pull request #631 from smarsching/xvc-client-without-ftdi

Allow building XVC client without libftdi
This commit is contained in:
Gwenhael Goavec-Merou 2026-03-02 18:44:27 +01:00 committed by GitHub
commit d9d6c30eed
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 37 additions and 20 deletions

View File

@ -66,11 +66,13 @@ endif()
# XVC and RemoteBitbang are not available on Windows OS. # XVC and RemoteBitbang are not available on Windows OS.
if (NOT ${CMAKE_SYSTEM_NAME} MATCHES "Windows") if (NOT ${CMAKE_SYSTEM_NAME} MATCHES "Windows")
option(ENABLE_REMOTEBITBANG "enable remote bitbang driver" ${ENABLE_CABLE_ALL}) option(ENABLE_REMOTEBITBANG "enable remote bitbang driver" ${ENABLE_CABLE_ALL})
option(ENABLE_XILINX_VIRTUAL_CABLE "enable Xilinx Virtual Cable (XVC) support" ${ENABLE_CABLE_ALL}) option(ENABLE_XILINX_VIRTUAL_CABLE_CLIENT "enable Xilinx Virtual Cable (XVC) client support" ${ENABLE_CABLE_ALL})
option(ENABLE_XILINX_VIRTUAL_CABLE_SERVER "enable Xilinx Virtual Cable (XVC) server support" ${ENABLE_CABLE_ALL})
else() else()
set(ENABLE_REMOTEBITBANG OFF) set(ENABLE_REMOTEBITBANG OFF)
set(ENABLE_XILINX_VIRTUAL_CABLE OFF) set(ENABLE_XILINX_VIRTUAL_CABLE_CLIENT OFF)
set(ENABLE_XILINX_VIRTUAL_CABLE_SERVER OFF)
endif() endif()
#################################################################################################### ####################################################################################################
@ -102,11 +104,11 @@ set(USE_LIBUSB_LL OFF)
# Only adds libftdi as dependency when a cable # Only adds libftdi as dependency when a cable
# need this library. # need this library.
if (ENABLE_FTDI_BASED_CABLE OR ENABLE_USB_BLASTERI OR ENABLE_XILINX_VIRTUAL_CABLE) if (ENABLE_FTDI_BASED_CABLE OR ENABLE_USB_BLASTERI OR ENABLE_XILINX_VIRTUAL_CABLE_SERVER)
set(USE_LIBFTDI ON) set(USE_LIBFTDI ON)
else() else()
message("disabled all cables based on FTDI devices") message("disabled all cables based on FTDI devices")
endif(ENABLE_FTDI_BASED_CABLE OR ENABLE_USB_BLASTERI OR ENABLE_XILINX_VIRTUAL_CABLE) endif(ENABLE_FTDI_BASED_CABLE OR ENABLE_USB_BLASTERI OR ENABLE_XILINX_VIRTUAL_CABLE_SERVER)
# Only adds libusb as dependency when a cable need this library # Only adds libusb as dependency when a cable need this library
if (ENABLE_DFU OR ENABLE_ANLOGIC_CABLE OR ENABLE_CH347 OR ENABLE_DIRTYJTAG if (ENABLE_DFU OR ENABLE_ANLOGIC_CABLE OR ENABLE_CH347 OR ENABLE_DIRTYJTAG
@ -591,9 +593,13 @@ add_definitions(-DENABLE_SVF_JTAG)
endif() endif()
# Xilinx Virtual Cable # Xilinx Virtual Cable
if (ENABLE_XILINX_VIRTUAL_CABLE) if (ENABLE_XILINX_VIRTUAL_CABLE_CLIENT)
list (APPEND OPENFPGALOADER_SOURCE src/xvc_client.cpp src/xvc_server.cpp) list (APPEND OPENFPGALOADER_SOURCE src/xvc_client.cpp)
list (APPEND OPENFPGALOADER_HEADERS src/xvc_client.hpp src/xvc_server.hpp) list (APPEND OPENFPGALOADER_HEADERS src/xvc_client.hpp)
endif()
if (ENABLE_XILINX_VIRTUAL_CABLE_SERVER)
list (APPEND OPENFPGALOADER_SOURCE src/xvc_server.cpp)
list (APPEND OPENFPGALOADER_HEADERS src/xvc_server.hpp)
endif() endif()
# Altera USB Blaster (I & II). # Altera USB Blaster (I & II).
@ -772,8 +778,16 @@ else()
message("Remote bitbang client support disabled") message("Remote bitbang client support disabled")
endif() endif()
if (ENABLE_XILINX_VIRTUAL_CABLE) if (ENABLE_XILINX_VIRTUAL_CABLE_CLIENT)
add_definitions(-DENABLE_XVC=1) add_definitions(-DENABLE_XVC_CLIENT=1)
set(CMAKE_EXE_LINKER_FLAGS "-pthread ${CMAKE_EXE_LINKER_FLAGS}")
message("Xilinx Virtual Client support enabled")
else()
message("Xilinx Virtual Client support disabled")
endif()
if (ENABLE_XILINX_VIRTUAL_CABLE_SERVER)
add_definitions(-DENABLE_XVC_SERVER=1)
set(CMAKE_EXE_LINKER_FLAGS "-pthread ${CMAKE_EXE_LINKER_FLAGS}") set(CMAKE_EXE_LINKER_FLAGS "-pthread ${CMAKE_EXE_LINKER_FLAGS}")
message("Xilinx Virtual Server support enabled") message("Xilinx Virtual Server support enabled")
else() else()

View File

@ -48,5 +48,6 @@ set(CMAKE_EXE_LINKER_FLAGS_INIT "-static -static-libgcc -static-libstdc++")
set(ENABLE_UDEV OFF CACHE BOOL "" FORCE) set(ENABLE_UDEV OFF CACHE BOOL "" FORCE)
set(ENABLE_LIBGPIOD OFF CACHE BOOL "" FORCE) set(ENABLE_LIBGPIOD OFF CACHE BOOL "" FORCE)
set(ENABLE_REMOTEBITBANG OFF CACHE BOOL "" FORCE) set(ENABLE_REMOTEBITBANG OFF CACHE BOOL "" FORCE)
set(ENABLE_XILINX_VIRTUAL_CABLE OFF CACHE BOOL "" FORCE) set(ENABLE_XILINX_VIRTUAL_CABLE_CLIENT OFF CACHE BOOL "" FORCE)
set(ENABLE_XILINX_VIRTUAL_CABLE_SERVER OFF CACHE BOOL "" FORCE)
set(BUILD_STATIC ON CACHE BOOL "" FORCE) set(BUILD_STATIC ON CACHE BOOL "" FORCE)

View File

@ -35,5 +35,6 @@ set(CMAKE_EXE_LINKER_FLAGS_INIT "-static -static-libgcc -static-libstdc++")
set(ENABLE_UDEV OFF CACHE BOOL "" FORCE) set(ENABLE_UDEV OFF CACHE BOOL "" FORCE)
set(ENABLE_LIBGPIOD OFF CACHE BOOL "" FORCE) set(ENABLE_LIBGPIOD OFF CACHE BOOL "" FORCE)
set(ENABLE_REMOTEBITBANG OFF CACHE BOOL "" FORCE) set(ENABLE_REMOTEBITBANG OFF CACHE BOOL "" FORCE)
set(ENABLE_XILINX_VIRTUAL_CABLE OFF CACHE BOOL "" FORCE) set(ENABLE_XILINX_VIRTUAL_CABLE_CLIENT OFF CACHE BOOL "" FORCE)
set(ENABLE_XILINX_VIRTUAL_CABLE_SERVER OFF CACHE BOOL "" FORCE)
set(BUILD_STATIC ON CACHE BOOL "" FORCE) set(BUILD_STATIC ON CACHE BOOL "" FORCE)

View File

@ -385,7 +385,8 @@ Example (enable FTDI-based cables and Xilinx devices only):
- ``ENABLE_USB_BLASTERII``: Enable Altera USB-Blaster II support. - ``ENABLE_USB_BLASTERII``: Enable Altera USB-Blaster II support.
- ``ENABLE_LIBGPIOD``: Enable libgpiod bitbang driver support (Linux only). - ``ENABLE_LIBGPIOD``: Enable libgpiod bitbang driver support (Linux only).
- ``ENABLE_REMOTEBITBANG``: Enable remote-bitbang driver support. - ``ENABLE_REMOTEBITBANG``: Enable remote-bitbang driver support.
- ``ENABLE_XILINX_VIRTUAL_CABLE``: Enable Xilinx Virtual Cable (XVC) support. - ``ENABLE_XILINX_VIRTUAL_CABLE_CLIENT``: Enable Xilinx Virtual Cable (XVC) client support.
- ``ENABLE_XILINX_VIRTUAL_CABLE_SERVER``: Enable Xilinx Virtual Cable (XVC) server support.
**Vendor options** **Vendor options**

View File

@ -55,7 +55,7 @@
#ifdef ENABLE_USBBLASTER #ifdef ENABLE_USBBLASTER
#include "usbBlaster.hpp" #include "usbBlaster.hpp"
#endif #endif
#ifdef ENABLE_XVC #ifdef ENABLE_XVC_CLIENT
#include "xvc_client.hpp" #include "xvc_client.hpp"
#endif #endif
@ -186,7 +186,7 @@ Jtag::Jtag(const cable_t &cable, const jtag_pins_conf_t *pin_conf,
throw std::exception(); throw std::exception();
#endif #endif
case MODE_XVC_CLIENT: case MODE_XVC_CLIENT:
#ifdef ENABLE_XVC #ifdef ENABLE_XVC_CLIENT
_jtag = new XVC_client(ip_adr, port, clkHZ, verbose); _jtag = new XVC_client(ip_adr, port, clkHZ, verbose);
break; break;
#else #else

View File

@ -62,7 +62,7 @@
#ifdef ENABLE_SVF_JTAG #ifdef ENABLE_SVF_JTAG
#include "svf_jtag.hpp" #include "svf_jtag.hpp"
#endif #endif
#ifdef ENABLE_XVC #ifdef ENABLE_XVC_SERVER
#include "xvc_server.hpp" #include "xvc_server.hpp"
#endif #endif
@ -517,7 +517,7 @@ int main(int argc, char **argv)
#endif #endif
} }
#ifdef ENABLE_XVC #ifdef ENABLE_XVC_SERVER
/* ------------------- */ /* ------------------- */
/* XVC server */ /* XVC server */
/* ------------------- */ /* ------------------- */
@ -809,7 +809,7 @@ int main(int argc, char **argv)
delete(jtag); delete(jtag);
} }
#ifdef ENABLE_XVC #ifdef ENABLE_XVC_SERVER
int run_xvc_server(const struct arguments &args, const cable_t &cable, int run_xvc_server(const struct arguments &args, const cable_t &cable,
const jtag_pins_conf_t *pins_config) const jtag_pins_conf_t *pins_config)
{ {
@ -988,7 +988,7 @@ int parse_opt(int argc, char **argv, struct arguments *args,
("h,help", "Give this help list") ("h,help", "Give this help list")
("verify", "Verify write operation (SPI Flash only)", ("verify", "Verify write operation (SPI Flash only)",
cxxopts::value<bool>(args->verify)) cxxopts::value<bool>(args->verify))
#ifdef ENABLE_XVC #ifdef ENABLE_XVC_SERVER
("xvc", "Xilinx Virtual Cable Functions", ("xvc", "Xilinx Virtual Cable Functions",
cxxopts::value<bool>(args->xvc)) cxxopts::value<bool>(args->xvc))
#endif #endif