forked from bartvdbraak/blender
==SCons==
* These changes bring cross-compiling Blender for Windows on Linux one step closer to reality. The 'biggest' change is in makesdna SConscript to make sure a linux native makesdna is built, that can be run, too. Next to that proper checks for env['OURPLATFORM']=='linuxcross' are added in various places. Switch change in pluginapi.c was necessary, and AFAIK it should work like that also on WIN32, if not, slap me. Note: everything *compiles* now nicely, it is just that the final *linking* doesn't work (yet). Anyone who fixes this will be the hero of cross-compilers :)
This commit is contained in:
parent
34a5739a8a
commit
36a4af22c3
@ -1,131 +1,124 @@
|
|||||||
LCGDIR = '../lib/linux2'
|
LCGDIR = '#../lib/windows'
|
||||||
BF_PYTHON = '/usr'
|
BF_PYTHON = LCGDIR + '/python'
|
||||||
BF_PYTHON_VERSION = '2.4'
|
BF_PYTHON_VERSION = '2.4'
|
||||||
BF_PYTHON_INC = BF_PYTHON + '/include/python' + BF_PYTHON_VERSION
|
BF_PYTHON_INC = '${BF_PYTHON}/include/python${BF_PYTHON_VERSION}'
|
||||||
BF_PYTHON_BINARY = BF_PYTHON+'/bin/python'+BF_PYTHON_VERSION
|
BF_PYTHON_BINARY = 'python'
|
||||||
BF_PYTHON_LIB = 'python' + BF_PYTHON_VERSION #BF_PYTHON+'/lib/python'+BF_PYTHON_VERSION+'/config/libpython'+BF_PYTHON_VERSION+'.a'
|
BF_PYTHON_LIB = 'python24'
|
||||||
|
BF_PYTHON_LIBPATH = '${BF_PYTHON}/lib'
|
||||||
|
|
||||||
WITH_BF_OPENAL = 'true'
|
WITH_BF_OPENAL = 'true'
|
||||||
BF_OPENAL = '/usr'
|
BF_OPENAL = LCGDIR + '/openal'
|
||||||
BF_OPENAL_INC = BF_OPENAL+'/include'
|
BF_OPENAL_INC = '${BF_OPENAL}/include'
|
||||||
BF_OPENAL_LIB = 'openal'
|
BF_OPENAL_LIB = 'openal_static'
|
||||||
|
BF_OPENAL_LIBPATH = '${BF_OPENAL}/lib'
|
||||||
|
|
||||||
WITH_BF_SDL = 'true'
|
WITH_BF_SDL = 'true'
|
||||||
BF_SDL = '/usr' #$(shell sdl-config --prefix)
|
BF_SDL = LCGDIR + '/sdl'
|
||||||
BF_SDL_INC = BF_SDL + '/include/SDL' #$(shell $(BF_SDL)/bin/sdl-config --cflags)
|
BF_SDL_INC = '${BF_SDL}/include'
|
||||||
BF_SDL_LIB = 'SDL' #BF_SDL #$(shell $(BF_SDL)/bin/sdl-config --libs) -lSDL_mixer
|
BF_SDL_LIB = 'SDL'
|
||||||
|
BF_SDL_LIBPATH = '${BF_SDL}/lib'
|
||||||
|
|
||||||
|
BF_PTHREADS = LCGDIR + '/pthreads'
|
||||||
|
BF_PTHREADS_INC = '${BF_PTHREADS}/include'
|
||||||
|
BF_PTHREADS_LIB = 'pthreadGC2'
|
||||||
|
BF_PTHREADS_LIBPATH = '${BF_PTHREADS}/lib'
|
||||||
|
|
||||||
WITH_BF_FMOD = 'false'
|
WITH_BF_FMOD = 'false'
|
||||||
BF_FMOD = LCGDIR + '/fmod'
|
BF_FMOD = LCGDIR + '/fmod'
|
||||||
|
|
||||||
WITH_BF_JPEG = 'true'
|
|
||||||
BF_JPEG = '/usr'
|
|
||||||
BF_JPEG_INC = BF_JPEG + '/include'
|
|
||||||
BF_JPEG_LIB = 'jpeg'
|
|
||||||
|
|
||||||
WITH_BF_OPENEXR = 'true'
|
WITH_BF_OPENEXR = 'true'
|
||||||
BF_OPENEXR = '/usr'
|
BF_OPENEXR = LCGDIR + '/gcc/openexr'
|
||||||
BF_OPENEXR_INC = BF_OPENEXR + '/include/OpenEXR'
|
BF_OPENEXR_INC = '${BF_OPENEXR}/include ${BF_OPENEXR}/include/OpenEXR'
|
||||||
BF_OPENEXR_LIB = ' Iex Half IlmImf Imath '
|
BF_OPENEXR_LIB = ' Half IlmImf Iex '
|
||||||
|
BF_OPENEXR_LIBPATH = '${BF_OPENEXR}/lib'
|
||||||
|
|
||||||
|
WITH_BF_JPEG = 'true'
|
||||||
|
BF_JPEG = LCGDIR + '/jpeg'
|
||||||
|
BF_JPEG_INC = '${BF_JPEG}/include'
|
||||||
|
BF_JPEG_LIB = 'jpeg'
|
||||||
|
BF_JPEG_LIBPATH = '${BF_JPEG}/lib'
|
||||||
|
|
||||||
WITH_BF_PNG = 'true'
|
WITH_BF_PNG = 'true'
|
||||||
BF_PNG = '/usr'
|
BF_PNG = LCGDIR + '/png'
|
||||||
BF_PNG_INC = BF_PNG + '/include'
|
BF_PNG_INC = '${BF_PNG}/include'
|
||||||
BF_PNG_LIB = 'png'
|
BF_PNG_LIB = 'png'
|
||||||
|
BF_PNG_LIBPATH = '${BF_PNG}/lib'
|
||||||
|
|
||||||
BF_TIFF = '/usr'
|
BF_TIFF = LCGDIR + '/tiff'
|
||||||
BF_TIFF_INC = BF_TIFF + '/include'
|
BF_TIFF_INC = '${BF_TIFF}/include'
|
||||||
|
|
||||||
WITH_BF_ZLIB = 'true'
|
WITH_BF_ZLIB = 'true'
|
||||||
BF_ZLIB = '/usr'
|
BF_ZLIB = LCGDIR + '/zlib'
|
||||||
BF_ZLIB_INC = BF_ZLIB + '/include'
|
BF_ZLIB_INC = '${BF_ZLIB}/include'
|
||||||
BF_ZLIB_LIB = 'z'
|
#BF_ZLIB_LIB = 'z'
|
||||||
|
BF_ZLIB_LIBPATH = '${BF_ZLIB}/lib'
|
||||||
|
|
||||||
WITH_BF_INTERNATIONAL = 'true'
|
WITH_BF_INTERNATIONAL = 'true'
|
||||||
|
|
||||||
BF_GETTEXT = '/usr'
|
BF_GETTEXT = LCGDIR + '/gettext'
|
||||||
BF_GETTEXT_INC = BF_GETTEXT + '/include'
|
BF_GETTEXT_INC = '${BF_GETTEXT}/include'
|
||||||
BF_GETTEXT_LIB = BF_GETTEXT + '/lib/libintl.a'
|
BF_GETTEXT_LIB = 'gnu_gettext'
|
||||||
|
BF_GETTEXT_LIBPATH = '${BF_GETTEXT}/lib'
|
||||||
|
|
||||||
WITH_BF_FTGL = 'true'
|
WITH_BF_FTGL = 'true'
|
||||||
BF_FTGL = '#extern/bFTGL'
|
BF_FTGL = LCGDIR + '/ftgl'
|
||||||
BF_FTGL_INC = BF_FTGL + '/include'
|
BF_FTGL_INC = '${BF_FTGL}/include'
|
||||||
BF_FTGL_LIB = 'extern_ftgl'
|
BF_FTGL_LIB = 'extern_ftgl'
|
||||||
|
|
||||||
|
WITH_BF_GAMEENGINE = 'false'
|
||||||
|
|
||||||
WITH_BF_ODE = 'false'
|
WITH_BF_ODE = 'true'
|
||||||
BF_ODE = LCGDIR + '/ode'
|
BF_ODE = LCGDIR + '/ode'
|
||||||
BF_ODE_INC = BF_ODE + '/include'
|
BF_ODE_INC = BF_ODE + '/include'
|
||||||
BF_ODE_LIB = BF_ODE + '/lib/libode.a'
|
BF_ODE_LIB = BF_ODE + '/lib/libode.a'
|
||||||
|
|
||||||
WITH_BF_BULLET = 'true'
|
WITH_BF_BULLET = 'true'
|
||||||
BF_BULLET = '#extern/bullet'
|
BF_BULLET = '#extern/bullet'
|
||||||
BF_BULLET_INC = BF_BULLET + '/LinearMath ' + BF_BULLET + '/BulletDynamics ' + BF_BULLET + '/Bullet'
|
BF_BULLET_INC = '${BF_BULLET}/LinearMath ${BF_BULLET}/BulletDynamics ${BF_BULLET}/Bullet'
|
||||||
BF_BULLET_LIB = 'extern_bullet'
|
BF_BULLET_LIB = 'extern_bullet'
|
||||||
|
|
||||||
BF_SOLID = '#extern/solid'
|
BF_SOLID = '#extern/solid'
|
||||||
BF_SOLID_INC = BF_SOLID + '/include ' + BF_SOLID
|
BF_SOLID_INC = '${BF_SOLID}'
|
||||||
BF_SOLID_LIB = 'extern_solid'
|
BF_SOLID_LIB = 'extern_solid'
|
||||||
|
|
||||||
#WITH_BF_NSPR = 'true'
|
|
||||||
#BF_NSPR = $(LCGDIR)/nspr
|
|
||||||
#BF_NSPR_INC = -I$(BF_NSPR)/include -I$(BF_NSPR)/include/nspr
|
|
||||||
#BF_NSPR_LIB =
|
|
||||||
|
|
||||||
# Uncomment the following line to use Mozilla inplace of netscape
|
|
||||||
#CPPFLAGS += -DMOZ_NOT_NET
|
|
||||||
# Location of MOZILLA/Netscape header files...
|
|
||||||
#BF_MOZILLA = $(LCGDIR)/mozilla
|
|
||||||
#BF_MOZILLA_INC = -I$(BF_MOZILLA)/include/mozilla/nspr -I$(BF_MOZILLA)/include/mozilla -I$(BF_MOZILLA)/include/mozilla/xpcom -I$(BF_MOZILLA)/include/mozilla/idl
|
|
||||||
#BF_MOZILLA_LIB =
|
|
||||||
# Will fall back to look in BF_MOZILLA_INC/nspr and BF_MOZILLA_LIB
|
|
||||||
# if this is not set.
|
|
||||||
#
|
|
||||||
# Be paranoid regarding library creation (do not update archives)
|
|
||||||
#BF_PARANOID = 'true'
|
|
||||||
|
|
||||||
# enable freetype2 support for text objects
|
# enable freetype2 support for text objects
|
||||||
BF_FREETYPE = '/usr'
|
BF_FREETYPE = LCGDIR + '/gcc/freetype'
|
||||||
BF_FREETYPE_INC = BF_FREETYPE + '/include ' + BF_FREETYPE + '/include/freetype2'
|
BF_FREETYPE_INC = '${BF_FREETYPE}/include ${BF_FREETYPE}/include/freetype2'
|
||||||
BF_FREETYPE_LIB = 'freetype'
|
BF_FREETYPE_LIB = 'freetype'
|
||||||
|
BF_FREETYPE_LIBPATH = '${BF_FREETYPE}/lib'
|
||||||
|
|
||||||
WITH_BF_QUICKTIME = 'false' # -DWITH_QUICKTIME
|
WITH_BF_QUICKTIME = 'false' # -DWITH_QUICKTIME
|
||||||
BF_QUICKTIME = '/usr/local'
|
BF_QUICKTIME = '/usr/local'
|
||||||
BF_QUICKTIME_INC = BF_QUICKTIME + '/include'
|
BF_QUICKTIME_INC = '${BF_QUICKTIME}/include'
|
||||||
|
|
||||||
# Mesa Libs should go here if your using them as well....
|
# Mesa Libs should go here if your using them as well....
|
||||||
WITH_BF_STATICOPENGL = 'true'
|
WITH_BF_STATICOPENGL = 'false'
|
||||||
BF_OPENGL = '/usr/X11R6'
|
BF_OPENGL = 'C:\\MingW'
|
||||||
BF_OPENGL_INC = BF_OPENGL + '/include'
|
BF_OPENGL_INC = '${BF_OPENGL}/include'
|
||||||
BF_OPENGL_LIB = 'GL GLU Xmu Xext X11 Xi'
|
BF_OPENGL_LIBINC = '${BF_OPENGL}/lib'
|
||||||
BF_OPENGL_LIB_STATIC = BF_OPENGL + '/lib/libGL.a ' + BF_OPENGL + '/lib/libGLU.a ' + BF_OPENGL + '/lib/libXmu.a ' + BF_OPENGL + '/lib/libXext.a ' + BF_OPENGL + '/lib/libX11.a ' + BF_OPENGL + '/lib/libXi.a'
|
BF_OPENGL_LIB = 'opengl32 glu32'
|
||||||
##
|
BF_OPENGL_LIB_STATIC = [ '${BF_OPENGL}/lib/libGL.a', '${BF_OPENGL}/lib/libGLU.a',
|
||||||
##CC = gcc
|
'${BF_OPENGL}/lib/libXmu.a', '${BF_OPENGL}/lib/libXext.a',
|
||||||
##CCC = g++
|
'${BF_OPENGL}/lib/libX11.a', '${BF_OPENGL}/lib/libXi.a' ]
|
||||||
##ifeq ($CPU),alpha)
|
|
||||||
## CFLAGS += -pipe -fPIC -funsigned-char -fno-strict-aliasing -mieee
|
|
||||||
|
|
||||||
CFLAGS = '-pipe -funsigned-char -fno-strict-aliasing'
|
CC = 'i586-mingw32msvc-gcc'
|
||||||
|
CXX = 'i586-mingw32msvc-g++'
|
||||||
|
|
||||||
CPPFLAGS = '-DXP_UNIX'
|
CCFLAGS = [ '-pipe', '-funsigned-char', '-fno-strict-aliasing' ]
|
||||||
CCFLAGS = '-pipe -funsigned-char -fno-strict-aliasing'
|
|
||||||
REL_CFLAGS = '-O2'
|
|
||||||
REL_CCFLAGS = '-O2'
|
|
||||||
##BF_DEPEND = 'true'
|
|
||||||
##
|
|
||||||
##AR = ar
|
|
||||||
##ARFLAGS = ruv
|
|
||||||
##ARFLAGSQUIET = ru
|
|
||||||
##
|
|
||||||
C_WARN = '-Wall -W -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Wredundant-decls'
|
|
||||||
|
|
||||||
CC_WARN = '-Wall -W -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wredundant-decls -Wreorder -Wctor-dtor-privacy -Wnon-virtual-dtor -Wold-style-cast -Woverloaded-virtual -Wsign-promo -Wsynth'
|
CPPFLAGS = [ '-DXP_UNIX', '-DWIN32', '-DFREE_WINDOWS' ]
|
||||||
|
CXXFLAGS = ['-pipe', '-mwindows', '-funsigned-char', '-fno-strict-aliasing' ]
|
||||||
|
REL_CFLAGS = [ '-O2' ]
|
||||||
|
REL_CCFLAGS = [ '-O2' ]
|
||||||
|
C_WARN = [ '-Wall' , '-Wno-char-subscripts' ]
|
||||||
|
|
||||||
##FIX_STUBS_WARNINGS = -Wno-unused
|
CC_WARN = [ '-Wall' ]
|
||||||
|
|
||||||
LLIBS = 'util c m dl pthread stdc++'
|
|
||||||
##LOPTS = --dynamic
|
LLIBS = [ '-ldxguid', '-lgdi32', '-lmsvcrt', '-lwinmm', '-lmingw32', '-lm', '-lws2_32', '-lz'] #'-lutil', '-lc', '-lm', '-ldl', '-lpthread' ]
|
||||||
##DYNLDFLAGS = -shared $(LDFLAGS)
|
|
||||||
|
BF_DEBUG = 'false'
|
||||||
|
BF_DEBUG_FLAGS= ''
|
||||||
|
|
||||||
BF_BUILDDIR = '../build/linuxcross'
|
BF_BUILDDIR = '../build/linuxcross'
|
||||||
BF_INSTALLDIR='../install/linuxcross'
|
BF_INSTALLDIR='../install/linuxcross'
|
||||||
|
@ -14,7 +14,7 @@ if window_system == 'linux2':
|
|||||||
for f in pf:
|
for f in pf:
|
||||||
sources.remove('intern' + os.sep + f + 'Win32.cpp')
|
sources.remove('intern' + os.sep + f + 'Win32.cpp')
|
||||||
sources.remove('intern' + os.sep + f + 'Carbon.cpp')
|
sources.remove('intern' + os.sep + f + 'Carbon.cpp')
|
||||||
elif window_system in ('win32-vc', 'win32-mingw', 'cygwin'):
|
elif window_system in ('win32-vc', 'win32-mingw', 'cygwin', 'linuxcross'):
|
||||||
for f in pf:
|
for f in pf:
|
||||||
sources.remove('intern' + os.sep + f + 'X11.cpp')
|
sources.remove('intern' + os.sep + f + 'X11.cpp')
|
||||||
sources.remove('intern' + os.sep + f + 'Carbon.cpp')
|
sources.remove('intern' + os.sep + f + 'Carbon.cpp')
|
||||||
|
@ -42,7 +42,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
#include "blenpluginapi\util.h"
|
#include "blenpluginapi/util.h"
|
||||||
#else
|
#else
|
||||||
#include "blenpluginapi/util.h"
|
#include "blenpluginapi/util.h"
|
||||||
#endif
|
#endif
|
||||||
|
@ -7,7 +7,7 @@ cflags = ''
|
|||||||
defines = []
|
defines = []
|
||||||
root_build_dir=env['BF_BUILDDIR']
|
root_build_dir=env['BF_BUILDDIR']
|
||||||
|
|
||||||
source_files = ['makesdna.c']
|
source_files = ['makesdna.c', '#intern/guardedalloc/intern/mallocn.c']
|
||||||
|
|
||||||
makesdna_tool = env.Copy()
|
makesdna_tool = env.Copy()
|
||||||
dna = env.Copy()
|
dna = env.Copy()
|
||||||
@ -16,16 +16,24 @@ makesdna_tool.Append(CCFLAGS = '-DBASE_HEADER="\\"source/blender/makesdna/\\"" '
|
|||||||
makesdna_tool.Append (CPPPATH = ['#/intern/guardedalloc',
|
makesdna_tool.Append (CPPPATH = ['#/intern/guardedalloc',
|
||||||
'../../makesdna'])
|
'../../makesdna'])
|
||||||
|
|
||||||
|
if env['OURPLATFORM'] == 'linuxcross':
|
||||||
|
makesdna_tool.Replace(CC='gcc')
|
||||||
|
makesdna_tool.Replace(AR='ar')
|
||||||
|
makesdna_tool.Replace(LINK='gcc')
|
||||||
|
|
||||||
if sys.platform != 'cygwin':
|
if sys.platform != 'cygwin':
|
||||||
makesdna_tool.Append (CCFLAGS = cflags)
|
makesdna_tool.Append (CCFLAGS = cflags)
|
||||||
makesdna_tool.Append (CPPDEFINES = defines)
|
makesdna_tool.Append (CPPDEFINES = defines)
|
||||||
makesdna_tool.Append (LIBPATH = '#'+root_build_dir+'/lib')
|
makesdna_tool.Append (LIBPATH = '#'+root_build_dir+'/lib')
|
||||||
makesdna_tool.Append (LIBS = 'bf_guardedalloc')
|
|
||||||
makesdna_tool.Program (target = '#'+root_build_dir+os.sep+'makesdna', source = source_files)
|
makesdna_tool.Program (target = '#'+root_build_dir+os.sep+'makesdna', source = source_files)
|
||||||
|
|
||||||
dna_dict = dna.Dictionary()
|
dna_dict = dna.Dictionary()
|
||||||
makesdna_name = root_build_dir+'/makesdna' + dna_dict['PROGSUFFIX']
|
makesdna_name = root_build_dir+'/makesdna' + dna_dict['PROGSUFFIX']
|
||||||
dna.Depends ('dna.c', '#'+makesdna_name)
|
dna.Depends ('dna.c', '#'+makesdna_name)
|
||||||
dna.Command ('dna.c', '', root_build_dir+os.sep+"makesdna $TARGET")
|
if env['OURPLATFORM'] != 'linuxcross':
|
||||||
|
dna.Command ('dna.c', '', root_build_dir+os.sep+"makesdna $TARGET")
|
||||||
|
else:
|
||||||
|
dna.Command ('dna.c', '', root_build_dir+os.sep+"makesdna.exe $TARGET")
|
||||||
obj = 'intern/dna.c'
|
obj = 'intern/dna.c'
|
||||||
Return ('obj')
|
Return ('obj')
|
||||||
|
@ -129,7 +129,7 @@ def setup_staticlibs(lenv):
|
|||||||
if lenv['WITH_BF_STATICOPENGL']:
|
if lenv['WITH_BF_STATICOPENGL']:
|
||||||
statlibs += Split(lenv['BF_OPENGL_LIB_STATIC'])
|
statlibs += Split(lenv['BF_OPENGL_LIB_STATIC'])
|
||||||
|
|
||||||
if lenv['OURPLATFORM'] in ('win32-vc', 'win32-mingw'):
|
if lenv['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross'):
|
||||||
libincs += Split(lenv['BF_PTHREADS_LIBPATH'])
|
libincs += Split(lenv['BF_PTHREADS_LIBPATH'])
|
||||||
|
|
||||||
return statlibs, libincs
|
return statlibs, libincs
|
||||||
@ -155,7 +155,7 @@ def setup_syslibs(lenv):
|
|||||||
syslibs += Split(lenv['BF_SDL_LIB'])
|
syslibs += Split(lenv['BF_SDL_LIB'])
|
||||||
if not lenv['WITH_BF_STATICOPENGL']:
|
if not lenv['WITH_BF_STATICOPENGL']:
|
||||||
syslibs += Split(lenv['BF_OPENGL_LIB'])
|
syslibs += Split(lenv['BF_OPENGL_LIB'])
|
||||||
if lenv['OURPLATFORM'] in ('win32-vc', 'win32-mingw'):
|
if lenv['OURPLATFORM'] in ('win32-vc', 'win32-mingw','linuxcross'):
|
||||||
syslibs += Split(lenv['BF_PTHREADS_LIB'])
|
syslibs += Split(lenv['BF_PTHREADS_LIB'])
|
||||||
|
|
||||||
syslibs += Split(lenv['LLIBS'])
|
syslibs += Split(lenv['LLIBS'])
|
||||||
@ -327,7 +327,7 @@ class BlenderEnvironment(SConsEnvironment):
|
|||||||
if not self or not libname or not source:
|
if not self or not libname or not source:
|
||||||
print bc.FAIL+'Cannot continue. Missing argument for BlenderRes '+libname+bc.ENDC
|
print bc.FAIL+'Cannot continue. Missing argument for BlenderRes '+libname+bc.ENDC
|
||||||
Exit()
|
Exit()
|
||||||
if self['OURPLATFORM'] not in ('win32-vc','win32-mingw'):
|
if self['OURPLATFORM'] not in ('win32-vc','win32-mingw','linuxcross'):
|
||||||
print bc.FAIL+'BlenderRes is for windows only!'+bc.END
|
print bc.FAIL+'BlenderRes is for windows only!'+bc.END
|
||||||
Exit()
|
Exit()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user