Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Luc Peurière <jlp@nerim.net>2004-07-18 23:02:56 +0400
committerJean-Luc Peurière <jlp@nerim.net>2004-07-18 23:02:56 +0400
commitf6a6a5a2794e6c22ce54eead9f0c3b2c06b5e90f (patch)
treea83af6848dda9f5ea50f2128fb6c3a87239de86f /SConstruct
parent98b86b55fa7d2f90751bfeb5f4dca3c3b30d41ae (diff)
made Scons work again for Os X bundle creation
Diffstat (limited to 'SConstruct')
-rw-r--r--SConstruct159
1 files changed, 119 insertions, 40 deletions
diff --git a/SConstruct b/SConstruct
index 71c62dbc6be..dcd450fb9e1 100644
--- a/SConstruct
+++ b/SConstruct
@@ -5,6 +5,9 @@ import sys
from distutils import sysconfig
import SCons.Script
+appname = ''
+playername = ''
+
if hex(sys.hexversion) < 0x2030000:
print ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
print
@@ -16,6 +19,13 @@ if hex(sys.hexversion) < 0x2030000:
if sys.platform != 'win32':
sys.stdout = os.popen("tee build.log", "w")
sys.stderr = sys.stdout
+
+if sys.platform == 'darwin':
+ appname = 'blender'
+ playername = 'blenderplayer'
+else:
+ appname = 'blender$PROGSUFFIX'
+ playername = 'blenderplayer$PROGSUFFIX'
# This is a flag to determine whether to read all sconscripts and
# set up the build environments or not
@@ -155,12 +165,14 @@ elif sys.platform == 'darwin':
fink_path = '/sw/'
# TODO : try -mpowerpc -mpowerpc-gopt -mpowerpc-gfxopt optims
# doing actual profiling
- extra_flags = ['-pipe', '-fPIC', '-funsigned-char', '-ffast-math']
+ extra_flags = ['-pipe', '-fPIC', '-funsigned-char', '-ffast-math', '-mpowerpc' , '-malign-natural']
+
+#'-force_cpusubtype_ALL', '-mpowerpc-gpopt',
cxxflags = []
- defines = ['_THREAD_SAFE', 'MT_NDEBUG']
+ defines = ['_THREAD_SAFE']
if use_quicktime == 'true':
defines += ['WITH_QUICKTIME']
- warn_flags = ['-Wall', '-W']
+ warn_flags = ['-Wall'] # , '-W'
release_flags = ['-O3']
debug_flags = ['-g']
window_system = 'CARBON'
@@ -939,6 +951,7 @@ if enable_clean==0: # only read SConscripts when not cleaning, this to cut overh
link_env = library_env.Copy ()
link_env.Append (LIBPATH=libpath)
+
def common_libs(env):
"""
Append to env all libraries that are common to Blender and Blenderplayer
@@ -1233,6 +1246,81 @@ def add2arc(arc, file):
else:
arc.add(file)
+
+def appit(target, source, env):
+ if sys.platform == 'darwin':
+ import shutil
+ import commands
+ import os.path
+
+ target = 'blender'
+ sourceinfo = "source/darwin/%s.app/Contents/Info.plist"%target
+ targetinfo = "%s.app/Contents/Info.plist"%target
+
+ cmd = '%s.app'%target
+ if os.path.isdir(cmd):
+ shutil.rmtree('%s.app'%target)
+ shutil.copytree("source/darwin/%s.app"%target, '%s.app'%target)
+ cmd = "cat %s | sed s/VERSION/`cat release/VERSION`/ | sed s/DATE/`date +'%%Y-%%b-%%d'`/ > %s"%(sourceinfo,targetinfo)
+ commands.getoutput(cmd)
+ cmd = 'cp %s %s.app/Contents/MacOS/%s'%(target, target, target)
+ commands.getoutput(cmd)
+ cmd = 'strip -u -r %s.app/Contents/MacOS/%s'%(target, target)
+ commands.getoutput(cmd)
+ cmd = '%s.app/Contents/Resources/'%target
+ shutil.copy('bin/.blender/.bfont.ttf', cmd)
+ shutil.copy('bin/.blender/.Blanguages', cmd)
+ cmd = 'cp -R bin/.blender/locale %s.app/Contents/Resources/'%target
+ commands.getoutput(cmd)
+ cmd = 'cp -R release/bpydata %s.app/Contents/Resources/'%target + \
+ commands.getoutput(cmd)
+ cmd = 'cp -R release/scripts %s.app/Contents/Resources/'%target + \
+ commands.getoutput(cmd)
+ cmd = 'cp -R release/plugins %s.app/Contents/Resources/'%target
+ commands.getoutput(cmd)
+ cmd = 'chmod +x %s.app/Contents/MacOS/%s'%(target, target)
+ commands.getoutput(cmd)
+ cmd = 'find %s.app -name CVS -prune -exec rm -rf {} \;'%target
+ commands.getoutput(cmd)
+ cmd = 'find %s.app -name .DS_Store -exec rm -rf {} \;'%target
+ commands.getoutput(cmd)
+
+ if user_options_dict['BUILD_BLENDER_PLAYER'] == 1:
+ target = 'blenderplayer'
+ sourceinfo = "source/darwin/%s.app/Contents/Info.plist"%target
+ targetinfo = "%s.app/Contents/Info.plist"%target
+
+ cmd = '%s.app'%target
+ if os.path.isdir(cmd):
+ shutil.rmtree('%s.app'%target)
+ shutil.copytree("source/darwin/%s.app"%target, '%s.app'%target)
+ cmd = "cat %s | sed s/VERSION/`cat release/VERSION`/ | sed s/DATE/`date +'%%Y-%%b-%%d'`/ > %s"%(sourceinfo,targetinfo)
+ commands.getoutput(cmd)
+ cmd = 'cp %s %s.app/Contents/MacOS/%s'%(target, target, target)
+ commands.getoutput(cmd)
+ cmd = 'strip -u -r %s.app/Contents/MacOS/%s'%(target, target)
+ commands.getoutput(cmd)
+ cmd = '%s.app/Contents/Resources/'%target
+ shutil.copy('bin/.blender/.bfont.ttf', cmd)
+ shutil.copy('bin/.blender/.Blanguages', cmd)
+ cmd = 'cp -R bin/.blender/locale %s.app/Contents/Resources/'%target
+ commands.getoutput(cmd)
+ cmd = 'cp -R release/bpydata %s.app/Contents/Resources/'%target + \
+ commands.getoutput(cmd)
+ cmd = 'cp -R release/scripts %s.app/Contents/Resources/'%target + \
+ commands.getoutput(cmd)
+ cmd = 'cp -R release/plugins %s.app/Contents/Resources/'%target
+ commands.getoutput(cmd)
+ cmd = 'chmod +x %s.app/Contents/MacOS/%s'%(target, target)
+ commands.getoutput(cmd)
+ cmd = 'find %s.app -name CVS -prune -exec rm -rf {} \;'%target
+ commands.getoutput(cmd)
+ cmd = 'find %s.app -name .DS_Store -exec rm -rf {} \;'%target
+ commands.getoutput(cmd)
+
+ else:
+ print "This target is for the Os X platform only"
+
def zipit(env, target, source):
try:
if sys.platform == 'win32':
@@ -1448,7 +1536,7 @@ def BlenderNSIS(target):
inst_env.Depends(nsis_inst, 'blenderplayer$PROGSUFFIX')
inst_env.Alias("wininst", nsis_inst)
else:
- print "This target is for the win32 platform only"
+ print "This target is for the win32 platform only "
def BlenderRelease(target):
"""
@@ -1457,43 +1545,29 @@ def BlenderRelease(target):
target = Name of package to make (string)
eg: BlenderRelease('blender')
"""
+
if sys.platform == 'darwin':
- bundle = Environment ()
- target = 'blender'
- blender_app = target
- bundle.Depends ('#/%s.app/Contents/Info.plist'%target, blender_app)
- bundle.Command ('#/%s.app/Contents/Info.plist'%target,
- '#/source/darwin/%s.app/Contents/Info.plist'%target,
- "rm -rf %s.app && "%target + \
- "cp -R source/darwin/%s.app . && "%target +
- "cat $SOURCE | sed s/VERSION/`cat release/VERSION`/ | \
- sed s/DATE/`date +'%Y-%b-%d'`/ \
- > $TARGET && " + \
- 'cp -p %s %s.app/Contents/MacOS/%s && '%(target, target, target) + \
- 'strip -u -r %s.app/Contents/MacOS/%s && '%(target, target) + \
- 'cp bin/.blender/.bfont.ttf %s.app/Contents/Resources/ && '%target + \
- 'cp bin/.blender/.Blanguages %s.app/Contents/Resources/ && '%target + \
- 'cp -R bin/.blender/locale %s.app/Contents/Resources/ && '%target + \
- 'cp -R release/bpydata %s.app/Contents/Resources/ && '%target + \
- 'cp -R release/scripts %s.app/Contents/Resources/ && '%target + \
- 'cp -R release/plugins %s.app/Contents/Resources/ && '%target + \
- 'chmod +x $TARGET && ' + \
- 'find %s.app -name CVS -prune -exec rm -rf {} \; && '%target +
- 'find %s.app -name .DS_Store -exec rm -rf {} \;'%target)
+ app_env = Environment()
+ Mappit = app_env.Command('appit', appname, appit)
+ if user_options_dict['BUILD_BLENDER_PLAYER'] == 1:
+ app_env.Depends(Mappit, playername)
+ app_env.Alias("release", Mappit)
elif sys.platform in ['win32', 'linux2', 'linux-i386']:
release_env = Environment()
- releaseit = release_env.Command('blenderrelease', 'blender$PROGSUFFIX', zipit)
+ releaseit = release_env.Command('blenderrelease', appname, zipit)
if user_options_dict['BUILD_BLENDER_PLAYER'] == 1:
- release_env.Depends(releaseit, 'blenderplayer$PROGSUFFIX')
+ release_env.Depends(releaseit, playername)
release_env.Alias("release", releaseit)
else:
release_env = Environment()
- releaseit = release_env.Command('blender.tar.gz', 'blender$PROGSUFFIX', printadd)
+ releaseit = release_env.Command('blender.tar.gz', appname, printadd)
if user_options_dict['BUILD_BLENDER_PLAYER'] == 1:
- release_env.Depends(releaseit, 'blenderplayer$PROGSUFFIX')
+ release_env.Depends(releaseit, playername)
release_env.Alias("release", releaseit)
if enable_clean == 0:
+
+
if user_options_dict['BUILD_BLENDER_DYNAMIC'] == 1:
dy_blender = link_env.Copy ()
if sys.platform=='win32':
@@ -1571,25 +1645,30 @@ if enable_clean == 0:
'bscmake /nologo /n /oblenderplayer.bsc @'+browser_tmp,
'del '+browser_tmp])
- release_target = env.Alias("release", BlenderRelease('blender$PROGSUFFIX'))
- default_target = env.Alias("default", BlenderDefault('blender$PROGSUFFIX'))
- wininst_target = env.Alias("winist", BlenderNSIS('blender$PROGSUFFIX'))
+ release_target = env.Alias("release", BlenderRelease(appname))
+ default_target = env.Alias("default", BlenderDefault(appname))
+ wininst_target = env.Alias("winist", BlenderNSIS(appname))
+
else: # only clean target to prevent any building
clean_target = env.Alias("clean", DoClean(root_build_dir))
Default("clean")
if enable_clean == 0: # only set up dependencies when not cleaning
- Default("default")
+ if sys.platform == 'darwin':
+ Default("release")
+ else:
+ Default("default")
if sys.platform == 'win32':
if user_options_dict['BUILD_BLENDER_PLAYER'] == 1:
- env.Depends(wininst_target, 'blenderplayer$PROGSUFFIX')
- env.Depends(wininst_target, 'blender$PROGSUFFIX')
+ env.Depends(wininst_target, playername)
+ env.Depends(wininst_target, appname)
if user_options_dict['BUILD_BLENDER_PLAYER'] == 1:
- env.Depends(release_target, 'blenderplayer$PROGSUFFIX')
- env.Depends(release_target, 'blender$PROGSUFFIX')
+ env.Depends(release_target, playername)
+ env.Depends(release_target, appname)
if user_options_dict['BUILD_BLENDER_PLAYER'] == 1:
- env.Depends(default_target, 'blenderplayer$PROGSUFFIX')
- env.Depends(default_target, 'blender$PROGSUFFIX') \ No newline at end of file
+ env.Depends(default_target, playername)
+ env.Depends(default_target, appname)
+ \ No newline at end of file