From ab9f2ea8310cf990aa8d6f52085aae95c9ea5545 Mon Sep 17 00:00:00 2001 From: Alam Ed Arias Date: Wed, 18 May 2016 21:11:30 -0400 Subject: [PATCH 01/17] MSVC: fixup Debug build linked --- src/hardware/r_opengl/r_opengl.h | 2 +- src/hardware/s_openal/s_openal-vc10.vcxproj | 3 ++- src/sdl/Srb2SDL-vc10.vcxproj | 2 ++ src/win32/Srb2win-vc10.vcxproj | 12 ++++++++---- src/win32/win_main.h | 2 +- 5 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/hardware/r_opengl/r_opengl.h b/src/hardware/r_opengl/r_opengl.h index 7ffefbb58..d52104370 100644 --- a/src/hardware/r_opengl/r_opengl.h +++ b/src/hardware/r_opengl/r_opengl.h @@ -86,7 +86,7 @@ boolean SetupGLfunc(void); boolean SetupGLFunc13(void); void Flush(void); INT32 isExtAvailable(const char *extension, const GLubyte *start); -boolean SetupPixelFormat(INT32 WantColorBits, INT32 WantStencilBits, INT32 WantDepthBits); +int SetupPixelFormat(INT32 WantColorBits, INT32 WantStencilBits, INT32 WantDepthBits); void SetModelView(GLint w, GLint h); void SetStates(void); FUNCMATH float byteasfloat(UINT8 fbyte); diff --git a/src/hardware/s_openal/s_openal-vc10.vcxproj b/src/hardware/s_openal/s_openal-vc10.vcxproj index 051de1bd6..1b7d34c4b 100644 --- a/src/hardware/s_openal/s_openal-vc10.vcxproj +++ b/src/hardware/s_openal/s_openal-vc10.vcxproj @@ -186,7 +186,7 @@ - /MP %(AdditionalOptions) + /MP /SAFESEH:OFF %(AdditionalOptions) Disabled WIN32;_DEBUG;_WINDOWS;__WIN32__;__MSC__;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) true @@ -244,6 +244,7 @@ true ProgramDatabase CompileAsC + /MP /SAFESEH:OFF %(AdditionalOptions) _DEBUG;%(PreprocessorDefinitions) diff --git a/src/sdl/Srb2SDL-vc10.vcxproj b/src/sdl/Srb2SDL-vc10.vcxproj index 07c10f4cf..58dba7f28 100644 --- a/src/sdl/Srb2SDL-vc10.vcxproj +++ b/src/sdl/Srb2SDL-vc10.vcxproj @@ -133,6 +133,7 @@ MachineX86 + /SAFESEH:NO %(AdditionalOptions) true @@ -182,6 +183,7 @@ MachineX64 + /SAFESEH:NO %(AdditionalOptions) true diff --git a/src/win32/Srb2win-vc10.vcxproj b/src/win32/Srb2win-vc10.vcxproj index a7c938ae9..6d05735e5 100644 --- a/src/win32/Srb2win-vc10.vcxproj +++ b/src/win32/Srb2win-vc10.vcxproj @@ -117,11 +117,12 @@ $(IntDir) $(IntDir)Srb2win.pdb true - Level4 + Level2 true EditAndContinue CompileAsC false + true _DEBUG;%(PreprocessorDefinitions) @@ -173,11 +174,12 @@ $(IntDir) $(IntDir)Srb2win.pdb true - Level4 + Level2 true ProgramDatabase CompileAsC false + true _DEBUG;%(PreprocessorDefinitions) @@ -228,11 +230,12 @@ $(IntDir) $(IntDir)Srb2win.pdb true - Level3 + Level2 true ProgramDatabase CompileAsC true + true NDEBUG;%(PreprocessorDefinitions) @@ -283,11 +286,12 @@ $(IntDir) $(IntDir)Srb2win.pdb true - Level3 + Level2 true ProgramDatabase CompileAsC true + true NDEBUG;%(PreprocessorDefinitions) diff --git a/src/win32/win_main.h b/src/win32/win_main.h index 2c464f2c6..05852f834 100644 --- a/src/win32/win_main.h +++ b/src/win32/win_main.h @@ -23,7 +23,7 @@ extern HWND hWndMain; -extern int appActive; +extern boolean appActive; VOID I_GetSysMouseEvents(INT mouse_state); extern UINT MSHWheelMessage; From 7193df7f757fedd391ed632766ce47f303b5cc54 Mon Sep 17 00:00:00 2001 From: Alam Ed Arias Date: Wed, 18 May 2016 21:28:53 -0400 Subject: [PATCH 02/17] MSVC: turn off SAFESEH for SDL release builds --- src/sdl/Srb2SDL-vc10.vcxproj | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/sdl/Srb2SDL-vc10.vcxproj b/src/sdl/Srb2SDL-vc10.vcxproj index 58dba7f28..f7ee710d1 100644 --- a/src/sdl/Srb2SDL-vc10.vcxproj +++ b/src/sdl/Srb2SDL-vc10.vcxproj @@ -240,6 +240,7 @@ MachineX86 + /SAFESEH:NO %(AdditionalOptions) true @@ -296,6 +297,7 @@ MachineX64 + /SAFESEH:NO %(AdditionalOptions) true From ef488d2b0389b5aafd2287e05eead0271306ad72 Mon Sep 17 00:00:00 2001 From: Alam Ed Arias Date: Wed, 18 May 2016 21:41:27 -0400 Subject: [PATCH 03/17] MSVC: link to SDL2main, then SDL2 --- src/sdl/SDL2_x64.props | 3 ++- src/sdl/SDL2_x86.props | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/sdl/SDL2_x64.props b/src/sdl/SDL2_x64.props index 66cf711db..419a261b7 100644 --- a/src/sdl/SDL2_x64.props +++ b/src/sdl/SDL2_x64.props @@ -10,8 +10,9 @@ %(PreprocessorDefinitions) + - SDL2.lib;SDL2main.lib;SDL2_mixer.lib;%(AdditionalDependencies) + SDL2main.lib;SDL2.lib;SDL2_mixer.lib;%(AdditionalDependencies) diff --git a/src/sdl/SDL2_x86.props b/src/sdl/SDL2_x86.props index a0446d5ab..d0bdfc151 100644 --- a/src/sdl/SDL2_x86.props +++ b/src/sdl/SDL2_x86.props @@ -11,7 +11,7 @@ %(PreprocessorDefinitions) - SDL2.lib;SDL2main.lib;SDL2_mixer.lib;%(AdditionalDependencies) + SDL2main.lib;SDL2.lib;SDL2_mixer.lib;%(AdditionalDependencies) From 6aa1aeb838b059201c16f71c7db77bd2b7a8ec84 Mon Sep 17 00:00:00 2001 From: Alam Ed Arias Date: Wed, 18 May 2016 22:25:06 -0400 Subject: [PATCH 04/17] build: include own copy of SDL2main --- src/sdl/SDL2_x64.props | 2 +- src/sdl/SDL2_x86.props | 2 +- src/sdl/SDL_main/SDL_win32_main.c | 406 ---------------------------- src/sdl/SDL_main/SDL_windows_main.c | 200 ++++++++++++++ src/sdl/Srb2SDL-vc10.vcxproj | 13 +- 5 files changed, 203 insertions(+), 420 deletions(-) delete mode 100644 src/sdl/SDL_main/SDL_win32_main.c create mode 100644 src/sdl/SDL_main/SDL_windows_main.c diff --git a/src/sdl/SDL2_x64.props b/src/sdl/SDL2_x64.props index 419a261b7..0ea830085 100644 --- a/src/sdl/SDL2_x64.props +++ b/src/sdl/SDL2_x64.props @@ -12,7 +12,7 @@ - SDL2main.lib;SDL2.lib;SDL2_mixer.lib;%(AdditionalDependencies) + SDL2.lib;SDL2_mixer.lib;%(AdditionalDependencies) diff --git a/src/sdl/SDL2_x86.props b/src/sdl/SDL2_x86.props index d0bdfc151..78421e6dd 100644 --- a/src/sdl/SDL2_x86.props +++ b/src/sdl/SDL2_x86.props @@ -11,7 +11,7 @@ %(PreprocessorDefinitions) - SDL2main.lib;SDL2.lib;SDL2_mixer.lib;%(AdditionalDependencies) + SDL2.lib;SDL2_mixer.lib;%(AdditionalDependencies) diff --git a/src/sdl/SDL_main/SDL_win32_main.c b/src/sdl/SDL_main/SDL_win32_main.c deleted file mode 100644 index 46b20d0bd..000000000 --- a/src/sdl/SDL_main/SDL_win32_main.c +++ /dev/null @@ -1,406 +0,0 @@ -/* - SDL_main.c, placed in the public domain by Sam Lantinga 4/13/98 - - The WinMain function -- calls your program's main() function -*/ - -#include -#include -#include -#include -#define RPC_NO_WINDOWS_H -#include -#include /* For _alloca() */ - -#include - -#ifdef _WIN32_WCE -# define DIR_SEPERATOR TEXT("\\") -# define _tgetcwd(str,len) wcscpy(str,TEXT("")) -# define setbuf(f,b) -# define setvbuf(w,x,y,z) -# define _tremove(x) DeleteFile(x) -#else -# define DIR_SEPERATOR TEXT("/") -# include -#endif - -/* Include the SDL main definition header */ -#ifdef _MSC_VER -#pragma warning(disable : 4214 4244) -#endif -#include "SDL.h" -#include "SDL_main.h" -#ifdef _MSC_VER -#pragma warning(default : 4214 4244) -#endif -#include "../../win32/win_dbg.h" -#define USE_MESSAGEBOX - -#ifdef main -# ifndef _WIN32_WCE_EMULATION -# undef main -# endif /* _WIN32_WCE_EMULATION */ -#endif /* main */ - -/* The standard output files */ -//#ifdef _WIN32_WCE -//#define STDOUT_FILE TEXT("/Storage Card/SRB2DEMO/stdout.txt") -//#define STDERR_FILE TEXT("/Storage Card/SRB2DEMO/stderr.txt") -//#else -#define STDOUT_FILE TEXT("stdout.txt") -#define STDERR_FILE TEXT("stderr.txt") -//#endif - -#ifndef NO_STDIO_REDIRECT - static TCHAR stdoutPath[MAX_PATH]; - static TCHAR stderrPath[MAX_PATH]; -#endif - -#if defined(_WIN32_WCE) && _WIN32_WCE < 300 -/* seems to be undefined in Win CE although in online help */ -#define isspace(a) (((CHAR)a == ' ') || ((CHAR)a == '\t')) - -/* seems to be undefined in Win CE although in online help */ -char *strrchr(char *str, int c) -{ - char *p; - - /* Skip to the end of the string */ - p=str; - while (*p) - p++; - - /* Look for the given character */ - while ( (p >= str) && (*p != (CHAR)c) ) - p--; - - /* Return NULL if character not found */ - if ( p < str ) { - p = NULL; - } - return p; -} -#endif /* _WIN32_WCE < 300 */ - -/* Parse a command line buffer into arguments */ -static int ParseCommandLine(char *cmdline, char **argv) -{ - char *bufp; - int argc; - - argc = 0; - for ( bufp = cmdline; *bufp; ) { - /* Skip leading whitespace */ - while ( isspace(*bufp) ) { - ++bufp; - } - /* Skip over argument */ - if ( *bufp == '"' ) { - ++bufp; - if ( *bufp ) { - if ( argv ) { - argv[argc] = bufp; - } - ++argc; - } - /* Skip over word */ - while ( *bufp && (*bufp != '"') ) { - ++bufp; - } - } else { - if ( *bufp ) { - if ( argv ) { - argv[argc] = bufp; - } - ++argc; - } - /* Skip over word */ - while ( *bufp && ! isspace(*bufp) ) { - ++bufp; - } - } - if ( *bufp ) { - if ( argv ) { - *bufp = '\0'; - } - ++bufp; - } - } - if ( argv ) { - argv[argc] = NULL; - } - return(argc); -} - -/* Show an error message */ -static void ShowError(const char *title, const char *message) -{ -/* If USE_MESSAGEBOX is defined, you need to link with user32.lib */ -#ifdef USE_MESSAGEBOX - MessageBoxA(NULL, - message, - title, - MB_ICONEXCLAMATION|MB_OK); -#else - fprintf(stderr, "%s: %s\n", title, message); -#endif -} - -/* Pop up an out of memory message, returns to Windows */ -static BOOL OutOfMemory(void) -{ - ShowError("Fatal Error", "Out of memory - aborting"); - return FALSE; -} - -/* Remove the output files if there was no output written */ -static void __cdecl cleanup_output(void) -{ -#ifndef NO_STDIO_REDIRECT - FILE *file; - int empty; -#endif - - /* Flush the output in case anything is queued */ - fclose(stdout); - fclose(stderr); - -#ifndef NO_STDIO_REDIRECT - /* See if the files have any output in them */ - if ( stdoutPath[0] ) { - file = _tfopen(stdoutPath, TEXT("rb")); - if ( file ) { - empty = (fgetc(file) == EOF) ? 1 : 0; - fclose(file); - if ( empty ) { - _tremove(stdoutPath); - } - } - } - if ( stderrPath[0] ) { - file = _tfopen(stderrPath, TEXT("rb")); - if ( file ) { - empty = (fgetc(file) == EOF) ? 1 : 0; - fclose(file); - if ( empty ) { - _tremove(stderrPath); - } - } - } -#endif -} - -#if defined(_MSC_VER) && !defined(_WIN32_WCE) -/* The VC++ compiler needs main defined */ -#define console_main main -#endif - -/* This is where execution begins [console apps] */ -int console_main(int argc, char *argv[]) -{ - size_t n; - int st; - char *bufp, *appname; - - /* Get the class name from argv[0] */ - appname = argv[0]; - if ( (bufp=strrchr(argv[0], '\\')) != NULL ) { - appname = bufp+1; - } else - if ( (bufp=strrchr(argv[0], '/')) != NULL ) { - appname = bufp+1; - } - - if ( (bufp=strrchr(appname, '.')) == NULL ) - n = strlen(appname); - else - n = (bufp-appname); - - bufp = (char *)alloca(n+1); - if ( bufp == NULL ) { - return OutOfMemory(); - } - strncpy(bufp, appname, n); - bufp[n] = '\0'; - appname = bufp; - - /* Load SDL dynamic link library */ - if ( SDL_Init(SDL_INIT_NOPARACHUTE) < 0 ) { - ShowError("WinMain() error", SDL_GetError()); - return(FALSE); - } - atexit(cleanup_output); - atexit(SDL_Quit); - -#ifndef DISABLE_VIDEO -#if 0 - /* Create and register our class * - DJM: If we do this here, the user nevers gets a chance to - putenv(SDL_WINDOWID). This is already called later by - the (DIB|DX5)_CreateWindow function, so it should be - safe to comment it out here. - if ( SDL_RegisterApp(appname, CS_BYTEALIGNCLIENT, - GetModuleHandle(NULL)) < 0 ) { - ShowError("WinMain() error", SDL_GetError()); - exit(1); - }*/ -#else - /* Sam: - We still need to pass in the application handle so that - DirectInput will initialize properly when SDL_RegisterApp() - is called later in the video initialization. - */ - SDL_SetModuleHandle(GetModuleHandle(NULL)); -#endif /* 0 */ -#endif /* !DISABLE_VIDEO */ - - /* Run the application main() code */ - st = SDL_main(argc, argv); - - /* Exit cleanly, calling atexit() functions */ - //exit(0); - cleanup_output(); - SDL_Quit(); - - /* Hush little compiler, don't you cry... */ - return st; -} - -/* This is where execution begins [windowed apps] */ -#ifdef _WIN32_WCE -int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPWSTR szCmdLine, int sw) -#else -int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmdLine, int sw) -#endif -{ - HINSTANCE handle; - int Result = -1; - char **argv; - int argc; - LPSTR cmdline; -#ifdef _WIN32_WCE - size_t nLen; - LPTSTR bufp; -#else - LPSTR bufp; -#endif -#ifndef NO_STDIO_REDIRECT - FILE *newfp; -#endif - - /* Start up DDHELP.EXE before opening any files, so DDHELP doesn't - keep them open. This is a hack.. hopefully it will be fixed - someday. DDHELP.EXE starts up the first time DDRAW.DLL is loaded. - */ - hPrev = hInst = NULL; - sw = 0; - handle = LoadLibrary(TEXT("DDRAW.DLL")); - if ( handle != NULL ) { - FreeLibrary(handle); - } - -#ifndef NO_STDIO_REDIRECT - _tgetcwd( stdoutPath, sizeof( stdoutPath ) ); - _tcscat( stdoutPath, DIR_SEPERATOR STDOUT_FILE ); - - /* Redirect standard input and standard output */ - newfp = _tfreopen(stdoutPath, TEXT("w"), stdout); - -#ifndef _WIN32_WCE - if ( newfp == NULL ) { /* This happens on NT */ -#if !defined(stdout) - stdout = _tfopen(stdoutPath, TEXT("w")); -#else - newfp = _tfopen(stdoutPath, TEXT("w")); - if ( newfp ) { - *stdout = *newfp; - } -#endif - } -#endif /* _WIN32_WCE */ - - _tgetcwd( stderrPath, sizeof( stderrPath ) ); - _tcscat( stderrPath, DIR_SEPERATOR STDERR_FILE ); - - newfp = _tfreopen(stderrPath, TEXT("w"), stderr); -#ifndef _WIN32_WCE - if ( newfp == NULL ) { /* This happens on NT */ -#if !defined(stderr) - stderr = _tfopen(stderrPath, TEXT("w")); -#else - newfp = _tfopen(stderrPath, TEXT("w")); - if ( newfp ) { - *stderr = *newfp; - } -#endif - } -#endif /* _WIN32_WCE */ - - setvbuf(stdout, NULL, _IOLBF, BUFSIZ); /* Line buffered */ - setbuf(stderr, NULL); /* No buffering */ -#endif /* !NO_STDIO_REDIRECT */ - -#ifdef _WIN32_WCE - nLen = wcslen(szCmdLine)+128+1; - bufp = (wchar_t *)alloca(nLen*2); - wcscpy (bufp, TEXT("\"")); - GetModuleFileName(NULL, bufp+1, 128-3); - wcscpy (bufp+wcslen(bufp), TEXT("\" ")); - wcsncpy(bufp+wcslen(bufp), szCmdLine,nLen-wcslen(bufp)); - nLen = wcslen(bufp)+1; - cmdline = (char *)alloca(nLen); - if ( cmdline == NULL ) { - return OutOfMemory(); - } - WideCharToMultiByte(CP_ACP, 0, bufp, -1, cmdline, nLen, NULL, NULL); -#else - szCmdLine = NULL; - /* Grab the command line (use alloca() on Windows) */ - bufp = GetCommandLineA(); - cmdline = (LPSTR)alloca(strlen(bufp)+1); - if ( cmdline == NULL ) { - return OutOfMemory(); - } - strcpy(cmdline, bufp); -#endif - - /* Parse it into argv and argc */ - argc = ParseCommandLine(cmdline, NULL); - argv = (char **)alloca((argc+1)*(sizeof *argv)); - if ( argv == NULL ) { - return OutOfMemory(); - } - ParseCommandLine(cmdline, argv); - -#ifdef BUGTRAP - /* Try BugTrap. */ - if(InitBugTrap()) - Result = console_main(argc, argv); - else - { -#endif - - /* Run the main program (after a little SDL initialization) */ -#ifndef _WIN32_WCE - __try -#endif - { - Result = console_main(argc, argv); - } -#ifndef _WIN32_WCE - __except ( RecordExceptionInfo(GetExceptionInformation())) - { - SetUnhandledExceptionFilter(EXCEPTION_CONTINUE_SEARCH); //Do nothing here. - } -#endif - -#ifdef BUGTRAP - } /* BT failure clause. */ - - /* This is safe even if BT didn't start. */ - ShutdownBugTrap(); -#endif - - return Result; -} diff --git a/src/sdl/SDL_main/SDL_windows_main.c b/src/sdl/SDL_main/SDL_windows_main.c new file mode 100644 index 000000000..f73ef30fc --- /dev/null +++ b/src/sdl/SDL_main/SDL_windows_main.c @@ -0,0 +1,200 @@ +/* + SDL_windows_main.c, placed in the public domain by Sam Lantinga 4/13/98 + + The WinMain function -- calls your program's main() function +*/ +#include "SDL_config.h" + +#ifdef __WIN32__ + +#include + +/* Include the SDL main definition header */ +#include "SDL.h" +#include "SDL_main.h" + +#ifdef main +# undef main +#endif /* main */ + +static void +UnEscapeQuotes(char *arg) +{ + char *last = NULL; + + while (*arg) { + if (*arg == '"' && (last != NULL && *last == '\\')) { + char *c_curr = arg; + char *c_last = last; + + while (*c_curr) { + *c_last = *c_curr; + c_last = c_curr; + c_curr++; + } + *c_last = '\0'; + } + last = arg; + arg++; + } +} + +/* Parse a command line buffer into arguments */ +static int +ParseCommandLine(char *cmdline, char **argv) +{ + char *bufp; + char *lastp = NULL; + int argc, last_argc; + + argc = last_argc = 0; + for (bufp = cmdline; *bufp;) { + /* Skip leading whitespace */ + while (SDL_isspace(*bufp)) { + ++bufp; + } + /* Skip over argument */ + if (*bufp == '"') { + ++bufp; + if (*bufp) { + if (argv) { + argv[argc] = bufp; + } + ++argc; + } + /* Skip over word */ + lastp = bufp; + while (*bufp && (*bufp != '"' || *lastp == '\\')) { + lastp = bufp; + ++bufp; + } + } else { + if (*bufp) { + if (argv) { + argv[argc] = bufp; + } + ++argc; + } + /* Skip over word */ + while (*bufp && !SDL_isspace(*bufp)) { + ++bufp; + } + } + if (*bufp) { + if (argv) { + *bufp = '\0'; + } + ++bufp; + } + + /* Strip out \ from \" sequences */ + if (argv && last_argc != argc) { + UnEscapeQuotes(argv[last_argc]); + } + last_argc = argc; + } + if (argv) { + argv[argc] = NULL; + } + return (argc); +} + +/* Pop up an out of memory message, returns to Windows */ +static BOOL +OutOfMemory(void) +{ + SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Fatal Error", "Out of memory - aborting", NULL); + return FALSE; +} + +#if defined(_MSC_VER) +/* The VC++ compiler needs main/wmain defined */ +# define console_ansi_main main +# if UNICODE +# define console_wmain wmain +# endif +#endif + +/* WinMain, main, and wmain eventually call into here. */ +static int +main_utf8(int argc, char *argv[]) +{ + SDL_SetMainReady(); + + /* Run the application main() code */ + return SDL_main(argc, argv); +} + +/* This is where execution begins [console apps, ansi] */ +int +console_ansi_main(int argc, char *argv[]) +{ + /* !!! FIXME: are these in the system codepage? We need to convert to UTF-8. */ + return main_utf8(argc, argv); +} + + +#if UNICODE +/* This is where execution begins [console apps, unicode] */ +int +console_wmain(int argc, wchar_t *wargv[], wchar_t *wenvp) +{ + int retval = 0; + char **argv = SDL_stack_alloc(char*, argc); + int i; + + for (i = 0; i < argc; ++i) { + argv[i] = WIN_StringToUTF8(wargv[i]); + } + + retval = main_utf8(argc, argv); + + /* !!! FIXME: we are leaking all the elements of argv we allocated. */ + SDL_stack_free(argv); + + return retval; +} +#endif + +/* This is where execution begins [windowed apps] */ +int WINAPI +WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmdLine, int sw) +{ + char **argv; + int argc; + char *cmdline; + + /* Grab the command line */ + TCHAR *text = GetCommandLine(); +#if UNICODE + cmdline = WIN_StringToUTF8(text); +#else + /* !!! FIXME: are these in the system codepage? We need to convert to UTF-8. */ + cmdline = SDL_strdup(text); +#endif + if (cmdline == NULL) { + return OutOfMemory(); + } + + /* Parse it into argv and argc */ + argc = ParseCommandLine(cmdline, NULL); + argv = SDL_stack_alloc(char *, argc + 1); + if (argv == NULL) { + return OutOfMemory(); + } + ParseCommandLine(cmdline, argv); + + /* Run the main program */ + main_utf8(argc, argv); + + SDL_stack_free(argv); + + SDL_free(cmdline); + + /* Hush little compiler, don't you cry... */ + return 0; +} + +#endif /* __WIN32__ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/sdl/Srb2SDL-vc10.vcxproj b/src/sdl/Srb2SDL-vc10.vcxproj index f7ee710d1..2d677f745 100644 --- a/src/sdl/Srb2SDL-vc10.vcxproj +++ b/src/sdl/Srb2SDL-vc10.vcxproj @@ -475,18 +475,6 @@ %(AdditionalIncludeDirectories) %(PreprocessorDefinitions) - - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) %(PreprocessorDefinitions) @@ -1245,6 +1233,7 @@ %(AdditionalIncludeDirectories) %(PreprocessorDefinitions) + From 86f418f312c5acf44483ce9a6b23805224a268a9 Mon Sep 17 00:00:00 2001 From: Alam Ed Arias Date: Wed, 18 May 2016 23:37:05 -0400 Subject: [PATCH 05/17] appveyor: use ccache and try to build both SDL and DD --- appveyor.yml | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 3a53294ef..b34e0198e 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -2,24 +2,42 @@ version: 2.1.14.{branch}-{build} os: MinGW environment: - CC: i686-w64-mingw32-gcc + CC: ccache + CCACHE_CC: i686-w64-mingw32-gcc WINDRES: windres MINGW_SDK: c:\msys64\mingw32 CFLAGS: -Wall -W -Werror + CCACHE_EXE: ccache.exe + CCACHE_URL: http://alam.srb2.org/ccache.exe + CCACHE_COMPRESS: true + +-cache: +- ccache.exe +- C:\Users\appveyor\.ccache install: +- if not exist "%CCACHE_EXE%" appveyor DownloadFile "%CCACHE_URL%" -FileName "%CCACHE_EXE%" +- ccache -M 99M +- xcopy /Y /V /I ccache.exe %MINGW_SDK%\bin + +configuration: +- SDL +- DD + before_build: - set Path=%MINGW_SDK%\bin;%Path% - i686-w64-mingw32-gcc --version - mingw32-make --version +- ccache -s - set SRB2_MFLAGS=-C src MINGW=1 WARNINGMODE=1 NOASM=1 NOUPX=1 GCC53=1 build_script: -- cmd: mingw32-make.exe %SRB2_MFLAGS% SDL=1 clean -- cmd: mingw32-make.exe %SRB2_MFLAGS% SDL=1 ERRORMODE=1 +- cmd: mingw32-make.exe %SRB2_MFLAGS% %CONFIGURATION%=1 clean +- cmd: mingw32-make.exe %SRB2_MFLAGS% %CONFIGURATION%=1 ERRORMODE=1 after_build: +- ccache -s - cmd: git rev-parse --short %APPVEYOR_REPO_COMMIT%>%TMP%/gitshort.txt - cmd: set /P GITSHORT=<%TMP%/gitshort.txt - set BUILD_ARCHIVE=%APPVEYOR_REPO_BRANCH%-%GITSHORT%.7z From 6ee81f7b1d33956b55a327811737f93e31464855 Mon Sep 17 00:00:00 2001 From: Alam Ed Arias Date: Wed, 18 May 2016 23:38:36 -0400 Subject: [PATCH 06/17] appveyor: fixup cache section --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index b34e0198e..55fcf9989 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -11,7 +11,7 @@ environment: CCACHE_URL: http://alam.srb2.org/ccache.exe CCACHE_COMPRESS: true --cache: +cache: - ccache.exe - C:\Users\appveyor\.ccache From ded9dd7940979acfd85630587d71f908ef04dd3e Mon Sep 17 00:00:00 2001 From: Alam Ed Arias Date: Wed, 18 May 2016 23:48:29 -0400 Subject: [PATCH 07/17] appveyor: add correct ccache folder to cache and add CONFIG to build archive --- appveyor.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 55fcf9989..3c89e6d54 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -13,7 +13,7 @@ environment: cache: - ccache.exe -- C:\Users\appveyor\.ccache +- :\Users\appveyor\AppData\Roaming\.ccache install: - if not exist "%CCACHE_EXE%" appveyor DownloadFile "%CCACHE_URL%" -FileName "%CCACHE_EXE%" @@ -40,7 +40,7 @@ after_build: - ccache -s - cmd: git rev-parse --short %APPVEYOR_REPO_COMMIT%>%TMP%/gitshort.txt - cmd: set /P GITSHORT=<%TMP%/gitshort.txt -- set BUILD_ARCHIVE=%APPVEYOR_REPO_BRANCH%-%GITSHORT%.7z +- set BUILD_ARCHIVE=%APPVEYOR_REPO_BRANCH%-%GITSHORT%-%CONFIGUATION%.7z - cmd: 7z a %BUILD_ARCHIVE% bin\Mingw\Release -xr!.gitignore - appveyor PushArtifact %BUILD_ARCHIVE% From 15969887ecb9376833c6216323c8f662e028dd58 Mon Sep 17 00:00:00 2001 From: Alam Ed Arias Date: Wed, 18 May 2016 23:55:30 -0400 Subject: [PATCH 08/17] aapveyor: readded drive letter... --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index 3c89e6d54..959df3337 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -13,7 +13,7 @@ environment: cache: - ccache.exe -- :\Users\appveyor\AppData\Roaming\.ccache +- C:\Users\appveyor\AppData\Roaming\.ccache install: - if not exist "%CCACHE_EXE%" appveyor DownloadFile "%CCACHE_URL%" -FileName "%CCACHE_EXE%" From 6064da934747353870c2016311c07746094863fb Mon Sep 17 00:00:00 2001 From: Alam Ed Arias Date: Thu, 19 May 2016 00:18:40 -0400 Subject: [PATCH 09/17] appveyor: fix mistake on naming the build archives --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index 959df3337..19b72c27a 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -40,7 +40,7 @@ after_build: - ccache -s - cmd: git rev-parse --short %APPVEYOR_REPO_COMMIT%>%TMP%/gitshort.txt - cmd: set /P GITSHORT=<%TMP%/gitshort.txt -- set BUILD_ARCHIVE=%APPVEYOR_REPO_BRANCH%-%GITSHORT%-%CONFIGUATION%.7z +- set BUILD_ARCHIVE=%APPVEYOR_REPO_BRANCH%-%GITSHORT%-%CONFIGURATION%.7z - cmd: 7z a %BUILD_ARCHIVE% bin\Mingw\Release -xr!.gitignore - appveyor PushArtifact %BUILD_ARCHIVE% From e8cce0af8da54f95303dda953283658165f1bd32 Mon Sep 17 00:00:00 2001 From: Alam Ed Arias Date: Thu, 19 May 2016 00:37:22 -0400 Subject: [PATCH 10/17] appveyor: download and install nasm and upx, also debug ccache --- appveyor.yml | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 19b72c27a..de9660d03 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -7,15 +7,31 @@ environment: WINDRES: windres MINGW_SDK: c:\msys64\mingw32 CFLAGS: -Wall -W -Werror + NASM_ZIP: nasm-2.12.01 + NASM_URL: http://www.nasm.us/pub/nasm/releasebuilds/2.12.01/win64/nasm-2.12.01-win64.zip + UPX_ZIP: upx391w + UPX_URL: http://upx.sourceforge.net/download/upx391w.zip CCACHE_EXE: ccache.exe CCACHE_URL: http://alam.srb2.org/ccache.exe CCACHE_COMPRESS: true + CCACHE_DIR: C:\Users\appveyor\.ccache + CCACHE_LOGFILE: C:\Users\appveyor\ccache.log cache: +- nasm-2.12.01.zip +- upx391w.zip - ccache.exe -- C:\Users\appveyor\AppData\Roaming\.ccache +- C:\Users\appveyor\.ccache install: +- if not exist "%NASM_ZIP%.zip" appveyor DownloadFile "%NASM_URL%" -FileName "%NASM_ZIP%.zip" +- 7z x -y "%NASM_ZIP%" -o%TMP% >null +- robocopy /S /xx /ns /nc /nfl /ndl /np /njh /njs %TMP%\%NASM_ZIP% %MINGW_SDK% nasm.exe || exit 0 + +- if not exist "%UPX_ZIP%.zip" appveyor DownloadFile "%UPX_URL%" -FileName "%UPX_ZIP%.zip" +- 7z x -y "%UPX_ZIP%" -o%TMP% >null +- robocopy /S /xx /ns /nc /nfl /ndl /np /njh /njs %TMP%\%UPX_ZIP% %MINGW_SDK% upx.exe || exit 0 + - if not exist "%CCACHE_EXE%" appveyor DownloadFile "%CCACHE_URL%" -FileName "%CCACHE_EXE%" - ccache -M 99M - xcopy /Y /V /I ccache.exe %MINGW_SDK%\bin @@ -24,13 +40,14 @@ configuration: - SDL - DD - before_build: - set Path=%MINGW_SDK%\bin;%Path% - i686-w64-mingw32-gcc --version - mingw32-make --version +- upx -V +- nasm -v - ccache -s -- set SRB2_MFLAGS=-C src MINGW=1 WARNINGMODE=1 NOASM=1 NOUPX=1 GCC53=1 +- set SRB2_MFLAGS=-C src MINGW=1 WARNINGMODE=1 GCC53=1 ECHO=1 build_script: - cmd: mingw32-make.exe %SRB2_MFLAGS% %CONFIGURATION%=1 clean @@ -43,6 +60,7 @@ after_build: - set BUILD_ARCHIVE=%APPVEYOR_REPO_BRANCH%-%GITSHORT%-%CONFIGURATION%.7z - cmd: 7z a %BUILD_ARCHIVE% bin\Mingw\Release -xr!.gitignore - appveyor PushArtifact %BUILD_ARCHIVE% +- type C:\Users\appveyor\ccache.log test: off From d08418dcff7798cc95c8bb875d11f8147b4557ae Mon Sep 17 00:00:00 2001 From: Alam Ed Arias Date: Thu, 19 May 2016 00:44:01 -0400 Subject: [PATCH 11/17] appveyor: fixup unzipping NASM and UPX --- appveyor.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index de9660d03..e8af149c9 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -25,11 +25,11 @@ cache: install: - if not exist "%NASM_ZIP%.zip" appveyor DownloadFile "%NASM_URL%" -FileName "%NASM_ZIP%.zip" -- 7z x -y "%NASM_ZIP%" -o%TMP% >null +- 7z x -y "%NASM_ZIP%.zip" -o%TMP% >null - robocopy /S /xx /ns /nc /nfl /ndl /np /njh /njs %TMP%\%NASM_ZIP% %MINGW_SDK% nasm.exe || exit 0 - if not exist "%UPX_ZIP%.zip" appveyor DownloadFile "%UPX_URL%" -FileName "%UPX_ZIP%.zip" -- 7z x -y "%UPX_ZIP%" -o%TMP% >null +- 7z x -y "%UPX_ZIP%.zip" -o%TMP% >null - robocopy /S /xx /ns /nc /nfl /ndl /np /njh /njs %TMP%\%UPX_ZIP% %MINGW_SDK% upx.exe || exit 0 - if not exist "%CCACHE_EXE%" appveyor DownloadFile "%CCACHE_URL%" -FileName "%CCACHE_EXE%" From dbde012c8d5abd639e258f60bbc65f48feca98b0 Mon Sep 17 00:00:00 2001 From: Alam Ed Arias Date: Thu, 19 May 2016 00:53:54 -0400 Subject: [PATCH 12/17] appveyor: debug unzip/copy lines --- appveyor.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index e8af149c9..f0fce8fd2 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -25,12 +25,12 @@ cache: install: - if not exist "%NASM_ZIP%.zip" appveyor DownloadFile "%NASM_URL%" -FileName "%NASM_ZIP%.zip" -- 7z x -y "%NASM_ZIP%.zip" -o%TMP% >null -- robocopy /S /xx /ns /nc /nfl /ndl /np /njh /njs %TMP%\%NASM_ZIP% %MINGW_SDK% nasm.exe || exit 0 +- 7z x -y "%NASM_ZIP%.zip" -o%TMP% +- robocopy /S /xx %TMP%\%NASM_ZIP% %MINGW_SDK% nasm.exe || exit 0 - if not exist "%UPX_ZIP%.zip" appveyor DownloadFile "%UPX_URL%" -FileName "%UPX_ZIP%.zip" -- 7z x -y "%UPX_ZIP%.zip" -o%TMP% >null -- robocopy /S /xx /ns /nc /nfl /ndl /np /njh /njs %TMP%\%UPX_ZIP% %MINGW_SDK% upx.exe || exit 0 +- 7z x -y "%UPX_ZIP%.zip" -o%TMP% +- robocopy /S /xx %TMP%\%UPX_ZIP% %MINGW_SDK% upx.exe || exit 0 - if not exist "%CCACHE_EXE%" appveyor DownloadFile "%CCACHE_URL%" -FileName "%CCACHE_EXE%" - ccache -M 99M @@ -44,8 +44,8 @@ before_build: - set Path=%MINGW_SDK%\bin;%Path% - i686-w64-mingw32-gcc --version - mingw32-make --version -- upx -V - nasm -v +- upx -V - ccache -s - set SRB2_MFLAGS=-C src MINGW=1 WARNINGMODE=1 GCC53=1 ECHO=1 From eb6d8f180b604eb3725bc58bda8883e97a1315af Mon Sep 17 00:00:00 2001 From: Alam Ed Arias Date: Thu, 19 May 2016 01:00:29 -0400 Subject: [PATCH 13/17] appveyor: copy EXE to the Mingw's bin folder --- appveyor.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index f0fce8fd2..b2796ce96 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -25,12 +25,12 @@ cache: install: - if not exist "%NASM_ZIP%.zip" appveyor DownloadFile "%NASM_URL%" -FileName "%NASM_ZIP%.zip" -- 7z x -y "%NASM_ZIP%.zip" -o%TMP% -- robocopy /S /xx %TMP%\%NASM_ZIP% %MINGW_SDK% nasm.exe || exit 0 +- 7z x -y "%NASM_ZIP%.zip" -o%TMP% >null +- robocopy /S /xx /ns /nc /nfl /ndl /np /njh /njs %TMP%\%NASM_ZIP% %MINGW_SDK\bin% nasm.exe || exit 0 - if not exist "%UPX_ZIP%.zip" appveyor DownloadFile "%UPX_URL%" -FileName "%UPX_ZIP%.zip" -- 7z x -y "%UPX_ZIP%.zip" -o%TMP% -- robocopy /S /xx %TMP%\%UPX_ZIP% %MINGW_SDK% upx.exe || exit 0 +- 7z x -y "%UPX_ZIP%.zip" -o%TMP% >null +- robocopy /S /xx /ns /nc /nfl /ndl /np /njh /njs %TMP%\%UPX_ZIP% %MINGW_SDK\bin% upx.exe || exit 0 - if not exist "%CCACHE_EXE%" appveyor DownloadFile "%CCACHE_URL%" -FileName "%CCACHE_EXE%" - ccache -M 99M From 6f2cc1498c0e84b76515f40818dc6211ea699bc3 Mon Sep 17 00:00:00 2001 From: Alam Ed Arias Date: Thu, 19 May 2016 01:06:47 -0400 Subject: [PATCH 14/17] appveyor: copy EXE to the Mingw's bin folder, again --- appveyor.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index b2796ce96..2c0af4d42 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -26,11 +26,11 @@ cache: install: - if not exist "%NASM_ZIP%.zip" appveyor DownloadFile "%NASM_URL%" -FileName "%NASM_ZIP%.zip" - 7z x -y "%NASM_ZIP%.zip" -o%TMP% >null -- robocopy /S /xx /ns /nc /nfl /ndl /np /njh /njs %TMP%\%NASM_ZIP% %MINGW_SDK\bin% nasm.exe || exit 0 +- robocopy /S /xx /ns /nc /nfl /ndl /np /njh /njs %TMP%\%NASM_ZIP% %MINGW_SDK%\bin nasm.exe || exit 0 - if not exist "%UPX_ZIP%.zip" appveyor DownloadFile "%UPX_URL%" -FileName "%UPX_ZIP%.zip" - 7z x -y "%UPX_ZIP%.zip" -o%TMP% >null -- robocopy /S /xx /ns /nc /nfl /ndl /np /njh /njs %TMP%\%UPX_ZIP% %MINGW_SDK\bin% upx.exe || exit 0 +- robocopy /S /xx /ns /nc /nfl /ndl /np /njh /njs %TMP%\%UPX_ZIP% %MINGW_SDK\bin upx.exe || exit 0 - if not exist "%CCACHE_EXE%" appveyor DownloadFile "%CCACHE_URL%" -FileName "%CCACHE_EXE%" - ccache -M 99M From d73a6c983382fdebb8437fe06758be3796fd0c77 Mon Sep 17 00:00:00 2001 From: Alam Ed Arias Date: Thu, 19 May 2016 01:10:58 -0400 Subject: [PATCH 15/17] appveyor: copy UPX to the Mingw's bin folder, again --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index 2c0af4d42..82bed6c98 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -30,7 +30,7 @@ install: - if not exist "%UPX_ZIP%.zip" appveyor DownloadFile "%UPX_URL%" -FileName "%UPX_ZIP%.zip" - 7z x -y "%UPX_ZIP%.zip" -o%TMP% >null -- robocopy /S /xx /ns /nc /nfl /ndl /np /njh /njs %TMP%\%UPX_ZIP% %MINGW_SDK\bin upx.exe || exit 0 +- robocopy /S /xx /ns /nc /nfl /ndl /np /njh /njs %TMP%\%UPX_ZIP% %MINGW_SDK%\bin upx.exe || exit 0 - if not exist "%CCACHE_EXE%" appveyor DownloadFile "%CCACHE_URL%" -FileName "%CCACHE_EXE%" - ccache -M 99M From 27578edab6258ffe0e035aabc048534ad106f370 Mon Sep 17 00:00:00 2001 From: Alam Ed Arias Date: Thu, 19 May 2016 01:20:38 -0400 Subject: [PATCH 16/17] appveyor: display version of ccache and force use of ccache --- appveyor.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index 82bed6c98..393c69875 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -46,8 +46,9 @@ before_build: - mingw32-make --version - nasm -v - upx -V +- ccache -V - ccache -s -- set SRB2_MFLAGS=-C src MINGW=1 WARNINGMODE=1 GCC53=1 ECHO=1 +- set SRB2_MFLAGS=-C src MINGW=1 WARNINGMODE=1 GCC53=1 ECHO=1 CCACHE=1 build_script: - cmd: mingw32-make.exe %SRB2_MFLAGS% %CONFIGURATION%=1 clean From 30b999c6db1252383769712d839d6e0a310ef40d Mon Sep 17 00:00:00 2001 From: Alam Ed Arias Date: Thu, 19 May 2016 01:32:25 -0400 Subject: [PATCH 17/17] appveyor: no more depend ccache builds --- appveyor.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 393c69875..f9e7b3ba0 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -15,7 +15,6 @@ environment: CCACHE_URL: http://alam.srb2.org/ccache.exe CCACHE_COMPRESS: true CCACHE_DIR: C:\Users\appveyor\.ccache - CCACHE_LOGFILE: C:\Users\appveyor\ccache.log cache: - nasm-2.12.01.zip @@ -48,7 +47,7 @@ before_build: - upx -V - ccache -V - ccache -s -- set SRB2_MFLAGS=-C src MINGW=1 WARNINGMODE=1 GCC53=1 ECHO=1 CCACHE=1 +- set SRB2_MFLAGS=-C src MINGW=1 WARNINGMODE=1 GCC53=1 CCACHE=1 build_script: - cmd: mingw32-make.exe %SRB2_MFLAGS% %CONFIGURATION%=1 clean @@ -61,7 +60,6 @@ after_build: - set BUILD_ARCHIVE=%APPVEYOR_REPO_BRANCH%-%GITSHORT%-%CONFIGURATION%.7z - cmd: 7z a %BUILD_ARCHIVE% bin\Mingw\Release -xr!.gitignore - appveyor PushArtifact %BUILD_ARCHIVE% -- type C:\Users\appveyor\ccache.log test: off