RAW_APIS = evolution-api-1.8.raw

if USE_EDS_1_8
RAW_API = evolution-api-1.8.raw
endif

# NOTE!  We use the 1.8 API definition for 1.9.x and 1.10.x.  We can do this
# even though the .so version for libedataserver is 9 instead of 7 because we
# bind only a subset of it, and it didn't change between 1.8 and 1.10.  This
# might not always be the case, so you HAVE TO RECHECK IT BEFORE YOU ADD
# SUPPORT FOR 1.11!

if USE_EDS_1_9
RAW_API = evolution-api-1.8.raw
endif

if USE_EDS_1_10
RAW_API = evolution-api-1.8.raw
endif

API=evolution-api.xml
METADATA = Evolution.metadata
ASSEMBLY_NAME = evolution-sharp
references = $(GTK_SHARP_LIBS)

TARGET = $(ASSEMBLY)
ASSEMBLY = $(ASSEMBLY_NAME).dll
gapidir = $(datadir)/gapi-2.0
noinst_DATA = $(ASSEMBLY) $(ASSEMBLY).config
gapi_DATA = $(API)
CLEANFILES = $(ASSEMBLY) generated-stamp generated/*.cs $(API) evolution-sharp.pub
DISTCLEANFILES = $(ASSEMBLY).config AssemblyInfo.cs $(TESTCAL_TARGET) $(TESTTASK_TARGET) $(TESTBOOK_TARGET) $(TESTCAL_TARGET).mdb $(TESTTASK_TARGET).mdb $(TESTBOOK_TARGET).mdb $(ASSEMBLY).mdb

sources = 				\
	src/CalComponent.cs		\
	src/CalRecurrence.cs		\
	src/CalUtil.cs			\
	src/GLibUtil.cs			\
	src/ContactPhoto.cs

build_sources = $(addprefix $(srcdir)/, $(sources)) AssemblyInfo.cs

customs = 				\
	Book.custom			\
	Contact.custom			\
	Cal.custom			\
	CalView.custom			\
	Source.custom			\
	VCard.custom			\
	VCardAttribute.custom

build_customs = $(addprefix $(srcdir)/, $(customs))

EXTRA_DIST =			\
	$(ASSEMBLY).config.in	\
	AssemblyInfo.cs.in	\
	$(RAW_APIS)		\
	$(METADATA)		\
	$(customs)		\
	$(sources)		\
	$(TESTBOOK_CSFILES)	\
	$(TESTCAL_CSFILES)	\
	$(TESTTASK_CSFILES)

$(API): $(srcdir)/$(RAW_API) $(srcdir)/$(METADATA)
	cp $(srcdir)/$(RAW_API) $(API)
	chmod u+w $(API)
	$(GAPI_FIXUP) --api=$(API) --metadata=$(srcdir)/$(METADATA)

generated-stamp: $(API) $(build_customs)
	rm -f generated/* &&	\
	$(GAPI_CODEGEN) --generate $(API) --outdir=generated --customdir=$(srcdir) --assembly-name=$(ASSEMBLY_NAME) 	\
	&& touch generated-stamp

$(ASSEMBLY): $(build_sources) generated-stamp evolution-sharp.pub
	$(CSC) -debug --unsafe /out:$(ASSEMBLY) /target:library $(references) $(build_sources) generated/*.cs

all: $(ASSEMBLY) $(TEST_TARGETS)

install-data-local:
	@if test -n '$(TARGET)'; then									\
	  echo "$(GACUTIL) /i $(ASSEMBLY) /f /package $(PACKAGE) /root $(DESTDIR)$(prefix)/lib";		\
	  $(GACUTIL) /i $(ASSEMBLY) /f /package $(PACKAGE) /root $(DESTDIR)$(prefix)/lib || exit 1;		\
	fi

uninstall-local:
	@if test -n '$(TARGET)'; then									\
	  echo "$(GACUTIL) /u $(ASSEMBLY_NAME) /package $(PACKAGE) /root $(DESTDIR)$(prefix)/lib";		\
	  $(GACUTIL) /u $(ASSEMBLY_NAME) /package $(PACKAGE) /root $(DESTDIR)$(prefix)/lib || exit 1;	\
	fi

evolution-sharp.pub: $(top_srcdir)/evolution-sharp.pub
	cp $(top_srcdir)/evolution-sharp.pub .


TEST_TARGETS = $(TESTCAL_TARGET) $(TESTTASK_TARGET) $(TESTBOOK_TARGET)

TESTCAL_TARGET = TestCal.exe
TESTCAL_CSFILES = $(srcdir)/TestCal.cs

$(TESTCAL_TARGET): $(TESTCAL_CSFILES) $(ASSEMBLY)
	$(CSC) -debug -out:$@ $(CSFLAGS) $(TESTCAL_CSFILES) -r:$(ASSEMBLY) $(references)

TESTTASK_TARGET = TestTask.exe
TESTTASK_CSFILES = $(srcdir)/TestTask.cs

$(TESTTASK_TARGET): $(TESTTASK_CSFILES) $(ASSEMBLY)
	$(CSC) -debug -out:$@ $(CSFLAGS) $(TESTTASK_CSFILES) -r:$(ASSEMBLY) $(references)

TESTBOOK_TARGET = TestBook.exe
TESTBOOK_CSFILES = $(srcdir)/TestBook.cs

$(TESTBOOK_TARGET): $(TESTBOOK_CSFILES) $(ASSEMBLY)
	$(CSC) -debug -out:$@ $(CSFLAGS) $(TESTBOOK_CSFILES) -r:$(ASSEMBLY) $(references)


syntax highlighted by Code2HTML, v. 0.9.1