LIBRARY = PostgreSql.Data.PgSqlClient.dll
NUNIT_SUITE = PostgreSql.Data.PgSqlClient.UnitTests.dll

all: $(LIBRARY) $(NUNIT_SUITE) install clean 

CSC = mcs
COPY = cp

# References to assemblies
LD_BASIC_FLAGS = -reference:System.dll -reference:System.Data.dll -reference:System.Drawing.dll -reference:System.Xml.dll
LD_FLAGS = -reference:System.dll -reference:System.Design.dll -reference:System.Data.dll -reference:System.Drawing.dll -reference:System.Xml.dll

# Resources for the Toolbox
TOOL_RESOURCES = -resource:PostgreSql.Data.PgSqlClient/source/Resources/ToolBox/PgConnection.bmp,PostgreSql.Data.PgSqlClient.Resources.ToolBox.PgConnection.bmp -resource:PostgreSql.Data.PgSqlClient/source/Resources/ToolBox/PgCommand.bmp,PostgreSql.Data.PgSqlClient.Resources.ToolBox.PgCommand.bmp -resource:PostgreSql.Data.PgSqlClient/source/Resources/ToolBox/PgDataAdapter.bmp,PostgreSql.Data.PgSqlClient.Resources.ToolBox.PgDataAdapter.bmp

# Source files
RECURSE_SOURCE = -recurse:./PostgreSql.Data.PgSqlClient/source/*.cs 
RECURSE_TESTS = -recurse:./PostgreSql.Data.PgSqlClient.UnitTests/source/*.cs

# Configuration files
NUNIT_CONFIG=./PostgreSql.Data.PgSqlClient.UnitTests/PostgreSql.Data.PgSqlClient.UnitTests.dll.config

# Defines
DEFINE = -define:_DEBUG

PostgreSql.Data.PgSqlClient.dll:
	$(CSC) -target:library -out:$(LIBRARY) $(LD_FLAGS) -reference:Mono.Security.dll $(DEFINE) $(TOOL_RESOURCES) $(RECURSE_SOURCE)

PostgreSql.Data.PgSqlClient.UnitTests.dll:
	$(CSC) -target:library -out:$(NUNIT_SUITE) $(LD_BASIC_FLAGS) -reference:${LIBRARY} -reference:NUnit.Framework.dll $(DEFINE) $(TOOL_RESOURCES) $(RECURSE_TESTS)

install:
	rm -rf build
	mkdir -p build
	$(COPY) $(LIBRARY) ./build
	$(COPY) $(NUNIT_SUITE) ./build
	$(COPY) ${NUNIT_CONFIG} ./build

clean: 
	rm $(LIBRARY)
	rm ${NUNIT_SUITE}
