ROOT_PATH = ..

include ../Makefile.in

OPCLIBS = libopc.so libds.so
OPCINCS = opc.h opcxmldarequestpool.h opcxmldarequest.h

SUBDIRS = frontend backend
FE_HEADERS = frontend.h frontendchild.h
FE_OBJECTS = frontend/frontendchild.o frontend/frontend.o
BE_HEADERS = backend.h
BE_OBJECTS = backend/backend.o
TD_HEADERS = 
TD_OBJECTS = 

MICROWEB_OBJECTS = httpserv.o formvars.o httputil.o multpost.o urlpost.o
OBJECTS = $(FE_OBJECTS) $(BE_OBJECTS) $(TD_OBJECTS) opcconfig.o opcserver.o
HTTP_OBJECTS = $(BE_OBJECTS) $(TD_OBJECTS) opcconfig.o opcserver.o
SERVER_OBJECT = main.o
SERVER_OBJECTS = $(OBJECTS) $(SERVER_OBJECT)
SERVER_HTTP_OBJECTS = $(HTTP_OBJECTS) $(SERVER_OBJECT)
LABVIEW_OBJECT = labview.o
LABVIEW_OBJECTS = $(OBJECTS) $(LABVIEW_OBJECT)
LABVIEW_HTTP_OBJECTS = $(HTTP_OBJECTS) $(LABVIEW_OBJECT)
ALL_OBJECTS = $(OBJECTS) $(SERVER_OBJECT) $(LABVIEW_OBJECT)
ALL_HTTP_OBJECTS = $(HTTP_OBJECTS) $(SERVER_OBJECT) $(LABVIEW_OBJECT)
HEADERS = $(FE_HEADERS) $(BE_HEADERS) $(TD_HEADERS) opcconfig.h opcserver.h opccommands.h

SERVER = opc-server
LABVIEW = ../labview/libopclv.so

#DEF=-Dmy_define=my_value
XMLINC=-I/usr/include/libxml2
INC=-Iinclude -Ifrontend -Ibackend -I../includes/libds -I../includes/libopc -I.
LIBS += -L../libopc -lopc -L../libds -lds

vpath %.h frontend:backend:include:../includes/libds:../includes/libopc
vpath %.so ../libopc ../libds
vpath %.headers ../libopc ../libds

all: .checkheaders $(SERVER) $(LABVIEW)

install: opc-server

.checkheaders: .libds.headers .libopc.headers
	make clean; \
	touch .checkheaders


$(SERVER): $(OBJECTS) $(OPCLIBS) $(SERVER_OBJECT)
	$(CC) -o $(SERVER) $(SERVER_OBJECTS) $(LIBS)

$(LABVIEW): $(OBJECTS) $(OPCLIBS) $(LABVIEW_OBJECT)
	$(CC) -rdynamic -shared -nostartfiles -o $(LABVIEW) $(LABVIEW_OBJECTS) $(LIBS)

$(ALL_OBJECTS):%.o:%.c $(HEADERS) $(OPCINCS)
	$(CC) -c $(CFLAGS) $(INC) $(DEF)  $< -o $@

clean:
	-rm -f frontend/*.{o,gcda,gcno,gcov} backend/*.{o,gcda,gcno,gcov} *.{o,gcda,gcno,gcov} $(SERVER) $(LABVIEW) $(TD_OBJECTS)
