use ghash for DNA_struct_find_nr(), gives ~18% speedup on loading sintel lite, will...
[blender.git] / source / blender / makesdna / intern / SConscript
1 #!/usr/bin/python
2 import sys
3 import os
4
5 def normpath(path):
6     return os.path.abspath(os.path.normpath(path))
7
8 Import ('env')
9 cflags = ''
10 defines = []
11 root_build_dir=normpath(env['BF_BUILDDIR'])
12
13 source_files = ['makesdna.c']
14 header_files = env.Glob('../*.h')
15
16 makesdna_tool = env.Clone()
17 dna = env.Clone()
18 makesdna_tool.Append(CCFLAGS = '-DBASE_HEADER="\\"source/blender/makesdna/\\"" ')
19
20 makesdna_tool.Append (CPPPATH = ['#/intern/guardedalloc',
21                                  '../../makesdna', '../../blenloader'])
22
23 if env['OURPLATFORM'] == 'linuxcross':
24     USE_WINE = True # when cross compiling on linux 64bit this is useful
25 else:
26     USE_WINE = False
27
28 if not USE_WINE:
29     if env['OURPLATFORM'] == 'linuxcross':
30         makesdna_tool.Replace(CC='gcc')
31         makesdna_tool.Replace(AR='ar')
32         makesdna_tool.Replace(LINK='gcc')
33
34 if sys.platform != 'cygwin':
35     makesdna_tool.Append (CCFLAGS = cflags)
36 makesdna_tool.Append (CPPDEFINES = defines)
37 makesdna_tool.Append( CFLAGS = env['CFLAGS'])
38 makesdna_tool.Append( CCFLAGS = env['CCFLAGS'])
39 makesdna_tool.Append( LINKFLAGS = env['PLATFORM_LINKFLAGS'])
40 targetdir = normpath(root_build_dir+'/lib')
41
42 if not (root_build_dir[0]==os.sep or root_build_dir[1]==':'):
43     targetdir = '#'+targetdir
44 makesdna_tool.Append (LIBPATH = targetdir)
45 if env['BF_PROFILE']:
46     makesdna_tool.Append (LINKFLAGS = env['BF_PROFILE_LINKFLAGS'])
47
48 targetdir = normpath(root_build_dir + '/makesdna')
49
50 if not (root_build_dir[0]==os.sep or root_build_dir[1]==':'):
51     targetdir = '#' + targetdir
52
53 makesdna = makesdna_tool.Program (target = targetdir, source = source_files, LIBS=['bf_intern_guardedalloc', 'bf_blenlib'])
54
55 dna_dict = dna.Dictionary()
56 dna.Depends ('dna.c', makesdna)
57 dna.Depends ('dna.c', header_files)
58
59 if env['OURPLATFORM'] != 'linuxcross':
60     if env['OURPLATFORM'] in ('win32-vc', 'win64-vc', 'win32-mingw'):
61         dna.Command ('dna.c', '', "\"" + root_build_dir+os.sep+"makesdna\" $TARGET")
62     else:
63         dna.Command ('dna.c', '', "\"" + root_build_dir+os.sep+"makesdna\" $TARGET")
64 else:
65     if USE_WINE:
66         dna.Command ('dna.c', '', 'wine ' + root_build_dir+os.sep+"makesdna $TARGET")
67     else:
68         dna.Command ('dna.c', '', root_build_dir+os.sep+"makesdna.exe $TARGET")
69
70 # TODO, get WITH_DNA_GHASH working, see CMake's 'WITH_DNA_GHASH'
71 obj = ['intern/dna.c', 'intern/dna_genfile.c']
72 Return ('obj')