Skip to content

Commit ea8396e

Browse files
committed
CMakeLists.txt: reworks structure/sequence. Added more options to enable/disable cables
1 parent a0f1303 commit ea8396e

File tree

1 file changed

+182
-72
lines changed

1 file changed

+182
-72
lines changed

CMakeLists.txt

Lines changed: 182 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,21 @@ else()
1919
option(ENABLE_UDEV "use udev to search JTAG adapter from /dev/xx" ON)
2020
endif()
2121

22+
option(ENABLE_USB_SCAN "Enable USB Scan option" ON)
23+
2224
####################################################################################################
2325
# CABLES Options
2426
####################################################################################################
2527

2628
# set all cable on by default
2729
option(ENABLE_CABLE_ALL "Enable all cables" ON)
2830

31+
option(ENABLE_ANLOGIC_CABLE "enable Anlogic cable (requires libUSB)" ${ENABLE_CABLE_ALL})
32+
option(ENABLE_CH347 "enable CH347 cable (requires libUSB)" ${ENABLE_CABLE_ALL})
2933
option(ENABLE_CMSISDAP "enable cmsis DAP interface (requires hidapi)" ${ENABLE_CABLE_ALL})
34+
option(ENABLE_DIRTYJTAG "enable dirtyJtag cable (requires libUSB)" ${ENABLE_CABLE_ALL})
35+
option(ENABLE_ESP_USB "enable ESP32S3 cable (requires libUSB)" ${ENABLE_CABLE_ALL})
36+
option(ENABLE_JLINK "enable JLink cable (requires libUSB)" ${ENABLE_CABLE_ALL})
3037
option(ENABLE_DFU ${ENABLE_CABLE_ALL})
3138
option(ENABLE_FTDI_BASED_CABLE ${ENABLE_CABLE_ALL})
3239
option(ENABLE_GOWIN_GWU2X "enable Gowin GWU2X interface" ${ENABLE_CABLE_ALL})
@@ -42,8 +49,8 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
4249
option(ENABLE_REMOTEBITBANG "enable remote bitbang driver" ${ENABLE_CABLE_ALL})
4350
option(ENABLE_XILINX_VIRTUAL_CABLE "enable Xilinx Virtual Cable (XVC) support" ${ENABLE_CABLE_ALL})
4451
else()
45-
set(ENABLE_LIBGPIOD OFF)
46-
set(ENABLE_REMOTEBITBANG OFF)
52+
set(ENABLE_LIBGPIOD OFF)
53+
set(ENABLE_REMOTEBITBANG OFF)
4754
set(ENABLE_XILINX_VIRTUAL_CABLE OFF)
4855
endif()
4956

@@ -52,8 +59,10 @@ endif()
5259
####################################################################################################
5360

5461
# set dependencies
55-
set(USE_LIBUSB OFF)
56-
set(USE_LIBFTDI OFF)
62+
set(USE_FX2_LL OFF)
63+
set(USE_LIBFTDI OFF)
64+
set(USE_LIBUSB OFF)
65+
set(USE_LIBUSB_LL OFF)
5766

5867
# Only adds libftdi as dependency when a cable
5968
# need this library.
@@ -64,11 +73,19 @@ else()
6473
endif(ENABLE_FTDI_BASED_CABLE OR ENABLE_USB_BLASTERI OR ENABLE_XILINX_VIRTUAL_CABLE)
6574

6675
# Only adds libusb as dependency when a cable need this library
67-
if (ENABLE_DFU)
68-
set(ENABLE_LIBUSB ON)
69-
else()
70-
message("disabled all cables using libUSB.")
71-
endif(ENABLE_DFU)
76+
if (ENABLE_DFU OR ENABLE_ANLOGIC_CABLE OR ENABLE_CH347 OR ENABLE_DIRTYJTAG
77+
OR ENABLE_ESP_USB OR ENABLE_JLINK OR ENABLE_GOWIN_GWU2X OR ENABLE_USB_BLASTERII OR ENABLE_USB_SCAN)
78+
set(USE_LIBUSB ON)
79+
endif()
80+
81+
if (ENABLE_USB_SCAN OR ENABLE_GOWIN_GWU2X)
82+
set(USE_LIBUSB_LL ON)
83+
endif()
84+
85+
# Only enable fx2_ll when cable using it
86+
if (ENABLE_USB_BLASTERII)
87+
set(USE_FX2_LL ON)
88+
endif()
7289

