dvander@106: # vim: set ts=2 sw=2 tw=99 noet ft=python: dvander@106: # dvander@106: # Copyright (C) 2004-2012 David Anderson dvander@106: # dvander@106: # This file is part of SourcePawn. dvander@106: # dvander@106: # SourcePawn is free software: you can redistribute it and/or modify it under dvander@106: # the terms of the GNU General Public License as published by the Free dvander@106: # Software Foundation, either version 3 of the License, or (at your option) dvander@106: # any later version. dvander@106: # dvander@106: # SourcePawn is distributed in the hope that it will be useful, but WITHOUT ANY dvander@106: # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS dvander@106: # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. dvander@106: # dvander@106: # You should have received a copy of the GNU General Public License along with dvander@106: # SourcePawn. If not, see http://www.gnu.org/licenses/. dvander@106: # dvander@106: import os dvander@106: import os.path dvander@106: import shutil dvander@106: import ambuild.osutil as osutil dvander@106: from ambuild.command import Command dvander@106: dvander@106: job = AMBuild.AddJob('dist') dvander@106: dvander@106: # Single file copy dvander@106: class CopyFile(Command): dvander@106: def __init__(self, filename, fromPath, toPath): dvander@106: Command.__init__(self) dvander@128: self.filename = filename dvander@106: self.fromPath = os.path.join(fromPath, filename) dvander@106: self.toPath = toPath dvander@106: dvander@128: def shouldCopy(self): dvander@128: tofile = os.path.join(self.toPath, self.filename) dvander@128: if not osutil.FileExists(tofile): dvander@128: return True dvander@128: return osutil.IsFileNewer(self.fromPath, tofile) dvander@128: dvander@106: def run(self, runner, job): dvander@128: if not self.shouldCopy(): dvander@128: return dvander@106: runner.PrintOut('copy {0} to {1}'.format(self.fromPath, self.toPath)) dvander@106: shutil.copy(self.fromPath, self.toPath) dvander@106: dvander@106: # Create a folder dvander@106: class CreateFolder(Command): dvander@106: def __init__(self, folder): dvander@106: Command.__init__(self) dvander@106: self.folder = folder dvander@106: dvander@106: def run(self, runner, job): dvander@106: runner.PrintOut('mkdir {0}'.format(self.folder)) dvander@106: os.makedirs(self.folder) dvander@106: dvander@106: def AddCopy(job, filename, fromPath, toPath): dvander@106: job.AddCommand(CopyFile(filename, fromPath, toPath)) dvander@106: dvander@106: def AddFolder(job, folder): dvander@106: if not os.path.exists(os.path.join(AMBuild.outputFolder, 'dist', folder)): dvander@106: job.AddCommand(CreateFolder(folder)) dvander@106: dvander@106: libkeima = osutil.StaticLibPrefix() + 'keima' + osutil.StaticLibSuffix() dvander@106: spshell = 'spshell' + osutil.ExecutableSuffix() dvander@106: dvander@106: AddFolder(job, 'include') dvander@106: AddFolder(job, 'lib') dvander@106: AddFolder(job, 'bin') dvander@106: dvander@106: AddCopy(job, dvander@106: 'keima.h', dvander@106: os.path.join(AMBuild.sourceFolder, 'include'), dvander@106: 'include') dvander@106: AddCopy(job, dvander@106: 'keima_util.h', dvander@106: os.path.join(AMBuild.sourceFolder, 'include'), dvander@106: 'include') dvander@106: AddCopy(job, dvander@106: libkeima, dvander@106: os.path.join(AMBuild.outputFolder, 'keima'), dvander@106: 'lib') dvander@106: AddCopy(job, dvander@106: spshell, dvander@106: os.path.join(AMBuild.outputFolder, 'spshell'), dvander@106: 'bin') dvander@106: