# Makefile for libxml2, specific for Windows, GCC (mingw) and GNU make.
#
# Take a look at the beginning and modify the variables to suit your 
# environment. Having done that, you can do a
#
# nmake [all]     to build the libxml and the accompanying utilities.
# nmake clean     to remove all compiler output files and return to a
#                 clean state.
# nmake rebuild   to rebuild everything from scratch. This basically does
#                 a 'nmake clean' and then a 'nmake all'.
# nmake install   to install the library and its header files.
#
# November 2002, Igor Zlatkovic <igor@zlatkovic.com>

# There should never be a need to modify anything below this line.
# ----------------------------------------------------------------

AUTOCONF = .\config.mingw
include $(AUTOCONF)

# Names of various input and output components.
XML_NAME = xml2
XML_BASENAME = lib$(XML_NAME)
XML_SO = $(XML_BASENAME).dll
XML_IMP = $(XML_BASENAME).lib
XML_A = $(XML_BASENAME).a

# Place where we let the compiler put its output.
BINDIR = bin.mingw
XML_INTDIR = int.mingw
XML_INTDIR_A = int.a.mingw
UTILS_INTDIR = int.utils.mingw

# The preprocessor and its options.
CPP = gcc.exe -E
CPPFLAGS += -I$(XML_SRCDIR)/include -DNOLIBTOOL 
ifeq ($(WITH_THREADS),1)
CPPFLAGS += -D_REENTRANT
endif

# The compiler and its options.
CC = gcc.exe
CFLAGS += -DWIN32 -D_WINDOWS -D_MBCS -DNOLIBTOOL 
CFLAGS += -I$(XML_SRCDIR) -I$(XML_SRCDIR)/include -I$(INCPREFIX) $(INCLUDE)
ifneq ($(WITH_THREADS),no)
CFLAGS += -D_REENTRANT
endif
ifeq ($(WITH_THREADS),yes) 
CFLAGS += -DHAVE_WIN32_THREADS -DHAVE_COMPILER_TLS
endif
ifeq ($(WITH_THREADS),ctls)
CFLAGS += -DHAVE_WIN32_THREADS -DHAVE_COMPILER_TLS
endif
ifeq ($(WITH_THREADS),native)
CFLAGS += -DHAVE_WIN32_THREADS
endif
ifeq ($(WITH_THREADS),posix)
CFLAGS += -DHAVE_PTHREAD_H
endif

# The linker and its options.
LD = gcc.exe
LDFLAGS += -Wl,--major-image-version,$(LIBXML_MAJOR_VERSION)
LDFLAGS += -Wl,--minor-image-version,$(LIBXML_MINOR_VERSION)
LDFLAGS += -Wl,-L,$(BINDIR) -Wl,-L,$(LIBPREFIX)
LIBS =
ifeq ($(WITH_FTP),1)
LIBS += -lwsock32 -lws2_32
endif 
ifeq ($(WITH_HTTP),1)
LIBS += -lwsock32 -lws2_32
endif 
ifeq ($(WITH_ICONV),1)
LIBS += -liconv
endif 
ifeq ($(WITH_ZLIB),1)
# Could be named differently
# LIBS += -lzdll
LIBS += -lz
endif
ifeq ($(WITH_LZMA),1)
LIBS += -llzma
endif
ifeq ($(WITH_THREADS),posix)
LIBS += -lpthreadGC
endif
ifeq ($(WITH_MODULES),1)
LIBS += -lkernel32
endif

LIBS += $(LIB)

# The archiver and its options.
AR = ar.exe
ARFLAGS = -r

# Optimisation and debug symbols.
ifeq ($(DEBUG),1)
CFLAGS += -D_DEBUG -g
LDFLAGS += 
else
CFLAGS += -DNDEBUG -O2 
LDFLAGS += 
endif


