fix build for latest sourcemod
This commit is contained in:
		
							parent
							
								
									70fc7c26a0
								
							
						
					
					
						commit
						d10eb1305d
					
				
							
								
								
									
										290
									
								
								AMBuildScript
									
									
									
									
									
								
							
							
						
						
									
										290
									
								
								AMBuildScript
									
									
									
									
									
								
							| @ -12,7 +12,7 @@ class SDK(object): | |||||||
|     self.define = name |     self.define = name | ||||||
|     self.platform = platform |     self.platform = platform | ||||||
|     self.name = dir |     self.name = dir | ||||||
|     self.path = None |     self.path = None # Actual path | ||||||
| 
 | 
 | ||||||
| WinOnly = ['windows'] | WinOnly = ['windows'] | ||||||
| WinLinux = ['windows', 'linux'] | WinLinux = ['windows', 'linux'] | ||||||
| @ -111,140 +111,168 @@ class ExtensionConfig(object): | |||||||
|     cxx = builder.DetectCompilers() |     cxx = builder.DetectCompilers() | ||||||
| 
 | 
 | ||||||
|     if cxx.like('gcc'): |     if cxx.like('gcc'): | ||||||
|       cxx.defines += [ |       self.configure_gcc(cxx) | ||||||
|         'stricmp=strcasecmp', |  | ||||||
|         '_stricmp=strcasecmp', |  | ||||||
|         '_snprintf=snprintf', |  | ||||||
|         '_vsnprintf=vsnprintf', |  | ||||||
|         'HAVE_STDINT_H', |  | ||||||
|         'GNUC', |  | ||||||
|       ] |  | ||||||
|       cxx.cflags += [ |  | ||||||
|         '-pipe', |  | ||||||
|         '-fno-strict-aliasing', |  | ||||||
|         '-Wall', |  | ||||||
| #        '-Werror', |  | ||||||
|         '-Wno-unused', |  | ||||||
|         '-Wno-switch', |  | ||||||
|         '-Wno-array-bounds', |  | ||||||
|         '-msse', |  | ||||||
|         '-m32', |  | ||||||
|       ] |  | ||||||
|       cxx.cxxflags += [ |  | ||||||
|         '-std=c++11', |  | ||||||
|       ] |  | ||||||
| 
 |  | ||||||
|       have_gcc = cxx.vendor == 'gcc' |  | ||||||
|       have_clang = cxx.vendor == 'clang' |  | ||||||
|       if have_clang or (have_gcc and cxx.version >= '4'): |  | ||||||
|         cxx.cflags += ['-fvisibility=hidden'] |  | ||||||
|         cxx.cxxflags += ['-fvisibility-inlines-hidden'] |  | ||||||
|         if have_clang or (have_gcc and cxx.version >= '4.6'): |  | ||||||
|           cxx.cflags += ['-Wno-narrowing'] |  | ||||||
|         if (have_gcc and cxx.version >= '4.7') or (have_clang and cxx.version >= '3'): |  | ||||||
|           cxx.cxxflags += ['-Wno-delete-non-virtual-dtor'] |  | ||||||
|         if have_gcc and cxx.version >= '4.8': |  | ||||||
|           cxx.cflags += ['-Wno-unused-result'] |  | ||||||
|       if have_clang: |  | ||||||
|         cxx.cxxflags += ['-Wno-implicit-exception-spec-mismatch'] |  | ||||||
|         if cxx.version >= 'apple-clang-5.1' or cxx.version >= 'clang-3.4': |  | ||||||
|           cxx.cxxflags += ['-Wno-deprecated-register'] |  | ||||||
|         else: |  | ||||||
|           cxx.cxxflags += ['-Wno-deprecated'] |  | ||||||
|         cxx.cflags += ['-Wno-sometimes-uninitialized'] |  | ||||||
| 
 |  | ||||||
|       cxx.linkflags += ['-m32'] |  | ||||||
|       cxx.cxxflags += [ |  | ||||||
|         '-fno-exceptions', |  | ||||||
|         '-fno-threadsafe-statics', |  | ||||||
|         '-Wno-non-virtual-dtor', |  | ||||||
|         '-Wno-overloaded-virtual', |  | ||||||
|       ] |  | ||||||
| 
 |  | ||||||
