diff options
author | Igor Zlatkovic <igor@src.gnome.org> | 2003-12-11 15:34:45 +0000 |
---|---|---|
committer | Igor Zlatkovic <igor@src.gnome.org> | 2003-12-11 15:34:45 +0000 |
commit | ad6e1edbe24281b211485444374624388740b434 (patch) | |
tree | dd3a18d00d6f138df58b7769ba44c0072be09956 | |
parent | 45ac98ed8a144007fcb7e61ba10e60789a8cddcd (diff) | |
download | libxslt-ad6e1edbe24281b211485444374624388740b434.tar.gz libxslt-ad6e1edbe24281b211485444374624388740b434.tar.bz2 libxslt-ad6e1edbe24281b211485444374624388740b434.zip |
MSVC and MinGW compilation fixes
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | libexslt/exsltexports.h | 34 | ||||
-rw-r--r-- | libxslt/win32config.h | 10 | ||||
-rw-r--r-- | libxslt/xsltexports.h | 34 | ||||
-rw-r--r-- | win32/.cvsignore | 5 | ||||
-rw-r--r-- | win32/Makefile.mingw | 109 | ||||
-rw-r--r-- | win32/Makefile.msvc | 43 | ||||
-rw-r--r-- | win32/configure.js | 35 |
8 files changed, 155 insertions, 121 deletions
@@ -1,3 +1,9 @@ +Thu Dec 11 16:33:41 CET 2003 Igor Zlatkovic <igor@zlatkovic.com> + + * win32/Makefile.* win32/configure.js libxslt/xsltexports.h + libexslt/exsltexports.h libxslt/win32config.h: msvc and + mingw compilation fixes. + Wed Dec 10 20:37:46 MST 2003 John Fleck <jfleck@inkstain.net> * doc/xslt.html docs.html diff --git a/libexslt/exsltexports.h b/libexslt/exsltexports.h index 138de3bf..f4c64c03 100644 --- a/libexslt/exsltexports.h +++ b/libexslt/exsltexports.h @@ -21,10 +21,27 @@ * platform might need different definitions. */ +/** + * EXSLTPUBFUN: + * + * Macros which declare an exportable function + */ #define EXSLTPUBFUN +/** + * EXSLTPUBVAR: + * + * Macros which declare an exportable variable + */ #define EXSLTPUBVAR extern +/** + * EXSLTCALL: + * + * Macros which declare the called convention for exported functions + */ #define EXSLTCALL +/** DOC_DISABLE */ + /* Windows platform with MS compiler */ #if defined(_WIN32) && defined(_MSC_VER) #undef EXSLTPUBFUN @@ -70,7 +87,22 @@ #endif /* Windows platform with GNU compiler (Mingw) */ -#if defined(_WIN32) && defined(__MINGW__) +#if defined(_WIN32) && defined(__MINGW32__) + #undef EXSLTPUBFUN + #undef EXSLTPUBVAR + #undef EXSLTCALL + #if defined(IN_LIBEXSLT) && !defined(LIBEXSLT_STATIC) + #define EXSLTPUBFUN __declspec(dllexport) + #define EXSLTPUBVAR __declspec(dllexport) extern + #else + #define EXSLTPUBFUN + #if !defined(LIBEXSLT_STATIC) + #define EXSLTPUBVAR __declspec(dllimport) extern + #else + #define EXSLTPUBVAR extern + #endif + #endif + #define EXSLTCALL __cdecl #if !defined _REENTRANT #define _REENTRANT #endif diff --git a/libxslt/win32config.h b/libxslt/win32config.h index 6b748b2f..d46f72ff 100644 --- a/libxslt/win32config.h +++ b/libxslt/win32config.h @@ -25,7 +25,7 @@ #define HAVE_ISNAN #include <math.h> -#ifdef _MSC_VER +#if defined _MSC_VER || defined __MINGW32__ /* MS C-runtime has functions which can be used in order to determine if a given floating-point variable contains NaN, (+-)INF. These are preferred, because floating-point technology is considered propriatary @@ -88,14 +88,6 @@ static int isnan (double d) { #include <libxml/xmlversion.h> -#if !defined LIBXSLT_PUBLIC -#if defined _MSC_VER && !defined IN_LIBXSLT && !defined LIBXSLT_STATIC -#define LIBXSLT_PUBLIC __declspec(dllimport) -#else -#define LIBXSLT_PUBLIC -#endif -#endif - #ifndef ATTRIBUTE_UNUSED #define ATTRIBUTE_UNUSED #endif diff --git a/libxslt/xsltexports.h b/libxslt/xsltexports.h index 86300aa5..1bcb2395 100644 --- a/libxslt/xsltexports.h +++ b/libxslt/xsltexports.h @@ -23,10 +23,27 @@ * platform might need different definitions. */ +/** + * XSLTPUBFUN: + * + * Macros which declare an exportable function + */ #define XSLTPUBFUN +/** + * XSLTPUBVAR: + * + * Macros which declare an exportable variable + */ #define XSLTPUBVAR extern +/** + * XSLTCALL: + * + * Macros which declare the called convention for exported functions + */ #define XSLTCALL +/** DOC_DISABLE */ + /* Windows platform with MS compiler */ #if defined(_WIN32) && defined(_MSC_VER) #undef XSLTPUBFUN @@ -72,7 +89,22 @@ #endif /* Windows platform with GNU compiler (Mingw) */ -#if defined(_WIN32) && defined(__MINGW__) +#if defined(_WIN32) && defined(__MINGW32__) + #undef XSLTPUBFUN + #undef XSLTPUBVAR + #undef XSLTCALL + #if defined(IN_LIBXSLT) && !defined(LIBXSLT_STATIC) + #define XSLTPUBFUN __declspec(dllexport) + #define XSLTPUBVAR __declspec(dllexport) extern + #else + #define XSLTPUBFUN + #if !defined(LIBXSLT_STATIC) + #define XSLTPUBVAR __declspec(dllimport) extern + #else + #define XSLTPUBVAR extern + #endif + #endif + #define XSLTCALL __cdecl #if !defined _REENTRANT #define _REENTRANT #endif diff --git a/win32/.cvsignore b/win32/.cvsignore index 3d61cf27..1cca812a 100644 --- a/win32/.cvsignore +++ b/win32/.cvsignore @@ -1,5 +1,6 @@ Makefile config.* depends.* -*.int -binaries +int.* +bin.* + diff --git a/win32/Makefile.mingw b/win32/Makefile.mingw index 957a26dc..330a3072 100644 --- a/win32/Makefile.mingw +++ b/win32/Makefile.mingw @@ -3,49 +3,26 @@ # 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. +# make [all] to build the libxslt and the accompanying utilities. +# make clean to remove all compiler output files and return to a +# clean state. +# make rebuild to rebuild everything from scratch. This basically does +# a 'make clean' and then a 'make all'. +# make install to install the library and its header files. # # November 2002, Igor Zlatkovic <igor@zlatkovic.com> AUTOCONF = .\config.mingw - -# If you cannot run the configuration script, which would take the burden of -# editing this file from your back, then remove the following line... include $(AUTOCONF) -# ...and enable the following lines and adapt them to your environment. -#BASEDIR = .. -#XSLT_SRCDIR = $(BASEDIR)\libxslt -#EXSLT_SRCDIR = $(BASEDIR)\libexslt -#UTILS_SRCDIR = $(BASEDIR)\xsltproc -#BINDIR = binaries -#LIBXSLT_MAJOR_VERSION = 0 # set this to the right value. -#LIBXSLT_MINOR_VERSION = 0 # set this to the right value. -#LIBXSLT_MICRO_VERSION = 0 # set this to the right value. -#LIBEXSLT_MAJOR_VERSION = 0 # set this to the right value. -#LIBEXSLT_MINOR_VERSION = 0 # set this to the right value. -#LIBEXSLT_MICRO_VERSION = 0 # set this to the right value. -#WITH_XSLT_DEBUG = 1 -#WITH_MEM_DEBUG = 0 -#WITH_DEBUGGER = 1 -#DEBUG = 0 -#STATIC = 0 -#PREFIX = . # set this to the right value. -#BINPREFIX = $(PREFIX)\bin -#INCPREFIX = $(PREFIX)\include -#LIBPREFIX = $(PREFIX)\lib -#SOPREFIX = $(PREFIX)\lib -#INCLUDE += ;$(INCPREFIX) -#LIB += ;$(LIBPREFIX) - # 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.mingw # Names of various input and output components. XSLT_NAME = xslt @@ -60,11 +37,11 @@ EXSLT_IMP = $(EXSLT_BASENAME).lib EXSLT_A = $(EXSLT_BASENAME).a # Places where intermediate files produced by the compiler go -XSLT_INTDIR = $(XSLT_BASENAME).int -XSLT_INTDIR_A = $(XSLT_BASENAME)_a.int -EXSLT_INTDIR = $(EXSLT_BASENAME).int -EXSLT_INTDIR_A = $(EXSLT_BASENAME)_a.int -UTILS_INTDIR = utils.int +XSLT_INTDIR = int.xslt.mingw +XSLT_INTDIR_A = int.xslta.mingw +EXSLT_INTDIR = int.exslt.mingw +EXSLT_INTDIR_A = int.exslta.mingw +UTILS_INTDIR = int.utils.mingw # The preprocessor and its options. CPP = gcc.exe -E @@ -172,33 +149,33 @@ 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) + cmd.exe /C if exist $(XSLT_INTDIR) rmdir /S /Q $(XSLT_INTDIR) + cmd.exe /C if exist $(XSLT_INTDIR_A) rmdir /S /Q $(XSLT_INTDIR_A) + cmd.exe /C if exist $(EXSLT_INTDIR) rmdir /S /Q $(EXSLT_INTDIR) + cmd.exe /C if exist $(EXSLT_INTDIR_A) rmdir /S /Q $(EXSLT_INTDIR_A) + cmd.exe /C if exist $(UTILS_INTDIR) rmdir /S /Q $(UTILS_INTDIR) + cmd.exe /C if exist $(BINDIR) rmdir /S /Q $(BINDIR) rebuild : clean all distclean : clean - if exist config.* del config.* - if exist Makefile del Makefile + cmd.exe /C if exist config.* del config.* + cmd.exe /C 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) + cmd.exe /C if not exist $(INCPREFIX)\$(XSLT_BASENAME) mkdir $(INCPREFIX)\$(XSLT_BASENAME) + cmd.exe /C if not exist $(INCPREFIX)\$(EXSLT_BASENAME) mkdir $(INCPREFIX)\$(EXSLT_BASENAME) + cmd.exe /C if not exist $(BINPREFIX) mkdir $(BINPREFIX) + cmd.exe /C if not exist $(LIBPREFIX) mkdir $(LIBPREFIX) + cmd.exe /C copy $(XSLT_SRCDIR)\*.h $(INCPREFIX)\$(XSLT_BASENAME) + cmd.exe /C copy $(EXSLT_SRCDIR)\*.h $(INCPREFIX)\$(EXSLT_BASENAME) + cmd.exe /C copy $(BINDIR)\$(XSLT_SO) $(SOPREFIX) + cmd.exe /C copy $(BINDIR)\$(XSLT_A) $(LIBPREFIX) + cmd.exe /C copy $(BINDIR)\$(XSLT_IMP) $(LIBPREFIX) + cmd.exe /C copy $(BINDIR)\$(EXSLT_SO) $(SOPREFIX) + cmd.exe /C copy $(BINDIR)\$(EXSLT_A) $(LIBPREFIX) + cmd.exe /C copy $(BINDIR)\$(EXSLT_IMP) $(LIBPREFIX) + cmd.exe /C copy $(BINDIR)\*.exe $(BINPREFIX) # This is a target for me, to make a binary distribution. Not for the public use, # keep your hands off :-) @@ -216,16 +193,16 @@ dep : # Makes the compiler output directory. $(BINDIR) : - if not exist $(BINDIR) mkdir $(BINDIR) + cmd.exe /C if not exist $(BINDIR) mkdir $(BINDIR) # Makes the libxslt intermediate directory. $(XSLT_INTDIR) : - if not exist $(XSLT_INTDIR) mkdir $(XSLT_INTDIR) + cmd.exe /C 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) + cmd.exe /C if not exist $(XSLT_INTDIR_A) mkdir $(XSLT_INTDIR_A) # An implicit rule for libxslt compilation. $(XSLT_INTDIR)/%.o : $(XSLT_SRCDIR)/%.c @@ -255,11 +232,11 @@ $(BINDIR)/$(XSLT_A) : $(BINDIR) $(XSLT_OBJS_A) # Creates the libexslt intermediate directory. $(EXSLT_INTDIR) : - if not exist $(EXSLT_INTDIR) mkdir $(EXSLT_INTDIR) + cmd.exe /C 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) + cmd.exe /C if not exist $(EXSLT_INTDIR_A) mkdir $(EXSLT_INTDIR_A) # An implicit rule for libexslt compilation. $(EXSLT_INTDIR)/%.o : $(EXSLT_SRCDIR)/%.c @@ -290,7 +267,7 @@ $(BINDIR)/$(EXSLT_A) : $(BINDIR) $(EXSLT_OBJS_A) libxslta # Creates the utils intermediate directory. $(UTILS_INTDIR) : - if not exist $(UTILS_INTDIR) mkdir $(UTILS_INTDIR) + cmd.exe /C if not exist $(UTILS_INTDIR) mkdir $(UTILS_INTDIR) # An implicit rule for xsltproc and friends. APPLIBS = $(LIBS) diff --git a/win32/Makefile.msvc b/win32/Makefile.msvc index 7f295429..c8cf5932 100644 --- a/win32/Makefile.msvc +++ b/win32/Makefile.msvc @@ -13,39 +13,16 @@ # March 2002, Igor Zlatkovic <igor@zlatkovic.com> AUTOCONF = .\config.msvc - -# If you cannot run the configuration script, which would take the burden of -# editing this file from your back, then remove the following line... !include $(AUTOCONF) -# ...and enable the following lines and adapt them to your environment. -#BASEDIR = .. -#XSLT_SRCDIR = $(BASEDIR)\libxslt -#EXSLT_SRCDIR = $(BASEDIR)\libexslt -#UTILS_SRCDIR = $(BASEDIR)\xsltproc -#BINDIR = binaries -#LIBXSLT_MAJOR_VERSION = 0 # set this to the right value. -#LIBXSLT_MINOR_VERSION = 0 # set this to the right value. -#LIBXSLT_MICRO_VERSION = 0 # set this to the right value. -#LIBEXSLT_MAJOR_VERSION = 0 # set this to the right value. -#LIBEXSLT_MINOR_VERSION = 0 # set this to the right value. -#LIBEXSLT_MICRO_VERSION = 0 # set this to the right value. -#WITH_XSLT_DEBUG = 1 -#WITH_MEM_DEBUG = 0 -#WITH_DEBUGGER = 1 -#DEBUG = 0 -#STATIC = 0 -#PREFIX = . # set this to the right value. -#BINPREFIX = $(PREFIX)\bin -#INCPREFIX = $(PREFIX)\include -#LIBPREFIX = $(PREFIX)\lib -#SOPREFIX = $(PREFIX)\lib -#INCLUDE = $(INCLUDE);$(INCPREFIX) -#LIB = $(LIB);$(LIBPREFIX) - # 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 @@ -62,11 +39,11 @@ EXSLT_DEF = $(EXSLT_BASENAME).def EXSLT_A = $(EXSLT_BASENAME)_a.lib # Places where intermediate files produced by the compiler go -XSLT_INTDIR = $(XSLT_BASENAME).int -XSLT_INTDIR_A = $(XSLT_BASENAME)_a.int -EXSLT_INTDIR = $(EXSLT_BASENAME).int -EXSLT_INTDIR_A = $(EXSLT_BASENAME)_a.int -UTILS_INTDIR = utils.int +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 diff --git a/win32/configure.js b/win32/configure.js index 86376d71..3dc6474c 100644 --- a/win32/configure.js +++ b/win32/configure.js @@ -46,14 +46,15 @@ var withDebugger = true; var withIconv = true; var withZlib = false; /* Win32 build options. */ +var dirSep = "\\"; var compiler = "msvc"; var buildDebug = 0; var buildStatic = 0; var buildPrefix = "."; -var buildBinPrefix = "$(PREFIX)\\bin"; -var buildIncPrefix = "$(PREFIX)\\include"; -var buildLibPrefix = "$(PREFIX)\\lib"; -var buildSoPrefix = "$(PREFIX)\\lib"; +var buildBinPrefix = ""; +var buildIncPrefix = ""; +var buildLibPrefix = ""; +var buildSoPrefix = ""; var buildInclude = "."; var buildLib = "."; /* Local stuff */ @@ -159,11 +160,6 @@ function discoverVersion() } } cf.Close(); - vf.WriteLine("BASEDIR=" + baseDir); - vf.WriteLine("XSLT_SRCDIR=" + srcDirXslt); - vf.WriteLine("EXSLT_SRCDIR=" + srcDirExslt); - vf.WriteLine("UTILS_SRCDIR=" + srcDirUtils); - vf.WriteLine("BINDIR=" + binDir); vf.WriteLine("WITH_TRIO=" + (withTrio? "1" : "0")); vf.WriteLine("WITH_DEBUG=" + (withXsltDebug? "1" : "0")); vf.WriteLine("WITH_MEM_DEBUG=" + (withMemDebug? "1" : "0")); @@ -365,6 +361,17 @@ if (error != 0) { usage(); WScript.Quit(error); } +dirSep = "\\"; +if (compiler == "mingw") + dirSep = "/"; +if (buildBinPrefix == "") + buildBinPrefix = "$(PREFIX)" + dirSep + "bin"; +if (buildIncPrefix == "") + buildIncPrefix = "$(PREFIX)" + dirSep + "include"; +if (buildLibPrefix == "") + buildLibPrefix = "$(PREFIX)" + dirSep + "lib"; +if (buildSoPrefix == "") + buildSoPrefix = "$(PREFIX)" + dirSep + "lib"; // Discover the version. discoverVersion(); @@ -396,6 +403,16 @@ if (compiler == "mingw") makefile = ".\\Makefile.mingw"; fso.CopyFile(makefile, ".\\Makefile", true); WScript.Echo("Created Makefile."); +// Create the config.h. +var confighsrc = "..\\libxslt\\win32config.h"; +var configh = "..\\config.h"; +var f = fso.FileExists(configh); +if (f) { + var t = fso.GetFile(configh); + t.Attributes =0; +} +fso.CopyFile(confighsrc, configh, true); +WScript.Echo("Created config.h."); // Display the final configuration. var txtOut = "\nXSLT processor configuration\n"; |