From 080158ee13f1f526f6d9c7181be0286200d6ce91 Mon Sep 17 00:00:00 2001 From: Ladislav Zezula Date: Mon, 26 Oct 2020 10:41:57 +0100 Subject: Added universal makefile for Visual Studio --- StormLib_vs19.bat | 44 -------------------------------------- make-msvc.bat | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/SBaseFileTable.cpp | 2 +- test/StormTest.cpp | 28 ++++++++++++------------ test/TLogHelper.cpp | 2 +- 5 files changed, 74 insertions(+), 60 deletions(-) delete mode 100644 StormLib_vs19.bat create mode 100644 make-msvc.bat diff --git a/StormLib_vs19.bat b/StormLib_vs19.bat deleted file mode 100644 index 6052b52..0000000 --- a/StormLib_vs19.bat +++ /dev/null @@ -1,44 +0,0 @@ -@echo off -rem Build file for VS 2017 (expected in %ProgramFiles%\Microsoft Visual Studio\2017) - -rem Save the values of INCLUDE, LIB and PATH -set SAVE_INCLUDE=%INCLUDE% -set SAVE_LIB=%LIB% -set SAVE_PATH=%PATH% - -rem Determine where the program files are, both for 64-bit and 32-bit Windows -if exist "%ProgramFiles%" set PROGRAM_FILES_DIR=%ProgramFiles% -if exist "%ProgramFiles(x86)%" set PROGRAM_FILES_DIR=%ProgramFiles(x86)% - -rem Determine the installed version of Visual Studio (Professional/Enterprise) -if exist "%PROGRAM_FILES_DIR%\Microsoft Visual Studio\2017\Professional\VC\Auxiliary\Build\vcvarsall.bat" set VCVARS_BAT=%PROGRAM_FILES_DIR%\Microsoft Visual Studio\2017\Professional\VC\Auxiliary\Build\vcvarsall.bat -if exist "%PROGRAM_FILES_DIR%\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" set VCVARS_BAT=%PROGRAM_FILES_DIR%\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvarsall.bat - -:BUILD_32BIT -call "%VCVARS_BAT%" x86 -devenv.com StormLib_vs19.sln /project "StormLib" /rebuild "DebugAD|Win32" -devenv.com StormLib_vs19.sln /project "StormLib" /rebuild "DebugAS|Win32" -devenv.com StormLib_vs19.sln /project "StormLib" /rebuild "DebugUD|Win32" -devenv.com StormLib_vs19.sln /project "StormLib" /rebuild "DebugUS|Win32" -devenv.com StormLib_vs19.sln /project "StormLib" /rebuild "ReleaseAD|Win32" -devenv.com StormLib_vs19.sln /project "StormLib" /rebuild "ReleaseAS|Win32" -devenv.com StormLib_vs19.sln /project "StormLib" /rebuild "ReleaseUD|Win32" -devenv.com StormLib_vs19.sln /project "StormLib" /rebuild "ReleaseUS|Win32" -call :RestoreEnvVars - -:BUILD_64BIT -call "%VCVARS_BAT%" x64 -devenv.com StormLib_vs19.sln /project "StormLib" /rebuild "DebugAD|x64" -devenv.com StormLib_vs19.sln /project "StormLib" /rebuild "DebugAS|x64" -devenv.com StormLib_vs19.sln /project "StormLib" /rebuild "DebugUD|x64" -devenv.com StormLib_vs19.sln /project "StormLib" /rebuild "DebugUS|x64" -devenv.com StormLib_vs19.sln /project "StormLib" /rebuild "ReleaseAD|x64" -devenv.com StormLib_vs19.sln /project "StormLib" /rebuild "ReleaseAS|x64" -devenv.com StormLib_vs19.sln /project "StormLib" /rebuild "ReleaseUD|x64" -devenv.com StormLib_vs19.sln /project "StormLib" /rebuild "ReleaseUS|x64" -call :RestoreEnvVars - -:RestoreEnvVars -set INCLUDE=%SAVE_INCLUDE% -set LIB=%SAVE_LIB% -set PATH=%SAVE_PATH% diff --git a/make-msvc.bat b/make-msvc.bat new file mode 100644 index 0000000..3dc3ba4 --- /dev/null +++ b/make-msvc.bat @@ -0,0 +1,58 @@ +:: Build file for Visual Studio 2008 and 2017 +@echo off + +:: Save the values of INCLUDE, LIB and PATH +set SAVE_INCLUDE=%INCLUDE% +set SAVE_LIB=%LIB% +set SAVE_PATH=%PATH% +set LIB_NAME=StormLib + +:: Determine where the program files are, both for 64-bit and 32-bit Windows +if exist "%ProgramFiles%" set PROGRAM_FILES_DIR=%ProgramFiles% +if exist "%ProgramFiles(x86)%" set PROGRAM_FILES_DIR=%ProgramFiles(x86)% + +:: Determine the installed version of Visual Studio (Prioritize Enterprise over Professional) +if exist "%PROGRAM_FILES_DIR%\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" set VCVARS_2008=%PROGRAM_FILES_DIR%\Microsoft Visual Studio 9.0\VC\vcvarsall.bat +if exist "%PROGRAM_FILES_DIR%\Microsoft Visual Studio\2017\Professional\VC\Auxiliary\Build\vcvarsall.bat" set VCVARS_2017=%PROGRAM_FILES_DIR%\Microsoft Visual Studio\2017\Professional\VC\Auxiliary\Build\vcvarsall.bat +if exist "%PROGRAM_FILES_DIR%\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" set VCVARS_2017=%PROGRAM_FILES_DIR%\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvarsall.bat +if exist "%PROGRAM_FILES_DIR%\Microsoft Visual Studio\2019\Professional\VC\Auxiliary\Build\vcvarsall.bat" set VCVARS_2019=%PROGRAM_FILES_DIR%\Microsoft Visual Studio\2019\Professional\VC\Auxiliary\Build\vcvarsall.bat +if exist "%PROGRAM_FILES_DIR%\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" set VCVARS_2019=%PROGRAM_FILES_DIR%\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat + +::Build all libraries using Visual Studio 2008 and 2017 +call :BuildStormLib "%VCVARS_2008%" x86 StormLib_vs08.sln +call :BuildStormLib "%VCVARS_2008%" x64 StormLib_vs08.sln +call :BuildStormLib "%VCVARS_2019%" x86 StormLib_vs19.sln +call :BuildStormLib "%VCVARS_2019%" x64 StormLib_vs19.sln +goto:eof + +::----------------------------------------------------------------------------- +:: Build all 8 configurations of the library +:: +:: Parameters: +:: +:: %1 Full path to the VCVARS.BAT file +:: %2 Target build platform (x86 or x64) +:: %3 Plain name of the solution file (for example "StormLib_vs19.sln") +:: + +:BuildStormLib +::set VSCMD_DEBUG=1 +call %1 %2 +if "%2" == "x86" set SLN_TRG=Win32 +if "%2" == "x64" set SLN_TRG=x64 +devenv.com %3 /project "%LIB_NAME%" /rebuild "DebugAD|%SLN_TRG%" +devenv.com %3 /project "%LIB_NAME%" /rebuild "DebugAS|%SLN_TRG%" +devenv.com %3 /project "%LIB_NAME%" /rebuild "DebugUD|%SLN_TRG%" +devenv.com %3 /project "%LIB_NAME%" /rebuild "DebugUS|%SLN_TRG%" +devenv.com %3 /project "%LIB_NAME%" /rebuild "ReleaseAD|%SLN_TRG%" +devenv.com %3 /project "%LIB_NAME%" /rebuild "ReleaseAS|%SLN_TRG%" +devenv.com %3 /project "%LIB_NAME%" /rebuild "ReleaseUD|%SLN_TRG%" +devenv.com %3 /project "%LIB_NAME%" /rebuild "ReleaseUS|%SLN_TRG%" + +:: Restore environment variables to the old level +set INCLUDE=%SAVE_INCLUDE% +set LIB=%SAVE_LIB% +set PATH=%SAVE_PATH% +set VSINSTALLDIR= +set VCINSTALLDIR= +set DevEnvDir= diff --git a/src/SBaseFileTable.cpp b/src/SBaseFileTable.cpp index 4448289..e08daef 100644 --- a/src/SBaseFileTable.cpp +++ b/src/SBaseFileTable.cpp @@ -66,7 +66,7 @@ struct TStormBits void GetBits(unsigned int nBitPosition, unsigned int nBitLength, void * pvBuffer, int nResultSize); void SetBits(unsigned int nBitPosition, unsigned int nBitLength, void * pvBuffer, int nResultSize); - static const USHORT SetBitsMask[]; + static const USHORT SetBitsMask[]; // Bit mask for each number of bits (0-8) DWORD NumberOfBytes; // Total number of bytes in "Elements" DWORD NumberOfBits; // Total number of bits that are available diff --git a/test/StormTest.cpp b/test/StormTest.cpp index c0fbe44..bb55eb8 100644 --- a/test/StormTest.cpp +++ b/test/StormTest.cpp @@ -28,7 +28,7 @@ #pragma comment(lib, "winmm.lib") #endif -#ifndef PLATFORM_WINDOWS +#ifndef STORMLIB_WINDOWS #include #endif @@ -47,22 +47,22 @@ typedef struct _TEST_INFO //------------------------------------------------------------------------------ // Local variables -#ifdef PLATFORM_WINDOWS +#ifdef STORMLIB_WINDOWS #define WORK_PATH_ROOT _T("\\Multimedia\\MPQs") static const TCHAR szListFileDir[] = { '1', '9', '9', '5', ' ', '-', ' ', 'T', 'e', 's', 't', ' ', 'M', 'P', 'Q', 's', '\\', 'l', 'i', 's', 't', 'f', 'i', 'l', 'e', 's', '-', (TCHAR)0x65B0, (TCHAR)0x5EFA, (TCHAR)0x6587, (TCHAR)0x4EF6, (TCHAR)0x5939, 0 }; #endif -#ifdef PLATFORM_LINUX +#ifdef STORMLIB_LINUX #define WORK_PATH_ROOT "/home/ladik/StormLib/test" static const TCHAR szListFileDir[] = { '1', '9', '9', '5', ' ', '-', ' ', 'T', 'e', 's', 't', ' ', 'M', 'P', 'Q', 's', '\\', 'l', 'i', 's', 't', 'f', 'i', 'l', 'e', 's', '-', (TCHAR)0xe6, (TCHAR)0x96, (TCHAR)0xB0, (TCHAR)0xE5, (TCHAR)0xBB, (TCHAR)0xBA, (TCHAR)0xE6, (TCHAR)0x96, (TCHAR)0x87, (TCHAR)0xE4, (TCHAR)0xBB, (TCHAR)0xB6, (TCHAR)0xE5, (TCHAR)0xA4, (TCHAR)0xB9, 0 }; #endif -#ifdef PLATFORM_MAC +#ifdef STORMLIB_MAC #define WORK_PATH_ROOT "/home/sam/StormLib/test" static const TCHAR szListFileDir[] = { '1', '9', '9', '5', ' ', '-', ' ', 'T', 'e', 's', 't', ' ', 'M', 'P', 'Q', 's', '\\', 'l', 'i', 's', 't', 'f', 'i', 'l', 'e', 's', '-', (TCHAR)0xe6, (TCHAR)0x96, (TCHAR)0xB0, (TCHAR)0xE5, (TCHAR)0xBB, (TCHAR)0xBA, (TCHAR)0xE6, (TCHAR)0x96, (TCHAR)0x87, (TCHAR)0xE4, (TCHAR)0xBB, (TCHAR)0xB6, (TCHAR)0xE5, (TCHAR)0xA4, (TCHAR)0xB9, 0 }; #endif -#ifdef PLATFORM_HAIKU +#ifdef STORMLIB_HAIKU #define WORK_PATH_ROOT "~/StormLib/test" static const TCHAR szListFileDir[] = { '1', '9', '9', '5', ' ', '-', ' ', 'T', 'e', 's', 't', ' ', 'M', 'P', 'Q', 's', '\\', 'l', 'i', 's', 't', 'f', 'i', 'l', 'e', 's', '-', (TCHAR)0xe6, (TCHAR)0x96, (TCHAR)0xB0, (TCHAR)0xE5, (TCHAR)0xBB, (TCHAR)0xBA, (TCHAR)0xE6, (TCHAR)0x96, (TCHAR)0x87, (TCHAR)0xE4, (TCHAR)0xBB, (TCHAR)0xB6, (TCHAR)0xE5, (TCHAR)0xA4, (TCHAR)0xB9, 0 }; #endif @@ -280,7 +280,7 @@ static LPCTSTR PatchList_HS_6898_enGB[] = // Local file functions // Definition of the path separator -#ifdef PLATFORM_WINDOWS +#ifdef STORMLIB_WINDOWS static LPCTSTR g_szPathSeparator = _T("\\"); static const TCHAR PATH_SEPARATOR = _T('\\'); // Path separator for Windows platforms #else @@ -296,7 +296,7 @@ size_t cchMpqDirectory = 0; template static bool IsFullPath(const XCHAR * szFileName) { -#ifdef PLATFORM_WINDOWS +#ifdef STORMLIB_WINDOWS if(('A' <= szFileName[0] && szFileName[0] <= 'Z') || ('a' <= szFileName[0] && szFileName[0] <= 'z')) { return (szFileName[1] == ':' && szFileName[2] == PATH_SEPARATOR); @@ -715,7 +715,7 @@ static int CalculateFileSha1(TLogHelper * pLogger, LPCTSTR szFullPath, TCHAR * s static HANDLE InitDirectorySearch(LPCTSTR szDirectory) { -#ifdef PLATFORM_WINDOWS +#ifdef STORMLIB_WINDOWS WIN32_FIND_DATA wf; HANDLE hFind; @@ -730,7 +730,7 @@ static HANDLE InitDirectorySearch(LPCTSTR szDirectory) #endif -#if defined(PLATFORM_LINUX) || defined(PLATFORM_HAIKU) +#if defined(STORMLIB_LINUX) || defined(STORMLIB_HAIKU) // Keep compilers happy return (HANDLE)opendir(szDirectory); @@ -740,7 +740,7 @@ static HANDLE InitDirectorySearch(LPCTSTR szDirectory) static bool SearchDirectory(HANDLE hFind, TCHAR * szDirEntry, size_t cchDirEntry, bool & IsDirectory) { -#ifdef PLATFORM_WINDOWS +#ifdef STORMLIB_WINDOWS WIN32_FIND_DATA wf; TCHAR szDirEntryT[MAX_PATH]; @@ -765,7 +765,7 @@ static bool SearchDirectory(HANDLE hFind, TCHAR * szDirEntry, size_t cchDirEntry #endif -#if defined(PLATFORM_LINUX) || defined(PLATFORM_HAIKU) +#if defined(STORMLIB_LINUX) || defined(STORMLIB_HAIKU) struct dirent * directory_entry; @@ -784,11 +784,11 @@ static bool SearchDirectory(HANDLE hFind, TCHAR * szDirEntry, size_t cchDirEntry static void FreeDirectorySearch(HANDLE hFind) { -#ifdef PLATFORM_WINDOWS +#ifdef STORMLIB_WINDOWS FindClose(hFind); #endif -#if defined(PLATFORM_LINUX) || defined(PLATFORM_HAIKU) +#if defined(STORMLIB_LINUX) || defined(STORMLIB_HAIKU) closedir((DIR *)hFind); #endif } @@ -2225,7 +2225,7 @@ static int TestReadFile_MasterMirror(LPCTSTR szMirrorName, LPCTSTR szMasterName, // Retrieve the provider FileStream_Prefix(szMasterName, &dwProvider); -#ifndef PLATFORM_WINDOWS +#ifndef STORMLIB_WINDOWS if((dwProvider & BASE_PROVIDER_MASK) == BASE_PROVIDER_HTTP) return ERROR_SUCCESS; #endif diff --git a/test/TLogHelper.cpp b/test/TLogHelper.cpp index 64cc815..9bf4f6d 100644 --- a/test/TLogHelper.cpp +++ b/test/TLogHelper.cpp @@ -425,7 +425,7 @@ char * TLogHelper::CopyFormatCharacter(char * szBuffer, const char *& szFormat) int TLogHelper::GetConsoleWidth() { -#ifdef PLATFORM_WINDOWS +#ifdef STORMLIB_WINDOWS CONSOLE_SCREEN_BUFFER_INFO ScreenInfo; GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &ScreenInfo); -- cgit v1.2.3