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

# For static linking to a Lua binary
STATIC_LUA_LIB = libd3demo_lua.a
# For dynamic loading as a Lua module (e.g. "require 'd3demo'")
SHARED_LUA_LIB = d3demo.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
LUALIB_DIR = $(DESTDIR)/lib/lua/5.1

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

CFLAGS += -Iinclude -I../include $(ADD_CFLAGS)
LDFLAGS += -L.. $(ADD_LDFLAGS)

LIBS = -llua -ld3demo

OBJS = d3demo_data_lua.o d3demo_lua_main.o reader_lua.o writer_lua.o

$(SHARED_LUA_LIB): $(OBJS)
	$(CC) -shared $(LDFLAGS) $(OBJS) -o $(SHARED_LUA_LIB) $(LIBS)

$(STATIC_LUA_LIB): $(OBJS)
	$(AR) r $(STATIC_LUA_LIB) $(OBJS)

all: $(STATIC_LUA_LIB) $(SHARED_LUA_LIB)

clean:
	$(RM) $(OBJS) $(STATIC_LUA_LIB) $(SHARED_LUA_LIB)

install: $(SHARED_LUA_LIB)
	$(INSTALL_DIR) $(LUALIB_DIR)
	$(INSTALL_EXE) $(SHARED_LUA_LIB) $(LUALIB_DIR)/
	$(INSTALL_DIR) $(INCLUDE_DIR)/d3demo
	$(INSTALL) include/* $(INCLUDE_DIR)/d3demo/
	$(INSTALL_DIR) $(DOC_DIR)/d3demo/lua
	$(INSTALL) Lua_license README $(DOC_DIR)/d3demo/lua/
	$(INSTALL_DIR) $(DOC_DIR)/d3demo/lua/examples
	$(INSTALL) examples/* $(DOC_DIR)/d3demo/lua/examples/

install-static: $(STATIC_LUA_LIB)
	$(INSTALL_DIR) $(LUALIB_DIR)
	$(INSTALL_EXE) $(STATIC_LUA_LIB) $(LUALIB_DIR)/

install-all: install install-static

.PHONY: all clean install install-static install-all
