dvander@2784: # vim: set ts=2 sw=2 tw=99 noet ft=python: dvander@2784: import os dvander@2784: dvander@2784: compiler = SM.DefaultCompiler() dvander@2784: compiler['CINCLUDES'].append(os.path.join(AMBuild.sourceFolder, 'public')) dvander@2784: compiler['CINCLUDES'].append(os.path.join(AMBuild.sourceFolder, 'public', 'sourcepawn')) dvander@2784: compiler['CINCLUDES'].append(os.path.join(AMBuild.sourceFolder, 'sourcepawn', 'compiler')) dvander@2784: compiler['CINCLUDES'].append(os.path.join(AMBuild.outputFolder, 'includes')) dvander@2784: ds@3261: if compiler.cc.name == 'gcc' or compiler.cc.name == 'clang': kyle@3951: compiler['CFLAGS'].append('-Wno-format') dvander@2983: if AMBuild.target['platform'] == 'linux': dvander@2983: compiler['POSTLINKFLAGS'].extend(['-lgcc', '-lm']) dvander@2784: elif compiler.cc.name == 'msvc': dvander@2784: compiler['POSTLINKFLAGS'].remove('/SUBSYSTEM:WINDOWS') dvander@2784: compiler['POSTLINKFLAGS'].append('/SUBSYSTEM:CONSOLE') dvander@2784: dvander@2784: if AMBuild.target['platform'] == 'linux': skamonkey@3444: compiler['CDEFINES'].extend(['LINUX', 'HAVE_STDINT_H', 'AMX_ANSIONLY', 'ENABLE_BINRELOC', '_GNU_SOURCE']) dvander@2983: elif AMBuild.target['platform'] == 'darwin': dvander@2983: compiler['CDEFINES'].extend(['DARWIN', 'HAVE_STDINT_H', 'AMX_ANSIONLY', 'ENABLE_BINRELOC']) dvander@2784: dvander@2784: extension = AMBuild.AddJob('spcomp') dvander@2784: binary = Cpp.ExecutableBuilder('spcomp', AMBuild, extension, compiler) dvander@2784: files = [ dvander@2784: 'libpawnc.c', dvander@2784: 'lstring.c', dvander@2784: 'memfile.c', dvander@2784: 'pawncc.c', dvander@2784: 'sc1.c', dvander@2784: 'sc2.c', dvander@2784: 'sc3.c', dvander@2784: 'sc4.c', dvander@2784: 'sc5.c', dvander@2784: 'sc6.c', dvander@2784: 'sc7.c', dvander@2784: 'scexpand.c', dvander@2784: 'sci18n.c', dvander@2784: 'sclist.c', dvander@2784: 'scmemfil.c', dvander@2784: 'scstate.c', dvander@2784: 'sctracker.c', dvander@2784: 'scvars.c', dvander@2784: 'sp_file.c', dvander@2784: 'zlib/adler32.c', dvander@2784: 'zlib/compress.c', dvander@2784: 'zlib/crc32.c', dvander@2784: 'zlib/deflate.c', dvander@2784: 'zlib/gzio.c', dvander@2784: 'zlib/infback.c', dvander@2784: 'zlib/inffast.c', dvander@2784: 'zlib/inflate.c', dvander@2784: 'zlib/inftrees.c', dvander@2784: 'zlib/trees.c', dvander@2784: 'zlib/uncompr.c', dvander@3075: 'zlib/zutil.c', dvander@3075: 'sp_symhash.c' dvander@2784: ] dvander@2784: if AMBuild.target['platform'] == 'linux': dvander@2784: files.append('binreloc.c') dvander@2784: binary.AddSourceFiles('sourcepawn/compiler', files) dvander@2784: dvander@2784: if AMBuild.target['platform'] == 'windows': asherkin@3630: env = {'RCDEFINES': ['BINARY_NAME="' + binary.binaryFile + '"', 'SM_GENERATED_BUILD']} dvander@2784: binary.AddResourceFile('sourcepawn/compiler/libpawnc.rc', env) asherkin@3630: elif AMBuild.target['platform'] == 'darwin' and isinstance(binary, Cpp.LibraryBuilder): asherkin@3630: binary.compiler['POSTLINKFLAGS'].extend(['-compatibility_version', '1.0.0']) asherkin@3630: binary.compiler['POSTLINKFLAGS'].extend(['-current_version', AMBuild.cache['version']]) dvander@2784: asherkin@3835: SM.ExtractDebugInfo(extension, binary) dvander@2784: binary.SendToJob() asherkin@3477: