sourcemod/sourcepawn/compiler/AMBuilder

112 lines
2.9 KiB
Plaintext
Raw Normal View History

2014-07-24 14:54:52 +02:00
# vim: set sts=2 ts=8 sw=2 tw=99 et ft=python:
2009-08-30 09:46:56 +02:00
import os
# Build the packing binary garbage.
scpack = SM.Program(builder, 'scpack')
scpack.sources = ['scpack.c']
scpack = builder.Add(scpack)
# Generate pack files.
packed_files = ['sc5', 'sc7']
packed_includes = []
for packed_file in packed_files:
2014-07-24 14:54:52 +02:00
# The absolute path to sc5-in.scp etc.
in_path = os.path.join(builder.currentSourcePath, '{0}-in.scp'.format(packed_file))
2014-07-24 14:54:52 +02:00
# The output file relative to the output folder, i.e. sourcepawn/compiler/sc5.scp.
out_path = os.path.join(builder.buildFolder, '{0}.scp'.format(packed_file))
2014-07-24 14:54:52 +02:00
# The absolute path to the build folder, i.e. /Users/.../sourcepawn/compiler.
build_folder = os.path.join(builder.buildPath, builder.buildFolder)
2014-07-24 14:54:52 +02:00
# scpack runs in ./sourcepawn/compiler/scpack/ so we build relative paths
# from there.
scpack_argv = [
os.path.join(builder.buildPath, scpack.binary.path),
os.path.relpath(in_path, build_folder),
os.path.relpath(os.path.join(builder.buildPath, out_path), build_folder),
]
2014-07-24 14:54:52 +02:00
_, (entry,) = builder.AddCommand(
inputs = [scpack.binary, in_path],
argv = scpack_argv,
outputs = ['{0}.scp'.format(packed_file)],
)
packed_includes += [entry]
binary = SM.Program(builder, 'spcomp')
compiler = binary.compiler
compiler.includes += [
os.path.join(builder.sourcePath, 'public'),
os.path.join(builder.sourcePath, 'public', 'sourcepawn'),
os.path.join(builder.sourcePath, 'sourcepawn', 'compiler'),
os.path.join(builder.buildPath, 'includes'),
2014-07-24 14:54:52 +02:00
os.path.join(builder.buildPath, builder.buildFolder),
]
compiler.sourcedeps += packed_includes
if compiler.cc.behavior == 'gcc':
Introduce basic methodmaps (PR #38). commit 1e5213d43fdd170bb0c30af914a4e40610014b2b Author: David Anderson <dvander@alliedmods.net> Date: Sat Jun 21 04:09:27 2014 -0700 Quell MSVC C99 bugs. commit f2e166c5925fda49b5abeadc0aa0f9156b99cf11 Author: David Anderson <dvander@alliedmods.net> Date: Sat Jun 21 03:59:23 2014 -0700 Fix varying levels of stupid memory errors. commit b0773d7be45345351ab1c1738681d5215a97f3f3 Author: David Anderson <dvander@alliedmods.net> Date: Sat Jun 21 03:36:39 2014 -0700 Fix memory leak in parsing some control flow structures. commit 5aca55713cfc2dd09c5900132fc4a6be51e3e309 Author: David Anderson <dvander@alliedmods.net> Date: Sat Jun 21 03:35:17 2014 -0700 Fix memory leak in struct parsing. commit b46ec5cd281b46177e83c4f0a4acac9cc1065c53 Author: David Anderson <dvander@alliedmods.net> Date: Sat Jun 21 03:32:03 2014 -0700 Fix build. commit 17bbbb9a46bfc00862adca7d3e15369a48e9ac0f Merge: c083409 2107599 Author: David Anderson <dvander@alliedmods.net> Date: Sat Jun 21 01:26:27 2014 -0700 Merge branch 'master' into methodmaps commit c083409b569abff13f24d3b8c47f8ff199036840 Author: David Anderson <dvander@alliedmods.net> Date: Fri Jun 20 23:49:36 2014 -0700 Add VS2k13 support. commit b7993778494d538cb1c1965116030142a7f7765b Author: David Anderson <dvander@alliedmods.net> Date: Fri Jun 20 01:28:08 2014 -0700 Implement destructors. commit 1a340dec260d079ed1b79351ed7b50b58a997cea Author: David Anderson <dvander@alliedmods.net> Date: Fri Jun 20 00:08:04 2014 -0700 Add some tests. commit 12db52ee64eb009ead9294495e9034c63ab75b09 Author: David Anderson <dvander@alliedmods.net> Date: Fri Jun 20 00:05:49 2014 -0700 Initial implementation of constructors. commit 074669a658caa2822aa864164b615a244c00a0bc Author: David Anderson <dvander@alliedmods.net> Date: Thu Jun 19 22:42:35 2014 -0700 Add simple test harness. commit 27c1e3cf14e1e6c5cf35c80c792cce2744b804d7 Author: David Anderson <dvander@alliedmods.net> Date: Thu Jun 19 22:15:42 2014 -0700 Big refactoring for new syntax. commit f3c37fdc919e76ee0815e2394cbe8d221f9fc0ca Author: David Anderson <dvander@alliedmods.net> Date: Thu Jun 19 22:12:54 2014 -0700 Refactor tests for the new syntax. commit 6211f392f8e722b907474cf380cfac4347e46b8e Author: David Anderson <dvander@alliedmods.net> Date: Wed Jun 18 22:25:48 2014 -0700 Make lexer tokens an enum. commit 5210b013756b0b00de3a61c6490685c768ff8cbd Author: David Anderson <dvander@alliedmods.net> Date: Tue Jun 17 06:48:15 2014 -0700 Add comment. commit 06688ff4aced14077dd21a9cc1db4c26c7420ff3 Author: David Anderson <dvander@alliedmods.net> Date: Tue Jun 17 06:46:10 2014 -0700 Allow |this| to be a base type of the methodmap. commit 05cf3682020e0e6d9f47b1a0a6727b9edbfe7622 Author: David Anderson <dvander@alliedmods.net> Date: Mon Jun 16 22:11:58 2014 -0700 Unify duplicate typesymbol checking. commit 09161bf2691c8c1ed25b9b70fda01c336f21aa0b Author: David Anderson <dvander@alliedmods.net> Date: Mon Jun 16 19:53:36 2014 -0700 Close loophole that allowed methodmaps for enums. commit 5bb4aeba89fec47a4de7a7532d27830999d1fcb4 Author: David Anderson <dvander@alliedmods.net> Date: Mon Jun 16 01:50:42 2014 -0700 Add tests and dbi/handle changes. commit b9203e2491daec2a8073874d6375949483778d14 Author: David Anderson <dvander@alliedmods.net> Date: Mon Jun 16 01:38:29 2014 -0700 Ensure methodmap tags are fixed. commit 878b80fd87a2ea500d3a28ce2d53f616d1efe5e8 Author: David Anderson <dvander@alliedmods.net> Date: Mon Jun 16 01:36:04 2014 -0700 Implement inheritance. commit 6ba9e004fbae18ad68056368ddd0affdc78659f1 Author: David Anderson <dvander@alliedmods.net> Date: Mon Jun 16 01:31:00 2014 -0700 Refactor matchtag() to not be insane. commit 4ede6343b0682c6df98fa869153828e92f891bcc Author: David Anderson <dvander@alliedmods.net> Date: Mon Jun 16 01:20:50 2014 -0700 Fix indenting. commit e3ddef8916e3dd5f4ff0fe571d6e1c3acd163352 Author: David Anderson <dvander@alliedmods.net> Date: Mon Jun 16 01:20:27 2014 -0700 Initial prototype.
2014-06-21 13:10:15 +02:00
compiler.cflags += ['-std=c99', '-Wno-format']
if builder.target_platform == 'linux':
compiler.postlink += ['-lgcc', '-lm']
elif compiler.cc.behavior == 'msvc':
compiler.linkflags.remove('/SUBSYSTEM:WINDOWS')
compiler.linkflags.append('/SUBSYSTEM:CONSOLE')
compiler.cxxflags.remove('/TP')
if builder.target_platform == 'linux':
compiler.defines += [
'LINUX',
'HAVE_STDINT_H',
'AMX_ANSIONLY',
'ENABLE_BINRELOC',
'_GNU_SOURCE'
]
elif builder.target_platform == 'mac':
compiler.defines += [
'DARWIN',
'HAVE_STDINT_H',
'AMX_ANSIONLY',
'ENABLE_BINRELOC',
'HAVE_SAFESTR'
]
binary.sources += [
'libpawnc.c',
'lstring.c',
'memfile.c',
'pawncc.c',
'sc1.c',
'sc2.c',
'sc3.c',
'sc4.c',
'sc5.c',
'sc6.c',
'sc7.c',
'scexpand.c',
'sci18n.c',
'sclist.c',
'scmemfil.c',
'scstate.c',
'sctracker.c',
'scvars.c',
'sp_file.c',
'zlib/adler32.c',
'zlib/compress.c',
'zlib/crc32.c',
'zlib/deflate.c',
'zlib/gzio.c',
'zlib/infback.c',
'zlib/inffast.c',
'zlib/inflate.c',
'zlib/inftrees.c',
'zlib/trees.c',
'zlib/uncompr.c',
'zlib/zutil.c',
'sp_symhash.c'
]
2014-07-24 08:21:03 +02:00
if builder.target_platform != 'windows':
binary.sources.append('binreloc.c')
SM.spcomp = builder.Add(binary)