7390
####################################################################################################
7491
# Build options
@@ -108,7 +125,13 @@ if (USE_PKGCONFIG)
108125
set(LIBFTDI_LIBRARIES "")
109126
endif(USE_LIBFTDI)
110127

111-
pkg_check_modules(LIBUSB REQUIRED libusb-1.0)
128+
if (USE_LIBUSB)
129+
pkg_check_modules(LIBUSB REQUIRED libusb-1.0)
130+
else()
131+
set(LIBUSB_LIBRARY_DIRS "")
132+
set(LIBUSB_INCLUDE_DIRS "")
133+
set(LIBUSB_LIBRARIES "")
134+
endif(USE_LIBUSB)
112135

113136
if(ENABLE_CMSISDAP)
114137
pkg_check_modules(HIDAPI hidapi-libusb)
@@ -210,42 +233,28 @@ list(APPEND OPENFPGALOADER_HEADERS
210233
# ===========================
211234
list(APPEND OPENFPGALOADER_SOURCE
212235
src/anlogic.cpp
213-
src/anlogicCable.cpp
214-
src/dirtyJtag.cpp
215-
src/ch347jtag.cpp
216-
src/fx2_ll.cpp
217236
src/spiFlash.cpp
218237
src/spiInterface.cpp
219238
src/epcq.cpp
220239
src/svf_jtag.cpp
221240
src/jtag.cpp
222-
src/libusb_ll.cpp
223241
src/gowin.cpp
224-
src/jlink.cpp
225242
src/altera.cpp
226243
src/xilinx.cpp
227-
src/esp_usb_jtag.cpp
228244
)
229245

230246
list(APPEND OPENFPGALOADER_HEADERS
231247
src/altera.hpp
232248
src/anlogic.hpp
233-
src/anlogicCable.hpp
234-
src/dirtyJtag.hpp
235-
src/ch347jtag.hpp
236-
src/fx2_ll.hpp
237-
src/jlink.hpp
238249
src/jtag.hpp
239250
src/jtagInterface.hpp
240-
src/libusb_ll.hpp
241251
src/spiFlash.hpp
242252
src/spiFlashdb.hpp
243253
src/epcq.hpp
244254
src/spiInterface.hpp
245255
src/svf_jtag.hpp
246256
src/gowin.hpp
247257
src/xilinx.hpp
248-
src/esp_usb_jtag.hpp
249258
)
250259

251260
# FTDI Based cables
@@ -299,7 +308,6 @@ if (${USE_LIBFTDI})
299308
src/ice40.hpp
300309
src/latticeSSPI.hpp
301310
)
302-
303311
endif()
304312

305313
# Lattice Drivers / Files parsers.
@@ -332,6 +340,66 @@ list(APPEND OPENFPGALOADER_HEADERS
332340
)
333341
endif(ENABLE_DFU)
334342

