From 40f237675f8627aefd1d5f46841ce03faf7b52e2 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Fri, 6 Feb 2015 14:51:14 +0500 Subject: Some tweaks to support upcoming OSL-1.6 Doesn't mean we're 100% ready for the transition, but need to start somewhere anyway. Changes: - OSL is no longer supporting cpp and requires usage of Boost Wave. So now Wave component of Boost is optionally demanded when looking for the Boost libraries if OSL is enabled. Only did this for Linux, MSVC seems already using Wave. Not sure about OSX. - Because of the same reason OSL should be moved prior Boost for linker. - Whole archive trick makes it so linking fails with duplicated symbols, so removed it for the new OSL. Didn't see issues with this so far. - Added some code to check OSL version on Linux. Would need to move all that to FindOpenShadingLanguage.cmake which we can get from Cycles standalone repository. So in theory no affect on current stup would be made at all. - Added some tweaks to buildbot files. It now seems to be happy with the new OSL libraries, but again, those tweaks are not in action yet. All this was tested on Linux only. Win/OSX might still need some tweaks to support new OSL. P.S. This doesn't mean we're pushing OSL update yet, just making some preliminary tweaks to avoid entropy of PITA when we'll actually want to switch. --- .../buildbot/config/user-config-glibc211-i686.py | 11 +++++++++-- .../buildbot/config/user-config-glibc211-x86_64.py | 11 +++++++++-- build_files/cmake/macros.cmake | 6 +++--- build_files/scons/tools/Blender.py | 20 ++++++++++---------- 4 files changed, 31 insertions(+), 17 deletions(-) (limited to 'build_files') diff --git a/build_files/buildbot/config/user-config-glibc211-i686.py b/build_files/buildbot/config/user-config-glibc211-i686.py index 59a11072f2b..06c43be32f2 100644 --- a/build_files/buildbot/config/user-config-glibc211-i686.py +++ b/build_files/buildbot/config/user-config-glibc211-i686.py @@ -124,13 +124,15 @@ BF_OIIO_INC = '${BF_OIIO}/include' BF_OIIO_LIB_STATIC = '${BF_OIIO_LIBPATH}/libOpenImageIO.a ${BF_OPENEXR}/lib/libIlmImf.a ${BF_JPEG}/lib/libjpeg.a' BF_OIIO_LIBPATH = '${BF_OIIO}/lib' +BF_IS_NEW_OSL = False WITH_BF_CYCLES_OSL = True -WITH_BF_STATICOSL = False +WITH_BF_STATICOSL = BF_IS_NEW_OSL BF_OSL = '/opt/lib/osl' BF_OSL_INC = '${BF_OSL}/include' # note oslexec would passed via program linkflags, which is needed to # make llvm happy with osl_allocate_closure_component BF_OSL_LIB = 'oslcomp oslexec oslquery' +BF_OSL_LIB_STATIC = '${BF_OSL}/lib/liboslcomp.a ${BF_OSL}/lib/liboslexec.a ${BF_OSL}/lib/liboslquery.a' BF_OSL_LIBPATH = '${BF_OSL}/lib' BF_OSL_COMPILER = '${BF_OSL}/bin/oslc' @@ -157,6 +159,8 @@ BF_BOOST_INC = '${BF_BOOST}/include' BF_BOOST_LIB_STATIC = '${BF_BOOST_LIBPATH}/libboost_filesystem.a ${BF_BOOST_LIBPATH}/libboost_date_time.a ' + \ '${BF_BOOST_LIBPATH}/libboost_regex.a ${BF_BOOST_LIBPATH}/libboost_locale.a ${BF_BOOST_LIBPATH}/libboost_system.a \ ${BF_BOOST_LIBPATH}/libboost_thread.a' +if BF_IS_NEW_OSL: + BF_BOOST_LIB_STATIC += ' ${BF_BOOST_LIBPATH}/libboost_wave.a' BF_BOOST_LIBPATH = '${BF_BOOST}/lib' # Ocean Simulation @@ -166,4 +170,7 @@ WITH_BF_OCEANSIM = True BF_DEBUG = False REL_CCFLAGS = ['-DNDEBUG', '-O2', '-msse', '-msse2'] # C & C++ PLATFORM_LINKFLAGS = ['-lrt'] -BF_PROGRAM_LINKFLAGS = ['-Wl,--whole-archive', '-loslexec', '-Wl,--no-whole-archive', '-Wl,--version-script=source/creator/blender.map'] +if BF_IS_NEW_OSL: + BF_PROGRAM_LINKFLAGS = ['-Wl,--version-script=source/creator/blender.map'] +else: + BF_PROGRAM_LINKFLAGS = ['-Wl,--whole-archive', '-loslexec', '-Wl,--no-whole-archive', '-Wl,--version-script=source/creator/blender.map'] diff --git a/build_files/buildbot/config/user-config-glibc211-x86_64.py b/build_files/buildbot/config/user-config-glibc211-x86_64.py index a0ae6122944..29f6143f50e 100644 --- a/build_files/buildbot/config/user-config-glibc211-x86_64.py +++ b/build_files/buildbot/config/user-config-glibc211-x86_64.py @@ -124,13 +124,15 @@ BF_OIIO_INC = '${BF_OIIO}/include' BF_OIIO_LIB_STATIC = '${BF_OIIO_LIBPATH}/libOpenImageIO.a ${BF_OPENEXR}/lib/libIlmImf.a ${BF_JPEG}/lib/libjpeg.a' BF_OIIO_LIBPATH = '${BF_OIIO}/lib' +BF_IS_NEW_OSL = False WITH_BF_CYCLES_OSL = True -WITH_BF_STATICOSL = False +WITH_BF_STATICOSL = BF_IS_NEW_OSL BF_OSL = '/opt/lib/osl' BF_OSL_INC = '${BF_OSL}/include' # note oslexec would passed via program linkflags, which is needed to # make llvm happy with osl_allocate_closure_component BF_OSL_LIB = 'oslcomp oslexec oslquery' +BF_OSL_LIB_STATIC = '${BF_OSL}/lib/liboslcomp.a ${BF_OSL}/lib/liboslexec.a ${BF_OSL}/lib/liboslquery.a' BF_OSL_LIBPATH = '${BF_OSL}/lib' BF_OSL_COMPILER = '${BF_OSL}/bin/oslc' @@ -157,6 +159,8 @@ BF_BOOST_INC = '${BF_BOOST}/include' BF_BOOST_LIB_STATIC = '${BF_BOOST_LIBPATH}/libboost_filesystem.a ${BF_BOOST_LIBPATH}/libboost_date_time.a ' + \ '${BF_BOOST_LIBPATH}/libboost_regex.a ${BF_BOOST_LIBPATH}/libboost_locale.a ${BF_BOOST_LIBPATH}/libboost_system.a \ ${BF_BOOST_LIBPATH}/libboost_thread.a' +if BF_IS_NEW_OSL: + BF_BOOST_LIB_STATIC += ' ${BF_BOOST_LIBPATH}/libboost_wave.a' BF_BOOST_LIBPATH = '${BF_BOOST}/lib' # Ocean Simulation @@ -166,4 +170,7 @@ WITH_BF_OCEANSIM = True BF_DEBUG = False REL_CCFLAGS = ['-DNDEBUG', '-O2', '-msse', '-msse2'] # C & C++ PLATFORM_LINKFLAGS = ['-lrt'] -BF_PROGRAM_LINKFLAGS = ['-Wl,--whole-archive', '-loslexec', '-Wl,--no-whole-archive', '-Wl,--version-script=source/creator/blender.map'] +if BF_IS_NEW_OSL: + BF_PROGRAM_LINKFLAGS = ['-Wl,--version-script=source/creator/blender.map'] +else: + BF_PROGRAM_LINKFLAGS = ['-Wl,--whole-archive', '-loslexec', '-Wl,--no-whole-archive', '-Wl,--version-script=source/creator/blender.map'] diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake index f4b241bd2e0..056241b3767 100644 --- a/build_files/cmake/macros.cmake +++ b/build_files/cmake/macros.cmake @@ -354,6 +354,9 @@ macro(setup_liblinks if(WITH_OPENCOLORIO) target_link_libraries(${target} ${OPENCOLORIO_LIBRARIES}) endif() + if(WITH_CYCLES_OSL) + target_link_libraries(${target} ${OSL_LIBRARIES}) + endif() if(WITH_BOOST) target_link_libraries(${target} ${BOOST_LIBRARIES}) if(Boost_USE_STATIC_LIBS AND Boost_USE_ICU) @@ -412,9 +415,6 @@ macro(setup_liblinks if(WITH_MOD_CLOTH_ELTOPO) target_link_libraries(${target} ${LAPACK_LIBRARIES}) endif() - if(WITH_CYCLES_OSL) - target_link_libraries(${target} ${OSL_LIBRARIES}) - endif() if(WITH_LLVM) target_link_libraries(${target} ${LLVM_LIBRARY}) endif() diff --git a/build_files/scons/tools/Blender.py b/build_files/scons/tools/Blender.py index eb2e57ad793..f903668ba10 100644 --- a/build_files/scons/tools/Blender.py +++ b/build_files/scons/tools/Blender.py @@ -216,16 +216,16 @@ def setup_staticlibs(lenv): if lenv['WITH_BF_STATICOCIO']: statlibs += Split(lenv['BF_OCIO_LIB_STATIC']) - if lenv['WITH_BF_BOOST']: - libincs += Split(lenv['BF_BOOST_LIBPATH']) - if lenv['WITH_BF_STATICBOOST']: - statlibs += Split(lenv['BF_BOOST_LIB_STATIC']) - if lenv['WITH_BF_CYCLES_OSL']: libincs += Split(lenv['BF_OSL_LIBPATH']) if lenv['WITH_BF_STATICOSL']: statlibs += Split(lenv['BF_OSL_LIB_STATIC']) + if lenv['WITH_BF_BOOST']: + libincs += Split(lenv['BF_BOOST_LIBPATH']) + if lenv['WITH_BF_STATICBOOST']: + statlibs += Split(lenv['BF_BOOST_LIB_STATIC']) + if lenv['WITH_BF_LLVM']: libincs += Split(lenv['BF_LLVM_LIBPATH']) if lenv['WITH_BF_STATICLLVM']: @@ -325,16 +325,16 @@ def setup_syslibs(lenv): if lenv['WITH_BF_3DMOUSE']: if not lenv['WITH_BF_STATIC3DMOUSE']: syslibs += Split(lenv['BF_3DMOUSE_LIB']) - + + if lenv['WITH_BF_CYCLES_OSL'] and not lenv['WITH_BF_STATICOSL']: + syslibs += Split(lenv['BF_OSL_LIB']) + if lenv['WITH_BF_BOOST'] and not lenv['WITH_BF_STATICBOOST']: syslibs += Split(lenv['BF_BOOST_LIB']) - + if lenv['WITH_BF_INTERNATIONAL']: syslibs += Split(lenv['BF_BOOST_LIB_INTERNATIONAL']) - if lenv['WITH_BF_CYCLES_OSL'] and not lenv['WITH_BF_STATICOSL']: - syslibs += Split(lenv['BF_OSL_LIB']) - if lenv['WITH_BF_LLVM'] and not lenv['WITH_BF_STATICLLVM']: syslibs += Split(lenv['BF_LLVM_LIB']) -- cgit v1.2.3