MSVC compiles out of the box.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@9901 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Angus Leeming 2005-05-03 20:32:55 +00:00
parent 082c651695
commit 4db573abbe
8 changed files with 95 additions and 88 deletions

View File

@ -1,3 +1,9 @@
2005-05-03 Angus Leeming <leeming@lyx.org>
* configure.ac: test for io.h and process.h.
Test the spelling of close(), getpid(), open(), pclose() and
popen(). Do they have a leading underscore or not?
2005-05-02 Angus Leeming <leeming@lyx.org>
* configure.ac: test for utime.h and sys/utime.h

View File

@ -236,7 +236,7 @@ AC_LANG_POP(C)
# some standard header files
AC_HEADER_DIRENT
AC_HEADER_MAJOR
AC_CHECK_HEADERS(sys/time.h sys/types.h sys/select.h strings.h locale.h utime.h sys/utime.h)
AC_CHECK_HEADERS(sys/time.h sys/types.h sys/select.h strings.h locale.h utime.h sys/utime.h io.h process.h)
# some standard structures
AC_HEADER_STAT
@ -282,7 +282,7 @@ dnl work correctly because of some conflict with stdlib.h with g++ 2.96
dnl We aim to remove this eventually, since we should test as much as
dnl possible with the compiler which will use the functions (JMarc)
AC_LANG_PUSH(C)
AC_CHECK_FUNCS(mkfifo mkstemp mktemp lstat readlink)
AC_CHECK_FUNCS(close _close getpid _getpid lstat mkfifo mkstemp mktemp open _open pclose _pclose popen _popen readlink)
AC_LANG_POP(C)
LYX_CHECK_SPELL_ENGINES

View File

@ -96,6 +96,9 @@
/* Define to 1 if you have the `asprintf' function. */
/* #undef HAVE_ASPRINTF */
/* Define to 1 if you have the `close' function. */
/* #undef HAVE_CLOSE */
/* Define if the GNU dcgettext() function is already present or preinstalled.
*/
/* #undef HAVE_DCGETTEXT */
@ -160,6 +163,9 @@
/* Define to 1 if you have the `getpagesize' function. */
#define HAVE_GETPAGESIZE 1
/* Define to 1 if you have the `getpid' function. */
/* #undef HAVE_GETPID */
/* Define if the GNU gettext() function is already present or preinstalled. */
/* #undef HAVE_GETTEXT */
@ -182,6 +188,9 @@
/* Define to 1 if you have the <ios> header file. */
#define HAVE_IOS 1
/* Define to 1 if you have the <io.h> header file. */
#define HAVE_IO_H 1
/* Define to 1 if you have the <istream> header file. */
#define HAVE_ISTREAM 1
@ -237,7 +246,7 @@
/* #define HAVE_MKDIR */
/* Define to 1 if you have the `mkfifo' function. */
/* #undef HAVE_MKFIFO 1 */
/* #undef HAVE_MKFIFO */
/* Define to 1 if you have the `mkstemp' function. */
/* #undef HAVE_MKSTEMP */
@ -257,12 +266,24 @@
/* Define to 1 if you have the <nl_types.h> header file. */
#define HAVE_NL_TYPES_H 1
/* Define to 1 if you have the `open' function. */
/* #undef HAVE_OPEN */
/* Define to 1 if you have the <ostream> header file. */
#define HAVE_OSTREAM 1
/* Define to 1 if you have the `pclose' function. */
/* #undef HAVE_PCLOSE */
/* Define to 1 if you have the `popen' function. */
/* #undef HAVE_POPEN */
/* Define if your printf() function supports format strings with positions. */
#define HAVE_POSIX_PRINTF 1
/* Define to 1 if you have the <process.h> header file. */
#define HAVE_PROCESS_H 1
/* Define to 1 if you have the <pspell/pspell.h> header file. */
/* #undef HAVE_PSPELL_PSPELL_H */
@ -381,9 +402,24 @@
/* Define to 1 if you have the <zlib.h> header file. */
#define HAVE_ZLIB_H 1
/* Define to 1 if you have the `_close' function. */
#define HAVE__CLOSE 1
/* Define to 1 if you have the `_getpid' function. */
#define HAVE__GETPID 1
/* Define to 1 if you have the `_mkdir' function. */
#define HAVE__MKDIR 1
/* Define to 1 if you have the `_open' function. */
#define HAVE__OPEN 1
/* Define to 1 if you have the `_pclose' function. */
#define HAVE__PCLOSE 1
/* Define to 1 if you have the `_popen' function. */
#define HAVE__POPEN 1
/* Define to 1 if you have the `__argz_count' function. */
/* #undef HAVE___ARGZ_COUNT */

View File

@ -7,15 +7,9 @@ To compile using MicroSoft Visual Studio 2003.NET, do this:
2) Make sure QTDIR is set in your global environment, and QTDIR\bin
is in your path. Control panel, system, advanced, environment
variables in your friend on Windows XP.
variables is your friend on Windows XP.
3) Apply the win32_kludge.diff using GNU patch. Download from
http://gnuwin32.sourceforge.net/packages/patch.htm
and type "patch -p0 < development\win32\win32_kludge.diff"
in cmd box with current working directory lyx-devel.
Make sure that patch is in your path. (c:\program files\gnuwin32\bin)
4) Open the development\win32\lyx.sln file in Visual Studio,
3) Open the development\win32\lyx.sln file in Visual Studio,
compile and run. You can probably also use the free version
of Microsoft's compiler, but I haven't tried that.

View File

