diff --git a/AMBuildScript b/AMBuildScript index 9598e119..b848ac10 100644 --- a/AMBuildScript +++ b/AMBuildScript @@ -30,7 +30,7 @@ class SM: self.possibleSdks['eye'] = {'sdk': 'HL2SDK-EYE', 'ext': '2.eye', 'def': '5', 'name': 'EYE', 'platform': ['windows']} self.possibleSdks['csgo'] = {'sdk': 'HL2SDKCSGO', 'ext': '2.csgo', 'def': '12', - 'name': 'CSGO', 'platform': ['windows', 'linux']} + 'name': 'CSGO', 'platform': ['windows', 'linux', 'darwin']} # self.possibleSdks['portal2'] = {'sdk': 'HL2SDK-PORTAL2', 'ext': '2.portal2', 'def': '11', # 'name': 'PORTAL2', 'platform': ['windows']} @@ -46,13 +46,13 @@ class SM: 'HL2SDKOBVALVE': 'hl2sdk-ob-valve', 'HL2SDKL4D': 'hl2sdk-l4d', 'HL2SDKL4D2': 'hl2sdk-l4d2', + 'HL2SDKCSGO': 'hl2sdk-csgo', 'MYSQL5': 'mysql-5.0' } if AMBuild.target['platform'] != 'darwin': envvars['HL2SDK'] = 'hl2sdk' envvars['HL2SDKOB'] = 'hl2sdk-ob' - envvars['HL2SDKCSGO'] = 'hl2sdk-csgo' #Dark Messiah is Windows-only if AMBuild.target['platform'] == 'windows': @@ -195,6 +195,8 @@ class SM: if self.vendor == 'clang': self.compiler.AddToListVar('POSTLINKFLAGS', '-lgcc_eh') elif AMBuild.target['platform'] == 'darwin': + self.compiler.AddToListVar('CDEFINES', 'OSX') + self.compiler.AddToListVar('CDEFINES', '_OSX') self.compiler.AddToListVar('POSTLINKFLAGS', '-mmacosx-version-min=10.5') self.compiler.AddToListVar('POSTLINKFLAGS', ['-arch', 'i386']) self.compiler.AddToListVar('POSTLINKFLAGS', '-lstdc++') diff --git a/core/CoreConfig.cpp b/core/CoreConfig.cpp index 2c499360..010667db 100644 --- a/core/CoreConfig.cpp +++ b/core/CoreConfig.cpp @@ -395,7 +395,7 @@ bool SM_ExecuteConfig(CPlugin *pl, AutoConfig *cfg, bool can_create) FILE *fp = fopen(file, "wt"); if (fp) { - fprintf(fp, "// This file was auto-generated by SourceMod (v%s)\n", SM_FULL_VERSION); + fprintf(fp, "// This file was auto-generated by SourceMod (v%s)\n", SM_VERSION_STRING); fprintf(fp, "// ConVars for plugin \"%s\"\n", pl->GetFilename()); fprintf(fp, "\n\n"); diff --git a/core/Logger.cpp b/core/Logger.cpp index 5896792a..f0834198 100644 --- a/core/Logger.cpp +++ b/core/Logger.cpp @@ -149,7 +149,7 @@ void Logger::_NewMapFile() } else { char date[32]; strftime(date, sizeof(date), "%m/%d/%Y - %H:%M:%S", curtime); - fprintf(fp, "L %s: SourceMod log file started (file \"L%02d%02d%03d.log\") (Version \"%s\")\n", date, curtime->tm_mon + 1, curtime->tm_mday, i, SM_FULL_VERSION); + fprintf(fp, "L %s: SourceMod log file started (file \"L%02d%02d%03d.log\") (Version \"%s\")\n", date, curtime->tm_mon + 1, curtime->tm_mday, i, SM_VERSION_STRING); fclose(fp); } } @@ -362,7 +362,7 @@ void Logger::LogMessage(const char *vafmt, ...) char date[32]; m_DailyPrintHdr = false; strftime(date, sizeof(date), "%m/%d/%Y - %H:%M:%S", curtime); - fprintf(fp, "L %s: SourceMod log file session started (file \"L%04d%02d%02d.log\") (Version \"%s\")\n", date, curtime->tm_year + 1900, curtime->tm_mon + 1, curtime->tm_mday, SM_FULL_VERSION); + fprintf(fp, "L %s: SourceMod log file session started (file \"L%04d%02d%02d.log\") (Version \"%s\")\n", date, curtime->tm_year + 1900, curtime->tm_mon + 1, curtime->tm_mday, SM_VERSION_STRING); } va_list ap; va_start(ap, vafmt); diff --git a/core/PlayerManager.cpp b/core/PlayerManager.cpp index 69554016..1fc4e7e5 100644 --- a/core/PlayerManager.cpp +++ b/core/PlayerManager.cpp @@ -793,7 +793,7 @@ void PlayerManager::OnClientCommand(edict_t *pEntity) } ClientConsolePrint(pEntity, - "SourceMod %s, by AlliedModders LLC", SM_FULL_VERSION); + "SourceMod %s, by AlliedModders LLC", SM_VERSION_STRING); ClientConsolePrint(pEntity, "To see running plugins, type \"sm plugins\""); ClientConsolePrint(pEntity, diff --git a/core/logic/AMBuilder b/core/logic/AMBuilder index e3da04fb..1e5af769 100644 --- a/core/logic/AMBuilder +++ b/core/logic/AMBuilder @@ -13,6 +13,7 @@ compiler['CDEFINES'].append('SM_LOGIC') if AMBuild.target['platform'] == 'linux': compiler['POSTLINKFLAGS'].append('-lpthread') if AMBuild.target['platform'] == 'darwin': + compiler['CFLAGS'].extend(['-Wno-deprecated-declarations']) compiler['POSTLINKFLAGS'].extend(['-framework', 'CoreServices']) extension = AMBuild.AddJob('sourcemod.logic') diff --git a/core/logic/version.rc b/core/logic/version.rc index 01159866..4fa41d93 100755 --- a/core/logic/version.rc +++ b/core/logic/version.rc @@ -29,8 +29,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US // VS_VERSION_INFO VERSIONINFO - FILEVERSION SM_FILE_VERSION - PRODUCTVERSION SM_FILE_VERSION + FILEVERSION SM_VERSION_FILE + PRODUCTVERSION SM_VERSION_FILE FILEFLAGSMASK 0x17L #ifdef _DEBUG FILEFLAGS 0x1L @@ -47,12 +47,12 @@ BEGIN BEGIN VALUE "Comments", "SourceMod" VALUE "FileDescription", "SourceMod Core Logic" - VALUE "FileVersion", SM_FULL_VERSION + VALUE "FileVersion", SM_VERSION_STRING VALUE "InternalName", "sourcemod" VALUE "LegalCopyright", "Copyright (c) 2004-2009, AlliedModders LLC" VALUE "OriginalFilename", "sourcemod.logic.dll" VALUE "ProductName", "SourceMod" - VALUE "ProductVersion", SM_FULL_VERSION + VALUE "ProductVersion", SM_VERSION_STRING END END BLOCK "VarFileInfo" diff --git a/core/sm_srvcmds.cpp b/core/sm_srvcmds.cpp index a68ea8fc..3cf93160 100644 --- a/core/sm_srvcmds.cpp +++ b/core/sm_srvcmds.cpp @@ -39,7 +39,7 @@ RootConsoleMenu g_RootMenu; -ConVar sourcemod_version("sourcemod_version", SM_FULL_VERSION, FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY, "SourceMod Version"); +ConVar sourcemod_version("sourcemod_version", SM_VERSION_STRING, FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY, "SourceMod Version"); RootConsoleMenu::RootConsoleMenu() { @@ -339,7 +339,7 @@ void RootConsoleMenu::OnRootConsoleCommand(const char *cmdname, const CCommand & else if (strcmp(cmdname, "version") == 0) { ConsolePrint(" SourceMod Version Information:"); - ConsolePrint(" SourceMod Version: %s", SM_FULL_VERSION); + ConsolePrint(" SourceMod Version: %s", SM_VERSION_STRING); ConsolePrint(" SourcePawn Engine: %s (build %s)", g_pSourcePawn2->GetEngineName(), g_pSourcePawn2->GetVersionString()); ConsolePrint(" SourcePawn API: v1 = %d, v2 = %d", g_pSourcePawn->GetEngineAPIVersion(), g_pSourcePawn2->GetAPIVersion()); ConsolePrint(" Compiled on: %s %s", __DATE__, __TIME__); diff --git a/core/sourcemm_api.cpp b/core/sourcemm_api.cpp index 44008a94..6a3b74d1 100644 --- a/core/sourcemm_api.cpp +++ b/core/sourcemm_api.cpp @@ -145,7 +145,7 @@ const char *SourceMod_Core::GetLicense() const char *SourceMod_Core::GetVersion() { - return SM_FULL_VERSION; + return SM_VERSION_STRING; } const char *SourceMod_Core::GetDate() diff --git a/core/version.rc b/core/version.rc index 3d3631d1..06e74104 100644 --- a/core/version.rc +++ b/core/version.rc @@ -29,8 +29,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US // VS_VERSION_INFO VERSIONINFO - FILEVERSION SM_FILE_VERSION - PRODUCTVERSION SM_FILE_VERSION + FILEVERSION SM_VERSION_FILE + PRODUCTVERSION SM_VERSION_FILE FILEFLAGSMASK 0x17L #ifdef _DEBUG FILEFLAGS 0x1L @@ -47,12 +47,12 @@ BEGIN BEGIN VALUE "Comments", "SourceMod" VALUE "FileDescription", "SourceMod Core" - VALUE "FileVersion", SM_FULL_VERSION + VALUE "FileVersion", SM_VERSION_STRING VALUE "InternalName", "sourcemod" VALUE "LegalCopyright", "Copyright (c) 2004-2008, AlliedModders LLC" VALUE "OriginalFilename", BINARY_NAME VALUE "ProductName", "SourceMod" - VALUE "ProductVersion", SM_FULL_VERSION + VALUE "ProductVersion", SM_VERSION_STRING END END BLOCK "VarFileInfo" diff --git a/extensions/bintools/extension.cpp b/extensions/bintools/extension.cpp index 523f6179..c91f3c60 100644 --- a/extensions/bintools/extension.cpp +++ b/extensions/bintools/extension.cpp @@ -61,7 +61,7 @@ bool BinTools::SDK_OnLoad(char *error, size_t maxlength, bool late) const char *BinTools::GetExtensionVerString() { - return SM_FULL_VERSION; + return SM_VERSION_STRING; } const char *BinTools::GetExtensionDateString() diff --git a/extensions/bintools/version.rc b/extensions/bintools/version.rc index a8e9f049..65426989 100644 --- a/extensions/bintools/version.rc +++ b/extensions/bintools/version.rc @@ -29,8 +29,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US // VS_VERSION_INFO VERSIONINFO - FILEVERSION SM_FILE_VERSION - PRODUCTVERSION SM_FILE_VERSION + FILEVERSION SM_VERSION_FILE + PRODUCTVERSION SM_VERSION_FILE FILEFLAGSMASK 0x17L #ifdef _DEBUG FILEFLAGS 0x1L @@ -47,12 +47,12 @@ BEGIN BEGIN VALUE "Comments", "BinTools Extension" VALUE "FileDescription", "SourceMod BinTools Extension" - VALUE "FileVersion", SM_FULL_VERSION + VALUE "FileVersion", SM_VERSION_STRING VALUE "InternalName", "SourceMod BinTools Extension" VALUE "LegalCopyright", "Copyright (c) 2004-2008, AlliedModders LLC" VALUE "OriginalFilename", BINARY_NAME VALUE "ProductName", "SourceMod BinTools Extension" - VALUE "ProductVersion", SM_FULL_VERSION + VALUE "ProductVersion", SM_VERSION_STRING END END BLOCK "VarFileInfo" diff --git a/extensions/clientprefs/extension.cpp b/extensions/clientprefs/extension.cpp index 97aa8f81..a3976fa9 100644 --- a/extensions/clientprefs/extension.cpp +++ b/extensions/clientprefs/extension.cpp @@ -485,7 +485,7 @@ IdentityToken_t *ClientPrefs::GetIdentity() const const char *ClientPrefs::GetExtensionVerString() { - return SM_FULL_VERSION; + return SM_VERSION_STRING; } const char *ClientPrefs::GetExtensionDateString() diff --git a/extensions/clientprefs/version.rc b/extensions/clientprefs/version.rc index e8ae08a8..0b13c606 100644 --- a/extensions/clientprefs/version.rc +++ b/extensions/clientprefs/version.rc @@ -29,8 +29,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US // VS_VERSION_INFO VERSIONINFO - FILEVERSION SM_FILE_VERSION - PRODUCTVERSION SM_FILE_VERSION + FILEVERSION SM_VERSION_FILE + PRODUCTVERSION SM_VERSION_FILE FILEFLAGSMASK 0x17L #ifdef _DEBUG FILEFLAGS 0x1L @@ -47,12 +47,12 @@ BEGIN BEGIN VALUE "Comments", "Client Preferences Extension" VALUE "FileDescription", "SourceMod Client Preferences Extension" - VALUE "FileVersion", SM_FULL_VERSION + VALUE "FileVersion", SM_VERSION_STRING VALUE "InternalName", "SourceMod Client Preferences Extension" VALUE "LegalCopyright", "Copyright (c) 2004-2008, AlliedModders LLC" VALUE "OriginalFilename", BINARY_NAME VALUE "ProductName", "SourceMod Client Preferences Extension" - VALUE "ProductVersion", SM_FULL_VERSION + VALUE "ProductVersion", SM_VERSION_STRING END END BLOCK "VarFileInfo" diff --git a/extensions/cstrike/CDetour/detourhelpers.h b/extensions/cstrike/CDetour/detourhelpers.h index 85cda0ea..0d8a29f7 100644 --- a/extensions/cstrike/CDetour/detourhelpers.h +++ b/extensions/cstrike/CDetour/detourhelpers.h @@ -34,7 +34,9 @@ #if defined PLATFORM_POSIX #include +#ifndef PAGE_SIZE #define PAGE_SIZE 4096 +#endif #define ALIGN(ar) ((long)ar & ~(PAGE_SIZE-1)) #define PAGE_EXECUTE_READWRITE PROT_READ|PROT_WRITE|PROT_EXEC #endif diff --git a/extensions/cstrike/extension.cpp b/extensions/cstrike/extension.cpp index ea91621c..6e9f33fb 100644 --- a/extensions/cstrike/extension.cpp +++ b/extensions/cstrike/extension.cpp @@ -283,7 +283,7 @@ bool CStrike::ProcessCommandTarget(cmd_target_info_t *info) const char *CStrike::GetExtensionVerString() { - return SM_FULL_VERSION; + return SM_VERSION_STRING; } const char *CStrike::GetExtensionDateString() diff --git a/extensions/cstrike/version.rc b/extensions/cstrike/version.rc index 7bf56997..1e73df88 100644 --- a/extensions/cstrike/version.rc +++ b/extensions/cstrike/version.rc @@ -29,8 +29,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US // VS_VERSION_INFO VERSIONINFO - FILEVERSION SM_FILE_VERSION - PRODUCTVERSION SM_FILE_VERSION + FILEVERSION SM_VERSION_FILE + PRODUCTVERSION SM_VERSION_FILE FILEFLAGSMASK 0x17L #ifdef _DEBUG FILEFLAGS 0x1L @@ -47,12 +47,12 @@ BEGIN BEGIN VALUE "Comments", "SourceMod CS:S Extension" VALUE "FileDescription", "SourceMod CS:S Extension" - VALUE "FileVersion", SM_FULL_VERSION + VALUE "FileVersion", SM_VERSION_STRING VALUE "InternalName", "SourceMod CS:S Extension" VALUE "LegalCopyright", "Copyright (c) 2004-2008, AlliedModders LLC" VALUE "OriginalFilename", BINARY_NAME VALUE "ProductName", "SourceMod CS:S Extension" - VALUE "ProductVersion", SM_FULL_VERSION + VALUE "ProductVersion", SM_VERSION_STRING END END BLOCK "VarFileInfo" diff --git a/extensions/curl/extension.cpp b/extensions/curl/extension.cpp index 7baf1f51..37456506 100644 --- a/extensions/curl/extension.cpp +++ b/extensions/curl/extension.cpp @@ -78,7 +78,7 @@ void CurlExt::SDK_OnUnload() const char *CurlExt::GetExtensionVerString() { - return SM_FULL_VERSION; + return SM_VERSION_STRING; } const char *CurlExt::GetExtensionDateString() diff --git a/extensions/curl/version.rc b/extensions/curl/version.rc index 407550ce..e6225925 100644 --- a/extensions/curl/version.rc +++ b/extensions/curl/version.rc @@ -29,8 +29,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US // VS_VERSION_INFO VERSIONINFO - FILEVERSION SM_FILE_VERSION - PRODUCTVERSION SM_FILE_VERSION + FILEVERSION SM_VERSION_FILE + PRODUCTVERSION SM_VERSION_FILE FILEFLAGSMASK 0x17L #ifdef _DEBUG FILEFLAGS 0x1L @@ -47,12 +47,12 @@ BEGIN BEGIN VALUE "Comments", "Webternet Extension" VALUE "FileDescription", "SourceMod Webternet Extension" - VALUE "FileVersion", SM_FULL_VERSION + VALUE "FileVersion", SM_VERSION_STRING VALUE "InternalName", "SourceMod Webternet Extension" VALUE "LegalCopyright", "Copyright (c) 2004-2009, AlliedModders LLC" VALUE "OriginalFilename", BINARY_NAME VALUE "ProductName", "SourceMod Webternet Extension" - VALUE "ProductVersion", SM_FULL_VERSION + VALUE "ProductVersion", SM_VERSION_STRING END END BLOCK "VarFileInfo" diff --git a/extensions/geoip/extension.cpp b/extensions/geoip/extension.cpp index f9121ea8..d3159804 100644 --- a/extensions/geoip/extension.cpp +++ b/extensions/geoip/extension.cpp @@ -70,7 +70,7 @@ void GeoIP_Extension::SDK_OnUnload() const char *GeoIP_Extension::GetExtensionVerString() { - return SM_FULL_VERSION; + return SM_VERSION_STRING; } const char *GeoIP_Extension::GetExtensionDateString() diff --git a/extensions/geoip/version.rc b/extensions/geoip/version.rc index a94221f4..f1c33946 100644 --- a/extensions/geoip/version.rc +++ b/extensions/geoip/version.rc @@ -29,8 +29,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US // VS_VERSION_INFO VERSIONINFO - FILEVERSION SM_FILE_VERSION - PRODUCTVERSION SM_FILE_VERSION + FILEVERSION SM_VERSION_FILE + PRODUCTVERSION SM_VERSION_FILE FILEFLAGSMASK 0x17L #ifdef _DEBUG FILEFLAGS 0x1L @@ -47,12 +47,12 @@ BEGIN BEGIN VALUE "Comments", "GeoIP Extension" VALUE "FileDescription", "SourceMod GeoIP Extension" - VALUE "FileVersion", SM_FULL_VERSION + VALUE "FileVersion", SM_VERSION_STRING VALUE "InternalName", "SourceMod GeoIP Extension" VALUE "LegalCopyright", "Copyright (c) 2004-2008, AlliedModders LLC" VALUE "OriginalFilename", BINARY_NAME VALUE "ProductName", "SourceMod GeoIP Extension" - VALUE "ProductVersion", SM_FULL_VERSION + VALUE "ProductVersion", SM_VERSION_STRING END END BLOCK "VarFileInfo" diff --git a/extensions/mysql/extension.cpp b/extensions/mysql/extension.cpp index ae6fb265..d6264789 100644 --- a/extensions/mysql/extension.cpp +++ b/extensions/mysql/extension.cpp @@ -62,7 +62,7 @@ void DBI_MySQL::SDK_OnUnload() const char *DBI_MySQL::GetExtensionVerString() { - return SM_FULL_VERSION; + return SM_VERSION_STRING; } const char *DBI_MySQL::GetExtensionDateString() diff --git a/extensions/mysql/version.rc b/extensions/mysql/version.rc index 382e98c6..dd1c9cf6 100644 --- a/extensions/mysql/version.rc +++ b/extensions/mysql/version.rc @@ -29,8 +29,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US // VS_VERSION_INFO VERSIONINFO - FILEVERSION SM_FILE_VERSION - PRODUCTVERSION SM_FILE_VERSION + FILEVERSION SM_VERSION_FILE + PRODUCTVERSION SM_VERSION_FILE FILEFLAGSMASK 0x17L #ifdef _DEBUG FILEFLAGS 0x1L @@ -47,12 +47,12 @@ BEGIN BEGIN VALUE "Comments", "MySQL Extension" VALUE "FileDescription", "SourceMod MySQL Extension" - VALUE "FileVersion", SM_FULL_VERSION + VALUE "FileVersion", SM_VERSION_STRING VALUE "InternalName", "SourceMod MySQL Extension" VALUE "LegalCopyright", "Copyright (c) 2004-2008, AlliedModders LLC" VALUE "OriginalFilename", BINARY_NAME VALUE "ProductName", "SourceMod MySQL Extension" - VALUE "ProductVersion", SM_FULL_VERSION + VALUE "ProductVersion", SM_VERSION_STRING END END BLOCK "VarFileInfo" diff --git a/extensions/regex/extension.cpp b/extensions/regex/extension.cpp index 9b4de4db..37199936 100644 --- a/extensions/regex/extension.cpp +++ b/extensions/regex/extension.cpp @@ -65,7 +65,7 @@ void RegexExtension::SDK_OnUnload() const char *RegexExtension::GetExtensionVerString() { - return SM_FULL_VERSION; + return SM_VERSION_STRING; } const char *RegexExtension::GetExtensionDateString() diff --git a/extensions/regex/version.rc b/extensions/regex/version.rc index f072babb..416e58ca 100644 --- a/extensions/regex/version.rc +++ b/extensions/regex/version.rc @@ -29,8 +29,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US // VS_VERSION_INFO VERSIONINFO - FILEVERSION SM_FILE_VERSION - PRODUCTVERSION SM_FILE_VERSION + FILEVERSION SM_VERSION_FILE + PRODUCTVERSION SM_VERSION_FILE FILEFLAGSMASK 0x17L #ifdef _DEBUG FILEFLAGS 0x1L @@ -47,12 +47,12 @@ BEGIN BEGIN VALUE "Comments", "SourceMod Regular Expression Extension" VALUE "FileDescription", "SourceMod Regular Expression Extension" - VALUE "FileVersion", SM_FULL_VERSION + VALUE "FileVersion", SM_VERSION_STRING VALUE "InternalName", "SourceMod Regular Expression Extension" VALUE "LegalCopyright", "Copyright (c) 2004-2008, AlliedModders LLC" VALUE "OriginalFilename", BINARY_NAME VALUE "ProductName", "SourceMod Regular Expression Extension" - VALUE "ProductVersion", SM_FULL_VERSION + VALUE "ProductVersion", SM_VERSION_STRING END END BLOCK "VarFileInfo" diff --git a/extensions/sdktools/CDetour/detourhelpers.h b/extensions/sdktools/CDetour/detourhelpers.h index 4df2b69f..491a827f 100644 --- a/extensions/sdktools/CDetour/detourhelpers.h +++ b/extensions/sdktools/CDetour/detourhelpers.h @@ -34,7 +34,9 @@ #if defined PLATFORM_POSIX #include +#ifndef PAGE_SIZE #define PAGE_SIZE 4096 +#endif #define ALIGN(ar) ((long)ar & ~(PAGE_SIZE-1)) #define PAGE_EXECUTE_READWRITE PROT_READ|PROT_WRITE|PROT_EXEC #endif diff --git a/extensions/sdktools/extension.cpp b/extensions/sdktools/extension.cpp index 04b4f946..3bfe5b35 100644 --- a/extensions/sdktools/extension.cpp +++ b/extensions/sdktools/extension.cpp @@ -428,7 +428,7 @@ bool SDKTools::ProcessCommandTarget(cmd_target_info_t *info) const char *SDKTools::GetExtensionVerString() { - return SM_FULL_VERSION; + return SM_VERSION_STRING; } const char *SDKTools::GetExtensionDateString() diff --git a/extensions/sdktools/version.rc b/extensions/sdktools/version.rc index fb6a62a3..88087c2e 100644 --- a/extensions/sdktools/version.rc +++ b/extensions/sdktools/version.rc @@ -29,8 +29,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US // VS_VERSION_INFO VERSIONINFO - FILEVERSION SM_FILE_VERSION - PRODUCTVERSION SM_FILE_VERSION + FILEVERSION SM_VERSION_FILE + PRODUCTVERSION SM_VERSION_FILE FILEFLAGSMASK 0x17L #ifdef _DEBUG FILEFLAGS 0x1L @@ -47,12 +47,12 @@ BEGIN BEGIN VALUE "Comments", "SDKTools Extension" VALUE "FileDescription", "SourceMod SDKTools Extension" - VALUE "FileVersion", SM_FULL_VERSION + VALUE "FileVersion", SM_VERSION_STRING VALUE "InternalName", "SourceMod SDKTools Extension" VALUE "LegalCopyright", "Copyright (c) 2004-2008, AlliedModders LLC" VALUE "OriginalFilename", BINARY_NAME VALUE "ProductName", "SourceMod SDKTools Extension" - VALUE "ProductVersion", SM_FULL_VERSION + VALUE "ProductVersion", SM_VERSION_STRING END END BLOCK "VarFileInfo" diff --git a/extensions/sqlite/extension.cpp b/extensions/sqlite/extension.cpp index 191e8452..4016aed6 100644 --- a/extensions/sqlite/extension.cpp +++ b/extensions/sqlite/extension.cpp @@ -74,7 +74,7 @@ size_t UTIL_Format(char *buffer, size_t maxlength, const char *fmt, ...) const char *SqliteExt::GetExtensionVerString() { - return SM_FULL_VERSION; + return SM_VERSION_STRING; } const char *SqliteExt::GetExtensionDateString() diff --git a/extensions/sqlite/version.rc b/extensions/sqlite/version.rc index 7c93cd4c..663392b5 100644 --- a/extensions/sqlite/version.rc +++ b/extensions/sqlite/version.rc @@ -29,8 +29,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US // VS_VERSION_INFO VERSIONINFO - FILEVERSION SM_FILE_VERSION - PRODUCTVERSION SM_FILE_VERSION + FILEVERSION SM_VERSION_FILE + PRODUCTVERSION SM_VERSION_FILE FILEFLAGSMASK 0x17L #ifdef _DEBUG FILEFLAGS 0x1L @@ -47,12 +47,12 @@ BEGIN BEGIN VALUE "Comments", "SQLite Extension" VALUE "FileDescription", "SourceMod SQLite Extension" - VALUE "FileVersion", SM_FULL_VERSION + VALUE "FileVersion", SM_VERSION_STRING VALUE "InternalName", "SourceMod SQLite Extension" VALUE "LegalCopyright", "Copyright (c) 2004-2008, AlliedModders LLC" VALUE "OriginalFilename", BINARY_NAME VALUE "ProductName", "SourceMod SQLite Extension" - VALUE "ProductVersion", SM_FULL_VERSION + VALUE "ProductVersion", SM_VERSION_STRING END END BLOCK "VarFileInfo" diff --git a/extensions/tf2/extension.cpp b/extensions/tf2/extension.cpp index 3473d4ab..d3489fc0 100644 --- a/extensions/tf2/extension.cpp +++ b/extensions/tf2/extension.cpp @@ -133,7 +133,7 @@ bool TF2Tools::SDK_OnLoad(char *error, size_t maxlength, bool late) const char *TF2Tools::GetExtensionVerString() { - return SM_FULL_VERSION; + return SM_VERSION_STRING; } const char *TF2Tools::GetExtensionDateString() diff --git a/extensions/tf2/version.rc b/extensions/tf2/version.rc index 9dcf930a..97d26115 100644 --- a/extensions/tf2/version.rc +++ b/extensions/tf2/version.rc @@ -29,8 +29,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US // VS_VERSION_INFO VERSIONINFO - FILEVERSION SM_FILE_VERSION - PRODUCTVERSION SM_FILE_VERSION + FILEVERSION SM_VERSION_FILE + PRODUCTVERSION SM_VERSION_FILE FILEFLAGSMASK 0x17L #ifdef _DEBUG FILEFLAGS 0x1L @@ -47,12 +47,12 @@ BEGIN BEGIN VALUE "Comments", "SourceMod TF2 Extension" VALUE "FileDescription", "SourceMod TF2 Extension" - VALUE "FileVersion", SM_FULL_VERSION + VALUE "FileVersion", SM_VERSION_STRING VALUE "InternalName", "SourceMod TF2 Extension" VALUE "LegalCopyright", "Copyright (c) 2004-2008, AlliedModders LLC" VALUE "OriginalFilename", BINARY_NAME VALUE "ProductName", "SourceMod TF2 Extension" - VALUE "ProductVersion", SM_FULL_VERSION + VALUE "ProductVersion", SM_VERSION_STRING END END BLOCK "VarFileInfo" diff --git a/extensions/topmenus/extension.cpp b/extensions/topmenus/extension.cpp index 3acae862..6820600f 100644 --- a/extensions/topmenus/extension.cpp +++ b/extensions/topmenus/extension.cpp @@ -67,7 +67,7 @@ void TopMenuExtension::SDK_OnUnload() const char *TopMenuExtension::GetExtensionVerString() { - return SM_FULL_VERSION; + return SM_VERSION_STRING; } const char *TopMenuExtension::GetExtensionDateString() diff --git a/extensions/topmenus/version.rc b/extensions/topmenus/version.rc index f86f2721..7f0fb15f 100644 --- a/extensions/topmenus/version.rc +++ b/extensions/topmenus/version.rc @@ -29,8 +29,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US // VS_VERSION_INFO VERSIONINFO - FILEVERSION SM_FILE_VERSION - PRODUCTVERSION SM_FILE_VERSION + FILEVERSION SM_VERSION_FILE + PRODUCTVERSION SM_VERSION_FILE FILEFLAGSMASK 0x17L #ifdef _DEBUG FILEFLAGS 0x1L @@ -47,12 +47,12 @@ BEGIN BEGIN VALUE "Comments", "TopMenus Extension" VALUE "FileDescription", "SourceMod TopMenus Extension" - VALUE "FileVersion", SM_FULL_VERSION + VALUE "FileVersion", SM_VERSION_STRING VALUE "InternalName", "SourceMod TopMenus Extension" VALUE "LegalCopyright", "Copyright (c) 2004-2008, AlliedModders LLC" VALUE "OriginalFilename", BINARY_NAME VALUE "ProductName", "SourceMod TopMenus Extension" - VALUE "ProductVersion", SM_FULL_VERSION + VALUE "ProductVersion", SM_VERSION_STRING END END BLOCK "VarFileInfo" diff --git a/extensions/updater/Updater.cpp b/extensions/updater/Updater.cpp index 8fbae98e..d20a143b 100644 --- a/extensions/updater/Updater.cpp +++ b/extensions/updater/Updater.cpp @@ -356,8 +356,7 @@ void UpdateReader::PerformUpdate(const char *url) xfer = webternet->CreateSession(); xfer->SetFailOnHTTPError(true); - form->AddString("version", SM_FULL_VERSION); - form->AddString("build", SM_BUILD_UNIQUEID); + form->AddString("version", SM_VERSION_STRING); unsigned int num_files = 0; add_folders(form, "gamedata", num_files); diff --git a/extensions/updater/extension.cpp b/extensions/updater/extension.cpp index 52c91e36..06b2a83f 100644 --- a/extensions/updater/extension.cpp +++ b/extensions/updater/extension.cpp @@ -249,7 +249,7 @@ void AddUpdateError(const char *fmt, ...) const char *SmUpdater::GetExtensionVerString() { - return SM_FULL_VERSION; + return SM_VERSION_STRING; } const char *SmUpdater::GetExtensionDateString() diff --git a/extensions/updater/version.rc b/extensions/updater/version.rc index 2f1fba61..c3d9761a 100644 --- a/extensions/updater/version.rc +++ b/extensions/updater/version.rc @@ -29,8 +29,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US // VS_VERSION_INFO VERSIONINFO - FILEVERSION SM_FILE_VERSION - PRODUCTVERSION SM_FILE_VERSION + FILEVERSION SM_VERSION_FILE + PRODUCTVERSION SM_VERSION_FILE FILEFLAGSMASK 0x17L #ifdef _DEBUG FILEFLAGS 0x1L @@ -47,12 +47,12 @@ BEGIN BEGIN VALUE "Comments", "Automatic Updater" VALUE "FileDescription", "SourceMod Automatic Updater" - VALUE "FileVersion", SM_FILE_VERSION + VALUE "FileVersion", SM_VERSION_FILE VALUE "InternalName", "SourceMod Updater Extension" VALUE "LegalCopyright", "Copyright (c) 2004-2009, AlliedModders LLC" VALUE "OriginalFilename", BINARY_NAME VALUE "ProductName", "SourceMod Updater Extension" - VALUE "ProductVersion", SM_FULL_VERSION + VALUE "ProductVersion", SM_VERSION_STRING END END BLOCK "VarFileInfo" diff --git a/gamedata/sm-cstrike.games/game.csgo.txt b/gamedata/sm-cstrike.games/game.csgo.txt index 5c9eb831..89184aea 100644 --- a/gamedata/sm-cstrike.games/game.csgo.txt +++ b/gamedata/sm-cstrike.games/game.csgo.txt @@ -11,7 +11,6 @@ "Games" { - //No mac binary yet so no mac gamedata "csgo" { "Offsets" @@ -21,32 +20,34 @@ { "windows" "6" "linux" "6" + "mac" "6" } "WeaponPrice" { "windows" "2700" "linux" "2700" + "mac" "2700" } //Offset into CheckRestartRound - //Only Windows/Linux for now. "CTTeamScoreOffset" { "windows" "97" "linux" "124" + "mac" "150" } //Offset into CheckRestartRound - //Only Windows/Linux for now. "TTeamScoreOffset" { "windows" "122" "linux" "159" + "mac" "185" } //Offset into IncrementNumMVPs to find MVP count offset from player - //Only Windows/Linux for now. "MVPCountOffset" { "windows" "46" "linux" "47" + "mac" "61" } } "Signatures" @@ -56,42 +57,49 @@ "library" "server" "windows" "\x55\x8B\xEC\x83\xEC\x2A\x56\x8B\xF1\x8B\x0D\x2A\x2A\x2A\x2A\x57\xE8\x2A\x2A\x2A\x2A\x84\xC0\x75" "linux" "@_ZN9CCSPlayer12RoundRespawnEv" + "mac" "@_ZN9CCSPlayer12RoundRespawnEv" } "SwitchTeam" { "library" "server" "windows" "\x55\x8B\xEC\x83\xEC\x2A\x56\x57\x8B\x7D\x2A\x57\x8B\xF1\xE8\x2A\x2A\x2A\x2A\x83\xC4" "linux" "@_ZN9CCSPlayer10SwitchTeamEi" + "mac" "@_ZN9CCSPlayer10SwitchTeamEi" } "HandleCommand_Buy_Internal" { "library" "server" "windows" "\x55\x8B\xEC\x81\xEC\x2A\x2A\x00\x00\x53\x56\x8B\xF1\x80\xBE\x2A\x2A\x00\x00\x00" "linux" "@_ZN9CCSPlayer26HandleCommand_Buy_InternalEPKc" + "mac" "@_ZN9CCSPlayer26HandleCommand_Buy_InternalEPKc" } "CSWeaponDrop"//Wildcard first 6 bytes for CS:S DM { "library" "server" "windows" "\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x53\x56\x8B\x2A\x2A\x32\xDB\x57\x8B\xF9\x85\xF6\x0F\x84" "linux" "@_ZN9CCSPlayer12CSWeaponDropEP17CBaseCombatWeaponbb" + "mac" "@_ZN9CCSPlayer12CSWeaponDropEP17CBaseCombatWeaponbb" } "TerminateRound" { "library" "server" "windows" "\x55\x8B\xEC\x83\xEC\x2A\x53\x8B\x2A\x2A\x56\x57\x33\xFF" "linux" "@_ZN12CCSGameRules14TerminateRoundEfi" + "mac" "@_ZN12CCSGameRules14TerminateRoundEfi" } "GetTranslatedWeaponAlias" { "library" "server" "windows" "\x55\x8B\xEC\x56\x57\x8B\x2A\x2A\x33\xF6\x8D\x9B\x2A\x2A\x2A\x2A\x8B\x04\xF5\x2A\x2A\x2A\x2A\x57\x50\xE8\x2A\x2A\x2A\x2A\x83\xC4\x2A\x85\xC0\x74\x2A\x46\x83\xFE\x2A\x72\x2A\x8B\xC7\x5F\x5E\x5D\xC3" "linux" "@_Z24GetTranslatedWeaponAliasPKc" + "mac" "@_Z24GetTranslatedWeaponAliasPKc" } "GetWeaponInfo" { "library" "server" "windows" "\x55\x8B\xEC\x8B\x4D\x2A\x33\xC0\x85\xC9\x74" "linux" "@_Z13GetWeaponInfo10CSWeaponID" + "mac" "@_Z13GetWeaponInfo10CSWeaponID" } //In CS:GO this is actually CCSGameRules::CheckRestartRound(void) but to keep same gamedata as cs:s. "CheckWinLimit" @@ -99,18 +107,21 @@ "library" "server" "windows" "\x55\x8B\xEC\x83\xEC\x2A\x56\x57\x8B\xF9\x8B\x0D\x2A\x2A\x2A\x2A\x81\xF9\x2A\x2A\x2A\x2A\x75\x2A\x8B" "linux" "@_ZN12CCSGameRules17CheckRestartRoundEv" + "mac" "@_ZN12CCSGameRules17CheckRestartRoundEv" } "IncrementNumMVPs" { "library" "server" "windows" "\x55\x8B\xEC\xA1\x2A\x2A\x2A\x2A\x8B\x50\x2A\x57\x8B\xF9\xB9\x2A\x2A\x2A\x2A\xFF\xD2\x85\xC0\x74\x2A\x68" "linux" "@_ZN9CCSPlayer16IncrementNumMVPsE13CSMvpReason_t" + "mac" "@_ZN9CCSPlayer16IncrementNumMVPsE13CSMvpReason_t" } "AliasToWeaponID" { "library" "server" "windows" "\x55\x8B\xEC\x56\x57\x8B\x2A\x2A\x85\xFF\x74\x2A\x33\xF6\x8B\xFF" "linux" "@_Z15AliasToWeaponIDPKc" + "mac" "@_Z15AliasToWeaponIDPKc" } } } diff --git a/loader/version.rc b/loader/version.rc index f21a42a1..45f44460 100644 --- a/loader/version.rc +++ b/loader/version.rc @@ -29,8 +29,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US // VS_VERSION_INFO VERSIONINFO - FILEVERSION SM_FILE_VERSION - PRODUCTVERSION SM_FILE_VERSION + FILEVERSION SM_VERSION_FILE + PRODUCTVERSION SM_VERSION_FILE FILEFLAGSMASK 0x17L #ifdef _DEBUG FILEFLAGS 0x1L @@ -47,12 +47,12 @@ BEGIN BEGIN VALUE "Comments", "SourceMod Loader" VALUE "FileDescription", "SourceMod Loader" - VALUE "FileVersion", SM_FULL_VERSION + VALUE "FileVersion", SM_VERSION_STRING VALUE "InternalName", "sourcemod" VALUE "LegalCopyright", "Copyright (c) 2004-2008, AlliedModders LLC" VALUE "OriginalFilename", "sourcemod_mm.dll" VALUE "ProductName", "SourceMod Loader" - VALUE "ProductVersion", SM_FULL_VERSION + VALUE "ProductVersion", SM_VERSION_STRING END END BLOCK "VarFileInfo" diff --git a/plugins/AMBuilder b/plugins/AMBuilder index 6763f4c1..e31cf175 100644 --- a/plugins/AMBuilder +++ b/plugins/AMBuilder @@ -36,15 +36,18 @@ spcomp = os.path.join(AMBuild.outputFolder, 'spcomp', 'spcomp') includes = os.path.relpath(os.path.join(AMBuild.sourceFolder, 'plugins', 'include'), os.path.join(AMBuild.outputFolder, 'plugins')) +versioninc = os.path.relpath(os.path.join(AMBuild.outputFolder, 'includes'), + os.path.join(AMBuild.outputFolder, 'plugins')) + #This one has to be special sp = os.path.join(AMBuild.sourceFolder, 'plugins', 'admin-flatfile', 'admin-flatfile.sp') -args = [spcomp, '-i' + includes, sp] +args = [spcomp, 'SM_GENERATED_BUILD=', '-i' + versioninc, '-i' + includes, sp] plugins.AddCommand(command.DirectCommand(args)) #Do the normal ones for file in files: sp = os.path.join(AMBuild.sourceFolder, 'plugins', file) - args = [spcomp, '-i' + includes, sp] + args = [spcomp, 'SM_GENERATED_BUILD=', '-i' + versioninc, '-i' + includes, sp] plugins.AddCommand(command.DirectCommand(args)) diff --git a/plugins/include/version.inc b/plugins/include/version.inc index 1cdd1447..92a55664 100644 --- a/plugins/include/version.inc +++ b/plugins/include/version.inc @@ -35,8 +35,15 @@ #endif #define _version_included +#if defined SM_GENERATED_BUILD +#include +#else +#define SOURCEMOD_V_TAG "manual" +#define SOURCEMOD_V_REV 0 +#define SOURCEMOD_V_CSET "0" #define SOURCEMOD_V_MAJOR 1 /**< SourceMod Major version */ #define SOURCEMOD_V_MINOR 5 /**< SourceMod Minor version */ #define SOURCEMOD_V_RELEASE 0 /**< SourceMod Release version */ -#define SOURCEMOD_VERSION "1.5.0-dev" /**< SourceMod version string (major.minor.release.build) */ +#define SOURCEMOD_VERSION "1.5.0-manual" /**< SourceMod version string (major.minor.release.build) */ +#endif diff --git a/public/mms_sample_ext/Makefile b/public/mms_sample_ext/Makefile index 84b02f7a..acc7b9cf 100644 --- a/public/mms_sample_ext/Makefile +++ b/public/mms_sample_ext/Makefile @@ -27,6 +27,7 @@ C_DEBUG_FLAGS = -D_DEBUG -DDEBUG -g -ggdb3 C_GCC4_FLAGS = -fvisibility=hidden CPP_GCC4_FLAGS = -fvisibility-inlines-hidden CPP = gcc +CPP_OSX = clang ########################## ### SDK CONFIGURATIONS ### @@ -116,7 +117,7 @@ INCLUDE += -I. -I.. -I$(HL2PUB) -I$(HL2PUB)/engine -I$(HL2PUB)/tier0 -I$(HL2PUB) CFLAGS += -DPOSIX -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp -Dstrnicmp=strncasecmp \ -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp -DCOMPILER_GCC -Wall -Werror \ - -Wno-switch -Wno-unused -mfpmath=sse -msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H -m32 + -Wno-overloaded-virtual -Wno-switch -Wno-unused -msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H -m32 CPPFLAGS += -Wno-non-virtual-dtor -fno-exceptions -fno-rtti ################################################ @@ -134,8 +135,9 @@ else endif ifeq "$(OS)" "Darwin" + CPP = $(CPP_OSX) LIB_EXT = dylib - CFLAGS += -isysroot /Developer/SDKs/MacOSX10.5.sdk + CFLAGS += -DOSX -D_OSX LINK += -dynamiclib -lstdc++ -mmacosx-version-min=10.5 else LIB_EXT = so @@ -143,12 +145,37 @@ else LINK += -shared endif -GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1) -ifeq "$(GCC_VERSION)" "4" +IS_CLANG := $(shell $(CPP) --version | head -1 | grep clang > /dev/null && echo "1" || echo "0") + +ifeq "$(IS_CLANG)" "1" + CPP_MAJOR := $(shell $(CPP) --version | grep clang | sed "s/.*version \([0-9]\)*\.[0-9]*.*/\1/") + CPP_MINOR := $(shell $(CPP) --version | grep clang | sed "s/.*version [0-9]*\.\([0-9]\)*.*/\1/") +else + CPP_MAJOR := $(shell $(CPP) -dumpversion >&1 | cut -b1) + CPP_MINOR := $(shell $(CPP) -dumpversion >&1 | cut -b3) +endif + +# If not clang +ifeq "$(IS_CLANG)" "0" + CFLAGS += -mfpmath=sse +endif + +# Clang || GCC >= 4 +ifeq "$(shell expr $(IS_CLANG) \| $(CPP_MAJOR) \>= 4)" "1" CFLAGS += $(C_GCC4_FLAGS) CPPFLAGS += $(CPP_GCC4_FLAGS) endif +# Clang >= 3 || GCC >= 4.7 +ifeq "$(shell expr $(IS_CLANG) \& $(CPP_MAJOR) \>= 3 \| $(CPP_MAJOR) \>= 4 \& $(CPP_MINOR) \>= 7)" "1" + CFLAGS += -Wno-delete-non-virtual-dtor +endif + +# OS is Linux and not using clang +ifeq "$(shell expr $(OS) \= Linux \& $(IS_CLANG) \= 0)" "1" + LINK += -static-libgcc +endif + OBJ_BIN := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) # This will break if we include other Makefiles, but is fine for now. It allows diff --git a/public/sample_ext/Makefile b/public/sample_ext/Makefile index 268ec4ea..a73a3188 100644 --- a/public/sample_ext/Makefile +++ b/public/sample_ext/Makefile @@ -35,6 +35,7 @@ C_DEBUG_FLAGS = -D_DEBUG -DDEBUG -g -ggdb3 C_GCC4_FLAGS = -fvisibility=hidden CPP_GCC4_FLAGS = -fvisibility-inlines-hidden CPP = gcc +CPP_OSX = clang ########################## ### SDK CONFIGURATIONS ### @@ -129,7 +130,7 @@ LINK += -m32 -lm -ldl CFLAGS += -DPOSIX -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp -Dstrnicmp=strncasecmp \ -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp -DCOMPILER_GCC -Wall -Werror \ - -Wno-switch -Wno-unused -mfpmath=sse -msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H -m32 + -Wno-overloaded-virtual -Wno-switch -Wno-unused -msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H -m32 CPPFLAGS += -Wno-non-virtual-dtor -fno-exceptions -fno-rtti ################################################ @@ -151,8 +152,9 @@ ifeq "$(USEMETA)" "true" endif ifeq "$(OS)" "Darwin" + CPP = $(CPP_OSX) LIB_EXT = dylib - CFLAGS += -isysroot /Developer/SDKs/MacOSX10.5.sdk + CFLAGS += -DOSX -D_OSX LINK += -dynamiclib -lstdc++ -mmacosx-version-min=10.5 else LIB_EXT = so @@ -160,12 +162,37 @@ else LINK += -shared endif -GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1) -ifeq "$(GCC_VERSION)" "4" +IS_CLANG := $(shell $(CPP) --version | head -1 | grep clang > /dev/null && echo "1" || echo "0") + +ifeq "$(IS_CLANG)" "1" + CPP_MAJOR := $(shell $(CPP) --version | grep clang | sed "s/.*version \([0-9]\)*\.[0-9]*.*/\1/") + CPP_MINOR := $(shell $(CPP) --version | grep clang | sed "s/.*version [0-9]*\.\([0-9]\)*.*/\1/") +else + CPP_MAJOR := $(shell $(CPP) -dumpversion >&1 | cut -b1) + CPP_MINOR := $(shell $(CPP) -dumpversion >&1 | cut -b3) +endif + +# If not clang +ifeq "$(IS_CLANG)" "0" + CFLAGS += -mfpmath=sse +endif + +# Clang || GCC >= 4 +ifeq "$(shell expr $(IS_CLANG) \| $(CPP_MAJOR) \>= 4)" "1" CFLAGS += $(C_GCC4_FLAGS) CPPFLAGS += $(CPP_GCC4_FLAGS) endif +# Clang >= 3 || GCC >= 4.7 +ifeq "$(shell expr $(IS_CLANG) \& $(CPP_MAJOR) \>= 3 \| $(CPP_MAJOR) \>= 4 \& $(CPP_MINOR) \>= 7)" "1" + CFLAGS += -Wno-delete-non-virtual-dtor +endif + +# OS is Linux and not using clang +ifeq "$(shell expr $(OS) \= Linux \& $(IS_CLANG) \= 0)" "1" + LINK += -static-libgcc +endif + OBJ_BIN := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) # This will break if we include other Makefiles, but is fine for now. It allows diff --git a/public/sourcemod_version.h b/public/sourcemod_version.h index 5bc3293a..cb8045bf 100644 --- a/public/sourcemod_version.h +++ b/public/sourcemod_version.h @@ -41,10 +41,17 @@ #if defined SM_GENERATED_BUILD #include #else -#define SM_BUILD_STRING "-pdev" -#define SM_BUILD_UNIQUEID "2650:5d34bc3edbfa" SM_BUILD_STRING -#define SM_FULL_VERSION "1.3.0" SM_BUILD_STRING -#define SM_FILE_VERSION 1,3,0,0 +#define SM_BUILD_TAG "manual" +#define SM_BUILD_REV "0" +#define SM_BUILD_CSET "0" +#define SM_BUILD_MAJOR "1" +#define SM_BUILD_MINOR "5" +#define SM_BUILD_RELEASE "0" + +#define SM_BUILD_UNIQUEID SM_BUILD_REV ":" SM_BUILD_CSET + +#define SM_VERSION_STRING SM_BUILD_MAJOR "." SM_BUILD_MINOR "." SM_BUILD_RELEASE "-" SM_BUILD_TAG +#define SM_VERSION_FILE 1,5,0,0 #endif #define SM_BUILD_TIMESTAMP __DATE__ " " __TIME__ diff --git a/sourcepawn/compiler/AMBuilder b/sourcepawn/compiler/AMBuilder index f7982203..7dbb6f2b 100644 --- a/sourcepawn/compiler/AMBuilder +++ b/sourcepawn/compiler/AMBuilder @@ -61,8 +61,11 @@ if AMBuild.target['platform'] == 'linux': binary.AddSourceFiles('sourcepawn/compiler', files) if AMBuild.target['platform'] == 'windows': - env = {'RCDEFINES': ['BINARY_NAME="' + binary.binaryFile + '"']} + env = {'RCDEFINES': ['BINARY_NAME="' + binary.binaryFile + '"', 'SM_GENERATED_BUILD']} binary.AddResourceFile('sourcepawn/compiler/libpawnc.rc', env) +elif AMBuild.target['platform'] == 'darwin' and isinstance(binary, Cpp.LibraryBuilder): + binary.compiler['POSTLINKFLAGS'].extend(['-compatibility_version', '1.0.0']) + binary.compiler['POSTLINKFLAGS'].extend(['-current_version', AMBuild.cache['version']]) binary.SendToJob() diff --git a/sourcepawn/compiler/libpawnc.rc b/sourcepawn/compiler/libpawnc.rc index e47c3306..c9f1d7c4 100644 --- a/sourcepawn/compiler/libpawnc.rc +++ b/sourcepawn/compiler/libpawnc.rc @@ -19,8 +19,8 @@ AppIcon ICON "pawn.ico" #define VERSIONPRODUCTNAME "smcomp\0" VS_VERSION_INFO VERSIONINFO -FILEVERSION SM_FILE_VERSION -PRODUCTVERSION SM_FILE_VERSION +FILEVERSION SM_VERSION_FILE +PRODUCTVERSION SM_VERSION_FILE FILEFLAGSMASK 0x0000003FL FILEFLAGS 0 #if defined(WIN32) @@ -36,12 +36,12 @@ BEGIN BEGIN VALUE "CompanyName", "(C)1998-2006 ITB CompuPhase, AlliedModders LLC\0" VALUE "FileDescription", VERSIONDESCRIPTION - VALUE "FileVersion", SM_FULL_VERSION + VALUE "FileVersion", SM_VERSION_STRING VALUE "InternalName", VERSIONNAME VALUE "LegalCopyright", "(C)1998-2006 ITB CompuPhase, AlliedModders LLC\0" VALUE "OriginalFilename", VERSIONNAME VALUE "ProductName", VERSIONPRODUCTNAME - VALUE "ProductVersion", SM_FULL_VERSION + VALUE "ProductVersion", SM_VERSION_STRING END END diff --git a/sourcepawn/compiler/sc1.c b/sourcepawn/compiler/sc1.c index 543a1d26..21eaa64a 100644 --- a/sourcepawn/compiler/sc1.c +++ b/sourcepawn/compiler/sc1.c @@ -1233,7 +1233,7 @@ static void setconfig(char *root) static void setcaption(void) { - pc_printf("SourcePawn Compiler " SM_FULL_VERSION "\n"); + pc_printf("SourcePawn Compiler " SM_VERSION_STRING "\n"); pc_printf("Copyright (c) 1997-2006, ITB CompuPhase, (C)2004-2008 AlliedModders, LLC\n\n"); } diff --git a/sourcepawn/jit/engine2.cpp b/sourcepawn/jit/engine2.cpp index 4f1328bf..f17a98b4 100644 --- a/sourcepawn/jit/engine2.cpp +++ b/sourcepawn/jit/engine2.cpp @@ -149,7 +149,7 @@ const char *SourcePawnEngine2::GetEngineName() const char *SourcePawnEngine2::GetVersionString() { - return SM_FULL_VERSION; + return SM_VERSION_STRING; } IProfiler *SourcePawnEngine2::GetProfiler() diff --git a/sourcepawn/jit/version.rc b/sourcepawn/jit/version.rc index 5e05f84e..d79b5214 100644 --- a/sourcepawn/jit/version.rc +++ b/sourcepawn/jit/version.rc @@ -28,8 +28,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US // VS_VERSION_INFO VERSIONINFO - FILEVERSION SM_FILE_VERSION - PRODUCTVERSION SM_FILE_VERSION + FILEVERSION SM_VERSION_FILE + PRODUCTVERSION SM_VERSION_FILE FILEFLAGSMASK 0x17L #ifdef _DEBUG FILEFLAGS 0x1L @@ -46,12 +46,12 @@ BEGIN BEGIN VALUE "Comments", "SourcePawn JIT" VALUE "FileDescription", "SourcePawn JIT/Virtual Machine" - VALUE "FileVersion", SM_FULL_VERSION + VALUE "FileVersion", SM_VERSION_STRING VALUE "InternalName", "sourcemod" VALUE "LegalCopyright", "Copyright (c) 2004-2008, AlliedModders LLC" VALUE "OriginalFilename", "sourcepawn.jit.x86.dll" VALUE "ProductName", "SourcePawn JIT" - VALUE "ProductVersion", SM_FULL_VERSION + VALUE "ProductVersion", SM_VERSION_STRING END END BLOCK "VarFileInfo" diff --git a/tools/buildbot/PackageScript b/tools/buildbot/PackageScript index b52c5027..cf7ed709 100644 --- a/tools/buildbot/PackageScript +++ b/tools/buildbot/PackageScript @@ -228,8 +228,7 @@ AddNormalLibrary('dbi.mysql.ext', 'extensions') AddNormalLibrary('dbi.sqlite.ext', 'extensions') AddNormalLibrary('game.cstrike.ext.2.css', 'extensions') -if AMBuild.target['platform'] != 'darwin': - AddNormalLibrary('game.cstrike.ext.2.csgo', 'extensions') +AddNormalLibrary('game.cstrike.ext.2.csgo', 'extensions') AddNormalLibrary('game.tf2.ext.2.ep2v', 'extensions') AddNormalLibrary('topmenus.ext', 'extensions') diff --git a/tools/buildbot/Versioning b/tools/buildbot/Versioning index 73961e18..ec508890 100644 --- a/tools/buildbot/Versioning +++ b/tools/buildbot/Versioning @@ -27,11 +27,17 @@ def PerformReversioning(): productFile = open(os.path.join(AMBuild.sourceFolder, 'product.version'), 'r') productContents = productFile.read() productFile.close() - m = re.match('(\d+)\.(\d+)\.(\d+)(.*)', productContents) + m = re.match('(\d+)\.(\d+)\.(\d+)-?(.*)', productContents) if m == None: raise Exception('Could not detremine product version') major, minor, release, tag = m.groups() - + + fullstring = "{0}.{1}.{2}".format(major, minor, release) + if tag != "": + fullstring += "-{0}".format(tag) + if tag == "dev": + fullstring += "+{0}".format(rev) + incFolder = os.path.join(AMBuild.outputFolder, 'includes') if not os.path.isdir(incFolder): os.makedirs(incFolder) @@ -40,14 +46,40 @@ def PerformReversioning(): #ifndef _SOURCEMOD_AUTO_VERSION_INFORMATION_H_ #define _SOURCEMOD_AUTO_VERSION_INFORMATION_H_ -#define SM_BUILD_STRING \"{0}\" -#define SM_BUILD_UNIQUEID \"{1}:{2}\" SM_BUILD_STRING -#define SM_FULL_VERSION \"{3}.{4}.{5}\" SM_BUILD_STRING -#define SM_FILE_VERSION {6},{7},{8},0 +#define SM_BUILD_TAG \"{0}\" +#define SM_BUILD_REV \"{1}\" +#define SM_BUILD_CSET \"{2}\" +#define SM_BUILD_MAJOR \"{3}\" +#define SM_BUILD_MINOR \"{4}\" +#define SM_BUILD_RELEASE \"{5}\" + +#define SM_BUILD_UNIQUEID SM_BUILD_REV \":\" SM_BUILD_CSET + +#define SM_VERSION_STRING \"{6}\" +#define SM_VERSION_FILE {7},{8},{9},0 #endif /* _SOURCEMOD_AUTO_VERSION_INFORMATION_H_ */ -""".format(tag, rev, cset, major, minor, release, major, minor, release)) +""".format(tag, rev, cset, major, minor, release, fullstring, major, minor, release)) + incFile.close() + + incFile = open(os.path.join(incFolder, 'version_auto.inc'), 'w') + incFile.write(""" +#if defined _auto_version_included + #endinput +#endif +#define _auto_version_included + +#define SOURCEMOD_V_TAG \"{0}\" +#define SOURCEMOD_V_REV {1} +#define SOURCEMOD_V_CSET \"{2}\" +#define SOURCEMOD_V_MAJOR {3} +#define SOURCEMOD_V_MINOR {4} +#define SOURCEMOD_V_RELEASE {5} + +#define SOURCEMOD_VERSION \"{6}\" + +""".format(tag, rev, cset, major, minor, release, fullstring)) incFile.close() cache.WriteCache()