|       if have_gcc: |  | ||||||
|         cxx.cflags += ['-mfpmath=sse'] |  | ||||||
|     elif cxx.vendor == 'msvc': |     elif cxx.vendor == 'msvc': | ||||||
|       if builder.options.debug == '1': |       self.configure_msvc(cxx) | ||||||
|         cxx.cflags += ['/MTd'] |  | ||||||
|         cxx.linkflags += ['/NODEFAULTLIB:libcmt'] |  | ||||||
|       else: |  | ||||||
|         cxx.cflags += ['/MT'] |  | ||||||
|       cxx.defines += [ |  | ||||||
|         '_CRT_SECURE_NO_DEPRECATE', |  | ||||||
|         '_CRT_SECURE_NO_WARNINGS', |  | ||||||
|         '_CRT_NONSTDC_NO_DEPRECATE', |  | ||||||
|         '_ITERATOR_DEBUG_LEVEL=0', |  | ||||||
|       ] |  | ||||||
|       cxx.cflags += [ |  | ||||||
|         '/W3', |  | ||||||
|       ] |  | ||||||
|       cxx.cxxflags += [ |  | ||||||
|         '/EHsc', |  | ||||||
|         '/GR-', |  | ||||||
|         '/TP', |  | ||||||
|       ] |  | ||||||
|       cxx.linkflags += [ |  | ||||||
|         '/MACHINE:X86', |  | ||||||
|         'kernel32.lib', |  | ||||||
|         'user32.lib', |  | ||||||
|         'gdi32.lib', |  | ||||||
|         'winspool.lib', |  | ||||||
|         'comdlg32.lib', |  | ||||||
|         'advapi32.lib', |  | ||||||
|         'shell32.lib', |  | ||||||
|         'ole32.lib', |  | ||||||
|         'oleaut32.lib', |  | ||||||
|         'uuid.lib', |  | ||||||
|         'odbc32.lib', |  | ||||||
|         'odbccp32.lib', |  | ||||||
|       ]  |  | ||||||
| 
 | 
 | ||||||
|     # Optimization |     # Optimizaiton | ||||||
|     if builder.options.opt == '1': |     if builder.options.opt == '1': | ||||||
|       cxx.defines += ['NDEBUG'] |       cxx.defines += ['NDEBUG'] | ||||||
|       if cxx.like('gcc'): |  | ||||||
|         cxx.cflags += ['-O3'] |  | ||||||
|       elif cxx.like('msvc'): |  | ||||||
|         cxx.cflags += ['/Ox', '/Zo'] |  | ||||||
|         cxx.linkflags += ['/OPT:ICF', '/OPT:REF'] |  | ||||||
| 
 | 
 | ||||||
|     # Debugging |     # Debugging | ||||||
|     if builder.options.debug == '1': |     if builder.options.debug == '1': | ||||||
|       cxx.defines += ['DEBUG', '_DEBUG'] |       cxx.defines += ['DEBUG', '_DEBUG'] | ||||||
|       if cxx.like('msvc'): |  | ||||||
|         cxx.cflags += ['/Od', '/RTC1'] |  | ||||||
| 
 |  | ||||||
|     # This needs to be after our optimization flags which could otherwise disable it. |  | ||||||
|     if cxx.vendor == 'msvc': |  | ||||||
|       # Don't omit the frame pointer. |  | ||||||
|       cxx.cflags += ['/Oy-'] |  | ||||||
| 
 | 
 | ||||||