@ -1,77 +0,0 @@
Index: src/support/filetools.C
===================================================================
RCS file: /cvs/lyx/lyx-devel/src/support/filetools.C,v
retrieving revision 1.209
diff -u -r1.209 filetools.C
--- src/support/filetools.C 2005/04/21 14:03:30 1.209
+++ src/support/filetools.C 2005/04/26 15:43:13
@@ -1051,6 +1051,11 @@
cmd_ret const RunCommand(string const & cmd)
{
+#ifdef _WIN32
+ // TODO: Implement this, or merge it into forkedcall.
+ // Used for lyx2lyx in buffer.C, echo in math_extern and kpse in this file
+ return make_pair(-1, string());
+#else
// FIXME: replace all calls to RunCommand with ForkedCall
// (if the output is not needed) or the code in ispell.C
// (if the output is needed).
@@ -1080,6 +1085,7 @@
perror("RunCommand:: could not terminate child process");
return make_pair(pret, ret);
+#endif
}
Index: src/support/tempname.C
===================================================================
RCS file: /cvs/lyx/lyx-devel/src/support/tempname.C,v
retrieving revision 1.26
diff -u -r1.26 tempname.C
--- src/support/tempname.C 2005/04/26 10:30:24 1.26
+++ src/support/tempname.C 2005/04/26 15:51:22
@@ -32,6 +32,10 @@
# endif
#endif
+#ifdef _WIN32
+# include <io.h>
+#endif
+
using boost::scoped_array;
using std::string;
@@ -44,6 +48,9 @@
{
#if defined(HAVE_MKSTEMP)
return ::mkstemp(templ);
+#elif defined(_WIN32)
+ ::_mktemp(templ);
+ return (int) ::fopen(templ, "w");
#elif defined(HAVE_MKTEMP)
// This probably just barely works...
::mktemp(templ);
@@ -60,7 +67,9 @@
{
string const tmpdir(dir.empty() ? package().temp_dir() : dir);
string tmpfl(AddName(tmpdir, mask));
+#ifndef _WIN32
tmpfl += convert<string>(getpid());
+#endif
tmpfl += "XXXXXX";
// The supposedly safe mkstemp version
@@ -71,7 +80,11 @@
int const tmpf = make_tempfile(tmpl.get());
if (tmpf != -1) {
string const t(tmpl.get());
+#ifdef _WIN32
+ ::fclose((FILE *) tmpf);
+#else
::close(tmpf);
+#endif
lyxerr[Debug::FILES] << "Temporary file `" << t
<< "' created." << endl;
return t;

View File

@ -1,3 +1,11 @@
2005-05-03 Angus Leeming <leeming@lyx.org>
* filetools.C (RunCommand): protect calls to popen() and pclose()
with preprocessor guards.
* tempname.C: protect calls to close(), getpid() and open()
with preprocessor guards.
2005-05-02 Angus Leeming <leeming@lyx.org>
* socktools.C: make compilation dependent on HAVE_FCNTL rather

View File

@ -1061,7 +1061,13 @@ cmd_ret const RunCommand(string const & cmd)
// pstream (process stream), with the
// variants ipstream, opstream
#if defined (HAVE_POPEN)
FILE * inf = ::popen(cmd.c_str(), os::popen_read_mode());
#elif defined (HAVE__POPEN)
FILE * inf = ::_popen(cmd.c_str(), os::popen_read_mode());
#else
#error No popen() function.
#endif
// (Claus Hentschel) Check if popen was succesful ;-)
if (!inf) {
@ -1075,7 +1081,15 @@ cmd_ret const RunCommand(string const & cmd)
ret += static_cast<char>(c);
c = fgetc(inf);
}
#if defined (HAVE_PCLOSE)
int const pret = pclose(inf);
#elif defined (HAVE__PCLOSE)
int const pret = _pclose(inf);
#else
#error No pclose() function.
#endif
if (pret == -1)
perror("RunCommand:: could not terminate child process");

View File

@ -30,6 +30,12 @@
# ifdef HAVE_SYS_STAT_H
# include <sys/stat.h>
# endif
# ifdef HAVE_IO_H
# include <io.h>
# endif
# ifdef HAVE_PROCESS_H
# include <process.h>
# endif
#endif
using boost::scoped_array;
@ -47,7 +53,15 @@ int make_tempfile(char * templ)
#elif defined(HAVE_MKTEMP)
// This probably just barely works...
::mktemp(templ);
# if defined (HAVE_OPEN)
return ::open(templ, O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR);
# elif defined (HAVE__OPEN)
return ::_open(templ,
_O_RDWR | _O_CREAT | _O_EXCL,
_S_IREAD | _S_IWRITE);
# else
# error No open() function.
# endif
#else
#error FIX FIX FIX
#endif
@ -60,7 +74,13 @@ string const lyx::support::tempName(string const & dir, string const & mask)
{
string const tmpdir(dir.empty() ? package().temp_dir() : dir);
string tmpfl(AddName(tmpdir, mask));
#if defined (HAVE_GETPID)
tmpfl += convert<string>(getpid());
#elif defined (HAVE__GETPID)
tmpfl += convert<string>(_getpid());
#else
# error No getpid() function
#endif
tmpfl += "XXXXXX";
// The supposedly safe mkstemp version
@ -71,7 +91,13 @@ string const lyx::support::tempName(string const & dir, string const & mask)
int const tmpf = make_tempfile(tmpl.get());
if (tmpf != -1) {
string const t(tmpl.get());
#if defined (HAVE_CLOSE)
::close(tmpf);
#elif defined (HAVE__CLOSE)
::_close(tmpf);
#else
# error No close() function.
#endif
lyxerr[Debug::FILES] << "Temporary file `" << t
<< "' created." << endl;
return t;