# Libxml object files.
XML_OBJS = $(XML_INTDIR)/buf.o\
	$(XML_INTDIR)/c14n.o\
	$(XML_INTDIR)/catalog.o\
	$(XML_INTDIR)/chvalid.o\
	$(XML_INTDIR)/debugXML.o\
	$(XML_INTDIR)/dict.o\
	$(XML_INTDIR)/DOCBparser.o\
	$(XML_INTDIR)/encoding.o\
	$(XML_INTDIR)/entities.o\
	$(XML_INTDIR)/error.o\
	$(XML_INTDIR)/globals.o\
	$(XML_INTDIR)/hash.o\
	$(XML_INTDIR)/HTMLparser.o\
	$(XML_INTDIR)/HTMLtree.o\
	$(XML_INTDIR)/legacy.o\
	$(XML_INTDIR)/list.o\
	$(XML_INTDIR)/nanoftp.o\
	$(XML_INTDIR)/nanohttp.o\
	$(XML_INTDIR)/parser.o\
	$(XML_INTDIR)/parserInternals.o\
	$(XML_INTDIR)/pattern.o\
	$(XML_INTDIR)/relaxng.o\
	$(XML_INTDIR)/SAX.o\
	$(XML_INTDIR)/SAX2.o\
	$(XML_INTDIR)/schematron.o\
	$(XML_INTDIR)/threads.o\
	$(XML_INTDIR)/tree.o\
	$(XML_INTDIR)/uri.o\
	$(XML_INTDIR)/valid.o\
	$(XML_INTDIR)/xinclude.o\
	$(XML_INTDIR)/xlink.o\
	$(XML_INTDIR)/xmlIO.o\
	$(XML_INTDIR)/xmlmemory.o\
	$(XML_INTDIR)/xmlreader.o\
	$(XML_INTDIR)/xmlregexp.o\
	$(XML_INTDIR)/xmlmodule.o\
	$(XML_INTDIR)/xmlsave.o\
	$(XML_INTDIR)/xmlschemas.o\
	$(XML_INTDIR)/xmlschemastypes.o\
	$(XML_INTDIR)/xmlunicode.o\
	$(XML_INTDIR)/xmlwriter.o\
	$(XML_INTDIR)/xpath.o\
	$(XML_INTDIR)/xpointer.o\
	$(XML_INTDIR)/xmlstring.o

XML_SRCS = $(subst .o,.c,$(subst $(XML_INTDIR)/,$(XML_SRCDIR)/,$(XML_OBJS)))

# Static libxml object files.
XML_OBJS_A = $(XML_INTDIR_A)/buf.o\
	$(XML_INTDIR_A)/c14n.o\
	$(XML_INTDIR_A)/catalog.o\
	$(XML_INTDIR_A)/chvalid.o\
	$(XML_INTDIR_A)/debugXML.o\
	$(XML_INTDIR_A)/dict.o\
	$(XML_INTDIR_A)/DOCBparser.o\
	$(XML_INTDIR_A)/encoding.o\
	$(XML_INTDIR_A)/entities.o\
	$(XML_INTDIR_A)/error.o\
	$(XML_INTDIR_A)/globals.o\
	$(XML_INTDIR_A)/hash.o\
	$(XML_INTDIR_A)/HTMLparser.o\
	$(XML_INTDIR_A)/HTMLtree.o\
	$(XML_INTDIR_A)/legacy.o\
	$(XML_INTDIR_A)/list.o\
	$(XML_INTDIR_A)/nanoftp.o\
	$(XML_INTDIR_A)/nanohttp.o\
	$(XML_INTDIR_A)/parser.o\
	$(XML_INTDIR_A)/parserInternals.o\
	$(XML_INTDIR_A)/pattern.o\
	$(XML_INTDIR_A)/relaxng.o\
	$(XML_INTDIR_A)/SAX.o\
	$(XML_INTDIR_A)/SAX2.o\
	$(XML_INTDIR_A)/schematron.o\
	$(XML_INTDIR_A)/threads.o\
	$(XML_INTDIR_A)/tree.o\
	$(XML_INTDIR_A)/uri.o\
	$(XML_INTDIR_A)/valid.o\
	$(XML_INTDIR_A)/xinclude.o\
	$(XML_INTDIR_A)/xlink.o\
	$(XML_INTDIR_A)/xmlIO.o\
	$(XML_INTDIR_A)/xmlmemory.o\
	$(XML_INTDIR_A)/xmlreader.o\
	$(XML_INTDIR_A)/xmlregexp.o\
	$(XML_INTDIR_A)/xmlmodule.o\
	$(XML_INTDIR_A)/xmlsave.o\
	$(XML_INTDIR_A)/xmlschemas.o\
	$(XML_INTDIR_A)/xmlschemastypes.o\
	$(XML_INTDIR_A)/xmlunicode.o\
	$(XML_INTDIR_A)/xmlwriter.o\
	$(XML_INTDIR_A)/xpath.o\
	$(XML_INTDIR_A)/xpointer.o\
	$(XML_INTDIR_A)/xmlstring.o