|     # Platform-specifics |     # Platform-specifics | ||||||
|     if builder.target_platform == 'linux': |     if builder.target_platform == 'linux': | ||||||
|       cxx.defines += ['_LINUX', 'POSIX'] |       self.configure_linux(cxx) | ||||||
|       cxx.linkflags += ['-lm'] |  | ||||||
|       if cxx.vendor == 'gcc': |  | ||||||
|         cxx.linkflags += ['-static-libgcc'] |  | ||||||
|       elif cxx.vendor == 'clang': |  | ||||||
|         cxx.linkflags += ['-lgcc_eh'] |  | ||||||
|     elif builder.target_platform == 'mac': |     elif builder.target_platform == 'mac': | ||||||
|       cxx.defines += ['OSX', '_OSX', 'POSIX'] |       self.configure_mac(cxx) | ||||||
|       cxx.cflags += ['-mmacosx-version-min=10.5'] |  | ||||||
|       cxx.linkflags += [ |  | ||||||
|         '-mmacosx-version-min=10.5', |  | ||||||
|         '-arch', 'i386', |  | ||||||
|         '-lstdc++', |  | ||||||
|         '-stdlib=libstdc++', |  | ||||||
|       ] |  | ||||||
|       cxx.cxxflags += ['-stdlib=libstdc++'] |  | ||||||
|     elif builder.target_platform == 'windows': |     elif builder.target_platform == 'windows': | ||||||
|       cxx.defines += ['WIN32', '_WINDOWS'] |       self.configure_windows(cxx) | ||||||
| 
 | 
 | ||||||
|     # Finish up. |     # Finish up. | ||||||
|     cxx.includes += [ |     cxx.includes += [ | ||||||
|       os.path.join(self.sm_root, 'public'), |       os.path.join(self.sm_root, 'public'), | ||||||
|     ] |     ] | ||||||
| 	 | 
 | ||||||
|  |   def configure_gcc(self, cxx): | ||||||
|  |     cxx.defines += [ | ||||||
|  |       'stricmp=strcasecmp', | ||||||
|  |       '_stricmp=strcasecmp', | ||||||
|  |       '_snprintf=snprintf', | ||||||
|  |       '_vsnprintf=vsnprintf', | ||||||
|  |       'HAVE_STDINT_H', | ||||||
|  |       'GNUC', | ||||||
|  |     ] | ||||||
|  |     cxx.cflags += [ | ||||||
|  |       '-pipe', | ||||||
|  |       '-fno-strict-aliasing', | ||||||
|  |       '-Wall', | ||||||
|  |       '-Werror', | ||||||
|  |       '-Wno-unused', | ||||||
|  |       '-Wno-switch', | ||||||
|  |       '-Wno-array-bounds', | ||||||
|  |       '-msse', | ||||||
|  |       '-m32', | ||||||
|  |       '-fvisibility=hidden', | ||||||
|  |     ] | ||||||
|  |     cxx.cxxflags += [ | ||||||
|  |       '-std=c++11', | ||||||
|  |       '-fno-exceptions', | ||||||
|  |       '-fno-threadsafe-statics', | ||||||
|  |       '-Wno-non-virtual-dtor', | ||||||
|  |       '-Wno-overloaded-virtual', | ||||||
|  |       '-fvisibility-inlines-hidden', | ||||||
|  |     ] | ||||||
|  |     cxx.linkflags += ['-m32'] | ||||||
|  | 
 | ||||||
|  |     have_gcc = cxx.vendor == 'gcc' | ||||||
|  |     have_clang = cxx.vendor == 'clang' | ||||||
|  |     if cxx.version >= 'clang-3.6': | ||||||
|  |       cxx.cxxflags += ['-Wno-inconsistent-missing-override'] | ||||||
|  |     if have_clang or (cxx.version >= 'gcc-4.6'): | ||||||
|  |       cxx.cflags += ['-Wno-narrowing'] | ||||||
|  |     if have_clang or (cxx.version >= 'gcc-4.7'): | ||||||
|  |       cxx.cxxflags += ['-Wno-delete-non-virtual-dtor'] | ||||||
|  |     if cxx.version >= 'gcc-4.8': | ||||||
|  |       cxx.cflags += ['-Wno-unused-result'] | ||||||
|  | 
 | ||||||
|  |     if have_clang: | ||||||
|  |       cxx.cxxflags += ['-Wno-implicit-exception-spec-mismatch'] | ||||||
|  |       if cxx.version >= 'apple-clang-5.1' or cxx.version >= 'clang-3.4': | ||||||
|  |         cxx.cxxflags += ['-Wno-deprecated-register'] | ||||||
|  |       else: | ||||||
|  |         cxx.cxxflags += ['-Wno-deprecated'] | ||||||
|  |       cxx.cflags += ['-Wno-sometimes-uninitialized'] | ||||||
|  | 
 | ||||||
|  |     if have_gcc: | ||||||
|  |       cxx.cflags += ['-mfpmath=sse'] | ||||||
|  | 
 | ||||||
