# Makefile for libxslt, specific for Windows, MSVC and NMAKE. # # 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 libxslt 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. # # March 2002, Igor Zlatkovic AUTOCONF = .\config.msvc !include $(AUTOCONF) # There should never be a need to modify anything below this line. # ---------------------------------------------------------------- BASEDIR = .. XSLT_SRCDIR = $(BASEDIR)\libxslt EXSLT_SRCDIR = $(BASEDIR)\libexslt UTILS_SRCDIR = $(BASEDIR)\xsltproc BINDIR = bin.msvc # Names of various input and output components. XSLT_NAME = xslt XSLT_BASENAME = lib$(XSLT_NAME) XSLT_SO = $(XSLT_BASENAME).dll XSLT_IMP = $(XSLT_BASENAME).lib XSLT_DEF = $(XSLT_BASENAME).def XSLT_A = $(XSLT_BASENAME)_a.lib EXSLT_NAME = exslt EXSLT_BASENAME = lib$(EXSLT_NAME) EXSLT_SO = $(EXSLT_BASENAME).dll EXSLT_IMP = $(EXSLT_BASENAME).lib EXSLT_DEF = $(EXSLT_BASENAME).def EXSLT_A = $(EXSLT_BASENAME)_a.lib # Places where intermediate files produced by the compiler go XSLT_INTDIR = int.xslt.msvc XSLT_INTDIR_A = int.xslta.msvc EXSLT_INTDIR = int.exslt.msvc EXSLT_INTDIR_A = int.exslta.msvc UTILS_INTDIR = int.utils.msvc # The preprocessor and its options. CPP = cl.exe /EP CPPFLAGS = /nologo # The compiler and its options. CC = cl.exe CFLAGS = /nologo /D "WIN32" /D "_WINDOWS" /D "_MBCS" /W3 $(CRUNTIME) /D "_REENTRANT" CFLAGS = $(CFLAGS) /I$(BASEDIR) /I$(XSLT_SRCDIR) /I$(INCPREFIX) # The linker and its options. LD = link.exe LDFLAGS = /nologo LDFLAGS = $(LDFLAGS) /LIBPATH:$(BINDIR) /LIBPATH:$(LIBPREFIX) LIBS = wsock32.lib # The archiver and its options. AR = lib.exe ARFLAGS = /nologo # Optimisation and debug symbols. !if "$(DEBUG)" == "1" CFLAGS = $(CFLAGS) /D "_DEBUG" /Od /Z7 LDFLAGS = $(LDFLAGS) /DEBUG !else CFLAGS = $(CFLAGS) /D "NDEBUG" /O2 LDFLAGS = $(LDFLAGS) /OPT:NOWIN98 !endif # Libxslt object files. XSLT_OBJS = $(XSLT_INTDIR)\attributes.obj\ $(XSLT_INTDIR)\documents.obj\ $(XSLT_INTDIR)\extensions.obj\ $(XSLT_INTDIR)\extra.obj\ $(XSLT_INTDIR)\functions.obj\ $(XSLT_INTDIR)\imports.obj\ $(XSLT_INTDIR)\keys.obj\ $(XSLT_INTDIR)\namespaces.obj\ $(XSLT_INTDIR)\numbers.obj\ $(XSLT_INTDIR)\pattern.obj\ $(XSLT_INTDIR)\preproc.obj\ $(XSLT_INTDIR)\security.obj\ $(XSLT_INTDIR)\templates.obj\ $(XSLT_INTDIR)\transform.obj\ $(XSLT_INTDIR)\variables.obj\ $(XSLT_INTDIR)\xslt.obj\ $(XSLT_INTDIR)\xsltutils.obj\ $(XSLT_INTDIR)\attrvt.obj # Static libxslt object files. XSLT_OBJS_A = $(XSLT_INTDIR_A)\attributes.obj\ $(XSLT_INTDIR_A)\documents.obj\ $(XSLT_INTDIR_A)\extensions.obj\ $(XSLT_INTDIR_A)\extra.obj\ $(XSLT_INTDIR_A)\functions.obj\ $(XSLT_INTDIR_A)\imports.obj\ $(XSLT_INTDIR_A)\keys.obj\ $(XSLT_INTDIR_A)\namespaces.obj\ $(XSLT_INTDIR_A)\numbers.obj\ $(XSLT_INTDIR_A)\pattern.obj\ $(XSLT_INTDIR_A)\preproc.obj\ $(XSLT_INTDIR_A)\security.obj\ $(XSLT_INTDIR_A)\templates.obj\ $(XSLT_INTDIR_A)\transform.obj\ $(XSLT_INTDIR_A)\variables.obj\ $(XSLT_INTDIR_A)\xslt.obj\ $(XSLT_INTDIR_A)\xsltutils.obj\ $(XSLT_INTDIR_A)\attrvt.obj # Libexslt object files. EXSLT_OBJS = $(EXSLT_INTDIR)\common.obj\ $(EXSLT_INTDIR)\date.obj\ $(EXSLT_INTDIR)\exslt.obj\ $(EXSLT_INTDIR)\functions.obj\ $(EXSLT_INTDIR)\math.obj\ $(EXSLT_INTDIR)\saxon.obj\ $(EXSLT_INTDIR)\sets.obj\ $(EXSLT_INTDIR)\strings.obj\ $(EXSLT_INTDIR)\dynamic.obj # Static libexslt object files. EXSLT_OBJS_A = $(EXSLT_INTDIR_A)\common.obj\ $(EXSLT_INTDIR_A)\date.obj\ $(EXSLT_INTDIR_A)\exslt.obj\ $(EXSLT_INTDIR_A)\functions.obj\ $(EXSLT_INTDIR_A)\math.obj\ $(EXSLT_INTDIR_A)\saxon.obj\ $(EXSLT_INTDIR_A)\sets.obj\ $(EXSLT_INTDIR_A)\strings.obj\ $(EXSLT_INTDIR_A)\dynamic.obj # Xsltproc and friends executables. UTILS = $(BINDIR)\xsltproc.exe all : libxslt libxslta libexslt libexslta utils libxslt : $(BINDIR)\$(XSLT_SO) libxslta : $(BINDIR)\$(XSLT_A) libexslt : $(BINDIR)\$(EXSLT_SO) libexslta : $(BINDIR)\$(EXSLT_A) utils : $(UTILS) clean : if exist $(XSLT_INTDIR) rmdir /S /Q $(XSLT_INTDIR) if exist $(XSLT_INTDIR_A) rmdir /S /Q $(XSLT_INTDIR_A) if exist $(EXSLT_INTDIR) rmdir /S /Q $(EXSLT_INTDIR) if exist $(EXSLT_INTDIR_A) rmdir /S /Q $(EXSLT_INTDIR_A) if exist $(UTILS_INTDIR) rmdir /S /Q $(UTILS_INTDIR) if exist $(BINDIR) rmdir /S /Q $(BINDIR) rebuild : clean all distclean : clean if exist config.* del config.* if exist Makefile del Makefile install : all if not exist $(INCPREFIX)\$(XSLT_BASENAME) mkdir $(INCPREFIX)\$(XSLT_BASENAME) if not exist $(INCPREFIX)\$(EXSLT_BASENAME) mkdir $(INCPREFIX)\$(EXSLT_BASENAME) if not exist $(BINPREFIX) mkdir $(BINPREFIX) if not exist $(LIBPREFIX) mkdir $(LIBPREFIX) copy $(XSLT_SRCDIR)\*.h $(INCPREFIX)\$(XSLT_BASENAME) copy $(EXSLT_SRCDIR)\*.h $(INCPREFIX)\$(EXSLT_BASENAME) copy $(BINDIR)\$(XSLT_SO) $(SOPREFIX) copy $(BINDIR)\$(XSLT_A) $(LIBPREFIX) copy $(BINDIR)\$(XSLT_IMP) $(LIBPREFIX) copy $(BINDIR)\$(EXSLT_SO) $(SOPREFIX) copy $(BINDIR)\$(EXSLT_A) $(LIBPREFIX) copy $(BINDIR)\$(EXSLT_IMP) $(LIBPREFIX) copy $(BINDIR)\*.exe $(BINPREFIX) -copy $(BINDIR)\*.pdb $(BINPREFIX) # This is a target for me, to make a binary distribution. Not for the public use, # keep your hands off :-) BDVERSION = $(LIBXSLT_MAJOR_VERSION).$(LIBXSLT_MINOR_VERSION).$(LIBXSLT_MICRO_VERSION) BDPREFIX = $(XSLT_BASENAME)-$(BDVERSION).win32 bindist : all $(MAKE) /nologo PREFIX=$(BDPREFIX) BINPREFIX=$(BDPREFIX)\util install cscript //NoLogo configure.js genreadme $(XSLT_BASENAME) $(BDVERSION) $(BDPREFIX)\readme.txt # Makes the compiler output directory. $(BINDIR) : if not exist $(BINDIR) mkdir $(BINDIR) # Makes the libxslt intermediate directory. $(XSLT_INTDIR) : if not exist $(XSLT_INTDIR) mkdir $(XSLT_INTDIR) # Makes the static libxslt intermediate directory. $(XSLT_INTDIR_A) : if not exist $(XSLT_INTDIR_A) mkdir $(XSLT_INTDIR_A) # An implicit rule for libxslt compilation. {$(XSLT_SRCDIR)}.c{$(XSLT_INTDIR)}.obj:: $(CC) $(CFLAGS) /Fo$(XSLT_INTDIR)\ /c $< # An implicit rule for static libxslt compilation. {$(XSLT_SRCDIR)}.c{$(XSLT_INTDIR_A)}.obj:: $(CC) $(CFLAGS) /D "LIBXML_STATIC" /D "LIBXSLT_STATIC" \ /Fo$(XSLT_INTDIR_A)\ /c $< # Compiles libxslt source. Uses the implicit rule for commands. $(XSLT_OBJS) : $(XSLT_INTDIR) # Compiles static libxslt source. Uses the implicit rule for commands. $(XSLT_OBJS_A) : $(XSLT_INTDIR_A) # Creates the export definition file (DEF) for libxslt. $(XSLT_INTDIR)\$(XSLT_DEF) : $(XSLT_INTDIR) $(XSLT_DEF).src $(CPP) $(CPPFLAGS) $(XSLT_DEF).src > $(XSLT_INTDIR)\$(XSLT_DEF) # Creates the libxslt shared object. $(BINDIR)\$(XSLT_SO) : $(BINDIR) $(XSLT_OBJS) $(XSLT_INTDIR)\$(XSLT_DEF) $(LD) $(LDFLAGS) /DLL \ /VERSION:$(LIBXSLT_MAJOR_VERSION).$(LIBXSLT_MINOR_VERSION) \ /IMPLIB:$(BINDIR)\$(XSLT_IMP) /OUT:$(BINDIR)\$(XSLT_SO) \ $(XSLT_OBJS) $(LIBS) libxml2.lib #$(BINDIR)\$(XSLT_SO) : $(BINDIR) $(XSLT_OBJS) $(XSLT_INTDIR)\$(XSLT_DEF) # $(LD) $(LDFLAGS) /DLL /DEF:$(XSLT_INTDIR)\$(XSLT_DEF) \ # /VERSION:$(LIBXSLT_MAJOR_VERSION).$(LIBXSLT_MINOR_VERSION) \ # /IMPLIB:$(BINDIR)\$(XSLT_IMP) /OUT:$(BINDIR)\$(XSLT_SO) \ # $(XSLT_OBJS) $(LIBS) libxml2.lib # Creates the libxslt archive. $(BINDIR)\$(XSLT_A) : $(BINDIR) $(XSLT_OBJS_A) $(AR) $(ARFLAGS) /OUT:$(BINDIR)\$(XSLT_A) $(XSLT_OBJS_A) # Creates the libexslt intermediate directory. $(EXSLT_INTDIR) : if not exist $(EXSLT_INTDIR) mkdir $(EXSLT_INTDIR) # Creates the static libexslt intermediate directory. $(EXSLT_INTDIR_A) : if not exist $(EXSLT_INTDIR_A) mkdir $(EXSLT_INTDIR_A) # An implicit rule for libexslt compilation. {$(EXSLT_SRCDIR)}.c{$(EXSLT_INTDIR)}.obj:: $(CC) /I$(EXSLT_SRCDIR) $(CFLAGS) /Fo$(EXSLT_INTDIR)\ /c $< # An implicit rule for static libexslt compilation. {$(EXSLT_SRCDIR)}.c{$(EXSLT_INTDIR_A)}.obj:: $(CC) /D "LIBXML_STATIC" /D "LIBXSLT_STATIC" /D "LIBEXSLT_STATIC" \ /I$(EXSLT_SRCDIR) $(CFLAGS) /Fo$(EXSLT_INTDIR_A)\ /c $< # Compiles libxslt source. Uses the implicit rule for commands. $(EXSLT_OBJS) : $(EXSLT_INTDIR) # Compiles libxslt source. Uses the implicit rule for commands. $(EXSLT_OBJS_A) : $(EXSLT_INTDIR_A) # Creates the export definition file (DEF) for libxslt. $(EXSLT_INTDIR)\$(EXSLT_DEF) : $(EXSLT_INTDIR) $(EXSLT_DEF).src $(CPP) $(CPPFLAGS) $(EXSLT_DEF).src > $(EXSLT_INTDIR)\$(EXSLT_DEF) # Creates the libexslt shared object. $(BINDIR)\$(EXSLT_SO) : $(BINDIR) $(EXSLT_OBJS) $(EXSLT_INTDIR)\$(EXSLT_DEF) libxslt $(LD) $(LDFLAGS) /DLL \ /VERSION:$(LIBEXSLT_MAJOR_VERSION).$(LIBEXSLT_MINOR_VERSION) \ /IMPLIB:$(BINDIR)\$(EXSLT_IMP) /OUT:$(BINDIR)\$(EXSLT_SO) \ $(EXSLT_OBJS) $(XSLT_IMP) $(LIBS) libxml2.lib #$(BINDIR)\$(EXSLT_SO) : $(BINDIR) $(EXSLT_OBJS) $(EXSLT_INTDIR)\$(EXSLT_DEF) libxslt # $(LD) $(LDFLAGS) /DLL /DEF:$(EXSLT_INTDIR)\$(EXSLT_DEF) \ # /VERSION:$(LIBEXSLT_MAJOR_VERSION).$(LIBEXSLT_MINOR_VERSION) \ # /IMPLIB:$(BINDIR)\$(EXSLT_IMP) /OUT:$(BINDIR)\$(EXSLT_SO) \ # $(EXSLT_OBJS) $(XSLT_IMP) $(LIBS) libxml2.lib # Creates the libexslt archive. $(BINDIR)\$(EXSLT_A) : $(BINDIR) $(EXSLT_OBJS_A) libxslta $(AR) $(ARFLAGS) /OUT:$(BINDIR)\$(EXSLT_A) $(EXSLT_OBJS_A) # Creates the utils intermediate directory. $(UTILS_INTDIR) : if not exist $(UTILS_INTDIR) mkdir $(UTILS_INTDIR) # An implicit rule for xsltproc and friends. APPLIBS = $(LIBS) !if "$(STATIC)" == "1" APPLIBS = $(LIBS) libxml2_a.lib !if "$(WITH_ICONV)" == "1" APPLIBS = $(APPLIBS) iconv.lib !endif !if "$(WITH_ZLIB)" == "1" APPLIBS = $(APPLIBS) zlib.lib !endif {$(UTILS_SRCDIR)}.c{$(BINDIR)}.exe: $(CC) /D "LIBXML_STATIC" /D "LIBXSLT_STATIC" /D "LIBEXSLT_STATIC" \ $(CFLAGS) /Fo$(UTILS_INTDIR)\ /c $< $(LD) $(LDFLAGS) /OUT:$@ $(XSLT_A) $(EXSLT_A) $(APPLIBS) $(UTILS_INTDIR)\$(