#
# Copyright 2012 Google Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#

# Make is silent per default, but 'make V=1' will show all compiler calls.
Q:=@
ifneq ($(V),1)
ifneq ($(Q),)
.SILENT:
endif
endif

CFLAGS ?= -O2 -g -fomit-frame-pointer
CFLAGS += $(shell $(PKG_CONFIG) --cflags libusb-1.0)

CFLAGS += -Wall -Wundef -Wstrict-prototypes -Wmissing-prototypes
CFLAGS += -Wwrite-strings -Wredundant-decls -Wstrict-aliasing -Wshadow -Wextra
CFLAGS += -Wno-unused-but-set-variable
CFLAGS += -DXZ_USE_CRC64 -DXZ_DEC_ANY_CHECK -Ixz

LDFLAGS ?=
LDFLAGS += $(shell $(PKG_CONFIG) --libs libusb-1.0)
LDFLAGS += $(shell $(PKG_CONFIG) --libs libcurl)

CC ?= gcc
PKG_CONFIG ?= pkg-config

XZ = xz/xz_crc32.c  xz/xz_crc64.c  xz/xz_dec_bcj.c  xz/xz_dec_lzma2.c  xz/xz_dec_stream.c
SOURCES = em100.c firmware.c fpga.c hexdump.c sdram.c spi.c system.c trace.c usb.c
SOURCES += image.c curl.c chips.c tar.c $(XZ)
OBJECTS = $(SOURCES:.c=.o)

all: dep em100

em100: $(OBJECTS)
	printf "  LD     em100\n"
	$(CC) $(CFLAGS) -o $@ $(OBJECTS) $(LDFLAGS)

%: %.c
	printf "  CC+LD  $@\n"
	$(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $< $(LDFLAGS)

%.o: %.c
	printf "  CC     $@\n"
	$(CC) $(CFLAGS) $(CPPFLAGS) -o $@ -c $<

dep: $(SOURCES)
	$(CC) $(CFLAGS) -MM $(SOURCES) > .dependencies.tmp
	sed -i 's,^xz,xz/xz,g' .dependencies.tmp
	mv .dependencies.tmp .dependencies

tarballs: makedpfw makechips.sh
	printf "  CREATE config & firmware images\n"
	LANG=C ./makechips.sh

clean:
	rm -f em100 makedpfw
	rm -f $(OBJECTS)
	rm -rf configs{,.tar.xz} firmware{,.tar.xz}
	rm -f .dependencies

distclean: clean
	rm -f em100pro_chips.h

-include .dependencies

.PHONY: clean distclean tarballs
