export LD_LIBRARY_PATH = ../lib/
CC = gcc
ECP = ../bin/ecp
ECC = ../bin/ecc
ECS = ../bin/ecs
ECFLAGS = -defaultns eda
CFLAGS = -fmessage-length=0 -O2 -ffast-math -fvisibility=hidden -w -fPIC
OFLAGS = -L../lib/
LIBS = -lecere -shared
OBJECTS = \
	release/EDB.o release/MemoryEDB.o release/EDA.o release/ers.o release/gui.o release/idList.o release/EDA.main.o

COBJECTS = \
	release/EDB.c release/MemoryEDB.c release/EDA.c release/ers.c release/gui.c release/idList.c 

SYMBOLS = \
	release/EDB.sym release/MemoryEDB.sym release/EDA.sym release/ers.sym release/gui.sym \
	release/idList.sym 

IMPORTS = \
	release/EDB.imp release/MemoryEDB.imp release/EDA.imp release/ers.imp release/gui.imp \
	release/idList.imp 

RESOURCES = \
	

all: release/libEDA.so

release/EDA.main.ec: $(SYMBOLS) $(COBJECTS)
	$(ECS) -dynamiclib $(SYMBOLS) $(IMPORTS) -symbols release -o release/EDA.main.ec

release/EDA.main.c: release/EDA.main.ec
	$(ECP) $(ECFLAGS) $(CFLAGS) -c release/EDA.main.ec -o release/EDA.main.sym -symbols release

	$(ECC) $(ECFLAGS) $(CFLAGS) -c release/EDA.main.ec -o release/EDA.main.c -symbols release

release/libEDA.so:  $(SYMBOLS) $(OBJECTS) $(RESOURCES)
	$(CC) $(OFLAGS) $(OBJECTS) $(LIBS) -o release/libEDA.so
	strip release/libEDA.so
	cp release/libEDA.so ../lib/
	cd src/drivers/SQLite && make
	cp src/drivers/SQLite/release/libEDASQLite.so ../lib/

# SYMBOL RULES

release/EDB.sym: src/drivers/EDB.ec
	$(ECP) $(ECFLAGS) $(CFLAGS) -c src/drivers/EDB.ec -o release/EDB.sym

release/MemoryEDB.sym: src/drivers/MemoryEDB.ec
	$(ECP) $(ECFLAGS) $(CFLAGS) -c src/drivers/MemoryEDB.ec -o release/MemoryEDB.sym

release/EDA.sym: src/EDA.ec
	$(ECP) $(ECFLAGS) $(CFLAGS) -c src/EDA.ec -o release/EDA.sym

release/ers.sym: src/ers.ec
	$(ECP) $(ECFLAGS) $(CFLAGS) -c src/ers.ec -o release/ers.sym

release/gui.sym: src/gui.ec
	$(ECP) $(ECFLAGS) $(CFLAGS) -c src/gui.ec -o release/gui.sym

release/idList.sym: src/idList.ec
	$(ECP) $(ECFLAGS) $(CFLAGS) -c src/idList.ec -o release/idList.sym

# C OBJECT RULES

release/EDB.c: src/drivers/EDB.ec release/EDB.sym | $(SYMBOLS)
	$(ECC) $(ECFLAGS) $(CFLAGS) -c src/drivers/EDB.ec -o release/EDB.c -symbols release

release/MemoryEDB.c: src/drivers/MemoryEDB.ec release/MemoryEDB.sym | $(SYMBOLS)
	$(ECC) $(ECFLAGS) $(CFLAGS) -c src/drivers/MemoryEDB.ec -o release/MemoryEDB.c -symbols release

release/EDA.c: src/EDA.ec release/EDA.sym | $(SYMBOLS)
	$(ECC) $(ECFLAGS) $(CFLAGS) -c src/EDA.ec -o release/EDA.c -symbols release

release/ers.c: src/ers.ec release/ers.sym | $(SYMBOLS)
	$(ECC) $(ECFLAGS) $(CFLAGS) -c src/ers.ec -o release/ers.c -symbols release

release/gui.c: src/gui.ec release/gui.sym | $(SYMBOLS)
	$(ECC) $(ECFLAGS) $(CFLAGS) -c src/gui.ec -o release/gui.c -symbols release

release/idList.c: src/idList.ec release/idList.sym | $(SYMBOLS)
	$(ECC) $(ECFLAGS) $(CFLAGS) -c src/idList.ec -o release/idList.c -symbols release

# OBJECT RULES

release/EDB.o: release/EDB.c
	$(CC) $(CFLAGS) -c release/EDB.c -o release/EDB.o

release/MemoryEDB.o: release/MemoryEDB.c
	$(CC) $(CFLAGS) -c release/MemoryEDB.c -o release/MemoryEDB.o

release/EDA.o: release/EDA.c
	$(CC) $(CFLAGS) -c release/EDA.c -o release/EDA.o

release/ers.o: release/ers.c
	$(CC) $(CFLAGS) -c release/ers.c -o release/ers.o

release/gui.o: release/gui.c
	$(CC) $(CFLAGS) -c release/gui.c -o release/gui.o

release/idList.o: release/idList.c
	$(CC) $(CFLAGS) -c release/idList.c -o release/idList.o

release/EDA.main.o: release/EDA.main.c
	$(CC) $(CFLAGS) -c release/EDA.main.c -o release/EDA.main.o

clean:
	rm -f release/libEDA.so $(OBJECTS) $(IMPORTS) $(SYMBOLS) $(COBJECTS) release/EDA.main.c release/EDA.main.ec release/EDA.main.imp release/EDA.main.sym
	cd src/drivers/SQLite && make clean