|  |     if builder.options.opt == '1': | ||||||
|  |       cxx.cflags += ['-O3'] | ||||||
|  | 
 | ||||||
|  |   def configure_msvc(self, cxx): | ||||||
|  |     if builder.options.debug == '1': | ||||||
|  |       cxx.cflags += ['/MTd'] | ||||||
|  |       cxx.linkflags += ['/NODEFAULTLIB:libcmt'] | ||||||
|  |     else: | ||||||
|  |       cxx.cflags += ['/MT'] | ||||||
|  |     cxx.defines += [ | ||||||
|  |       '_CRT_SECURE_NO_DEPRECATE', | ||||||
|  |       '_CRT_SECURE_NO_WARNINGS', | ||||||
|  |       '_CRT_NONSTDC_NO_DEPRECATE', | ||||||
|  |       '_ITERATOR_DEBUG_LEVEL=0', | ||||||
|  |     ] | ||||||
|  |     cxx.cflags += [ | ||||||
|  |       '/W3', | ||||||
|  |     ] | ||||||
|  |     cxx.cxxflags += [ | ||||||
|  |       '/EHsc', | ||||||
|  |       '/GR-', | ||||||
|  |       '/TP', | ||||||
|  |     ] | ||||||
|  |     cxx.linkflags += [ | ||||||
|  |       '/MACHINE:X86', | ||||||
|  |       'kernel32.lib', | ||||||
|  |       'user32.lib', | ||||||
|  |       'gdi32.lib', | ||||||
|  |       'winspool.lib', | ||||||
|  |       'comdlg32.lib', | ||||||
|  |       'advapi32.lib', | ||||||
|  |       'shell32.lib', | ||||||
|  |       'ole32.lib', | ||||||
|  |       'oleaut32.lib', | ||||||
|  |       'uuid.lib', | ||||||
|  |       'odbc32.lib', | ||||||
|  |       'odbccp32.lib', | ||||||
|  |     ] | ||||||
|  | 
 | ||||||
|  |     if builder.options.opt == '1': | ||||||
|  |       cxx.cflags += ['/Ox', '/Zo'] | ||||||
|  |       cxx.linkflags += ['/OPT:ICF', '/OPT:REF'] | ||||||
|  | 
 | ||||||
|  |     if builder.options.debug == '1': | ||||||
|  |       cxx.cflags += ['/Od', '/RTC1'] | ||||||
|  | 
 | ||||||
|  |     # This needs to be after our optimization flags which could otherwise disable it. | ||||||
|  |     # Don't omit the frame pointer. | ||||||
|  |     cxx.cflags += ['/Oy-'] | ||||||
|  | 
 | ||||||
|  |   def configure_linux(self, cxx): | ||||||
|  |     cxx.defines += ['_LINUX', 'POSIX'] | ||||||
|  |     cxx.linkflags += ['-Wl,--exclude-libs,ALL', '-lm'] | ||||||
|  |     if cxx.vendor == 'gcc': | ||||||
|  |       cxx.linkflags += ['-static-libgcc'] | ||||||
|  |     elif cxx.vendor == 'clang': | ||||||
|  |       cxx.linkflags += ['-lgcc_eh'] | ||||||
|  | 
 | ||||||
|  |   def configure_mac(self, cxx): | ||||||
|  |     cxx.defines += ['OSX', '_OSX', 'POSIX'] | ||||||
|  |     cxx.cflags += ['-mmacosx-version-min=10.5'] | ||||||
|  |     cxx.linkflags += [ | ||||||
|  |       '-mmacosx-version-min=10.5', | ||||||
|  |       '-arch', 'i386', | ||||||
|  |       '-lstdc++', | ||||||
|  |       '-stdlib=libstdc++', | ||||||
|  |     ] | ||||||
|  |     cxx.cxxflags += ['-stdlib=libstdc++'] | ||||||
|  | 
 | ||||||
