Welcome! Log In Create A New Profile

Advanced

[PATCH] Fix to support old version of crtdefs.h

HAYASHI Kentaro
August 01, 2012 11:34PM
Hi,

I attached a patch for fixing build problem (_CRT_SECURE_NO_DEPRECATE)
with Visual Studio 2005 Express.

The problem is that old version of crtdefs.h uses _CRT_SECURE_NO_DEPRECATE
(instead of _CRT_SECURE_NO_WARNINGS) for eliminating the warnings.

see: http://social.msdn.microsoft.com/forums/en-US/vcgeneral/thread/3373dd77-ed73-44a6-a52c-53dfd95099ac/

The purpose of this patch is supporting old version of crtdefs.h
by adding definition about _CRT_SECURE_NO_DEPRECATE.

As a result, nmake build process succeeds with Visual Studio 2005 Express under Wine.

NOTE:
* I used Wine to setup old version of crtdefs.h.
* I confirmed that VS2005 Express and VS2005 Express SP1 uses old version of crtdefs.h.
(It seems that VS2005 Express SP1 with latest hotfix use newer version of crtdefs.h)
* I confirmed that this patch does not affects build process
even if newer version of crtdefs.h is used.

I hope that this patch will be applied to nginx mainstream.


Index: src/os/win32/ngx_win32_config.h
===================================================================
--- src/os/win32/ngx_win32_config.h (revision 4778)
+++ src/os/win32/ngx_win32_config.h (working copy)
@@ -19,6 +19,11 @@
/* enable getenv() and gmtime() in msvc8 */
#define _CRT_SECURE_NO_WARNINGS

+/* support old version of crtdefs.h in msvc8 */
+#if (_MSC_VER == 1400)
+#define _CRT_SECURE_NO_DEPRECATE
+#endif
+
/*
* we need to include <windows.h> explicitly before <winsock2.h> because
* the warning 4201 is enabled in <windows.h>


I wrote how to reproduce the problem and details.

Steps to reproduce the problem:

1) Install Wine 1.4 on Ubuntu 12.04 LTS.

% sudo apt-get install wine winetricks

2) Setup WINE related environment variables.

% export WINPREFIX=$HOME/.win32en
% export WINEARCH=win32

3) Install MFC42 and .NET 2.0 under Wine.

% winetricks --no-isolate -q mfc42 dotnet20

4) Install Visual Studio 2005 Express under Wine.

% winetricks --no-isolate -q vc2005express

5) Install Windows SDK under Wine.

% winetricks --no-isolate -q psdkwin7

6) Make symlink cl and rc to pass auto/configure compiler
check (this is ad-hoc way, but just works).

% cd $HOME/.wine32en/drive_c/Program Files/Microsoft Visual Studio 8/VC/bin
% ln -sf cl.exe cl
% ln -sf rc.exe rc

7) Generate Makefile by executing following command to build minimum
nginx binary.

% auto/configure --crossbuild=win32 --with-cc=cl \
--without-http_rewrite_module --without-http_gzip_module

8) Execute nmake.exe

% nmake.exe

What happened:

Make process was failed. Warning is treated as error:

---Start Here---
cl -c -O2 -W4 -WX -nologo -MT -Yungx_config.h -Fpobjs/ngx_config.pch -I src/core -I src/event -I src/event/modules -I src/os/win32 -I objs -I src/http -I src/http/modules -I src/mail -Foobjs/src/core/nginx.obj src/core/nginx.c
fixme:file:NeedCurrentDirectoryForExePathW (L"cl"): partial stub
nginx.c
src/core/nginx.c(424) : error C2220: warning treated as error - no 'object' file generated
src/core/nginx.c(424) : warning C4996: 'getenv' was declared deprecated
C:\Program Files\Microsoft Visual Studio 8\VC\include\stdlib.h(483) : see declaration of 'getenv'
Message: 'This function or variable may be unsafe. Consider using _dupenv_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.'
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 8\VC\bin\cl.EXE"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 8\VC\bin\nmake.exe"' : return code '0x2'
Stop.
---End Here---

Thanks.

--
HAYASHI Kentaro <hayashi@clear-code.com>

_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

[PATCH] Fix to support old version of crtdefs.h

HAYASHI Kentaro 1986 August 01, 2012 11:34PM

Re: [PATCH] Fix to support old version of crtdefs.h

Maxim Dounin 740 August 02, 2012 04:54AM

Re: [PATCH] Fix to support old version of crtdefs.h

HAYASHI Kentaro 959 August 02, 2012 05:42AM

Re: [PATCH] Fix to support old version of crtdefs.h

Maxim Dounin 711 August 02, 2012 08:56AM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 319
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready