# Copyright (C) 1996-2008 Markus F.X.J. Oberhumer
#
# this is modelled after build.sh; needs GNU make 3.80 or better

SHELL = /bin/sh

##
## setup flags
##

##top_srcdir ?= ../..
top_srcdir ?= $(dir $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)))../..
AR ?= ar
CC ?= cc
CFLAGS ?= -O

CFI = -I$(top_srcdir)/include -I$(top_srcdir)
BNAME = lzo2
BLIB = lib$(BNAME).a

CF = $(CPPFLAGS) $(CFI) $(CFLAGS)
LF = $(LDFLAGS) $(LZO_EXTRA_LDFLAGS)
LL = $(BLIB) $(LIBS) $(LZO_EXTRA_LIBS)


##
## setup files
##

__map = $(foreach __map_v,$(2),$(call $(1),$(__map_v)))
__object_filename = $(addsuffix .o,$(basename $(notdir $(1))))

BLIB_SOURCES := $(wildcard $(top_srcdir)/src/*.c)
BLIB_SOURCES += $(LZO_EXTRA_SOURCES)
BLIB_OBJECTS := $(call __map,__object_filename,$(BLIB_SOURCES))
PROGRAMS = dict.out lzopack.out precomp.out precomp2.out simple.out lzotest.out


##
## rules
##

all.targets ?= $(BLIB) $(PROGRAMS) testmini.out
all: $(all.targets)

clean:
	rm -f *.d *.o $(BLIB) $(PROGRAMS) testmini.out

$(BLIB): $(BLIB_OBJECTS) $(LZO_EXTRA_OBJECTS)
	rm -f $@
	$(AR) rcs $@ $^

# dynamically construct object rules
define BLIB_OBJECT_template
    $(call __object_filename,$(1)) : $(1) ; $$(CC) $$(CF) $$(LZO_EXTRA_CPPFLAGS) $$(LZO_EXTRA_CFLAGS) -c $$<
endef
$(foreach s,$(BLIB_SOURCES),$(eval $(call BLIB_OBJECT_template,$(s))))

dict.out: $(top_srcdir)/examples/dict.c
	$(CC) $(CF) $(LF) -o $@ $< $(LL)
lzopack.out: $(top_srcdir)/examples/lzopack.c
	$(CC) $(CF) $(LF) -o $@ $< $(LL)
precomp.out: $(top_srcdir)/examples/precomp.c
	$(CC) $(CF) $(LF) -o $@ $< $(LL)
precomp2.out: $(top_srcdir)/examples/precomp2.c
	$(CC) $(CF) $(LF) -o $@ $< $(LL)
simple.out: $(top_srcdir)/examples/simple.c
	$(CC) $(CF) $(LF) -o $@ $< $(LL)
lzotest.out: $(top_srcdir)/lzotest/lzotest.c
	$(CC) $(CF) $(LF) -o $@ $< $(LL)

testmini.out: $(top_srcdir)/minilzo/testmini.c $(top_srcdir)/minilzo/minilzo.c
	$(CC) $(CF) $(LF) -I$(top_srcdir)/include/lzo -o $@ $^ $(LIBS)


# dependencies
$(PROGRAMS): $(BLIB)
# object dependencies are generated via -MMD
-include *.d


# debug
show_vars:
	@echo "BLIB_SOURCES = $(BLIB_SOURCES)"
	@echo "BLIB_OBJECTS = $(BLIB_OBJECTS)"
	@echo "PROGRAMS = $(PROGRAMS)"
	@echo "LZO_EXTRA_SOURCES = $(LZO_EXTRA_SOURCES)"
	@echo "LZO_EXTRA_OBJECTS = $(LZO_EXTRA_OBJECTS)"

.PHONY: all clean show_vars

