From 2324c80f50f9cb95435b66ea370d38fd9617760b Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 15 Nov 2012 17:16:27 +0000 Subject: Cycles OSL: windows build system changes to support static OSL/OIIO. --- CMakeLists.txt | 11 +++++++++-- SConstruct | 4 +++- build_files/cmake/macros.cmake | 6 +++++- build_files/scons/config/win32-vc-config.py | 2 +- intern/cycles/blender/addon/osl.py | 7 ++++--- intern/cycles/kernel/shaders/CMakeLists.txt | 2 +- source/creator/CMakeLists.txt | 20 +++----------------- 7 files changed, 26 insertions(+), 26 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 70a75773d16..45bc7a6d2fe 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -403,7 +403,7 @@ if(WITH_CYCLES OR WITH_MOD_BOOLEAN OR WITH_AUDASPACE OR WITH_INTERNATIONAL) endif() # auto enable llvm for cycles_osl -if(WITH_CYCLES_OSL AND NOT WIN32) +if(WITH_CYCLES_OSL) set(WITH_LLVM ON CACHE BOOL "ON" FORCE) endif() @@ -942,6 +942,13 @@ elseif(WIN32) endif() endif() + if(WITH_LLVM) + set(LLVM_DIRECTORY ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation") + file(GLOB LLVM_LIBRARY ${LLVM_DIRECTORY}/lib/*.lib) + set(LLVM_STATIC YES) + endif() + + if(MSVC) set(PLATFORM_LINKLIBS ws2_32 vfw32 winmm kernel32 user32 gdi32 comdlg32 advapi32 shfolder shell32 ole32 oleaut32 uuid) @@ -1675,7 +1682,7 @@ if(WITH_CYCLES) message(FATAL_ERROR "Cycles reqires WITH_BOOST, the library may not have been found. Configure BOOST or disable WITH_CYCLES") endif() - if(WITH_CYCLES_OSL AND NOT WIN32) + if(WITH_CYCLES_OSL) if(NOT WITH_LLVM) message(FATAL_ERROR "Cycles OSL reqires WITH_LLVM, the library may not have been found. Configure LLVM or disable WITH_CYCLES_OSL") endif() diff --git a/SConstruct b/SConstruct index 5e31fce00a4..bda361a0a9d 100644 --- a/SConstruct +++ b/SConstruct @@ -887,7 +887,9 @@ if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'win64-vc', 'linuxcross'): dllsources.append('${LCGDIR}/thumbhandler/lib/BlendThumb64.dll') if env['WITH_BF_OIIO'] and env['OURPLATFORM'] != 'win32-mingw': - dllsources.append('${LCGDIR}/openimageio/bin/OpenImageIO.dll') + dllpath = '${LCGDIR}/openimageio/bin/OpenImageIO.dll' + if os.path.exists(env.subst(dllpath)): + dllsources.append(dllpath) if env['WITH_BF_OCIO']: if not env['OURPLATFORM'] in ('win32-mingw', 'linuxcross'): diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake index 2d9de5a5792..4f1d34f993c 100644 --- a/build_files/cmake/macros.cmake +++ b/build_files/cmake/macros.cmake @@ -700,7 +700,11 @@ macro(delayed_install destination) foreach(f ${files}) - set_property(GLOBAL APPEND PROPERTY DELAYED_INSTALL_FILES ${base}/${f}) + if(IS_ABSOLUTE ${f}) + set_property(GLOBAL APPEND PROPERTY DELAYED_INSTALL_FILES ${f}) + else() + set_property(GLOBAL APPEND PROPERTY DELAYED_INSTALL_FILES ${base}/${f}) + endif() set_property(GLOBAL APPEND PROPERTY DELAYED_INSTALL_DESTINATIONS ${destination}) endforeach() endmacro() diff --git a/build_files/scons/config/win32-vc-config.py b/build_files/scons/config/win32-vc-config.py index be30053c314..74ae186d54b 100644 --- a/build_files/scons/config/win32-vc-config.py +++ b/build_files/scons/config/win32-vc-config.py @@ -217,7 +217,7 @@ C_WARN = [] CC_WARN = [] CXX_WARN = [] -LLIBS = ['ws2_32', 'vfw32', 'winmm', 'kernel32', 'user32', 'gdi32', 'comdlg32', 'advapi32', 'shfolder', 'shell32', 'ole32', 'oleaut32', 'uuid'] +LLIBS = ['ws2_32', 'vfw32', 'winmm', 'kernel32', 'user32', 'gdi32', 'comdlg32', 'advapi32', 'shfolder', 'shell32', 'ole32', 'oleaut32', 'uuid', 'psapi'] PLATFORM_LINKFLAGS = ['/SUBSYSTEM:CONSOLE','/MACHINE:IX86','/STACK:2097152','/INCREMENTAL:NO', '/LARGEADDRESSAWARE', '/NODEFAULTLIB:msvcrt.lib', '/NODEFAULTLIB:msvcmrt.lib', '/NODEFAULTLIB:msvcurt.lib', '/NODEFAULTLIB:msvcrtd.lib'] diff --git a/intern/cycles/blender/addon/osl.py b/intern/cycles/blender/addon/osl.py index aac1e2422b9..79ce3df20c3 100644 --- a/intern/cycles/blender/addon/osl.py +++ b/intern/cycles/blender/addon/osl.py @@ -79,12 +79,13 @@ def update_script_node(node, report): if script.is_in_memory or script.is_dirty or script.is_modified or not os.path.exists(osl_path): # write text datablock contents to temporary file - osl_file = tempfile.NamedTemporaryFile(mode='w', suffix=".osl", delete=True) + osl_file = tempfile.NamedTemporaryFile(mode='w', suffix=".osl", delete=False) osl_file.write(script.as_string()) - osl_file.flush() + osl_file.close() + ok, oso_path = osl_compile(osl_file.name, report) oso_file_remove = False - osl_file.close() + os.remove(osl_file.name) else: # compile text datablock from disk directly ok, oso_path = osl_compile(osl_path, report) diff --git a/intern/cycles/kernel/shaders/CMakeLists.txt b/intern/cycles/kernel/shaders/CMakeLists.txt index 4f5a97c1bb6..f7fec62fd6d 100644 --- a/intern/cycles/kernel/shaders/CMakeLists.txt +++ b/intern/cycles/kernel/shaders/CMakeLists.txt @@ -89,7 +89,7 @@ foreach(_file ${SRC_OSL}) list(APPEND SRC_OSO ${_OSO_FILE} ) - + unset(_OSL_FILE) unset(_OSO_FILE) endforeach() diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt index b61466e8fe2..4d1620a8bb8 100644 --- a/source/creator/CMakeLists.txt +++ b/source/creator/CMakeLists.txt @@ -621,11 +621,11 @@ elseif(WIN32) ) if(WITH_OPENIMAGEIO) - if(NOT MINGW) - set(OIIOBIN ${LIBDIR}/openimageio/bin) + set(OIIODLL ${LIBDIR}/openimageio/bin/OpenImageIO.dll) + if(NOT MINGW AND EXISTS ${OIIODLL}) install( FILES - ${OIIOBIN}/OpenImageIO.dll + ${OIIODLL} DESTINATION ${TARGETDIR} ) endif() @@ -648,20 +648,6 @@ elseif(WIN32) endif() endif() - if(WITH_CYCLES AND WITH_CYCLES_OSL) - if(NOT MINGW) - set(OSLBIN ${LIBDIR}/osl/bin) - install( - FILES - ${OSLBIN}/oslexec.dll - ${OSLBIN}/oslquery.dll - ${OSLBIN}/oslcomp.dll - DESTINATION ${TARGETDIR} - ) - endif() - endif() - - elseif(APPLE) # handy install macro to exclude files, we use \$ escape for the "to" -- cgit v1.2.3