svn commit: r333100 - in head/graphics/openshadinglanguage: . files
Tijl Coosemans
tijl at FreeBSD.org
Thu Nov 7 14:00:46 UTC 2013
Author: tijl
Date: Thu Nov 7 14:00:44 2013
New Revision: 333100
URL: http://svnweb.freebsd.org/changeset/ports/333100
Log:
- Import patches from upstream to fix build on FreeBSD 10 (clang, libc++)
- Depend on llvm33 and clang33.
- New LIB_DEPENDS syntax.
- Staging.
- Replace some patches with Makefile magic.
PR: ports/180190, ports/180650
Submitted by: Shane Ambler <FreeBSD at ShaneWare.Biz> (maintainer)
Added:
head/graphics/openshadinglanguage/files/patch-CMakeLists.txt (contents, props changed)
head/graphics/openshadinglanguage/files/patch-liboslcomp__CMakeLists.txt (contents, props changed)
head/graphics/openshadinglanguage/files/patch-liboslcomp__oslcomp.cpp (contents, props changed)
head/graphics/openshadinglanguage/files/patch-liboslexec__constfold.cpp (contents, props changed)
head/graphics/openshadinglanguage/files/patch-liboslexec__dictionary.cpp (contents, props changed)
head/graphics/openshadinglanguage/files/patch-liboslexec__llvm_gen.cpp (contents, props changed)
head/graphics/openshadinglanguage/files/patch-liboslexec__llvm_instance.cpp (contents, props changed)
head/graphics/openshadinglanguage/files/patch-liboslexec__runtimeoptimize.h (contents, props changed)
Deleted:
head/graphics/openshadinglanguage/files/patch-cmake_platform.cmake
head/graphics/openshadinglanguage/files/patch-liboslexec__CMakeLists.txt
head/graphics/openshadinglanguage/files/patch-liboslexec__llvm_ops.cpp
Modified:
head/graphics/openshadinglanguage/Makefile
Modified: head/graphics/openshadinglanguage/Makefile
==============================================================================
--- head/graphics/openshadinglanguage/Makefile Thu Nov 7 13:55:25 2013 (r333099)
+++ head/graphics/openshadinglanguage/Makefile Thu Nov 7 14:00:44 2013 (r333100)
@@ -3,7 +3,7 @@
PORTNAME= openshadinglanguage
PORTVERSION= 1.3.3
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= graphics devel
MAINTAINER= FreeBSD at Shaneware.biz
@@ -11,12 +11,12 @@ COMMENT= Advanced shading language for p
LICENSE= BSD
-BUILD_DEPENDS= llvm>=3.1:${PORTSDIR}/devel/llvm \
- flex>=2.5.37:${PORTSDIR}/textproc/flex
-LIB_DEPENDS= boost_thread:${PORTSDIR}/devel/boost-libs \
- IlmImf:${PORTSDIR}/graphics/OpenEXR \
- OpenImageIO:${PORTSDIR}/graphics/openimageio
-RUN_DEPENDS= llvm>=3.1:${PORTSDIR}/devel/llvm
+BUILD_DEPENDS= llvm-config33:${PORTSDIR}/devel/llvm33 \
+ clang33>=3.3_3:${PORTSDIR}/lang/clang33
+LIB_DEPENDS= libboost_thread.so:${PORTSDIR}/devel/boost-libs \
+ libIlmImf.so:${PORTSDIR}/graphics/OpenEXR \
+ libOpenImageIO.so:${PORTSDIR}/graphics/openimageio
+RUN_DEPENDS= llvm-config33:${PORTSDIR}/devel/llvm33
USE_GITHUB= yes
GH_ACCOUNT= imageworks
@@ -26,27 +26,30 @@ GH_COMMIT= 18671dc
WRKSRC= ${WRKDIR}/imageworks-OpenShadingLanguage-${GH_COMMIT}/src
-CMAKE_ARGS= -DFLEX_EXECUTABLE:STRING=${LOCALBASE}/bin/flex \
- -DUSE_TBB:BOOL=OFF
-CXXFLAGS+= -I${LOCALBASE}/include/flex
+CMAKE_ARGS= -DLLVM_CONFIG:STRING="${LOCALBASE}/bin/llvm-config33"
USE_LDCONFIG= yes
USES= bison cmake:outsource
-NO_STAGE= yes
-.include <bsd.port.pre.mk>
+.include <bsd.port.options.mk>
-.if ${OSVERSION} < 900000
-BUILD_DEPENDS+= clang:${PORTSDIR}/lang/clang
+.if ${ARCH} == i386 && ! ${MACHINE_CPU:Mi586}
+IGNORE= CPUTYPE must be i586 or higher in /etc/make.conf
.endif
-.if ${ARCH} == i386
-CFLAGS+= -march=i586
+.if ${OSVERSION} < 1000033
+BUILD_DEPENDS+= flex>=2.5.37:${PORTSDIR}/textproc/flex
+CMAKE_ARGS+= -DFLEX_EXECUTABLE:STRING=${LOCALBASE}/bin/flex
+CXXFLAGS+= -I${LOCALBASE}/include/flex
.endif
+post-patch:
+ @${REINPLACE_CMD} -e 's,/bin/bash,/bin/sh,' \
+ ${WRKSRC}/liboslexec/serialize-bc.bash
+
post-install:
.for LNAME in oslcomp oslexec oslquery testshade
- cd ${PREFIX}/lib && ${MV} -f lib${LNAME}.so lib${LNAME}.so.1
- cd ${PREFIX}/lib && ${LN} -sf lib${LNAME}.so.1 lib${LNAME}.so
+ ${MV} ${STAGEDIR}${PREFIX}/lib/lib${LNAME}.so ${STAGEDIR}${PREFIX}/lib/lib${LNAME}.so.1
+ ${LN} -s lib${LNAME}.so.1 ${STAGEDIR}${PREFIX}/lib/lib${LNAME}.so
.endfor
-.include <bsd.port.post.mk>
+.include <bsd.port.mk>
Added: head/graphics/openshadinglanguage/files/patch-CMakeLists.txt
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/graphics/openshadinglanguage/files/patch-CMakeLists.txt Thu Nov 7 14:00:44 2013 (r333100)
@@ -0,0 +1,86 @@
+--- CMakeLists.txt.orig 2013-07-12 01:01:18.000000000 +0200
++++ CMakeLists.txt 2013-11-05 21:12:26.000000000 +0100
+@@ -9,10 +9,8 @@
+ set (OSO_FILE_VERSION_MAJOR 1)
+ set (OSO_FILE_VERSION_MINOR 0)
+
+-cmake_minimum_required (VERSION 2.6)
+-if (NOT CMAKE_VERSION VERSION_LESS 2.8.4)
+- cmake_policy (SET CMP0017 NEW)
+-endif ()
++cmake_minimum_required (VERSION 2.8.7)
++cmake_policy (SET CMP0017 NEW)
+ set (CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS TRUE)
+ message (STATUS "Project source dir = ${PROJECT_SOURCE_DIR}")
+ message (STATUS "Project build dir = ${CMAKE_BINARY_DIR}")
+@@ -21,6 +19,8 @@
+ message (FATAL_ERROR "Not allowed to run in-source build!")
+ endif ()
+
++include (CheckCXXSymbolExists)
++
+ if (NOT CMAKE_BUILD_TYPE)
+ set (CMAKE_BUILD_TYPE "Release")
+ endif ()
+@@ -42,12 +42,11 @@
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+ message (STATUS "Using gcc ${GCC_VERSION} as the compiler")
+ endif ()
+-if (NOT CMAKE_COMPILER_IS_CLANG)
+- string (REGEX MATCH clang CMAKE_COMPILER_IS_CLANG ${CMAKE_CXX_COMPILER})
+- if (CMAKE_COMPILER_IS_CLANG)
+- set (CMAKE_COMPILER_IS_CLANG 1)
+- message (STATUS "Using clang as the compiler")
+- endif ()
++
++message (STATUS "CMAKE_CXX_COMPILER_ID is ${CMAKE_CXX_COMPILER_ID}")
++if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
++ set (CMAKE_COMPILER_IS_CLANG 1)
++ message (STATUS "Using clang as the compiler")
+ endif ()
+
+ ## turn on more detailed warnings and consider warnings as errors
+@@ -121,6 +120,10 @@
+ endif ()
+ endif ()
+
++# Try to detect libc++, in which case we should force use of Boost
++# Wave (because that avoids a nonstandard g++ extension in the other
++# code path).
++check_cxx_symbol_exists(_LIBCPP_VERSION string OSL_SYSTEM_HAS_LIBCPP)
+
+ set (VERBOSE OFF CACHE BOOL "Print lots of messages while compiling")
+ set (BUILDSTATIC OFF CACHE BOOL "Build static library instead of shared")
+@@ -129,12 +132,16 @@
+ "Use an externally built shared library version of the pugixml library")
+ set (PUGIXML_HOME "" CACHE STRING "Hint about where to find external PugiXML library")
+ if (WIN32)
+- set (USE_BOOST_WAVE ON CACHE BOOL "Use Boost Wave as preprocessor")
+ set (USE_LLVM_BITCODE OFF CACHE BOOL "Generate embedded LLVM bitcode")
+ else ()
+- set (USE_BOOST_WAVE OFF CACHE BOOL "Use Boost Wave as preprocessor")
+ set (USE_LLVM_BITCODE ON CACHE BOOL "Generated embedded LLVM bitcode")
+ endif ()
++if (WIN32 OR OSL_SYSTEM_HAS_LIBCPP)
++ set (USE_BOOST_WAVE ON CACHE BOOL "Use Boost Wave as preprocessor")
++else ()
++ set (USE_BOOST_WAVE OFF CACHE BOOL "Use Boost Wave as preprocessor")
++endif ()
++
+ set (USE_PARTIO ON CACHE BOOL "Use Partio if found")
+
+ if (LLVM_NAMESPACE)
+@@ -149,6 +156,13 @@
+ add_definitions ("${EXTRA_CPP_DEFINITIONS}")
+ endif()
+
++if (USE_BOOST_WAVE)
++ add_definitions ("-DUSE_BOOST_WAVE")
++endif ()
++
++if (CMAKE_COMPILER_IS_CLANG AND OSL_SYSTEM_HAS_LIBCPP)
++ message (STATUS "Using libc++")
++endif ()
+
+ set (CMAKE_MODULE_PATH
+ "${PROJECT_SOURCE_DIR}/cmake/modules"
Added: head/graphics/openshadinglanguage/files/patch-liboslcomp__CMakeLists.txt
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/graphics/openshadinglanguage/files/patch-liboslcomp__CMakeLists.txt Thu Nov 7 14:00:44 2013 (r333100)
@@ -0,0 +1,9 @@
+--- ./liboslcomp/CMakeLists.txt.orig 2013-07-12 08:31:18.000000000 +0930
++++ ./liboslcomp/CMakeLists.txt 2013-11-03 18:07:25.644118883 +1030
+@@ -29,6 +29,3 @@
+ INSTALL ( TARGETS oslcomp LIBRARY DESTINATION lib )
+ endif ()
+
+-IF ( USE_BOOST_WAVE )
+- ADD_DEFINITIONS ( -DUSE_BOOST_WAVE )
+-ENDIF ()
Added: head/graphics/openshadinglanguage/files/patch-liboslcomp__oslcomp.cpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/graphics/openshadinglanguage/files/patch-liboslcomp__oslcomp.cpp Thu Nov 7 14:00:44 2013 (r333100)
@@ -0,0 +1,20 @@
+--- ./liboslcomp/oslcomp.cpp.orig 2013-07-12 08:31:18.000000000 +0930
++++ ./liboslcomp/oslcomp.cpp 2013-11-03 18:07:25.646119281 +1030
+@@ -32,7 +32,7 @@
+ #include <fstream>
+ #include <cstdio>
+ #include <streambuf>
+-#ifdef __GNUC__
++#if defined(__GNUC__) && !defined(_LIBCPP_VERSION) && !defined(USE_BOOST_WAVE)
+ # include <ext/stdio_filebuf.h>
+ #endif
+ #include <cstdio>
+@@ -268,7 +268,7 @@
+ // std::cout << "cpp command:\n>" << cppcommand << "<\n";
+ FILE *cpppipe = popen (cppcommand.c_str(), "r");
+
+-#ifdef __GNUC__
++#if defined(__GNUC__) && !defined(_LIBCPP_VERSION)
+ __gnu_cxx::stdio_filebuf<char> fb (cpppipe, std::ios::in);
+ #else
+ std::filebuf fb (cpppipe);
Added: head/graphics/openshadinglanguage/files/patch-liboslexec__constfold.cpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/graphics/openshadinglanguage/files/patch-liboslexec__constfold.cpp Thu Nov 7 14:00:44 2013 (r333100)
@@ -0,0 +1,42 @@
+--- ./liboslexec/constfold.cpp.orig 2013-07-12 08:31:18.000000000 +0930
++++ ./liboslexec/constfold.cpp 2013-11-03 18:07:25.648118961 +1030
+@@ -882,19 +882,22 @@
+ {
+ Opcode &op (rop.inst()->ops()[opnum]);
+ // Symbol &R (*rop.inst()->argsymbol(op.firstarg()+0));
+- Symbol &Str (*rop.inst()->argsymbol(op.firstarg()+1));
+- Symbol &Results (*rop.inst()->argsymbol(op.firstarg()+2));
+- Symbol &Sep (*rop.inst()->argsymbol(op.firstarg()+3));
+- Symbol &Maxsplit (*rop.inst()->argsymbol(op.firstarg()+4));
+- if (Str.is_constant() && Sep.is_constant() && Maxsplit.is_constant()) {
++ Symbol &Str (*rop.opargsym (op, 1));
++ Symbol &Results (*rop.opargsym (op, 2));
++ Symbol *Sep (rop.opargsym (op, 3));
++ Symbol *Maxsplit (rop.opargsym (op, 4));
++ if (Str.is_constant() && (!Sep || Sep->is_constant()) &&
++ (!Maxsplit || Maxsplit->is_constant())) {
+ // The split string, separator string, and maxsplit are all constants.
+ // Compute the results with Strutil::split.
+ int resultslen = Results.typespec().arraylength();
+- int maxsplit = Imath::clamp (*(int *)Maxsplit.data(), 0, resultslen);
++ int maxsplit = Maxsplit ? *(int *)Maxsplit->data() : resultslen;
++ maxsplit = std::min (maxsplit, resultslen);
+ std::vector<std::string> splits;
++ ustring sep = Sep ? (*(ustring *)Sep->data()) : ustring("");
+ Strutil::split ((*(ustring *)Str.data()).string(), splits,
+- (*(ustring *)Sep.data()).string(), maxsplit);
+- int n = std::min (maxsplit, (int)splits.size());
++ sep.string(), maxsplit);
++ int n = std::min (std::max(0,maxsplit), (int)splits.size());
+ // Temporarily stash the index of the symbol holding results
+ int resultsarg = rop.inst()->args()[op.firstarg()+2];
+ // Turn the 'split' into a straight assignment of the return value...
+@@ -1337,7 +1340,7 @@
+ *(const float *)Y.data() == 2.0f) {
+ // Turn x^2 into x*x, even if x is not constant
+ static ustring kmul("mul");
+- op.reset (kmul, 2);
++ op.reset (kmul, 3);
+ rop.inst()->args()[op.firstarg()+2] = rop.inst()->args()[op.firstarg()+1];
+ return 1;
+ }
Added: head/graphics/openshadinglanguage/files/patch-liboslexec__dictionary.cpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/graphics/openshadinglanguage/files/patch-liboslexec__dictionary.cpp Thu Nov 7 14:00:44 2013 (r333100)
@@ -0,0 +1,11 @@
+--- ./liboslexec/dictionary.cpp.orig 2013-07-12 08:31:18.000000000 +0930
++++ ./liboslexec/dictionary.cpp 2013-11-03 18:07:25.650119434 +1030
+@@ -50,7 +50,7 @@
+ namespace pvt { // OSL::pvt
+
+
+-#ifndef USE_EXTERNAL_PUGIXML
++#ifdef USING_OIIO_PUGI
+ namespace pugi = OIIO::pugi;
+ #endif
+
Added: head/graphics/openshadinglanguage/files/patch-liboslexec__llvm_gen.cpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/graphics/openshadinglanguage/files/patch-liboslexec__llvm_gen.cpp Thu Nov 7 14:00:44 2013 (r333100)
@@ -0,0 +1,11 @@
+--- ./liboslexec/llvm_gen.cpp.orig 2013-07-12 08:31:18.000000000 +0930
++++ ./liboslexec/llvm_gen.cpp 2013-11-03 18:07:25.652119256 +1030
+@@ -3310,7 +3310,7 @@
+ Symbol& Results = *rop.opargsym (op, 2);
+ DASSERT (R.typespec().is_int() && Str.typespec().is_string() &&
+ Results.typespec().is_array() &&
+- Results.typespec().simpletype() == TypeDesc::TypeString);
++ Results.typespec().is_string_based());
+
+ llvm::Value *args[5];
+ args[0] = rop.llvm_load_value (Str);
Added: head/graphics/openshadinglanguage/files/patch-liboslexec__llvm_instance.cpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/graphics/openshadinglanguage/files/patch-liboslexec__llvm_instance.cpp Thu Nov 7 14:00:44 2013 (r333100)
@@ -0,0 +1,11 @@
+--- ./liboslexec/llvm_instance.cpp.orig 2013-07-12 08:31:18.000000000 +0930
++++ ./liboslexec/llvm_instance.cpp 2013-11-03 18:07:25.654119237 +1030
+@@ -809,7 +809,7 @@
+ {
+ // Make a layer function: void layer_func(ShaderGlobals*, GroupData*)
+ // Note that the GroupData* is passed as a void*.
+- std::string unique_layer_name = Strutil::format ("%s_%d", inst()->layername().c_str(), inst()->id());
++ std::string unique_layer_name = Strutil::format ("%s_%d", inst()->layername(), inst()->id());
+
+ m_layer_func = llvm::cast<llvm::Function>(m_llvm_module->getOrInsertFunction(unique_layer_name,
+ llvm_type_void(), llvm_type_sg_ptr(),
Added: head/graphics/openshadinglanguage/files/patch-liboslexec__runtimeoptimize.h
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/graphics/openshadinglanguage/files/patch-liboslexec__runtimeoptimize.h Thu Nov 7 14:00:44 2013 (r333100)
@@ -0,0 +1,32 @@
+--- ./liboslexec/runtimeoptimize.h.orig 2013-07-12 08:31:18.000000000 +0930
++++ ./liboslexec/runtimeoptimize.h 2013-11-03 18:07:25.656119123 +1030
+@@ -345,7 +345,8 @@
+ /// Helper: return the ptr to the symbol that is the argnum-th
+ /// argument to the given op.
+ Symbol *opargsym (const Opcode &op, int argnum) {
+- return inst()->argsymbol (op.firstarg()+argnum);
++ return (argnum < op.nargs()) ?
++ inst()->argsymbol (op.firstarg()+argnum) : NULL;
+ }
+
+ /// Create an llvm function for the whole shader group, JIT it,
+@@ -826,7 +827,7 @@
+ ///
+ llvm::BasicBlock *llvm_exit_instance_block () {
+ if (! m_exit_instance_block) {
+- std::string name = Strutil::format ("%s_%d_exit_", inst()->layername().c_str(), inst()->id());
++ std::string name = Strutil::format ("%s_%d_exit_", inst()->layername(), inst()->id());
+ m_exit_instance_block = llvm_new_basic_block (name);
+ }
+ return m_exit_instance_block;
+@@ -887,8 +888,8 @@
+ int m_local_unknown_message_sent; ///< Non-const setmessage in this inst
+ std::vector<ustring> m_local_messages_sent; ///< Messages set in this inst
+ std::vector<int> m_bblockids; ///< Basic block IDs for each op
+- std::vector<bool> m_in_conditional; ///< Whether each op is in a cond
+- std::vector<bool> m_in_loop; ///< Whether each op is in a loop
++ std::vector<char> m_in_conditional; ///< Whether each op is in a cond
++ std::vector<char> m_in_loop; ///< Whether each op is in a loop
+ std::vector<int> m_layer_remap; ///< Remapping of layer ordering
+ std::set<int> m_layers_already_run; ///< List of layers run
+ int m_num_used_layers; ///< Number of layers actually used
More information about the svn-ports-head
mailing list