XML_SRCS_A = $(subst .o,.c,$(subst $(XML_INTDIR_A)/,$(XML_SRCDIR)/,$(XML_OBJS_A)))

# Xmllint and friends executables.
UTILS = $(BINDIR)/xmllint.exe\
	$(BINDIR)/xmlcatalog.exe\
	$(BINDIR)/testAutomata.exe\
	$(BINDIR)/testC14N.exe\
	$(BINDIR)/testDocbook.exe\
	$(BINDIR)/testHTML.exe\
	$(BINDIR)/testReader.exe\
	$(BINDIR)/testRegexp.exe\
	$(BINDIR)/testModule.exe\
	$(BINDIR)/testRelax.exe\
	$(BINDIR)/testSAX.exe\
	$(BINDIR)/testSchemas.exe\
	$(BINDIR)/testURI.exe\
	$(BINDIR)/testXPath.exe\
	$(BINDIR)/runtest.exe\
	$(BINDIR)/runsuite.exe\
	$(BINDIR)/testapi.exe\
	$(BINDIR)/testlimits.exe

ifneq ($(WITH_THREADS),no)
UTILS += $(BINDIR)/testThreads.exe
endif

all : dep libxml libxmla utils

libxml : $(BINDIR)/$(XML_SO) 

libxmla : $(BINDIR)/$(XML_A)

utils : $(UTILS)

clean :
	cmd.exe /C "if exist $(XML_INTDIR) rmdir /S /Q $(XML_INTDIR)"
	cmd.exe /C "if exist $(XML_INTDIR_A) rmdir /S /Q $(XML_INTDIR_A)"
	cmd.exe /C "if exist $(UTILS_INTDIR) rmdir /S /Q $(UTILS_INTDIR)"
	cmd.exe /C "if exist $(BINDIR) rmdir /S /Q $(BINDIR)"
	cmd.exe /C "if exist depends.mingw del depends.mingw"

distclean : clean
	cmd.exe /C "if exist config.* del config.*"
	cmd.exe /C "if exist Makefile del Makefile"

rebuild : clean all

install-libs : all
	cmd.exe /C "if not exist $(INCPREFIX)\libxml2 mkdir $(INCPREFIX)\libxml2"
	cmd.exe /C "if not exist $(INCPREFIX)\libxml2\libxml mkdir $(INCPREFIX)\libxml2\libxml"
	cmd.exe /C "if not exist $(BINPREFIX) mkdir $(BINPREFIX)"
	cmd.exe /C "if not exist $(LIBPREFIX) mkdir $(LIBPREFIX)"
	cmd.exe /C "copy $(XML_SRCDIR)\include\libxml\*.h $(INCPREFIX)\libxml2\libxml"
	cmd.exe /C "copy $(BINDIR)\$(XML_SO) $(SOPREFIX)"
	cmd.exe /C "copy $(BINDIR)\$(XML_A) $(LIBPREFIX)"
	cmd.exe /C "copy $(BINDIR)\$(XML_IMP) $(LIBPREFIX)"
	cmd.exe /C "copy $(BINDIR)\xml*.exe $(BINPREFIX)"

install : install-libs
	cmd.exe /C "copy $(BINDIR)\*.exe $(BINPREFIX)"

