CC = gcc

# Any compiler flags you want to add
ADD_CFLAGS =

# Any linker flags you want to add
ADD_LDFLAGS =

# Output file names for the libraries
STATIC_LIB = libd3demo.a
SHARED_LIB = libd3demo.so

# Programs + arguments used to copy files during installation
INSTALL_DIR = install -d
INSTALL_EXE = install -m 0755
INSTALL = install -m 0644

# Installation directories
prefix = /usr/local
PREFIX = $(PREFIX)
DESTDIR = $(prefix)
LIB_DIR = $(DESTDIR)/lib
INCLUDE_DIR = $(DESTDIR)/include
DOC_DIR = $(DESTDIR)/share/doc

CFLAGS = -fPIC -pipe
LDFLAGS = -pipe
ifeq ($(DEBUG),1)
	CFLAGS += -g -Wall -DDEBUG
else
	CFLAGS += -O2
	LDFLAGS += -s
endif

CFLAGS += -Iinclude $(ADD_CFLAGS)
LDFLAGS += $(ADD_LDFLAGS)

OBJS = reader.o writer.o d3demo_error.o

ifeq ($(LUA),1)
all: $(STATIC_LIB) $(SHARED_LIB) d3demo_lua
else
all: $(STATIC_LIB) $(SHARED_LIB)
endif

d3demo_lua: $(STATIC_LIB)
	cd lua && $(MAKE)

$(STATIC_LIB): $(OBJS)
	$(AR) r $(STATIC_LIB) $(OBJS)

$(SHARED_LIB): $(OBJS)
	$(CC) -shared $(LDFLAGS) $(OBJS) -o $(SHARED_LIB)

clean:
	$(RM) $(OBJS) $(STATIC_LIB) $(SHARED_LIB)
ifeq ($(LUA),1)
	cd lua && $(MAKE) clean
endif

distclean: clean
	cd examples && $(MAKE) clean

install: all
	$(INSTALL_DIR) $(LIB_DIR)
	$(INSTALL) $(STATIC_LIB) $(LIB_DIR)/
	$(INSTALL_EXE) $(SHARED_LIB) $(LIB_DIR)/
	$(INSTALL_DIR) $(INCLUDE_DIR)/d3demo
	$(INSTALL) include/* $(INCLUDE_DIR)/d3demo/
	$(INSTALL_DIR) $(DOC_DIR)/d3demo
	$(INSTALL) COPYING INSTALL README $(DOC_DIR)/d3demo/
	$(INSTALL_DIR) $(DOC_DIR)/d3demo/examples
	$(INSTALL) examples/* $(DOC_DIR)/d3demo/examples/
ifeq ($(LUA),1)
	cd lua && $(MAKE) install
endif

.PHONY: all clean d3demo_lua distclean install
