diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..b62eeb0 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,96 @@ + +cmake_minimum_required(VERSION 3.0) + +# set the project name +project(openFPGALoader VERSION 0.1 LANGUAGES CXX) + +## specify the C++ standard +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD_REQUIRED True) +set(CMAKE_CXX_FLAGS_DEBUG "-g -Wall -Wextra") + +find_package(PkgConfig REQUIRED) +pkg_check_modules(LIBFTDI REQUIRED libftdi1) +pkg_check_modules(LIBFTDIPP REQUIRED libftdipp1) +pkg_check_modules(LIBUSB REQUIRED libusb-1.0) +pkg_check_modules(LIBUDEV REQUIRED libudev) + +set(OPENFPGALOADER_SOURCE + src/spiFlash.cpp + src/epcq.cpp + src/svf_jtag.cpp + src/jedParser.cpp + src/display.cpp + src/ftdijtag.cpp + src/configBitstreamParser.cpp + src/ftdipp_mpsse.cpp + src/xilinx.cpp + src/main.cpp + src/latticeBitParser.cpp + src/gowin.cpp + src/device.cpp + src/lattice.cpp + src/progressBar.cpp + src/fsparser.cpp + src/mcsParser.cpp + src/ftdispi.cpp + src/altera.cpp + src/bitparser.cpp +) + +set(OPENFPGALOADER_HEADERS + src/altera.hpp + src/progressBar.hpp + src/bitparser.hpp + src/ftdijtag.hpp + src/fsparser.hpp + src/part.hpp + src/board.hpp + src/jedParser.hpp + src/display.hpp + src/mcsParser.hpp + src/ftdipp_mpsse.hpp + src/spiFlash.hpp + src/epcq.hpp + src/svf_jtag.hpp + src/xilinx.hpp + src/configBitstreamParser.hpp + src/device.hpp + src/gowin.hpp + src/cable.hpp + src/ftdispi.hpp + src/lattice.hpp + src/latticeBitParser.hpp +) + +add_executable(openFPGALoader + ${OPENFPGALOADER_SOURCE} + ${OPENFPGALOADER_HEADERS} +) + +include_directories(${LIBUDEV_INCLUDE_DIRS} + ${LIBUSB_INCLUDE_DIRS} + ${LIBFTDI_INCLUDE_DIRS} + ${LIBFTDIPP_INCLUDE_DIRS} +) + +target_link_libraries(openFPGALoader + ${LIBUDEV_LIBRARIES} + ${LIBUSB_LIBRARIES} + ${LIBFTDI_LIBRARIES} + ${LIBFTDIPP_LIBRARIES} +) + +# libftdi < 1.4 as no usb_addr +if (${LIBFTDI_VERSION} VERSION_LESS 1.4) + set(CMAKE_CXX_FLAGS "-DOLD_FTDI_VERSION=1") +else() + set(CMAKE_CXX_FLAGS "-DOLD_FTDI_VERSION=0") +endif() + +install(TARGETS openFPGALoader DESTINATION bin) +install(FILES + test_sfl.svf + spiOverJtag/spiOverJtag_xc7a35.bit + DESTINATION share/openFPGALoader +) diff --git a/INSTALL.md b/INSTALL.md new file mode 100644 index 0000000..ad217ff --- /dev/null +++ b/INSTALL.md @@ -0,0 +1,10 @@ +# Install instructions + +## Compile from source + +``` +$ mkdir build +$ cd build +$ cmake ../src/ +$ cmake --build . +``` diff --git a/Makefile b/Makefile deleted file mode 100644 index 13e50e0..0000000 --- a/Makefile +++ /dev/null @@ -1,32 +0,0 @@ -EXEC_NAME=openFPGALoader -SRC= $(wildcard *.cpp) -OBJS= $(SRC:.cpp=.o) -LDFLAGS=-lm -g -Wall -std=c++11 $(shell pkg-config --libs libftdipp1 libudev) -CXXFLAGS=-g -Wall -std=c++11 $(shell pkg-config --cflags libftdipp1 libudev) - -# libftdi < 1.4 as no usb_addr -ifeq ($(shell pkg-config --atleast-version=1.4 libftdipp1 && echo 1),) -CXXFLAGS+=-DOLD_FTDI_VERSION=1 -else -CXXFLAGS+=-DOLD_FTDI_VERSION=0 -endif - -all:$(EXEC_NAME) - -$(EXEC_NAME):$(OBJS) - $(CXX) -o $@ $^ $(LDFLAGS) - -%.o: %.c - $(CC) $(CFLAGS) -o $@ -c $< - -install: - cp -f openFPGALoader /usr/local/bin - mkdir -p /usr/local/share/openFPGALoader - cp -f test_sfl.svf /usr/local/share/openFPGALoader - cp -f spiOverJtag/*.bit /usr/local/share/openFPGALoader - -clean: - rm -rf *.o - rm -f $(EXEC_NAME) - rm -f *.c~ *.h~ Makefile~ - rm -f out*.dat diff --git a/README.md b/README.md index 9c8796d..fde2e82 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ __Supported cables:__ This application uses **libftdi1**, so this library must be installed (and, depending of the distribution, headers too) ```bash -apt-get install libftdi1-2 libftdi1-dev libftdipp1-3 libftdipp1-dev libudev-dev +apt-get install libftdi1-2 libftdi1-dev libftdipp1-3 libftdipp1-dev libudev-dev cmake ``` and if not already done, install **pkg-config**, **make** and **g++**. diff --git a/altera.cpp b/src/altera.cpp similarity index 100% rename from altera.cpp rename to src/altera.cpp diff --git a/altera.hpp b/src/altera.hpp similarity index 100% rename from altera.hpp rename to src/altera.hpp diff --git a/bitparser.cpp b/src/bitparser.cpp similarity index 100% rename from bitparser.cpp rename to src/bitparser.cpp diff --git a/bitparser.hpp b/src/bitparser.hpp similarity index 100% rename from bitparser.hpp rename to src/bitparser.hpp diff --git a/board.hpp b/src/board.hpp similarity index 100% rename from board.hpp rename to src/board.hpp diff --git a/cable.hpp b/src/cable.hpp similarity index 100% rename from cable.hpp rename to src/cable.hpp diff --git a/configBitstreamParser.cpp b/src/configBitstreamParser.cpp similarity index 100% rename from configBitstreamParser.cpp rename to src/configBitstreamParser.cpp diff --git a/configBitstreamParser.hpp b/src/configBitstreamParser.hpp similarity index 100% rename from configBitstreamParser.hpp rename to src/configBitstreamParser.hpp diff --git a/device.cpp b/src/device.cpp similarity index 100% rename from device.cpp rename to src/device.cpp diff --git a/device.hpp b/src/device.hpp similarity index 100% rename from device.hpp rename to src/device.hpp diff --git a/display.cpp b/src/display.cpp similarity index 100% rename from display.cpp rename to src/display.cpp diff --git a/display.hpp b/src/display.hpp similarity index 100% rename from display.hpp rename to src/display.hpp diff --git a/epcq.cpp b/src/epcq.cpp similarity index 100% rename from epcq.cpp rename to src/epcq.cpp diff --git a/epcq.hpp b/src/epcq.hpp similarity index 100% rename from epcq.hpp rename to src/epcq.hpp diff --git a/fsparser.cpp b/src/fsparser.cpp similarity index 100% rename from fsparser.cpp rename to src/fsparser.cpp diff --git a/fsparser.hpp b/src/fsparser.hpp similarity index 100% rename from fsparser.hpp rename to src/fsparser.hpp diff --git a/ftdijtag.cpp b/src/ftdijtag.cpp similarity index 100% rename from ftdijtag.cpp rename to src/ftdijtag.cpp diff --git a/ftdijtag.hpp b/src/ftdijtag.hpp similarity index 100% rename from ftdijtag.hpp rename to src/ftdijtag.hpp diff --git a/ftdipp_mpsse.cpp b/src/ftdipp_mpsse.cpp similarity index 100% rename from ftdipp_mpsse.cpp rename to src/ftdipp_mpsse.cpp diff --git a/ftdipp_mpsse.hpp b/src/ftdipp_mpsse.hpp similarity index 100% rename from ftdipp_mpsse.hpp rename to src/ftdipp_mpsse.hpp diff --git a/ftdispi.cpp b/src/ftdispi.cpp similarity index 100% rename from ftdispi.cpp rename to src/ftdispi.cpp diff --git a/ftdispi.hpp b/src/ftdispi.hpp similarity index 100% rename from ftdispi.hpp rename to src/ftdispi.hpp diff --git a/gowin.cpp b/src/gowin.cpp similarity index 100% rename from gowin.cpp rename to src/gowin.cpp diff --git a/gowin.hpp b/src/gowin.hpp similarity index 100% rename from gowin.hpp rename to src/gowin.hpp diff --git a/jedParser.cpp b/src/jedParser.cpp similarity index 100% rename from jedParser.cpp rename to src/jedParser.cpp diff --git a/jedParser.hpp b/src/jedParser.hpp similarity index 100% rename from jedParser.hpp rename to src/jedParser.hpp diff --git a/lattice.cpp b/src/lattice.cpp similarity index 100% rename from lattice.cpp rename to src/lattice.cpp diff --git a/lattice.hpp b/src/lattice.hpp similarity index 100% rename from lattice.hpp rename to src/lattice.hpp diff --git a/latticeBitParser.cpp b/src/latticeBitParser.cpp similarity index 100% rename from latticeBitParser.cpp rename to src/latticeBitParser.cpp diff --git a/latticeBitParser.hpp b/src/latticeBitParser.hpp similarity index 100% rename from latticeBitParser.hpp rename to src/latticeBitParser.hpp diff --git a/main.cpp b/src/main.cpp similarity index 100% rename from main.cpp rename to src/main.cpp diff --git a/mcsParser.cpp b/src/mcsParser.cpp similarity index 100% rename from mcsParser.cpp rename to src/mcsParser.cpp diff --git a/mcsParser.hpp b/src/mcsParser.hpp similarity index 100% rename from mcsParser.hpp rename to src/mcsParser.hpp diff --git a/src/openFPGALoader.h.in b/src/openFPGALoader.h.in new file mode 100644 index 0000000..34196e0 --- /dev/null +++ b/src/openFPGALoader.h.in @@ -0,0 +1,3 @@ +// the configured options and settings for openFPGALoader +#define openFPGALoader_VERSION_MAJOR @openFPGALoader_VERSION_MAJOR@ +#define openFPGALoader_VERSION_MINOR @openFPGALoader_VERSION_MINOR@ diff --git a/part.hpp b/src/part.hpp similarity index 100% rename from part.hpp rename to src/part.hpp diff --git a/progressBar.cpp b/src/progressBar.cpp similarity index 100% rename from progressBar.cpp rename to src/progressBar.cpp diff --git a/progressBar.hpp b/src/progressBar.hpp similarity index 100% rename from progressBar.hpp rename to src/progressBar.hpp diff --git a/spiFlash.cpp b/src/spiFlash.cpp similarity index 100% rename from spiFlash.cpp rename to src/spiFlash.cpp diff --git a/spiFlash.hpp b/src/spiFlash.hpp similarity index 100% rename from spiFlash.hpp rename to src/spiFlash.hpp diff --git a/svf_jtag.cpp b/src/svf_jtag.cpp similarity index 100% rename from svf_jtag.cpp rename to src/svf_jtag.cpp diff --git a/svf_jtag.hpp b/src/svf_jtag.hpp similarity index 100% rename from svf_jtag.hpp rename to src/svf_jtag.hpp diff --git a/xilinx.cpp b/src/xilinx.cpp similarity index 100% rename from xilinx.cpp rename to src/xilinx.cpp diff --git a/xilinx.hpp b/src/xilinx.hpp similarity index 100% rename from xilinx.hpp rename to src/xilinx.hpp