|  |   def configure_windows(self, cxx): | ||||||
|  |     cxx.defines += ['WIN32', '_WINDOWS'] | ||||||
|  |    | ||||||
|  |   def ConfigureForExtension(self, context, compiler): | ||||||
|  |     compiler.cxxincludes += [ | ||||||
|  |       os.path.join(context.currentSourcePath), | ||||||
|  |       os.path.join(context.currentSourcePath, 'sdk'), | ||||||
|  |       os.path.join(self.sm_root, 'public'), | ||||||
|  |       os.path.join(self.sm_root, 'public', 'extensions'), | ||||||
|  |       os.path.join(self.sm_root, 'sourcepawn', 'include'), | ||||||
|  |       os.path.join(self.sm_root, 'public', 'amtl', 'amtl'), | ||||||
|  |       os.path.join(self.sm_root, 'public', 'amtl'), | ||||||
|  |     ] | ||||||
|  |     return compiler | ||||||
|  | 
 | ||||||
|   def ConfigureForHL2(self, binary, sdk): |   def ConfigureForHL2(self, binary, sdk): | ||||||
|     compiler = binary.compiler |     compiler = binary.compiler | ||||||
| 
 | 
 | ||||||
| @ -294,10 +322,10 @@ class ExtensionConfig(object): | |||||||
| 
 | 
 | ||||||
|     # For everything after Swarm, this needs to be defined for entity networking |     # For everything after Swarm, this needs to be defined for entity networking | ||||||
|     # to work properly with sendprop value changes. |     # to work properly with sendprop value changes. | ||||||
|     if sdk.name in ['blade', 'insurgency', 'csgo', 'dota']: |     if sdk.name in ['blade', 'insurgency', 'doi', 'csgo']: | ||||||
|       compiler.defines += ['NETWORK_VARS_ENABLED'] |       compiler.defines += ['NETWORK_VARS_ENABLED'] | ||||||
| 
 | 
 | ||||||
|     if sdk.name in ['css', 'hl2dm', 'dods', 'sdk2013', 'bms', 'tf2', 'l4d', 'nucleardawn', 'l4d2', 'dota']: |     if sdk.name in ['css', 'hl2dm', 'dods', 'sdk2013', 'bms', 'tf2', 'l4d', 'nucleardawn', 'l4d2']: | ||||||
|       if builder.target_platform in ['linux', 'mac']: |       if builder.target_platform in ['linux', 'mac']: | ||||||
|         compiler.defines += ['NO_HOOK_MALLOC', 'NO_MALLOC_OVERRIDE'] |         compiler.defines += ['NO_HOOK_MALLOC', 'NO_MALLOC_OVERRIDE'] | ||||||
| 
 | 
 | ||||||
| @ -332,14 +360,14 @@ class ExtensionConfig(object): | |||||||
|           compiler.Dep(os.path.join(lib_folder, 'mathlib_i486.a')) |           compiler.Dep(os.path.join(lib_folder, 'mathlib_i486.a')) | ||||||
|         ] |         ] | ||||||
| 
 | 
 | ||||||
|       if sdk.name in ['blade', 'insurgency', 'csgo', 'dota']: |       if sdk.name in ['blade', 'insurgency', 'doi', 'csgo']: | ||||||
|         compiler.postlink += [compiler.Dep(os.path.join(lib_folder, 'interfaces_i486.a'))] |         compiler.postlink += [compiler.Dep(os.path.join(lib_folder, 'interfaces_i486.a'))] | ||||||
| 
 | 
 | ||||||
