Compare commits

...
Author SHA1 Message Date
Larry Gritz e9b5e2fdb1 Fix missing -lpthread 2016-03-01 14:52:21 -08:00
Larry Gritz 99c4ece489 CHANGES 2016-02-26 21:40:03 -08:00
Larry Gritz e8e84a5a2c Port FindOpenEXR.cmake fixes from OIIO 2016-02-26 21:31:30 -08:00
Larry Gritz 91b5a309cb Rewrite of FindOpenEXR.cmake 2016-02-26 21:30:36 -08:00
Larry Gritz 03724a9236 Travis: build OIIO optimized, even when testing DEBUG for OSL (for speed of CI tests). 2016-02-26 21:30:25 -08:00
Larry Gritz 2457d36432 For stdosl.h funcs marked builtin, auto-detect funny read-write cases. #620
As Chris points out in #618, the fact that params are marked as output
is all we need to know that function's parameters are not all read-only
(duh).
2016-02-26 21:29:49 -08:00
Larry Gritz 9a5b82f693 New ref images for recent OIIO texture improvement.
Related to https://github.com/OpenImageIO/oiio/pull/1369
We can remove the old-oiio1.5 images once 1.6 is the minimum standard for OSL.
2016-02-26 14:36:10 -08:00
Larry Gritz 205c8fadd9 Fix typos in docs
Fixes #622, Fixes #623
2016-02-22 21:21:13 -08:00
Larry Gritz 3e12071012 oslc bug -- getmatrix failed to note that the matrix argument is written. #618
This could lead to a cascade of optimization errors at runtime.
I have no idea why this never showed up as a problem before today.

