
# Output directory for compiled files
BUILD_DIR=build

# Source directory
SRC_DIR=src

# Where GSOAP is installed
GSOAP_HOME=libs/gsoap
GSOAP=$(GSOAP_HOME)/bin/soapcpp2
SOAPH=$(GSOAP_HOME)/stdsoap2.h
SOAPC=$(GSOAP_HOME)/stdsoap2.c

# Other variables
CC=gcc
LIBS=-ljsclient -lxml2 
COFLAGS=-O2
CWFLAGS=-Wall -L$(BUILD_DIR)
CIFLAGS=-I$(GSOAP_HOME) -I$(GSOAP_HOME)/import -I$(SRC_DIR)/jasperserver 
CMFLAGS=
CFLAGS= $(CWFLAGS) $(COFLAGS) $(CIFLAGS) $(CMFLAGS)

JS_SRC_FILES=$(SRC_DIR)/jasperserver/attachment.c $(SRC_DIR)/jasperserver/stringbuffer.c $(SRC_DIR)/jasperserver/repository.c $(SRC_DIR)/jasperserver/marshaller.c $(SRC_DIR)/jasperserver/unmarshaller.c $(SRC_DIR)/jasperserver/services.c $(SRC_DIR)/jasperserver/soap/soapC.c $(SRC_DIR)/jasperserver/soap/soapClient.c   


all:		samples

jsclient.lib:	
		$(CC) $(CIFLAGS) -c $(SRC_DIR)/jasperserver/attachment.c      -o $(BUILD_DIR)/attachment.o
		$(CC) $(CIFLAGS) -c $(SRC_DIR)/jasperserver/stringbuffer.c    -o $(BUILD_DIR)/stringbuffer.o
		$(CC) $(CIFLAGS) -c $(SRC_DIR)/jasperserver/repository.c      -o $(BUILD_DIR)/repository.o
		$(CC) $(CIFLAGS) -c $(SRC_DIR)/jasperserver/marshaller.c      -o $(BUILD_DIR)/marshaller.o
		$(CC) $(CIFLAGS) -c $(SRC_DIR)/jasperserver/unmarshaller.c    -o $(BUILD_DIR)/unmarshaller.o
		$(CC) $(CIFLAGS) -c $(SRC_DIR)/jasperserver/services.c        -o $(BUILD_DIR)/services.o
		$(CC) $(CIFLAGS) -c $(SRC_DIR)/jasperserver/soap/soapClient.c -o $(BUILD_DIR)/soapClient.o
		$(CC) $(CIFLAGS) -c $(SRC_DIR)/jasperserver/soap/soapC.c      -o $(BUILD_DIR)/soapC.o
		$(CC) $(CIFLAGS) -c $(SOAPC)      			      -o $(BUILD_DIR)/stdsoap2.o
		
		ar rs $(BUILD_DIR)/libjsclient.a $(BUILD_DIR)/attachment.o $(BUILD_DIR)/stringbuffer.o $(BUILD_DIR)/repository.o $(BUILD_DIR)/marshaller.o $(BUILD_DIR)/unmarshaller.o $(BUILD_DIR)/services.o $(BUILD_DIR)/soapClient.o $(BUILD_DIR)/soapC.o $(BUILD_DIR)/stdsoap2.o
		rm -f $(BUILD_DIR)/*.o

samples:	sample_list sample_list_report_unit sample_get sample_put sample_delete sample_run sample_run_params

sample_list:	jsclient.lib
		
		$(CC) $(CFLAGS) $(SRC_DIR)/samples/jslist.c -o $(BUILD_DIR)/jslist  $(LIBS)
		
sample_list_report_unit:	jsclient.lib
		
		$(CC) $(CFLAGS) $(SRC_DIR)/samples/jslist_report_unit.c -o $(BUILD_DIR)/jslist_report_unit  $(LIBS)
		
sample_get:	jsclient.lib
		
		$(CC) $(CFLAGS) $(SRC_DIR)/samples/jsget.c -o $(BUILD_DIR)/jsget  $(LIBS)

sample_put:	jsclient.lib
		
		$(CC) $(CFLAGS) $(SRC_DIR)/samples/jsput.c -o $(BUILD_DIR)/jsput  $(LIBS)

sample_delete:	jsclient.lib
		
		$(CC) $(CFLAGS) $(SRC_DIR)/samples/jsdelete.c -o $(BUILD_DIR)/jsdelete  $(LIBS)
		
sample_run:	jsclient.lib
		
		$(CC) $(CFLAGS) $(SRC_DIR)/samples/jsrun.c -o $(BUILD_DIR)/jsrun  $(LIBS)

sample_run_params:	jsclient.lib
		
		$(CC) $(CFLAGS) $(SRC_DIR)/samples/jsrun_params.c -o $(BUILD_DIR)/jsrun_params  $(LIBS)
				
clean:
		rm -Rf $(BUILD_DIR)/* 

distclean:
		rm -f $(BUILD_DIR)/*.* $(SRC_DIR)/*.nsmap $(SRC_DIR)/soapH.h $(SRC_DIR)/soapStub.h $(SRC_DIR)/soapC.c


# This target must be called to regenerate generate js.h from the WSDL
parse_wsdl:
		$(GSOAP_HOME)/bin/wsdl2h.exe -c -o $(SRC_DIR)/jasperserver/soap/js.h $(SRC_DIR)/repository.wsdl
		
		
create_soap_includes: parse_wsdl
		$(GSOAP) -c -C -x -w $(SRC_DIR)/jasperserver/soap/js.h -d $(SRC_DIR)/jasperserver/soap