|     dynamic_libs = [] |     dynamic_libs = [] | ||||||
|     if builder.target_platform == 'linux': |     if builder.target_platform == 'linux': | ||||||
|       if sdk.name in ['css', 'hl2dm', 'dods', 'tf2', 'sdk2013', 'bms', 'nucleardawn', 'l4d2']: |       if sdk.name in ['css', 'hl2dm', 'dods', 'tf2', 'sdk2013', 'bms', 'nucleardawn', 'l4d2', 'insurgency', 'doi']: | ||||||
|         dynamic_libs = ['libtier0_srv.so', 'libvstdlib_srv.so'] |         dynamic_libs = ['libtier0_srv.so', 'libvstdlib_srv.so'] | ||||||
|       elif sdk.name in ['l4d', 'blade', 'insurgency', 'csgo', 'dota']: |       elif sdk.name in ['l4d', 'blade', 'insurgency', 'doi', 'csgo']: | ||||||
|         dynamic_libs = ['libtier0.so', 'libvstdlib.so'] |         dynamic_libs = ['libtier0.so', 'libvstdlib.so'] | ||||||
|       else: |       else: | ||||||
|         dynamic_libs = ['tier0_i486.so', 'vstdlib_i486.so'] |         dynamic_libs = ['tier0_i486.so', 'vstdlib_i486.so'] | ||||||
| @ -348,7 +376,7 @@ class ExtensionConfig(object): | |||||||
|       dynamic_libs = ['libtier0.dylib', 'libvstdlib.dylib'] |       dynamic_libs = ['libtier0.dylib', 'libvstdlib.dylib'] | ||||||
|     elif builder.target_platform == 'windows': |     elif builder.target_platform == 'windows': | ||||||
|       libs = ['tier0', 'tier1', 'vstdlib', 'mathlib'] |       libs = ['tier0', 'tier1', 'vstdlib', 'mathlib'] | ||||||
|       if sdk.name in ['swarm', 'blade', 'insurgency', 'csgo', 'dota']: |       if sdk.name in ['swarm', 'blade', 'insurgency', 'doi', 'csgo']: | ||||||
|         libs.append('interfaces') |         libs.append('interfaces') | ||||||
|       for lib in libs: |       for lib in libs: | ||||||
|         lib_path = os.path.join(sdk.path, 'lib', 'public', lib) + '.lib' |         lib_path = os.path.join(sdk.path, 'lib', 'public', lib) + '.lib' | ||||||
| @ -369,22 +397,16 @@ class ExtensionConfig(object): | |||||||
| 
 | 
 | ||||||
|     return binary |     return binary | ||||||
| 
 | 
 | ||||||
|   def ConfigureForExtension(self, context, compiler): |   def HL2Library(self, context, name, sdk): | ||||||
|     compiler.cxxincludes += [ |     binary = context.compiler.Library(name) | ||||||
|       os.path.join(context.currentSourcePath), |     self.ConfigureForExtension(context, binary.compiler) | ||||||
|       os.path.join(context.currentSourcePath, 'sdk'), |     return self.ConfigureForHL2(binary, sdk) | ||||||
|       os.path.join(self.sm_root, 'public'), |  | ||||||
|       os.path.join(self.sm_root, 'public', 'extensions'), |  | ||||||
|       os.path.join(self.sm_root, 'sourcepawn', 'include'), |  | ||||||
|       os.path.join(self.sm_root, 'public', 'amtl', 'include'), |  | ||||||
|     ] |  | ||||||
|     return compiler |  | ||||||
| 
 | 
 | ||||||
|   def HL2Project(self, context, name): |   def HL2Project(self, context, name): | ||||||
|     project = context.compiler.LibraryProject(name) |     project = context.compiler.LibraryProject(name) | ||||||
|     self.ConfigureForExtension(context, project.compiler) |     self.ConfigureForExtension(context, project.compiler) | ||||||
|     return project |     return project | ||||||
| 	 | 
 | ||||||
|   def HL2Config(self, project, name, sdk): |   def HL2Config(self, project, name, sdk): | ||||||
|     binary = project.Configure(name, '{0} - {1}'.format(self.tag, sdk.name)) |     binary = project.Configure(name, '{0} - {1}'.format(self.tag, sdk.name)) | ||||||
|     return self.ConfigureForHL2(binary, sdk) |     return self.ConfigureForHL2(binary, sdk) | ||||||
|  | |||||||
| @ -17,7 +17,6 @@ for sdk_name in SM.sdks: | |||||||
|   sdk = SM.sdks[sdk_name] |   sdk = SM.sdks[sdk_name] | ||||||
|   binary = SM.HL2Config(project, projectName + '.ext', sdk) |   binary = SM.HL2Config(project, projectName + '.ext', sdk) | ||||||
|   binary.compiler.cxxincludes += [ |   binary.compiler.cxxincludes += [ | ||||||
|     os.path.join(SM.sm_root, 'public', 'extensions'), |  | ||||||
|     os.path.join(builder.sourcePath, 'celt') |     os.path.join(builder.sourcePath, 'celt') | ||||||
|   ] |   ] | ||||||
|   binary.compiler.linkflags += [ |   binary.compiler.linkflags += [ | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user