343+
# Anlogic Cable
344+
if (ENABLE_ANLOGIC_CABLE)
345+
list(APPEND OPENFPGALOADER_SOURCE src/anlogicCable.cpp)
346+
list(APPEND OPENFPGALOADER_HEADERS src/anlogicCable.hpp)
347+
endif()
348+
349+
# CH347
350+
if (ENABLE_CH347)
351+
list(APPEND OPENFPGALOADER_SOURCE src/ch347jtag.cpp)
352+
list(APPEND OPENFPGALOADER_HEADERS src/ch347jtag.hpp)
353+
endif()
354+
355+
# dirtyJtag
356+
if (ENABLE_DIRTYJTAG)
357+
list(APPEND OPENFPGALOADER_SOURCE src/dirtyJtag.cpp)
358+
list(APPEND OPENFPGALOADER_HEADERS src/dirtyJtag.hpp)
359+
endif()
360+
361+
# ESP32S3
362+
if (ENABLE_ESP_USB)
363+
list(APPEND OPENFPGALOADER_SOURCE src/esp_usb_jtag.cpp)
364+
list(APPEND OPENFPGALOADER_HEADERS src/esp_usb_jtag.hpp)
365+
endif()
366+
367+
# Gowin GWU2X JTAG interface
368+
if(ENABLE_GOWIN_GWU2X)
369+
list(APPEND OPENFPGALOADER_SOURCE src/gwu2x_jtag.cpp)
370+
list(APPEND OPENFPGALOADER_HEADERS src/gwu2x_jtag.hpp)
371+
endif()
372+
373+
# Jetson Nano (libGPIO based)
374+
if (ENABLE_JETSONNANOGPIO)
375+
list(APPEND OPENFPGALOADER_SOURCE src/jetsonNanoJtagBitbang.cpp)
376+
list(APPEND OPENFPGALOADER_HEADERS src/jetsonNanoJtagBitbang.hpp)
377+
endif()
378+
379+
# JLINK
380+
if (ENABLE_JLINK)
381+
list(APPEND OPENFPGALOADER_SOURCE src/jlink.cpp)
382+
list(APPEND OPENFPGALOADER_HEADERS src/jlink.hpp)
383+
endif()
384+
385+
# libGPIOD support
386+
if (ENABLE_LIBGPIOD)
387+
list(APPEND OPENFPGALOADER_SOURCE src/libgpiodJtagBitbang.cpp)
388+
list(APPEND OPENFPGALOADER_HEADERS src/libgpiodJtagBitbang.hpp)
389+
endif()
390+
391+
# RemoteBitbang
392+
if (ENABLE_REMOTEBITBANG)
393+
list (APPEND OPENFPGALOADER_SOURCE src/remoteBitbang_client.cpp)
394+
list (APPEND OPENFPGALOADER_HEADERS src/remoteBitbang_client.hpp)
395+
endif()
396+
397+
# Xilinx Virtual Cable
398+
if (ENABLE_XILINX_VIRTUAL_CABLE)
399+
list (APPEND OPENFPGALOADER_SOURCE src/xvc_client.cpp src/xvc_server.cpp)
400+
list (APPEND OPENFPGALOADER_HEADERS src/xvc_client.hpp src/xvc_server.hpp)
401+
endif()
402+
335403
# Altera USB Blaster (I & II).
336404
if (ENABLE_USB_BLASTERI OR ENABLE_USB_BLASTERII)
337405
add_definitions(-DENABLE_USBBLASTER)
@@ -345,13 +413,8 @@ if (ENABLE_USB_BLASTERI OR ENABLE_USB_BLASTERII)
345413
add_definitions(-DENABLE_USB_BLASTERII)
346414
endif (ENABLE_USB_BLASTERII)
347415

348-
list(APPEND OPENFPGALOADER_SOURCE
349-
src/usbBlaster.cpp
350-
)
351-
352-
list(APPEND OPENFPGALOADER_HEADERS
353-
src/usbBlaster.hpp
354-
)
416+
list(APPEND OPENFPGALOADER_SOURCE src/usbBlaster.cpp)
417+
list(APPEND OPENFPGALOADER_HEADERS src/usbBlaster.hpp)
355418
endif(ENABLE_USB_BLASTERI OR ENABLE_USB_BLASTERII)
356419

