diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-11-17 14:35:36 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-11-17 15:43:18 +0300 |
commit | 80d1d624d378d4d8c03fb26ef286baf5479b6497 (patch) | |
tree | d5ae6545d0318d8e0448d3a084a15e72aff6e2a5 /build_files | |
parent | 90bf426554a7cc1d429f2dd9a02edbcbeb51ceec (diff) |
Support dynamic loading of SDL libraries
This is mainly to address old issue when one need to have SDL library installed
in order to use our official builds. Some hip distros already installs SDL,
but it's not quite the same across all the variety of the distros.
We also now switching to SDL-2.0, most of the distros have it in repositories
already, so it shouldn't be huge deal to install it if needed.
Reviewers: campbellbarton
Reviewed By: campbellbarton
Differential Revision: https://developer.blender.org/D878
Diffstat (limited to 'build_files')
-rw-r--r-- | build_files/cmake/macros.cmake | 5 | ||||
-rw-r--r-- | build_files/scons/config/linux-config.py | 6 | ||||
-rwxr-xr-x | build_files/scons/tools/Blender.py | 7 | ||||
-rw-r--r-- | build_files/scons/tools/btools.py | 3 |
4 files changed, 13 insertions, 8 deletions
diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake index a6f9b2b3811..40bea5ed761 100644 --- a/build_files/cmake/macros.cmake +++ b/build_files/cmake/macros.cmake @@ -221,7 +221,7 @@ macro(SETUP_LIBDIRS) if(WITH_PYTHON) # AND NOT WITH_PYTHON_MODULE # WIN32 needs link_directories(${PYTHON_LIBPATH}) endif() - if(WITH_SDL) + if(WITH_SDL AND NOT WITH_SDL_DYNLOAD) link_directories(${SDL_LIBPATH}) endif() if(WITH_CODEC_FFMPEG) @@ -321,7 +321,7 @@ macro(setup_liblinks if(WITH_CODEC_SNDFILE) target_link_libraries(${target} ${SNDFILE_LIBRARIES}) endif() - if(WITH_SDL) + if(WITH_SDL AND NOT WITH_SDL_DYNLOAD) target_link_libraries(${target} ${SDL_LIBRARY}) endif() if(WITH_CODEC_QUICKTIME) @@ -559,6 +559,7 @@ macro(SETUP_BLENDER_SORTED_LIBS) extern_wcwidth extern_libmv extern_glog + extern_sdlew bf_intern_glew_mx ) diff --git a/build_files/scons/config/linux-config.py b/build_files/scons/config/linux-config.py index d460ece721a..7438aaa4d8d 100644 --- a/build_files/scons/config/linux-config.py +++ b/build_files/scons/config/linux-config.py @@ -262,6 +262,6 @@ BF_INSTALLDIR='../install/linux' #Link against pthread PLATFORM_LINKFLAGS = ['-pthread'] -#Fix for LLVM conflict with Mesa llvmpipe -if WITH_BF_LLVM: - PLATFORM_LINKFLAGS += ['-Wl,--version-script=source/creator/blender.map'] +#Fix for LLVM conflict with Mesa llvmpipe, SDL dynload also requires symbols to be hidden. +# TODO(sergey): Move this to SConstruct, so we can have this line depended on user config. +PLATFORM_LINKFLAGS += ['-Wl,--version-script=source/creator/blender.map'] diff --git a/build_files/scons/tools/Blender.py b/build_files/scons/tools/Blender.py index f5118daad6a..afcc1d06436 100755 --- a/build_files/scons/tools/Blender.py +++ b/build_files/scons/tools/Blender.py @@ -143,7 +143,7 @@ def setup_staticlibs(lenv): libincs += Split(lenv['BF_FREETYPE_LIBPATH']) if lenv['WITH_BF_PYTHON']: libincs += Split(lenv['BF_PYTHON_LIBPATH']) - if lenv['WITH_BF_SDL']: + if lenv['WITH_BF_SDL'] and not lenv['WITH_BF_SDL_DYNLOAD']: libincs += Split(lenv['BF_SDL_LIBPATH']) if lenv['WITH_BF_JACK'] and not lenv['WITH_BF_JACK_DYNLOAD']: libincs += Split(lenv['BF_JACK_LIBPATH']) @@ -303,7 +303,7 @@ def setup_syslibs(lenv): if lenv['WITH_BF_ELTOPO']: syslibs += Split(lenv['BF_LAPACK_LIB']) ''' - if lenv['WITH_BF_SDL']: + if lenv['WITH_BF_SDL'] and not lenv['WITH_BF_SDL_DYNLOAD']: syslibs += Split(lenv['BF_SDL_LIB']) if not lenv['WITH_BF_STATICOPENGL']: syslibs += Split(lenv['BF_OPENGL_LIB']) @@ -381,6 +381,9 @@ def creator(env): defs.append('WITH_BINRELOC') if env['WITH_BF_SDL']: + if env['WITH_BF_SDL_DYNLOAD']: + defs.append('WITH_SDL_DYNLOAD') + incs.append('#/extern/sdlew/include') defs.append('WITH_SDL') if env['WITH_BF_LIBMV']: diff --git a/build_files/scons/tools/btools.py b/build_files/scons/tools/btools.py index aff8ac4e199..7857b7bb222 100644 --- a/build_files/scons/tools/btools.py +++ b/build_files/scons/tools/btools.py @@ -108,7 +108,7 @@ def validate_arguments(args, bc): opts_list = [ 'WITH_BF_FREESTYLE', 'WITH_BF_PYTHON', 'WITH_BF_PYTHON_SAFETY', 'WITH_BF_PYTHON_SECURITY', 'BF_PYTHON', 'BF_PYTHON_VERSION', 'BF_PYTHON_INC', 'BF_PYTHON_BINARY', 'BF_PYTHON_LIB', 'BF_PYTHON_LIBPATH', 'BF_PYTHON_LIBPATH_ARCH', 'WITH_BF_STATICPYTHON', 'WITH_OSX_STATICPYTHON', 'BF_PYTHON_LIB_STATIC', 'BF_PYTHON_DLL', 'BF_PYTHON_ABI_FLAGS', 'WITH_BF_OPENAL', 'BF_OPENAL', 'BF_OPENAL_INC', 'BF_OPENAL_LIB', 'BF_OPENAL_LIBPATH', 'WITH_BF_STATICOPENAL', 'BF_OPENAL_LIB_STATIC', - 'WITH_BF_SDL', 'BF_SDL', 'BF_SDL_INC', 'BF_SDL_LIB', 'BF_SDL_LIBPATH', + 'WITH_BF_SDL', 'BF_SDL', 'BF_SDL_INC', 'BF_SDL_LIB', 'BF_SDL_LIBPATH', 'WITH_BF_SDL_DYNLOAD', 'WITH_BF_JACK', 'BF_JACK', 'BF_JACK_INC', 'BF_JACK_LIB', 'BF_JACK_LIBPATH', 'WITH_BF_JACK_DYNLOAD', 'WITH_BF_SNDFILE', 'BF_SNDFILE', 'BF_SNDFILE_INC', 'BF_SNDFILE_LIB', 'BF_SNDFILE_LIBPATH', 'WITH_BF_STATICSNDFILE', 'BF_SNDFILE_LIB_STATIC', 'BF_PTHREADS', 'BF_PTHREADS_INC', 'BF_PTHREADS_LIB', 'BF_PTHREADS_LIBPATH', @@ -300,6 +300,7 @@ def read_opts(env, cfg, args): ('BF_SDL_INC', 'SDL include path', ''), ('BF_SDL_LIB', 'SDL library', ''), ('BF_SDL_LIBPATH', 'SDL library path', ''), + (BoolVariable('WITH_BF_SDL_DYNLOAD', 'Enable runtime dynamic SDL libraries loading (works only on Linux)', False)), (BoolVariable('WITH_BF_JACK', 'Enable jack support if true', True)), ('BF_JACK', 'jack base path', ''), |