switching to SCons
This commit is contained in:
parent
d767d5e803
commit
f2a650852d
77
SConstruct
Normal file
77
SConstruct
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
#This file is part of Photon (http://photon.sourceforge.net)
|
||||||
|
#Copyright (C) 2004-2005 James Turk
|
||||||
|
#
|
||||||
|
# Author:
|
||||||
|
# James Turk (jpt2433@rit.edu)
|
||||||
|
#
|
||||||
|
# Version:
|
||||||
|
# $Id: SConstruct,v 1.1 2005/03/01 07:50:22 cozman Exp $
|
||||||
|
|
||||||
|
import os,os.path
|
||||||
|
import glob
|
||||||
|
|
||||||
|
subDirs = ['', 'audio', 'math', 'util', 'util/filesys']
|
||||||
|
libName = 'photon'
|
||||||
|
|
||||||
|
class Builder:
|
||||||
|
def __init__(self, subDirs):
|
||||||
|
self.subDirs = subDirs
|
||||||
|
self.srcDirs = self.combine('src',self.subDirs)
|
||||||
|
self.incDirs = self.combine('include',self.subDirs)
|
||||||
|
self.srcFiles = Flatten([self.getFiles(d, '*.cpp')
|
||||||
|
for d in self.srcDirs])
|
||||||
|
self.srcFiles = [f.replace('src','build') for f in self.srcFiles]
|
||||||
|
self.incFiles = Flatten([self.getFiles(d, '*.hpp')
|
||||||
|
for d in self.incDirs])
|
||||||
|
|
||||||
|
def combine(self, prefix, dirs):
|
||||||
|
"""Add a prefix to all directories"""
|
||||||
|
return [os.path.join(prefix,d) for d in dirs]
|
||||||
|
|
||||||
|
def getFiles(self, path, pat):
|
||||||
|
"""Get all files which match a glob in a directory"""
|
||||||
|
return glob.glob( os.path.join(path,pat) )
|
||||||
|
|
||||||
|
def checkLibrary(self, name, lib, header):
|
||||||
|
"""Check if a library/header pair exists, report and bail if not"""
|
||||||
|
if not self.conf.CheckLibWithHeader(lib, header, 'C++'):
|
||||||
|
print name,'not found, exiting.'
|
||||||
|
Exit(1)
|
||||||
|
|
||||||
|
def checkDepends(self):
|
||||||
|
"""Check all the dependencies for the current project"""
|
||||||
|
self.env = Environment(ENV = os.environ)
|
||||||
|
self.conf = Configure(self.env)
|
||||||
|
self.checkLibrary('OpenAL','OpenAL32','al.h')
|
||||||
|
self.checkLibrary('OpenGL','opengl32','gl/gl.h')
|
||||||
|
self.checkLibrary('GLFW','GLFW','glfw.h')
|
||||||
|
self.env = self.conf.Finish()
|
||||||
|
|
||||||
|
def namedBuild(self, name, target, buildType, default=False, **extra):
|
||||||
|
"""Add a build target which can be addressed by name on the command line
|
||||||
|
name - Name to give to the target (using Alias)
|
||||||
|
target - Actual build target
|
||||||
|
buildType - string describing what is being built (eg. Library, PDF)
|
||||||
|
[default - whether or not target is built by default (False)]
|
||||||
|
**extra - any options which should be given to the builder
|
||||||
|
(eg. source='foo.c', CPPPATH='/foo/bar/baz')
|
||||||
|
"""
|
||||||
|
# create a string with the desired buildType
|
||||||
|
regStr = "self.env."+buildType+"(target = target, **extra)"
|
||||||
|
# alias the build to the given name
|
||||||
|
reg = self.env.Alias(name, eval(regStr))
|
||||||
|
if default:
|
||||||
|
self.env.Default(reg)
|
||||||
|
return reg
|
||||||
|
|
||||||
|
def build(self):
|
||||||
|
BuildDir('build', 'src', duplicate=0)
|
||||||
|
self.checkDepends()
|
||||||
|
|
||||||
|
self.namedBuild('photon', os.path.join('lib',libName), 'Library',
|
||||||
|
default=True,
|
||||||
|
source = self.srcFiles, CPPPATH = self.incDirs)
|
||||||
|
|
||||||
|
|
||||||
|
b = Builder(subDirs)
|
||||||
|
b.build()
|
Loading…
Reference in New Issue
Block a user