From: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
To: Sven Strickroth <sven@cs-ware.de>
Cc: git@vger.kernel.org, Junio C Hamano <gitster@pobox.com>,
Erik Faye-Lund <kusmabite@gmail.com>,
Jonathan Nieder <jrnieder@gmail.com>,
Johannes Sixt <j6t@kdbg.org>,
Johannes Schindelin <Johannes.Schindelin@gmx.de>
Subject: Re: [PATCH 1/5] msvc: Fix compilation errors caused by poll.h emulation
Date: Thu, 09 May 2013 21:35:28 +0100 [thread overview]
Message-ID: <518C0890.9050508@ramsay1.demon.co.uk> (raw)
In-Reply-To: <518AFEFC.8010904@cs-ware.de>
Sven Strickroth wrote:
> Am 31.01.2013 19:28 schrieb Ramsay Jones:
>> Commit 0f77dea9 ("mingw: move poll out of sys-folder", 24-10-2011), along
>> with other commits in the 'ef/mingw-upload-archive' branch (see commit
>> 7406aa20), effectively reintroduced the same problem addressed by commit
>> 56fb3ddc ("msvc: Fix compilation errors in compat/win32/sys/poll.c",
>> 04-12-2010).
>>
>> In order to fix the compilation errors, we use the same solution adopted
>> in that earlier commit. In particular, we set _WIN32_WINNT to 0x0502
>> (which would target Windows Server 2003) prior to including the winsock2.h
>> header file.
>
> This change causes problems compiling with MSVC2012 for me. If I don't
> define NO_SYS_POLL_H git-compat-util.h now tries to include <sys/poll.h>
> which does not exist for MSVC and if I define NO_SYS_POLL_H
> git-compat-util.h now tries to include <poll.h> which also doesn't exist
> for MSVC.
>
> Including compat/poll into the includes path causes redefinition errors.
>
> How have you tested this?
I used the Makefile, with the Visual C++ 2008 command line compiler on
Windows XP (SP3), to build a vanilla git on MinGW.
Viz:
ramsay (pu) ms $ git checkout master
Switched to branch 'master'
ramsay (master) ms $ git rev-parse master
423ecb0bb66e9d60b6667aebc2844e82205369a1
ramsay (master) ms $ make clean >/dev/null 2>&1
ramsay (master) ms $ make >ms-out1 2>&1
ramsay (master) ms $ grep error ms-out1
ramsay (master) ms $ ./git version
git version 1.8.3.rc1.25.g423ecb0.MSVC
ramsay (master) ms $
Also
ramsay (tmp) ms $ rm git.o
ramsay (tmp) ms $ make V=1 git.o
compat/vcbuild/scripts/clink.pl -o git.o -c -nologo -I. -I../zlib -Icompat/vc
build -Icompat/vcbuild/include -DWIN32 -D_CONSOLE -DHAVE_STRING_H -D_CRT_SECURE_
NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE -GL -Os -MT -DNO_CURL -DNO_ST_BLOCKS_IN_
STRUCT_STAT -DNO_NSEC -DNO_SYMLINK_HEAD -DNO_GETTEXT -DNO_SYS_POLL_H -DNO_THREAD
_SAFE_PREAD -DNO_IPV6 -DNO_INET_NTOP -DNO_INET_PTON -DNO_ICONV -DNO_POSIX_GOODIE
S -DUNRELIABLE_FSTAT -DSHA1_HEADER='"block-sha1/sha1.h"' -D__USE_MINGW_ACCESS -
DNOGDI -DHAVE_STRING_H -DHAVE_ALLOCA_H -Icompat -Icompat/regex -Icompat/win32 -D
STRIP_EXTENSION=\".exe\" -DNO_LIBGEN_H -DSNPRINTF_RETURNS_BOGUS -DNO_POLL -Icomp
at/poll -DNO_STRCASESTR -DNO_STRLCPY -DNO_STRTOUMAX -Icompat/fnmatch -DNO_FNMATC
H -DNO_SETENV -DNO_MKDTEMP -DNO_MKSTEMPS -DNO_UNSETENV -DUSE_WIN32_MMAP -DOBJECT
_CREATION_MODE=1 -DNO_PREAD -DNO_MEMMEM -DRUNTIME_PREFIX -Icompat/regex -DSHELL_
PATH='"/bin/sh"' -DDEFAULT_HELP_FORMAT='"html"' '-DGIT_HTML_PATH="share/doc/git-
doc"' '-DGIT_MAN_PATH="share/man"' '-DGIT_INFO_PATH="share/info"' git.c
git.c
git.c(204) : warning C4090: 'function' : different 'const' qualifiers
git.c(218) : warning C4090: 'function' : different 'const' qualifiers
git.c(221) : warning C4090: 'function' : different 'const' qualifiers
ramsay (tmp) ms $
Note that '-Icompat/poll' is passed on the command-line (it is split at -Icomp
above), which comes from:
ramsay (tmp) ms $ git grep -n 'compat/poll'
Makefile:647:LIB_H += compat/poll/poll.h
Makefile:1235: COMPAT_CFLAGS += -DNO_POLL -Icompat/poll
Makefile:1236: COMPAT_OBJS += compat/poll/poll.o
ramsay (tmp) ms $
I have a patch which allows me to generate the preprocessed output file
and, after running it on git.c (=> git.i), I can see that msvc reads the
compat/poll/poll.h file. (from line 128 of git-compat-util.h).
Are you using a MSVC "project" file? If so, is it equivalent to the Makefile?
Has the "#include" behaviour changed between MSVC 2008 -> MSVC 2012?
ATB,
Ramsay Jones
next prev parent reply other threads:[~2013-05-09 20:40 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-31 18:28 [PATCH 1/5] msvc: Fix compilation errors caused by poll.h emulation Ramsay Jones
2013-05-09 1:42 ` Sven Strickroth
2013-05-09 20:35 ` Ramsay Jones [this message]
2013-05-09 21:12 ` Sven Strickroth
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=518C0890.9050508@ramsay1.demon.co.uk \
--to=ramsay@ramsay1.demon.co.uk \
--cc=Johannes.Schindelin@gmx.de \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=j6t@kdbg.org \
--cc=jrnieder@gmail.com \
--cc=kusmabite@gmail.com \
--cc=sven@cs-ware.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.