Date: Thu, 7 Nov 2013 14:00:45 +0000 (UTC) From: Tijl Coosemans <tijl@FreeBSD.org> To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r333100 - in head/graphics/openshadinglanguage: . files Message-ID: <201311071400.rA7E0jYq004413@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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@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@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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201311071400.rA7E0jYq004413>