install-dist : install-libs
	cmd.exe /C "copy $(BINDIR)\xml*.exe $(BINPREFIX)"

# This is a target for me, to make a binary distribution. Not for the public use,
# keep your hands off :-)
BDVERSION = $(LIBXML_MAJOR_VERSION).$(LIBXML_MINOR_VERSION).$(LIBXML_MICRO_VERSION)
BDPREFIX = $(XML_BASENAME)-$(BDVERSION).win32
bindist : all
	$(MAKE) PREFIX=$(BDPREFIX) SOPREFIX=$(BDPREFIX)/bin install-dist
	cscript //NoLogo configure.js genreadme $(XML_BASENAME) $(BDVERSION) $(BDPREFIX)\readme.txt


# Creates the dependency file
dep :
	$(CC) $(CFLAGS) -M $(XML_SRCS) > depends.mingw


# Makes the output directory.
$(BINDIR) :
	cmd.exe /C if not exist $(BINDIR) mkdir $(BINDIR)


# Makes the libxml intermediate directory.
$(XML_INTDIR) :
	cmd.exe /C if not exist $(XML_INTDIR) mkdir $(XML_INTDIR)

# Makes the static libxml intermediate directory.
$(XML_INTDIR_A) :
	cmd.exe /C if not exist $(XML_INTDIR_A) mkdir $(XML_INTDIR_A)

# An implicit rule for libxml compilation.
$(XML_INTDIR)/%.o : $(XML_SRCDIR)/%.c
	$(CC) $(CFLAGS) -o $@ -c $<

# An implicit rule for static libxml compilation.
$(XML_INTDIR_A)/%.o : $(XML_SRCDIR)/%.c
	$(CC) $(CFLAGS) -DLIBXML_STATIC -o $@ -c $<


# Compiles libxml source. Uses the implicit rule for commands.
$(XML_OBJS) : $(XML_INTDIR)

# Compiles static libxml source. Uses the implicit rule for commands.
$(XML_OBJS_A) : $(XML_INTDIR_A) 

# Creates the libxml shared object.
XMLSO_LDFLAGS = $(LDFLAGS) -shared -Wl,--dll -Wl,--out-implib,$(BINDIR)/$(XML_IMP)
$(BINDIR)/$(XML_SO) : $(BINDIR) $(XML_OBJS)
	$(LD) $(XMLSO_LDFLAGS) -o $(BINDIR)/$(XML_SO) $(XML_OBJS) $(LIBS)

# Creates the libxml archive.
$(BINDIR)/$(XML_A) : $(BINDIR) $(XML_OBJS_A)
	$(AR) $(ARFLAGS) $(BINDIR)\$(XML_A) $(XML_OBJS_A)


# Makes the utils intermediate directory.
$(UTILS_INTDIR) :
	cmd.exe /C if not exist $(UTILS_INTDIR) mkdir $(UTILS_INTDIR)

# An implicit rule for xmllint and friends.
ifeq ($(STATIC),1)
$(BINDIR)/%.exe : $(UTILS_SRCDIR)/%.c
	$(CC) -DLIBXML_STATIC $(CFLAGS) -o $(subst .c,.o,$(UTILS_INTDIR)/$(<F)) -c $< 
	$(LD) $(LDFLAGS) -o $@ $(subst .c,.o,$(UTILS_INTDIR)/$(<F)) -l$(XML_BASENAME) $(LIBS) 
else
$(BINDIR)/%.exe : $(UTILS_SRCDIR)/%.c
	$(CC) $(CFLAGS) -o $(subst .c,.o,$(UTILS_INTDIR)/$(<F)) -c $< 
	$(LD) $(LDFLAGS) -o $@ $(subst .c,.o,$(UTILS_INTDIR)/$(<F)) -l$(XML_BASENAME) $(LIBS) 
endif

# Builds xmllint and friends. Uses the implicit rule for commands.
$(UTILS) : $(UTILS_INTDIR) $(BINDIR) libxml libxmla

# Source dependencies
#-include depends.mingw