In addition to fixing it on the oslc side, add a hacky fix to make sure
that old compiled shaders are retroactively fixed as they are loaded at
runtime.
2016-02-06 17:29:33 -08:00
Larry Gritz 86082e94a5 Better handling of multiple SIMD args (such as USE_SIMD=avx,f16c).
It botched this when passing along to precompiling for LLVM.
2016-02-06 17:29:33 -08:00
Larry Gritz de7935a7e8 Fix typos in docs.
Fixes #614
2016-02-06 17:29:33 -08:00
Larry Gritz 07782fcd28 Post-branch version bump 2016-01-29 11:20:30 -08:00
Larry Gritz 02cda6aaf0 Version/release 2016-01-29 11:15:22 -08:00
34 changed files with 218 additions and 333 deletions
+3 -2
View File
@@ -56,6 +56,7 @@ before_install:
export PLATFORM=linux64 ;
cat /proc/cpuinfo ;
fi
- export OIIOPLATFORM=$PLATFORM
- if [ $DEBUG == 1 ] ; then export PLATFORM=${PLATFORM}.debug ; fi
- echo "Build platform name is $PLATFORM"
@@ -71,9 +72,9 @@ install:
export ILMBASE_HOME=$PWD/openexr-install ;
export OPENEXR_HOME=$PWD/openexr-install ;
fi
- export OIIOMAKEFLAGS="$OIIOMAKEFLAGS -j2"
- export OIIOMAKEFLAGS="$OIIOMAKEFLAGS -j2 DEBUG= "
- src/build-scripts/build_openimageio.bash
- export OPENIMAGEIOHOME=$PWD/OpenImageIO/dist/$PLATFORM
- export OPENIMAGEIOHOME=$PWD/OpenImageIO/dist/$OIIOPLATFORM
- export DYLD_LIBRARY_PATH=$OPENIMAGEIOHOME/lib:$DYLD_LIBRARY_PATH
- export LD_LIBRARY_PATH=$OPENIMAGEIOHOME/lib:$LD_LIBRARY_PATH
- export PATH=$OPENIMAGEIOHOME/bin:$PATH
+9 -1
View File
@@ -1,6 +1,14 @@
Changes:
Release 1.7 -- 29 Jan 2016 (compared to 1.6)
Release 1.7.2 -- 1 Mar 2016 (compared to 1.7.1)
--------------------------------------------------
* Build: better handling of multiple USE_SIMD options. #617
* oslc bug: getmatrix() failed to note that the matrix argument was
written. #618
* CMake FindOpenEXR.cmake totally rewritten, much simpler and better. #621
Release 1.7 [1.7.1] -- 29 Jan 2016 (compared to 1.6)
-----------------------------------------------
Language, standard libary, and compiler changes (for shader writers):
* Language features:
+5 -2
View File
@@ -3,8 +3,8 @@ project (OSL)
# Release version of the library
set (OSL_LIBRARY_VERSION_MAJOR 1)
set (OSL_LIBRARY_VERSION_MINOR 7)
set (OSL_LIBRARY_VERSION_PATCH 1)
set (OSL_LIBRARY_VERSION_RELEASE_TYPE "dev") # "dev", "betaX", "RCY", ""
set (OSL_LIBRARY_VERSION_PATCH 2)
set (OSL_LIBRARY_VERSION_RELEASE_TYPE "") # "dev", "betaX", "RCY", ""
# Version of the OSO file format and instruction set
set (OSO_FILE_VERSION_MAJOR 1)
@@ -289,6 +289,7 @@ if (USE_LIBCPLUSPLUS AND CMAKE_COMPILER_IS_CLANG)
add_definitions ("-stdlib=libc++")
endif ()
set (OSL_SIMD_FLAGS "")
if (NOT USE_SIMD STREQUAL "")
message (STATUS "Compiling with SIMD level ${USE_SIMD}")
if (USE_SIMD STREQUAL "0")
@@ -301,8 +302,10 @@ if (NOT USE_SIMD STREQUAL "")
endif ()
if (MSVC OR CMAKE_COMPILER_IS_INTEL)
add_definitions ("/arch:${feature}")
set (OSL_SIMD_FLAGS ${OSL_SIMD_FLAGS} "/arch:${feature}")
else ()
add_definitions ("-m${feature}")
set (OSL_SIMD_FLAGS ${OSL_SIMD_FLAGS} "-m${feature}")
endif ()
endforeach()
endif ()
+5
View File
@@ -98,6 +98,10 @@ ifneq (${USE_FAST_MATH},)
MY_CMAKE_FLAGS += -DUSE_FAST_MATH:BOOL=${USE_FAST_MATH}
endif
ifneq (${OPENEXR_HOME},)
MY_CMAKE_FLAGS += -DOPENEXR_HOME:STRING=${OPENEXR_HOME}
endif
ifneq (${ILMBASE_HOME},)
MY_CMAKE_FLAGS += -DILMBASE_HOME:STRING=${ILMBASE_HOME}
endif
@@ -328,6 +332,7 @@ help:
@echo " LINKSTATIC=1 Link with static external libraries when possible"
@echo " Finding and Using Dependencies:"
@echo " BOOST_HOME=path Custom Boost installation"
@echo " OPENEXR_HOME=path Custom OpenEXR installation"
@echo " ILMBASE_HOME=path Custom Ilmbase installation"
@echo " PARTIO_HOME= Use Partio from the given location"
@echo " USE_EXTERNAL_PUGIXML=1 Use the system PugiXML, not the one in OIIO"
+2 -3
View File
@@ -11,9 +11,8 @@ MY_CMAKE_FLAGS += -DHIDE_SYMBOLS:BOOL=1
MY_CMAKE_FLAGS += -DBUILDSTATIC:BOOL=1
MY_CMAKE_FLAGS += -DLINKSTATIC:BOOL=1
MY_CMAKE_FLAGS += -DUSE_FAST_MATH:BOOL=1
MY_CMAKE_FLAGS += -DILMBASE_LIB_AREA:STRING=${ILMBASE_HOME}/lib/linux-ix86-64/gcc4.1
MY_CMAKE_FLAGS += -DILMBASE_CUSTOM:BOOL=True
MY_CMAKE_FLAGS += -DILMBASE_CUSTOM_LIBRARIES:STRING="Half-fPIC Iex-fPIC IexMath-fPIC IlmThread-fPIC Imath-fPIC"
MY_CMAKE_FLAGS += -DOPENEXR_CUSTOM_LIB_DIR:STRING=${ILMBASE_HOME}/lib/linux-ix86-64/gcc4.1
MY_CMAKE_FLAGS += -DOPENEXR_CUSTOM_LIB_SUFFIX:STRING="-fPIC"
# Don't build testshade or testrender (mostly because they require the
# image-handling parts of OIIO, which Pixar doesn't build)
+8 -30
View File
@@ -86,24 +86,13 @@ ifeq ($(SP_OS), spinux1)
# Our minimal architecture for workstations and farm supports SSE 4.1
USE_SIMD = sse4.1
ifneq (,$(wildcard /usr/include/OpenEXR2))
MY_CMAKE_FLAGS += \
-DILMBASE_CUSTOM=1 \
-DILMBASE_CUSTOM_INCLUDE_DIR=/usr/include/OpenEXR2 \
-DILMBASE_CUSTOM_LIB_DIR=/usr/lib64/OpenEXR2 \
-DILMBASE_CUSTOM_LIBRARIES="Imath Half IlmThread Iex"
else
MY_CMAKE_FLAGS += \
-DILMBASE_CUSTOM=1 \
-DILMBASE_CUSTOM_LIB_DIR=/usr/lib64 \
-DILMBASE_CUSTOM_LIBRARIES="SpiImath SpiHalf SpiIlmThread SpiIex"
endif
MY_CMAKE_FLAGS += \
-DLLVM_CUSTOM=1 \
-DLLVM_STATIC=1 \
-DOPENEXR_CUSTOM_INCLUDE_DIR=/usr/include/OpenEXR2 \
-DOPENEXR_CUSTOM_LIB_DIR=/usr/lib64/OpenEXR2 \
-DEXTRA_OSLEXEC_LIBRARIES="/usr/lib64/libpthread.so" \
-DEXTRA_OSLEXEC_LIBRARIES="/usr/lib64/libcurses.so" \
-DLLVM_CUSTOM=1 \
-DLLVM_STATIC=1 \
-DLLVM_VERSION=${LLVM_VERSION} \
-DLLVM_DIRECTORY=${LLVM_DIRECTORY}
@@ -172,24 +161,13 @@ ifeq ($(SP_OS), rhel7)
# Our minimal architecture for workstations and farm supports SSE 4.1
USE_SIMD = sse4.1
ifneq (,$(wildcard /usr/include/OpenEXR2))
MY_CMAKE_FLAGS += \
-DILMBASE_CUSTOM=1 \
-DILMBASE_CUSTOM_INCLUDE_DIR=/usr/include/OpenEXR2 \
-DILMBASE_CUSTOM_LIB_DIR=/usr/lib64/OpenEXR2 \
-DILMBASE_CUSTOM_LIBRARIES="Imath Half IlmThread Iex"
else
MY_CMAKE_FLAGS += \
-DILMBASE_CUSTOM=1 \
-DILMBASE_CUSTOM_LIB_DIR=/usr/lib64 \
-DILMBASE_CUSTOM_LIBRARIES="SpiImath SpiHalf SpiIlmThread SpiIex"
endif
MY_CMAKE_FLAGS += \
-DLLVM_CUSTOM=1 \
-DLLVM_STATIC=1 \
-DOPENEXR_CUSTOM_INCLUDE_DIR=/usr/include/OpenEXR2 \
-DOPENEXR_CUSTOM_LIB_DIR=/usr/lib64/OpenEXR2 \
-DEXTRA_OSLEXEC_LIBRARIES="/usr/lib64/libpthread.so" \
-DEXTRA_OSLEXEC_LIBRARIES="/usr/lib64/libcurses.so" \
-DLLVM_CUSTOM=1 \
-DLLVM_STATIC=1 \
-DLLVM_VERSION=${LLVM_VERSION} \
-DLLVM_DIRECTORY=${LLVM_DIRECTORY}
+19 -8
View File
@@ -6,8 +6,8 @@ if (NOT VERBOSE)
set (Bison_FIND_QUIETLY true)
set (Boost_FIND_QUIETLY true)
set (Flex_FIND_QUIETLY true)
set (IlmBase_FIND_QUIETLY true)
set (LLVM_FIND_QUIETLY true)
set (OpenEXR_FIND_QUIETLY true)
set (OpenImageIO_FIND_QUIETLY true)
set (Partio_FIND_QUIETLY true)
set (PkgConfig_FIND_QUIETLY true)
@@ -52,16 +52,27 @@ endif ()
###########################################################################
# IlmBase setup
if (NOT ILMBASE_INCLUDE_DIR)
find_package (IlmBase REQUIRED)
if (NOT OPENEXR_FOUND)
find_package (OpenEXR REQUIRED)
endif ()
include_directories ("${ILMBASE_INCLUDE_DIR}")
include_directories ("${ILMBASE_INCLUDE_DIR}/OpenEXR")
#OpenEXR 2.2 still has problems with importing ImathInt64.h unqualified
#thus need for ilmbase/OpenEXR
include_directories ("${OPENEXR_INCLUDE_DIR}"
"${ILMBASE_INCLUDE_DIR}"
"${ILMBASE_INCLUDE_DIR}/OpenEXR")
macro (LINK_ILMBASE target)
target_link_libraries (${target} ${ILMBASE_LIBRARIES})
endmacro ()
if (${OPENEXR_VERSION} VERSION_LESS 2.0.0)
# OpenEXR 1.x had weird #include dirctives, this is also necessary:
include_directories ("${OPENEXR_INCLUDE_DIR}/OpenEXR")
else ()
add_definitions (-DUSE_OPENEXR_VERSION2=1)
endif ()
if (NOT OpenEXR_FIND_QUIETLY)
message (STATUS "ILMBASE_INCLUDE_DIR = ${ILMBASE_INCLUDE_DIR}")
message (STATUS "ILMBASE_LIBRARIES = ${ILMBASE_LIBRARIES}")
endif ()
# end IlmBase setup
###########################################################################
-260
View File
@@ -1,260 +0,0 @@
# Module to find IlmBase
#
# This module will first look into the directories defined by the variables:
# - ILMBASE_HOME, ILMBASE_VERSION, ILMBASE_LIB_AREA
#
# It also supports non-standard names for the library components.
#
# To use a custom IlmBase:
# - Set the variable ILMBASE_CUSTOM to True
# - Set the variable ILMBASE_CUSTOM_LIBRARIES to a list of the libraries to
# use, e.g. "SpiImath SpiHalf SpiIlmThread SpiIex"
# - Optionally set the variable ILMBASE_CUSTOM_INCLUDE_DIR to any
# particularly weird place that the OpenEXR/*.h files may be found
# - Optionally set the variable ILMBASE_CUSTOM_LIB_DIR to any
# particularly weird place that the libraries files may be found
#
# This module defines the following variables:
#
# ILMBASE_INCLUDE_DIR - where to find half.h, IlmBaseConfig.h, etc.
# ILMBASE_LIBRARIES - list of libraries to link against when using IlmBase.
# ILMBASE_FOUND - True if IlmBase was found.
# Other standarnd issue macros
include (FindPackageHandleStandardArgs)
include (FindPackageMessage)
include (SelectLibraryConfigurations)
if( ILMBASE_USE_STATIC_LIBS )
set( _ilmbase_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
if(WIN32)
set(CMAKE_FIND_LIBRARY_SUFFIXES .lib .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
else()
set(CMAKE_FIND_LIBRARY_SUFFIXES .a )
endif()
endif()
# Macro to assemble a helper state variable
macro (SET_STATE_VAR varname)
set (tmp_ilmbaselibs ${ILMBASE_CUSTOM_LIBRARIES})
separate_arguments (tmp_ilmbaselibs)
set (tmp_lst
${ILMBASE_CUSTOM} | ${tmp_ilmbaselibs} |
${ILMBASE_HOME} | ${ILMBASE_VERSION} | ${ILMBASE_LIB_AREA}
)
set (${varname} "${tmp_lst}")
unset (tmp_ilmbaselibs)
unset (tmp_lst)
endmacro ()
# To enforce that find_* functions do not use inadvertently existing versions
if (ILMBASE_CUSTOM)
set (ILMBASE_FIND_OPTIONS "NO_DEFAULT_PATH")
endif ()
# Macro to search for an include directory
macro (PREFIX_FIND_INCLUDE_DIR prefix includefile libpath_var)
string (TOUPPER ${prefix}_INCLUDE_DIR tmp_varname)
find_path(${tmp_varname} ${includefile}
HINTS ${${libpath_var}}
PATH_SUFFIXES include
${ILMBASE_FIND_OPTIONS}
)
if (${tmp_varname})
mark_as_advanced (${tmp_varname})
endif ()
unset (tmp_varname)
endmacro ()
# Macro to search for the given library and adds the cached
# variable names to the specified list
macro (PREFIX_FIND_LIB prefix libname libpath_var liblist_var cachelist_var)
string (TOUPPER ${prefix}_${libname} tmp_prefix)
# Handle new library names for OpenEXR 2.1 build via cmake
string(REPLACE "." "_" _ILMBASE_VERSION ${ILMBASE_VERSION})
string(SUBSTRING ${_ILMBASE_VERSION} 0 3 _ILMBASE_VERSION )
find_library(${tmp_prefix}_LIBRARY_RELEASE
NAMES ${libname} ${libname}-${_ILMBASE_VERSION}
HINTS ${${libpath_var}}
PATH_SUFFIXES lib
${ILMBASE_FIND_OPTIONS}
)
find_library(${tmp_prefix}_LIBRARY_DEBUG
NAMES ${libname}d ${libname}_d ${libname}debug ${libname}_debug
HINTS ${${libpath_var}}
PATH_SUFFIXES lib
${ILMBASE_FIND_OPTIONS}
)
# Properly define ${tmp_prefix}_LIBRARY (cached) and ${tmp_prefix}_LIBRARIES
select_library_configurations (${tmp_prefix})
list (APPEND ${liblist_var} ${tmp_prefix}_LIBRARIES)
# Add to the list of variables which should be reset
list (APPEND ${cachelist_var}
${tmp_prefix}_LIBRARY
${tmp_prefix}_LIBRARY_RELEASE
${tmp_prefix}_LIBRARY_DEBUG)
mark_as_advanced (
${tmp_prefix}_LIBRARY
${tmp_prefix}_LIBRARY_RELEASE
${tmp_prefix}_LIBRARY_DEBUG)
unset (tmp_prefix)
endmacro ()
# Encode the current state of the external variables into a string
SET_STATE_VAR (ILMBASE_CURRENT_STATE)
# If the state has changed, clear the cached variables
if (ILMBASE_CACHED_STATE AND
NOT ILMBASE_CACHED_STATE STREQUAL ILMBASE_CURRENT_STATE)
foreach (libvar ${ILMBASE_CACHED_VARS})
unset (${libvar} CACHE)
endforeach ()
endif ()
# Generic search paths
set (IlmBase_generic_include_paths
${ILMBASE_CUSTOM_INCLUDE_DIR}
/usr/include
/usr/include/${CMAKE_LIBRARY_ARCHITECTURE}
/usr/local/include
/sw/include
/opt/local/include)
set (IlmBase_generic_library_paths
${ILMBASE_CUSTOM_LIB_DIR}
/usr/lib
/usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}
/usr/local/lib
/usr/local/lib/${CMAKE_LIBRARY_ARCHITECTURE}
/sw/lib
/opt/local/lib)
# Search paths for the IlmBase files
if (ILMBASE_HOME)
if (ILMBASE_VERSION)
set (IlmBase_include_paths
${ILMBASE_HOME}/ilmbase-${ILMBASE_VERSION}/include
${ILMBASE_HOME}/include/ilmbase-${ILMBASE_VERSION})
set (IlmBase_library_paths
${ILMBASE_HOME}/ilmbase-${ILMBASE_VERSION}/lib
${ILMBASE_HOME}/lib/ilmbase-${ILMBASE_VERSION})
endif()
list (APPEND IlmBase_include_paths ${ILMBASE_HOME}/include)
set (IlmBase_library_paths
${ILMBASE_HOME}/lib
${ILMBASE_HOME}/lib64
${ILMBASE_LIB_AREA}
${IlmBase_library_paths})
endif ()
list (APPEND IlmBase_include_paths ${IlmBase_generic_include_paths})
list (APPEND IlmBase_library_paths ${IlmBase_generic_library_paths})
# Locate the header files
PREFIX_FIND_INCLUDE_DIR (IlmBase
OpenEXR/IlmBaseConfig.h IlmBase_include_paths)
if (ILMBASE_INCLUDE_DIR)
# Get the version from config file, if not already set.
if (NOT ILMBASE_VERSION)
FILE(STRINGS "${ILMBASE_INCLUDE_DIR}/OpenEXR/IlmBaseConfig.h" ILMBASE_BUILD_SPECIFICATION
REGEX "^[ \t]*#define[ \t]+ILMBASE_VERSION_STRING[ \t]+\"[.0-9]+\".*$")
if(ILMBASE_BUILD_SPECIFICATION)
if (NOT IlmBase_FIND_QUIETLY)
message(STATUS "${ILMBASE_BUILD_SPECIFICATION}")
endif ()
string(REGEX REPLACE ".*#define[ \t]+ILMBASE_VERSION_STRING[ \t]+\"([.0-9]+)\".*"
"\\1" XYZ ${ILMBASE_BUILD_SPECIFICATION})
set("ILMBASE_VERSION" ${XYZ} CACHE STRING "Version of ILMBase lib")
else()
# Old versions (before 2.0?) do not have any version string, just assuming 2.0 should be fine though.
message(WARNING "Could not determine ILMBase library version, assuming 2.0.")
set("ILMBASE_VERSION" "2.0" CACHE STRING "Version of ILMBase lib")
endif()
endif()
endif ()
if (ILMBASE_CUSTOM)
if (NOT ILMBASE_CUSTOM_LIBRARIES)
message (FATAL_ERROR "Custom IlmBase libraries requested but ILMBASE_CUSTOM_LIBRARIES is not set.")
endif()
set (IlmBase_Libraries ${ILMBASE_CUSTOM_LIBRARIES})
separate_arguments(IlmBase_Libraries)
else ()
#elseif (${ILMBASE_VERSION} VERSION_LESS "2.1")
set (IlmBase_Libraries Half Iex Imath IlmThread)
#else ()
# string(REGEX REPLACE "([0-9]+)[.]([0-9]+).*" "\\1_\\2" _ilmbase_libs_ver ${ILMBASE_VERSION})
# set (IlmBase_Libraries Half Iex-${_ilmbase_libs_ver} Imath-${_ilmbase_libs_ver} IlmThread-${_ilmbase_libs_ver})
endif ()
# Locate the IlmBase libraries
set (IlmBase_libvars "")
set (IlmBase_cachevars "")
foreach (ilmbase_lib ${IlmBase_Libraries})
PREFIX_FIND_LIB (IlmBase ${ilmbase_lib}
IlmBase_library_paths IlmBase_libvars IlmBase_cachevars)
endforeach ()
# Create the list of variables that might need to be cleared
set (ILMBASE_CACHED_VARS
ILMBASE_INCLUDE_DIR ${IlmBase_cachevars}
CACHE INTERNAL "Variables set by FindIlmBase.cmake" FORCE)
# Store the current state so that variables might be cleared if required
set (ILMBASE_CACHED_STATE ${ILMBASE_CURRENT_STATE}
CACHE INTERNAL "State last seen by FindIlmBase.cmake" FORCE)
# Link with pthreads if required
if (NOT WIN32 AND EXISTS ${ILMBASE_INCLUDE_DIR}/OpenEXR/IlmBaseConfig.h)
file (STRINGS ${ILMBASE_INCLUDE_DIR}/OpenEXR/IlmBaseConfig.h
ILMBASE_HAVE_PTHREAD
REGEX "^[ \\t]*#define[ \\t]+HAVE_PTHREAD[ \\t]1[ \\t]*\$"
)
if (ILMBASE_HAVE_PTHREAD)
find_package (Threads)
if (CMAKE_USE_PTHREADS_INIT)
set (ILMBASE_PTHREADS ${CMAKE_THREAD_LIBS_INIT})
endif ()
endif ()
endif ()
# Use the standard function to handle ILMBASE_FOUND
FIND_PACKAGE_HANDLE_STANDARD_ARGS (IlmBase DEFAULT_MSG
ILMBASE_INCLUDE_DIR ${IlmBase_libvars})
if (ILMBASE_FOUND)
set (ILMBASE_LIBRARIES "")
foreach (tmplib ${IlmBase_libvars})
list (APPEND ILMBASE_LIBRARIES ${${tmplib}})
endforeach ()
list (APPEND ILMBASE_LIBRARIES ${ILMBASE_PTHREADS})
if (NOT IlmBase_FIND_QUIETLY)
FIND_PACKAGE_MESSAGE (ILMBASE
"Found IlmBase: ${ILMBASE_LIBRARIES}"
"[${ILMBASE_INCLUDE_DIR}][${ILMBASE_LIBRARIES}][${ILMBASE_CURRENT_STATE}]"
)
endif ()
endif ()
# Restore the original find library ordering
if( ILMBASE_USE_STATIC_LIBS )
set(CMAKE_FIND_LIBRARY_SUFFIXES ${_ilmbase_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES})
endif()
# Unset the helper variables to avoid pollution
unset (ILMBASE_CURRENT_STATE)
unset (IlmBase_include_paths)
unset (IlmBase_library_paths)
unset (IlmBase_generic_include_paths)
unset (IlmBase_generic_library_paths)
unset (IlmBase_libvars)
unset (IlmBase_cachevars)
unset (ILMBASE_PTHREADS)
+137
View File
@@ -0,0 +1,137 @@
# Module to find OpenEXR.
#
# This module will set
# OPENEXR_FOUND true, if found
# OPENEXR_INCLUDE_DIR directory where headers are found
# OPENEXR_LIBRARIES libraries for OpenEXR + IlmBase
# ILMBASE_LIBRARIES libraries just IlmBase
# OPENEXR_VERSION OpenEXR version (accurate for >= 2.0.0,
# otherwise will just guess 1.6.1)
#
# Special inputs:
# OPENEXR_CUSTOM_INCLUDE_DIR - custom location of headers
# OPENEXR_CUSTOM_LIB_DIR - custom location of libraries
# OPENEXR_CUSTOM_LIB_PREFIX - special snowflake library prefix
# OPENEXR_CUSTOM_LIB_SUFFIX - special snowflake library suffix
#
# Other standarnd issue macros
include (FindPackageHandleStandardArgs)
include (SelectLibraryConfigurations)
find_package (ZLIB REQUIRED)
# List of likely places to find the headers -- note priority override of
# OPENEXR_CUSTOM_INCLUDE_DIR and ${OPENEXR_HOME}/include.
# ILMBASE is needed in case ilmbase an openexr are installed in separate
# directories, like NixOS does
set (GENERIC_INCLUDE_PATHS
${OPENEXR_CUSTOM_INCLUDE_DIR}
${OPENEXR_HOME}/include
${ILMBASE_HOME}/include
/usr/include
/usr/include/${CMAKE_LIBRARY_ARCHITECTURE}
/usr/local/include
/sw/include
/opt/local/include )
# List of likely places to find the libraries -- note priority override of
# OPENEXR_CUSTOM_LIB_DIR and ${OPENEXR_HOME}/lib.
set (GENERIC_LIBRARY_PATHS
${OPENEXR_CUSTOM_LIB_DIR}
${OPENEXR_HOME}/lib
${ILMBASE_HOME}/lib
/usr/lib
/usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}
/usr/local/lib
/usr/local/lib/${CMAKE_LIBRARY_ARCHITECTURE}
/sw/lib
/opt/local/lib
$ENV{PROGRAM_FILES}/OpenEXR/lib/static )
# Find the include file locations. We call find_path twice -- first using
# only the custom paths, then if that fails, try the default paths only.
# This seems to be the most robust way I can find to not get confused when
# both system and custom libraries are present.
find_path (ILMBASE_INCLUDE_PATH OpenEXR/IlmBaseConfig.h
PATHS ${GENERIC_INCLUDE_PATHS} NO_DEFAULT_PATH)
find_path (ILMBASE_INCLUDE_PATH OpenEXR/IlmBaseConfig.h)
find_path (OPENEXR_INCLUDE_PATH OpenEXR/OpenEXRConfig.h
PATHS ${GENERIC_INCLUDE_PATHS} NO_DEFAULT_PATH)
find_path (OPENEXR_INCLUDE_PATH OpenEXR/OpenEXRConfig.h)
# Handle request for static libs by altering CMAKE_FIND_LIBRARY_SUFFIXES.
# We will restore it at the end of this file.
set (_openexr_orig_suffixes ${CMAKE_FIND_LIBRARY_SUFFIXES})
if (OpenEXR_USE_STATIC_LIBS)
if (WIN32)
set (CMAKE_FIND_LIBRARY_SUFFIXES .lib .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
else ()
set (CMAKE_FIND_LIBRARY_SUFFIXES .a)
endif ()
endif ()
# Look for the libraries themselves, for all the components. Like with the
# headers, we do two finds -- first for custom locations, then for default.
set (_openexr_components IlmThread IlmImf Imath Iex Half)
foreach (COMPONENT ${_openexr_components})
string (TOUPPER ${COMPONENT} UPPERCOMPONENT)
set (FULL_COMPONENT_NAME ${OPENEXR_CUSTOM_LIB_PREFIX}${COMPONENT}${OPENEXR_CUSTOM_LIB_SUFFIX})
find_library (OPENEXR_${UPPERCOMPONENT}_LIBRARY ${FULL_COMPONENT_NAME}
PATHS ${GENERIC_LIBRARY_PATHS} NO_DEFAULT_PATH)
find_library (OPENEXR_${UPPERCOMPONENT}_LIBRARY ${FULL_COMPONENT_NAME})
endforeach ()
#Half usually has no suffix
find_library (OPENEXR_HALF_LIBRARY ${OPENEXR_CUSTOM_LIB_PREFIX}Half
PATHS ${GENERIC_LIBRARY_PATHS} NO_DEFAULT_PATH)
find_library (OPENEXR_HALF_LIBRARY ${OPENEXR_CUSTOM_LIB_PREFIX}Half)
# Link with pthreads if required
find_package (Threads)
if (CMAKE_USE_PTHREADS_INIT)
set (ILMBASE_PTHREADS ${CMAKE_THREAD_LIBS_INIT})
endif ()
# Set the FOUND, INCLUDE_DIR, and LIBRARIES variables.
if (ILMBASE_INCLUDE_PATH AND OPENEXR_INCLUDE_PATH AND
OPENEXR_IMATH_LIBRARY AND OPENEXR_ILMIMF_LIBRARY AND
OPENEXR_IEX_LIBRARY AND OPENEXR_HALF_LIBRARY)
set (OPENEXR_FOUND TRUE)
set (ILMBASE_FOUND TRUE)
set (ILMBASE_INCLUDE_DIR ${ILMBASE_INCLUDE_PATH} CACHE STRING "The include paths needed to use IlmBase")
set (OPENEXR_INCLUDE_DIR ${OPENEXR_INCLUDE_PATH} CACHE STRING "The include paths needed to use OpenEXR")
set (ILMBASE_LIBRARIES ${OPENEXR_IMATH_LIBRARY} ${OPENEXR_IEX_LIBRARY} ${OPENEXR_HALF_LIBRARY} ${OPENEXR_ILMTHREAD_LIBRARY} ${ILMBASE_PTHREADS} CACHE STRING "The libraries needed to use IlmBase")
set (OPENEXR_LIBRARIES ${OPENEXR_ILMIMF_LIBRARY} ${ILMBASE_LIBRARIES} ${ZLIB_LIBRARY} CACHE STRING "The libraries needed to use OpenEXR")
endif ()
# Try to figure out version number
if (EXISTS "${OPENEXR_INCLUDE_DIR}/OpenEXR/ImfMultiPartInputFile.h")
# Must be at least 2.0
file(STRINGS "${OPENEXR_INCLUDE_DIR}/OpenEXR/OpenEXRConfig.h" TMP REGEX "^#define OPENEXR_VERSION_STRING .*$")
string (REGEX MATCHALL "[0-9]+[.0-9]+" OPENEXR_VERSION ${TMP})
else ()
# Assume an old one, predates 2.x that had versions
set (OPENEXR_VERSION 1.6.1)
endif ()
find_package_handle_standard_args (OpenEXR
REQUIRED_VARS ILMBASE_INCLUDE_PATH OPENEXR_INCLUDE_PATH
OPENEXR_IMATH_LIBRARY OPENEXR_ILMIMF_LIBRARY
OPENEXR_IEX_LIBRARY OPENEXR_HALF_LIBRARY
VERSION_VAR OPENEXR_VERSION
)
MARK_AS_ADVANCED(
ILMBASE_INCLUDE_DIR
OPENEXR_INCLUDE_DIR
ILMBASE_LIBRARIES
OPENEXR_LIBRARIES
OPENEXR_ILMIMF_LIBRARY
OPENEXR_IMATH_LIBRARY
OPENEXR_IEX_LIBRARY
OPENEXR_HALF_LIBRARY
OPENEXR_VERSION)
# Restore the original CMAKE_FIND_LIBRARY_SUFFIXES
set (CMAKE_FIND_LIBRARY_SUFFIXES ${_openexr_orig_suffixes})
+8 -7
View File
@@ -62,7 +62,7 @@ Editor: Larry Gritz \\
\emph{lg@imageworks.com}
}
\date{{\large Date: 14 Jan, 2016 \\
%~ (with corrections, 14 Jan 2016)
(with corrections, 22 Feb 2016)
}
\bigskip
\bigskip
@@ -2573,7 +2573,7 @@ loop:
\indexapi{for}
As in C++, a {\cf for} loop's initialization may contain variable
declarations and initializations, which are scoped locally to {\cf for}
declarations and initializations, which are scoped locally to the {\cf for}
loop itself. For example,
\begin{code}
@@ -2656,9 +2656,9 @@ P/\partial u$ and $\partial P/\partial v$ tangent to the surface at \P. \\
% {\cf Pl}). \\
%\hline
%\color\ {\ce Cl} & Incoming light color at P. \\
%\hline
\hline
\point\ {\ce Ps} & Position at which the light is being queried
(currently only used for light attentuation shaders) \\
(currently only used for light attenuation shaders) \\
%\\
%\hline
%\normal\ {\ce Ns} & Axis about which the light is being queried
@@ -2729,6 +2729,7 @@ P/\partial u$ and $\partial P/\partial v$ tangent to the surface at \P. \\
{\cf Ng} & R & R & \\
{\cf dPdu} & R & R & \\
{\cf dPdv} & R & R & \\
{\cf Ps} & & & R \\
{\cf u, v} & R & R & R \\
{\cf time} & R & R & R \\
{\cf dtime} & R & R & R \\
@@ -3417,7 +3418,7 @@ derivatives. Gabor noise allows several optional parameters to the
"direction", <vector>}
\vspace{12pt}
If {\cf anisotropic} is 0 (the default), Gabor noise
will be isotropic. If {\cf anisotripic} is 1, the Gabor noise will
will be isotropic. If {\cf anisotropic} is 1, the Gabor noise will
be anisotropic with the 3D frequency given by the {\cf direction}
vector (which defaults to {\cf (1,0,0)}). If {\cf anisotropic} is
2, a hybrid mode will be used which is anisotropic along the
@@ -4273,7 +4274,7 @@ given {\cf data} arrays. If the optional {\cf sort} parameter is present
and is nonzero, the ordering of the points
found will be sorted by distance from {\cf pos}, from closest to farthest;
otherwise, the results are guaranteed to be the {\cf maxpoints} closest
to {\cf pos}, but not necessarily softed by distance (this may be
to {\cf pos}, but not necessarily sorted by distance (this may be
faster for some implementations than when sorted results are
required). The return value is the number of points returned, ranging
from 0 (nothing found in the neighborhood) to the lesser of {\cf maxpoints}
@@ -4530,7 +4531,7 @@ the previous function.
\apiend
\apiitem{\colorclosure\ \colorclosure\ {\ce reflection} (normal N, float eta)}
\apiitem{\colorclosure\ {\ce reflection} (normal N, float eta)}
\indexapi{reflection()}
Returns a \colorclosure that represents sharp mirror-like reflection
+2 -2
View File
@@ -20,8 +20,8 @@ else ()
ADD_LIBRARY ( oslcomp SHARED ${liboslcomp_srcs} )
endif ()
TARGET_LINK_LIBRARIES ( oslcomp ${OPENIMAGEIO_LIBRARY} ${Boost_LIBRARIES} ${CMAKE_DL_LIBS})
LINK_ILMBASE ( oslcomp )
TARGET_LINK_LIBRARIES ( oslcomp ${OPENIMAGEIO_LIBRARY} ${ILMBASE_LIBRARIES}
${Boost_LIBRARIES} ${CMAKE_DL_LIBS})
INSTALL ( TARGETS oslcomp RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib )
+10 -2
View File
@@ -260,10 +260,18 @@ ASTfunction_declaration::add_meta (ASTNode *meta)
Symbol *metasym = metavar->sym();
if (metasym->name() == "builtin") {
m_is_builtin = true;
if (func()->typespec().is_closure()) // It is a builtin closure
if (func()->typespec().is_closure()) { // It is a builtin closure
// Force keyword arguments at the end
func()->argcodes(ustring(std::string(func()->argcodes().c_str()) + "."));
}
// For built-in functions, if any of the params are output,
// also automatically mark it as readwrite_special_case.
for (ASTNode *f = formals().get(); f; f = f->nextptr()) {
ASSERT (f->nodetype() == variable_declaration_node);
ASTvariable_declaration *v = (ASTvariable_declaration *)f;
if (v->is_output())
func()->readwrite_special_case (true);
}
}
else if (metasym->name() == "derivs")
func()->takes_derivs (true);
+2 -1
View File
@@ -993,7 +993,8 @@ ASTfunction_call::typecheck_builtin_specialcase ()
argwriteonly (1);
argwriteonly (2);
} else if (m_name == "getattribute" || m_name == "getmessage" ||
m_name == "gettextureinfo" || m_name == "dict_value") {
m_name == "gettextureinfo" || m_name == "getmatrix" ||
m_name == "dict_value") {
// these all write to their last argument
argwriteonly ((int)listlength(args()));
} else if (m_name == "pointcloud_get") {
+3 -7
View File
@@ -69,9 +69,7 @@ MACRO ( LLVM_COMPILE llvm_src srclist )
foreach (def ${CURRENT_DEFINITIONS})
set (LLVM_COMPILE_FLAGS ${LLVM_COMPILE_FLAGS} "-D${def}")
endforeach()
if (USE_SIMD)
set (LLVM_COMPILE_FLAGS ${LLVM_COMPILE_FLAGS} "-m${USE_SIMD}")
endif ()
set (LLVM_COMPILE_FLAGS ${LLVM_COMPILE_FLAGS} ${OSL_SIMD_FLAGS})
# Figure out what program we will use to make the bitcode.
if (NOT LLVM_BC_GENERATOR)
@@ -142,14 +140,14 @@ endif ()
TARGET_LINK_LIBRARIES ( oslexec
${VISIBILITY_COMMAND} ${VISIBILITY_MAP_COMMAND}
${OPENIMAGEIO_LIBRARY} ${PUGIXML_LIBRARIES}
${OPENIMAGEIO_LIBRARY} ${ILMBASE_LIBRARIES}
${PUGIXML_LIBRARIES}
${PARTIO_LIBRARIES} ${ZLIB_LIBRARIES}
${Boost_LIBRARIES} ${CMAKE_DL_LIBS}
${LLVM_LIBRARY} ${LLVM_MCJIT_LIBRARY}
${LLVM_LIBRARIES} ${LLVM_LDFLAGS}
${EXTRA_OSLEXEC_LIBRARIES})
ADD_DEPENDENCIES (oslexec "${CMAKE_CURRENT_SOURCE_DIR}/liboslexec.map")
LINK_ILMBASE ( oslexec )
INSTALL ( TARGETS oslexec RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib )
@@ -157,11 +155,9 @@ INSTALL ( TARGETS oslexec RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIV
if (OSL_BUILD_TESTS)
add_executable (accum_test accum_test.cpp)
target_link_libraries ( accum_test oslexec oslcomp ${Boost_LIBRARIES} ${CMAKE_DL_LIBS} ${EXTRA_OSLEXEC_LIBRARIES} )
link_ilmbase (accum_test)
add_test (unit_accum "${CMAKE_BINARY_DIR}/src/liboslexec/accum_test")
add_executable (llvmutil_test llvmutil_test.cpp)
target_link_libraries ( llvmutil_test oslexec oslcomp ${Boost_LIBRARIES} ${CMAKE_DL_LIBS} ${EXTRA_OSLEXEC_LIBRARIES} )
link_ilmbase (llvmutil_test)
add_test (unit_llvmutil "${CMAKE_BINARY_DIR}/src/liboslexec/llvmutil_test")
endif ()
+4
View File
@@ -435,6 +435,10 @@ OSOReaderToMaster::hint (string_view hintstring)
m_master->m_ops.back().argread(i, *str == 'r' || *str =='W');
}
ASSERT(m_nargs == i);
// Fix old bug where oslc forgot to mark getmatrix last arg as write
static ustring getmatrix("getmatrix");
if (m_master->m_ops.back().opname() == getmatrix)
m_master->m_ops.back().argwrite(m_nargs-1, true);
}
if (extract_prefix(h, "%argderivs{")) {
while (1) {
+1 -2
View File
@@ -12,7 +12,6 @@ else ()
ADD_LIBRARY ( oslquery SHARED ${liboslquery_srcs} )
endif ()
TARGET_LINK_LIBRARIES ( oslquery ${OPENIMAGEIO_LIBRARY} ${Boost_LIBRARIES} )
LINK_ILMBASE ( oslquery )
TARGET_LINK_LIBRARIES ( oslquery ${OPENIMAGEIO_LIBRARY} ${ILMBASE_LIBRARIES} ${Boost_LIBRARIES} )
INSTALL ( TARGETS oslquery RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib )
-1
View File
@@ -8,7 +8,6 @@ if (BUILDSTATIC)
endif ()
ADD_EXECUTABLE ( oslc ${oslc_srcs} )
LINK_ILMBASE ( oslc )
TARGET_LINK_LIBRARIES ( oslc oslcomp ${OPENIMAGEIO_LIBRARY} ${Boost_LIBRARIES} ${CMAKE_DL_LIBS})
INSTALL ( TARGETS oslc RUNTIME DESTINATION bin )
-1
View File
@@ -1,5 +1,4 @@
SET ( oslinfo_srcs oslinfo.cpp )
ADD_EXECUTABLE ( oslinfo ${oslinfo_srcs} )
LINK_ILMBASE ( oslinfo )
TARGET_LINK_LIBRARIES ( oslinfo oslquery ${OPENIMAGEIO_LIBRARY} ${Boost_LIBRARIES} ${CMAKE_DL_LIBS})
INSTALL ( TARGETS oslinfo RUNTIME DESTINATION bin )
-1
View File
@@ -1,6 +1,5 @@
# The 'testrender' executable
FILE(GLOB testrender_src *.cpp)
ADD_EXECUTABLE ( testrender ${testrender_src} )
LINK_ILMBASE ( testrender )
TARGET_LINK_LIBRARIES ( testrender oslexec oslcomp oslquery ${OPENIMAGEIO_LIBRARY} ${Boost_LIBRARIES} ${CMAKE_DL_LIBS})
INSTALL ( TARGETS testrender RUNTIME DESTINATION bin )
-3
View File
@@ -1,7 +1,6 @@
# The 'testshade' executable
SET ( testshade_srcs testshade.cpp simplerend.cpp )
ADD_EXECUTABLE ( testshade ${testshade_srcs} testshademain.cpp )
LINK_ILMBASE ( testshade )
TARGET_LINK_LIBRARIES ( testshade oslexec oslcomp oslquery ${OPENIMAGEIO_LIBRARY} ${Boost_LIBRARIES} ${CMAKE_DL_LIBS})
INSTALL ( TARGETS testshade RUNTIME DESTINATION bin )
@@ -19,8 +18,6 @@ INSTALL ( TARGETS libtestshade RUNTIME DESTINATION bin LIBRARY DESTINATION lib A
# The 'testshade_dso' executable
ADD_EXECUTABLE ( testshade_dso testshade_dso.cpp )
LINK_ILMBASE ( testshade_dso )
TARGET_LINK_LIBRARIES ( testshade_dso ${OPENIMAGEIO_LIBRARY} ${Boost_LIBRARIES} ${CMAKE_DL_LIBS} )
#oslexec oslcomp oslquery ${OPENIMAGEIO_LIBRARY} ${Boost_LIBRARIES} ${CMAKE_DL_LIBS})
INSTALL ( TARGETS testshade_dso RUNTIME DESTINATION bin )
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.