
CSC_MONO=mcs
CSC_WINDOWS=csc

CSCFLAGS=/debug /unsafe

MAKE_WIN= windows=yes
LIBS_WIN=/r:gtk-sharp.dll /r:System.Drawing.dll /r:glade-sharp.dll \
	/r:atk-sharp.dll /r:gdk-sharp.dll /r:glib-sharp.dll
MAKE_MONO=
LIBS_MONO=/r:System.Drawing

USING_GTK=/define:USING_GTK /pkg:gtk-sharp /pkg:glade-sharp

LIBSIFT=/r:../libsift.dll
SOURCES=DrawingPrimitives.cs BasicImagingInterface.cs

ifeq ($(windows),yes)
	CSC=$(CSC_WINDOWS)
	LIBS += $(LIBS_WIN)
	MAKE_OPTIONS += $(MAKE_WIN)
	systemdrawing=yes
else
	CSC=$(CSC_MONO)
	LIBS += $(LIBS_MONO)
	MAKE_OPTIONS += $(MAKE_MONO)
endif

ifeq ($(systemdrawing),yes)
	SOURCES += GUIImage-Drawing.cs
else
	SOURCES += GUIImage.cs
	LIBS += $(USING_GTK)
endif

#SOURCES=GUIImage.cs DrawingPrimitives.cs BasicImagingInterface.cs

all:	autopano.exe showone.exe showtwo.exe generatekeys.exe generatekeys-sd.exe
	make $(MAKE_OPTIONS) -C autopanog all
	make $(MAKE_OPTIONS) -C autopano-win32 all

autopano.exe:	Autopano.cs DrawingPrimitives.cs BasicImagingInterface.cs GUIImage-Drawing.cs
	$(CSC) $(CSCFLAGS) /out:autopano.exe Autopano.cs \
		DrawingPrimitives.cs BasicImagingInterface.cs GUIImage-Drawing.cs \
		$(LIBSIFT) $(LIBS)

generatekeys.exe:	GenerateKeys.cs ../libsift.dll
	$(CSC) $(CSCFLAGS) /out:generatekeys.exe GenerateKeys.cs \
		$(SOURCES) $(LIBSIFT) $(LIBS)

generatekeys-sd.exe:
	mv generatekeys.exe generatekeys-gtk.exe
	make -C . systemdrawing=yes generatekeys.exe
	mv generatekeys.exe generatekeys-sd.exe
	mv generatekeys-gtk.exe generatekeys.exe

showone.exe:	ShowOne.cs ../libsift.dll
	$(CSC) $(CSCFLAGS) /out:showone.exe ShowOne.cs $(SOURCES) $(LIBSIFT) $(LIBS)

showtwo.exe:	ShowTwo.cs ../libsift.dll
	$(CSC) $(CSCFLAGS) /out:showtwo.exe ShowTwo.cs $(SOURCES) $(LIBSIFT) $(LIBS)

TestDrawingWin.exe:	TestDrawingWin.cs
	$(CSC) $(CSCFLAGS) /out:TestDrawingWin.exe TestDrawingWin.cs /r:System.Drawing

clean:
	rm -f *.exe
	make $(MAKE_OPTIONS) -C autopanog/ clean
	make $(MAKE_OPTIONS) -C autopano-win32/ clean

