AMBuild.dist
author David Anderson <dvander@alliedmods.net>
Sat Jul 28 16:50:45 2012 -0700 (2012-07-28)
changeset 109 b0852a3c0ba7
parent 106 8534dbfb8c1a
child 128 6eed87ebc5ce
permissions -rw-r--r--
Reconfigure if bootstrap.pl changes.
dvander@106
     1
# vim: set ts=2 sw=2 tw=99 noet ft=python: 
dvander@106
     2
# 
dvander@106
     3
# Copyright (C) 2004-2012 David Anderson
dvander@106
     4
# 
dvander@106
     5
# This file is part of SourcePawn.
dvander@106
     6
# 
dvander@106
     7
# SourcePawn is free software: you can redistribute it and/or modify it under
dvander@106
     8
# the terms of the GNU General Public License as published by the Free
dvander@106
     9
# Software Foundation, either version 3 of the License, or (at your option)
dvander@106
    10
# any later version.
dvander@106
    11
# 
dvander@106
    12
# SourcePawn is distributed in the hope that it will be useful, but WITHOUT ANY
dvander@106
    13
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
dvander@106
    14
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
dvander@106
    15
# 
dvander@106
    16
# You should have received a copy of the GNU General Public License along with
dvander@106
    17
# SourcePawn. If not, see http://www.gnu.org/licenses/.
dvander@106
    18
#
dvander@106
    19
import os
dvander@106
    20
import os.path
dvander@106
    21
import shutil
dvander@106
    22
import ambuild.osutil as osutil
dvander@106
    23
from ambuild.command import Command
dvander@106
    24
dvander@106
    25
job = AMBuild.AddJob('dist')
dvander@106
    26
dvander@106
    27
# Single file copy
dvander@106
    28
class CopyFile(Command):
dvander@106
    29
	def __init__(self, filename, fromPath, toPath):
dvander@106
    30
		Command.__init__(self)
dvander@106
    31
		self.fromPath = os.path.join(fromPath, filename)
dvander@106
    32
		self.toPath = toPath
dvander@106
    33
dvander@106
    34
	def run(self, runner, job):
dvander@106
    35
		runner.PrintOut('copy {0} to {1}'.format(self.fromPath, self.toPath))
dvander@106
    36
		shutil.copy(self.fromPath, self.toPath)
dvander@106
    37
dvander@106
    38
# Create a folder
dvander@106
    39
class CreateFolder(Command):
dvander@106
    40
	def __init__(self, folder):
dvander@106
    41
		Command.__init__(self)
dvander@106
    42
		self.folder = folder
dvander@106
    43
dvander@106
    44
	def run(self, runner, job):
dvander@106
    45
		runner.PrintOut('mkdir {0}'.format(self.folder))
dvander@106
    46
		os.makedirs(self.folder)
dvander@106
    47
dvander@106
    48
dvander@106
    49
def ShouldCopy(filename, fromPath, toPath):
dvander@106
    50
	fromfile = os.path.join(fromPath, filename)
dvander@106
    51
	tofile = os.path.join(AMBuild.outputFolder, 'dist', toPath, filename)
dvander@106
    52
	if not osutil.FileExists(tofile):
dvander@106
    53
		return True
dvander@106
    54
	return osutil.IsFileNewer(fromfile, tofile)
dvander@106
    55
dvander@106
    56
def AddCopy(job, filename, fromPath, toPath):
dvander@106
    57
	if not ShouldCopy(filename, fromPath, toPath):
dvander@106
    58
		return
dvander@106
    59
	job.AddCommand(CopyFile(filename, fromPath, toPath))
dvander@106
    60
dvander@106
    61
def AddFolder(job, folder):
dvander@106
    62
	if not os.path.exists(os.path.join(AMBuild.outputFolder, 'dist', folder)):
dvander@106
    63
		job.AddCommand(CreateFolder(folder))
dvander@106
    64
dvander@106
    65
libkeima = osutil.StaticLibPrefix() + 'keima' + osutil.StaticLibSuffix()
dvander@106
    66
spshell = 'spshell' + osutil.ExecutableSuffix()
dvander@106
    67
dvander@106
    68
AddFolder(job, 'include')
dvander@106
    69
AddFolder(job, 'lib')
dvander@106
    70
AddFolder(job, 'bin')
dvander@106
    71
dvander@106
    72
AddCopy(job,
dvander@106
    73
        'keima.h',
dvander@106
    74
        os.path.join(AMBuild.sourceFolder, 'include'),
dvander@106
    75
        'include')
dvander@106
    76
AddCopy(job,
dvander@106
    77
        'keima_util.h',
dvander@106
    78
        os.path.join(AMBuild.sourceFolder, 'include'),
dvander@106
    79
        'include')
dvander@106
    80
AddCopy(job,
dvander@106
    81
        libkeima,
dvander@106
    82
        os.path.join(AMBuild.outputFolder, 'keima'),
dvander@106
    83
        'lib')
dvander@106
    84
AddCopy(job,
dvander@106
    85
        spshell,
dvander@106
    86
        os.path.join(AMBuild.outputFolder, 'spshell'),
dvander@106
    87
        'bin')
dvander@106
    88