EMSCRIPTEN_DIR=/usr/lib/emscripten all: wasmFPGALoader.js build_libusb: cd libusb && \ autoreconf -fiv && \ $(EMSCRIPTEN_DIR)/emconfigure ./configure -host=wasm32-emscripten -prefix=$(PWD)/installed && \ $(EMSCRIPTEN_DIR)/emmake make install build_libftdi: cp libftdi_CMakeLists.txt libftdi/CMakeLists.txt && \ cd libftdi && \ mkdir -p build && cd build && \ $(EMSCRIPTEN_DIR)/emcmake cmake -DFTDI_EEPROM=OFF .. && \ $(EMSCRIPTEN_DIR)/emmake make && \ cp src/libftdi1.a ../../installed/lib/ && \ mkdir -p ../../installed/include/libftdi1 && \ cp ../src/ftdi.h ../../installed/include/libftdi1/ # TODO: let cmake install to corrrect directory EMCC=${EMSCRIPTEN_DIR}/emcc INCLUDES=-I./installed/include/libftdi1 -I./installed/include/libusb-1.0 DEFINES=-DBLASTERII_DIR=\"\" -DDATA_DIR=\"/usr/local/share\" -DFTDI_VERSION=105 -DISE_DIR=\"/opt/Xilinx/14.7\" -DUSE_DEVICE_ARG -DVERSION=\"v0.11.0-wasm\" OPTIMIZE=-O3 # release, takes 30 mins #OPTIMIZE=-O1 # iteration #OPTIMIZE=-g # debug CFLAGS=$(OPTIMIZE) -pthread -fexceptions $(INCLUDES) $(DEFINES) LDFLAGS=$(OPTIMIZE) --bind -fexceptions installed/lib/libusb-1.0.a installed/lib/libftdi1.a -s "EXPORTED_RUNTIME_METHODS=['callMain']" -s ASYNCIFY -s ASYNCIFY_STACK_SIZE=512000 -s ALLOW_MEMORY_GROWTH -s INVOKE_RUN=0 -s USE_PTHREADS=1 # -s TOTAL_MEMORY=2048MB -s ASSERTIONS=1 --shell-file wasmFPGAloader_shell.html -s NO_EXIT_RUNTIME=1 #-s NO_DISABLE_EXCEPTION_CATCHING -s DISABLE_EXCEPTION_CATCHING=0 # -s SAFE_HEAP=0 -s NO_DISABLE_EXCEPTION_CATCHING -s MEMORY64=0 SOURCES=openFPGALoader/src/altera.cpp openFPGALoader/src/anlogicBitParser.cpp openFPGALoader/src/anlogicCable.cpp openFPGALoader/src/anlogic.cpp openFPGALoader/src/bitparser.cpp openFPGALoader/src/ch347jtag.cpp openFPGALoader/src/ch552_jtag.cpp openFPGALoader/src/colognechipCfgParser.cpp openFPGALoader/src/colognechip.cpp openFPGALoader/src/common.cpp openFPGALoader/src/configBitstreamParser.cpp openFPGALoader/src/device.cpp openFPGALoader/src/dfu.cpp openFPGALoader/src/dfuFileParser.cpp openFPGALoader/src/dirtyJtag.cpp openFPGALoader/src/display.cpp openFPGALoader/src/efinix.cpp openFPGALoader/src/efinixHexParser.cpp openFPGALoader/src/epcq.cpp openFPGALoader/src/feaparser.cpp openFPGALoader/src/fsparser.cpp openFPGALoader/src/ftdiJtagBitbang.cpp openFPGALoader/src/ftdiJtagMPSSE.cpp openFPGALoader/src/ftdipp_mpsse.cpp openFPGALoader/src/ftdispi.cpp openFPGALoader/src/fx2_ll.cpp openFPGALoader/src/gowin.cpp openFPGALoader/src/ice40.cpp openFPGALoader/src/ihexParser.cpp openFPGALoader/src/jedParser.cpp openFPGALoader/src/jlink.cpp openFPGALoader/src/jtag.cpp openFPGALoader/src/latticeBitParser.cpp openFPGALoader/src/lattice.cpp openFPGALoader/src/libusb_ll.cpp openFPGALoader/src/main.cpp openFPGALoader/src/mcsParser.cpp openFPGALoader/src/pathHelper.cpp openFPGALoader/src/pofParser.cpp openFPGALoader/src/progressBar.cpp openFPGALoader/src/rawParser.cpp openFPGALoader/src/remoteBitbang_client.cpp openFPGALoader/src/spiFlash.cpp openFPGALoader/src/spiInterface.cpp openFPGALoader/src/svf_jtag.cpp openFPGALoader/src/usbBlaster.cpp openFPGALoader/src/xilinx.cpp openFPGALoader/src/xilinxMapParser.cpp openFPGALoader/src/xvc_client.cpp openFPGALoader/src/xvc_server.cpp OBJECTS=$(SOURCES:.cpp=.o) %.o:%.cpp $(EMCC) $(CFLAGS) -c $< -o $@ wasmFPGALoader.js: $(OBJECTS) $(EMCC) $(LDFLAGS) $(OBJECTS) -o $@ clean: -rm wasmFPGALoader.{js,wasm} $(OBJECTS)