84 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # vim: set sts=2 ts=8 sw=2 tw=99 et ft=python:
 | |
| import os.path
 | |
| 
 | |
| # Build the packing binary garbage.
 | |
| scpack = AMXX.Program(builder, 'scpack')
 | |
| if builder.target_platform == 'windows':
 | |
|   scpack.compiler.linkflags.remove('/SUBSYSTEM:WINDOWS')
 | |
|   scpack.compiler.linkflags.append('/SUBSYSTEM:CONSOLE')
 | |
| scpack.sources = ['scpack.c']
 | |
| scpack = builder.Add(scpack)
 | |
| 
 | |
| # Generate pack files.
 | |
| packed_files = ['sc5', 'sc7']
 | |
| packed_includes = []
 | |
| for packed_file in packed_files:
 | |
|   # The absolute path to sc5-in.scp etc.
 | |
|   in_path = os.path.join(builder.currentSourcePath, '{0}-in.scp'.format(packed_file))
 | |
| 
 | |
|   # 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))
 | |
| 
 | |
|   # The absolute path to the build folder, i.e. /Users/.../sourcepawn/compiler.
 | |
|   build_folder = os.path.join(builder.buildPath, builder.buildFolder)
 | |
| 
 | |
|   # 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),
 | |
|   ]
 | |
| 
 | |
|   _, (entry,) = builder.AddCommand(
 | |
|     inputs = [scpack.binary, in_path],
 | |
|     argv = scpack_argv,
 | |
|     outputs = ['{0}.scp'.format(packed_file)],
 | |
|   )
 | |
|   packed_includes += [entry]
 | |
|   
 | |
| binary = AMXX.Library(builder, 'amxxpc32')
 | |
| 
 | |
| binary.compiler.includes += [
 | |
|   builder.currentSourcePath,
 | |
|   os.path.join(builder.buildPath, builder.buildFolder),
 | |
| ]
 | |
| 
 | |
| binary.compiler.sourcedeps += packed_includes
 | |
| 
 | |
| if builder.target_platform in ['mac', 'linux']:
 | |
|   binary.compiler.defines += ['ENABLE_BINRELOC']
 | |
|   binary.compiler.postlink += ['-lm', '-lpthread']
 | |
| 
 | |
| binary.compiler.defines += [
 | |
|   'NO_MAIN',
 | |
|   'PAWNC_DLL',
 | |
|   'HAVE_STDINT_H',
 | |
|   '_GNU_SOURCE',
 | |
| ]
 | |
| 
 | |
| binary.sources = [
 | |
|   'sc1.c',
 | |
|   'sc2.c',
 | |
|   'sc3.c',
 | |
|   'sc4.c',
 | |
|   'sc5.c',
 | |
|   'sc6.c',
 | |
|   'sc7.c',
 | |
|   'scvars.c',
 | |
|   'scmemfil.c',
 | |
|   'scstate.c',
 | |
|   'sclist.c',
 | |
|   'sci18n.c',
 | |
|   'scexpand.c',
 | |
|   'pawncc.c',
 | |
|   'libpawnc.c',
 | |
|   'prefix.c',
 | |
|   'memfile.c',
 | |
| ]
 | |
| 
 | |
| if builder.target_platform == 'windows':
 | |
|   binary.sources+= ['libpawnc.rc']
 | |
| 
 | |
| AMXX.libpc300 = builder.Add(binary)
 |