add jtag_tap logic from luna
[ecpprog.git] / Makefile
1 PREFIX ?= /usr/local
2 DEBUG ?= 0
3 ICEPROG ?= 1
4 PROGRAM_PREFIX ?=
5
6 CXX ?= clang++
7 CC ?= clang
8 PKG_CONFIG ?= pkg-config
9
10 C_STD ?= c99
11 CXX_STD ?= c++11
12 ifeq ($(DEBUG),1)
13 OPT_LEVEL ?= 0
14 DBG_LEVEL ?= -ggdb
15 else
16 OPT_LEVEL ?= 2
17 DBG_LEVEL ?=
18 endif
19 WARN_LEVEL ?= all
20
21 LDLIBS = -lm -lstdc++
22 CFLAGS += -MD -O$(OPT_LEVEL) $(DBG_LEVEL) -W$(WARN_LEVEL) -std=$(C_STD) -I$(PREFIX)/include
23 CXXFLAGS += -MD -O$(OPT_LEVEL) $(DBG_LEVEL) -W$(WARN_LEVEL) -std=$(CXX_STD) -I$(PREFIX)/include
24
25 DESTDIR ?=
26 CHIPDB_SUBDIR ?= $(PROGRAM_PREFIX)icebox
27
28 ifeq ($(MXE),1)
29 EXE = .exe
30 CXX = /usr/local/src/mxe/usr/bin/i686-w64-mingw32.static-gcc
31 CC = $(CXX)
32 PKG_CONFIG = /usr/local/src/mxe/usr/bin/i686-w64-mingw32.static-pkg-config
33 endif
34
35 ifneq ($(shell uname -s),Darwin)
36 LDLIBS = -L/usr/local/lib -lm
37 else
38 LIBFTDI_NAME = $(shell $(PKG_CONFIG) --exists libftdi1 && echo ftdi1 || echo ftdi)
39 LDLIBS = -L/usr/local/lib -l$(LIBFTDI_NAME) -lm
40 endif
41
42 ifeq ($(STATIC),1)
43 LDFLAGS += -static
44 LDLIBS += $(shell for pkg in libftdi1 libftdi; do $(PKG_CONFIG) --silence-errors --static --libs $$pkg && exit; done; echo -lftdi; )
45 CFLAGS += $(shell for pkg in libftdi1 libftdi; do $(PKG_CONFIG) --silence-errors --static --cflags $$pkg && exit; done; )
46 else
47 LDLIBS += $(shell for pkg in libftdi1 libftdi; do $(PKG_CONFIG) --silence-errors --libs $$pkg && exit; done; echo -lftdi; )
48 CFLAGS += $(shell for pkg in libftdi1 libftdi; do $(PKG_CONFIG) --silence-errors --cflags $$pkg && exit; done; )
49 endif
50
51 all: $(PROGRAM_PREFIX)iceprog$(EXE)
52
53 $(PROGRAM_PREFIX)iceprog$(EXE): iceprog.o mpsse.o jtag_tap.o
54 $(CC) -o $@ $(LDFLAGS) $^ $(LDLIBS)
55
56 install: all
57 mkdir -p $(DESTDIR)$(PREFIX)/bin
58 cp $(PROGRAM_PREFIX)iceprog$(EXE) $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)iceprog$(EXE)
59
60 uninstall:
61 rm -f $(DESTDIR)$(PREFIX)/bin/$(PROGRAM_PREFIX)iceprog$(EXE)
62
63 clean:
64 rm -f $(PROGRAM_PREFIX)iceprog
65 rm -f $(PROGRAM_PREFIX)iceprog.exe
66 rm -f *.o *.d
67
68 -include *.d
69
70 .PHONY: all install uninstall clean
71