357420
link_directories(
@@ -367,6 +430,16 @@ if (ENABLE_CMSISDAP AND HIDAPI_FOUND)
367430
link_directories(${HIDAPI_LIBRARY_DIRS})
368431
endif()
369432

433+
if (USE_LIBUSB_LL)
434+
list(APPEND OPENFPGALOADER_SOURCE src/libusb_ll.cpp)
435+
list(APPEND OPENFPGALOADER_HEADERS src/libusb_ll.hpp)
436+
endif()
437+
438+
if (USE_FX2_LL)
439+
list(APPEND OPENFPGALOADER_SOURCE src/fx2_ll.cpp)
440+
list(APPEND OPENFPGALOADER_HEADERS src/fx2_ll.hpp)
441+
endif()
442+
370443
add_executable(openFPGALoader
371444
${OPENFPGALOADER_SOURCE}
372445
${OPENFPGALOADER_HEADERS}
@@ -382,16 +455,6 @@ target_link_libraries(openFPGALoader
382455
${LIBFTDI_LIBRARIES}
383456
)
384457

385-
# Gowin GWU2X JTAG interface
386-
if(ENABLE_GOWIN_GWU2X)
387-
target_sources(openFPGALoader PRIVATE src/gwu2x_jtag.cpp)
388-
list (APPEND OPENFPGALOADER_HEADERS src/gwu2x_jtag.hpp)
389-
add_definitions(-DENABLE_GOWIN_GWU2X=1)
390-
message("Gowin GWU2X support enabled")
391-
else()
392-
message("Gowin GWU2X support disabled")
393-
endif()
394-
395458
if (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
396459
# winsock provides ntohs
397460
target_link_libraries(openFPGALoader ws2_32)
@@ -410,27 +473,6 @@ if (ENABLE_UDEV)
410473
target_link_libraries(openFPGALoader ${LIBUDEV_LIBRARIES})
411474
endif()
412475

413-
if (ENABLE_LIBGPIOD)
414-
include_directories(${LIBGPIOD_INCLUDE_DIRS})
415-
target_link_libraries(openFPGALoader ${LIBGPIOD_LIBRARIES})
416-
add_definitions(-DENABLE_LIBGPIOD=1)
417-
target_sources(openFPGALoader PRIVATE src/libgpiodJtagBitbang.cpp)
418-
list (APPEND OPENFPGALOADER_HEADERS src/libgpiodJtagBitbang.hpp)
419-
if (LIBGPIOD_VERSION VERSION_GREATER_EQUAL 2)
420-
message("libgpiod v2 support enabled")
421-
add_definitions(-DGPIOD_APIV2)
422-
else()
423-
message("libgpiod v1 support enabled")
424-
endif()
425-
endif(ENABLE_LIBGPIOD)
426-
427-
if (ENABLE_JETSONNANOGPIO)
428-
add_definitions(-DENABLE_JETSONNANOGPIO=1)
429-
target_sources(openFPGALoader PRIVATE src/jetsonNanoJtagBitbang.cpp)
430-
list (APPEND OPENFPGALOADER_HEADERS src/jetsonNanoJtagBitbang.hpp)
431-
message("Jetson Nano GPIO support enabled")
432-
endif(ENABLE_JETSONNANOGPIO)
433-
434476
if (ENABLE_UDEV OR ENABLE_LIBGPIOD OR ENABLE_JETSONNANOGPIO)
435477
add_definitions(-DUSE_DEVICE_ARG)
436478
endif(ENABLE_UDEV OR ENABLE_LIBGPIOD OR ENABLE_JETSONNANOGPIO)
@@ -439,6 +481,22 @@ if (BUILD_STATIC)
439481
set_target_properties(openFPGALoader PROPERTIES LINK_SEARCH_END_STATIC 1)
440482
endif()
441483

484+
# Anlogic Cable
485+
if (ENABLE_ANLOGIC_CABLE)
486+
add_definitions(-DENABLE_ANLOGIC_CABLE=1)
487+
message("Anlogic Cable support enabled")
488+
else()
489+
message("Anlogic Cable support disabled")
490+
endif()
491+
492+
# CH347
493+
if (ENABLE_CH347)
494+
add_definitions(-DENABLE_CH347=1)
495+
message("CH347 support enabled")
496+
else()
497+
message("CH347 support disabled")
498+
endif()
499+
442500
if (ENABLE_CMSISDAP)
443501
if (HIDAPI_FOUND)
444502
include_directories(${HIDAPI_INCLUDE_DIRS})
@@ -452,25 +510,77 @@ if (ENABLE_CMSISDAP)
452510
endif()
453511
endif(ENABLE_CMSISDAP)
454512

455-
if (ENABLE_XILINX_VIRTUAL_CABLE)
456-
add_definitions(-DENABLE_XVC=1)
457-
target_sources(openFPGALoader PRIVATE src/xvc_client.cpp src/xvc_server.cpp)
458-
list (APPEND OPENFPGALOADER_HEADERS src/xvc_client.hpp src/xvc_server.hpp)
459-
set(CMAKE_EXE_LINKER_FLAGS "-pthread ${CMAKE_EXE_LINKER_FLAGS}")
460-
message("Xilinx Virtual Server support enabled")
513+
# dirtyJtag
514+
if (ENABLE_DIRTYJTAG)
515+
add_definitions(-DENABLE_DIRTYJTAG=1)
516+
message("dirtyJtag support enabled")
517+
else()
518+
message("dirtyJtag support disabled")
519+
endif()
520+
521+
# ESP32S3
522+
if (ENABLE_ESP_USB)
523+
add_definitions(-DENABLE_ESP_USB=1)
524+
message("ESP32S3 support enabled")
525+
else()
526+
message("ESP32S3 support disabled")
527+
endif()
528+
529+
# Gowin GWU2X JTAG interface
530+
if(ENABLE_GOWIN_GWU2X)
531+
add_definitions(-DENABLE_GOWIN_GWU2X=1)
532+
message("Gowin GWU2X support enabled")
461533
else()
462-
message("Xilinx Virtual Server support disabled")
534+
message("Gowin GWU2X support disabled")
463535
endif()
464536

537+
# Jetson Nano (libGPIO based)
538+
if (ENABLE_JETSONNANOGPIO)
539+
add_definitions(-DENABLE_JETSONNANOGPIO=1)
540+
message("Jetson Nano GPIO support enabled")
541+
endif(ENABLE_JETSONNANOGPIO)
542+
543+
# JLINK
544+
if (ENABLE_JLINK)
545+
add_definitions(-DENABLE_JLINK=1)
546+
message("JLink support enabled")
547+
else()
548+
message("JLink support disabled")
549+
endif()
550+
551+
# libGPIOD support
552+
if (ENABLE_LIBGPIOD)
553+
include_directories(${LIBGPIOD_INCLUDE_DIRS})
554+
target_link_libraries(openFPGALoader ${LIBGPIOD_LIBRARIES})
555+
add_definitions(-DENABLE_LIBGPIOD=1)
556+
if (LIBGPIOD_VERSION VERSION_GREATER_EQUAL 2)
557+
message("libgpiod v2 support enabled")
558+
add_definitions(-DGPIOD_APIV2)
559+
else()
560+
message("libgpiod v1 support enabled")
561+
endif()
562+
endif(ENABLE_LIBGPIOD)
563+
465564
if (ENABLE_REMOTEBITBANG)
466565
add_definitions(-DENABLE_REMOTEBITBANG=1)
467-
target_sources(openFPGALoader PRIVATE src/remoteBitbang_client.cpp)
468-
list (APPEND OPENFPGALOADER_HEADERS src/remoteBitbang_client.hpp)
469566
message("Remote bitbang client support enabled")
470567
else()
471568
message("Remote bitbang client support disabled")
472569
endif()
473570

571+
if (ENABLE_XILINX_VIRTUAL_CABLE)
572+
add_definitions(-DENABLE_XVC=1)
573+
set(CMAKE_EXE_LINKER_FLAGS "-pthread ${CMAKE_EXE_LINKER_FLAGS}")
574+
message("Xilinx Virtual Server support enabled")
575+
else()
576+
message("Xilinx Virtual Server support disabled")
577+
endif()
578+
579+
# USB Devices Scan
580+
if (ENABLE_USB_SCAN)
581+
add_definitions("-DENABLE_USB_SCAN=1")
582+
endif()
583+
474584
if (ZLIB_FOUND)
475585
include_directories(${ZLIB_INCLUDE_DIRS})
476586
target_link_libraries(openFPGALoader ${ZLIB_LIBRARIES})

0 commit comments

Comments
 (0)