diff options
author | danfe <danfe@FreeBSD.org> | 2015-10-19 16:18:41 +0800 |
---|---|---|
committer | danfe <danfe@FreeBSD.org> | 2015-10-19 16:18:41 +0800 |
commit | f65e3ab8d65538ffc82828250e2c30b07b672938 (patch) | |
tree | 250cd7739fa5b8bc801ecd4ade42711e17e035b9 /graphics | |
parent | c65a2c43578444eaa72b6bd2eed5e17bc2f36988 (diff) | |
download | freebsd-ports-gnome-f65e3ab8d65538ffc82828250e2c30b07b672938.tar.gz freebsd-ports-gnome-f65e3ab8d65538ffc82828250e2c30b07b672938.tar.zst freebsd-ports-gnome-f65e3ab8d65538ffc82828250e2c30b07b672938.zip |
- Unbreak the build on i386 [1] and respect CXXFLAGS [2]
- Convert REINPLACE_CMD's that no longer could remain trivial due to [2]
to regular patch files
- Mute numerous warnings of `__aligned()' macro being redefined as they
severely clutter build logs
- Restrict to Intel CPUs due to heavy use of their SIMD instructions
Reported by: pkg-fallout [1]
Diffstat (limited to 'graphics')
-rw-r--r-- | graphics/embree/Makefile | 16 | ||||
-rw-r--r-- | graphics/embree/files/patch-common_cmake_clang.cmake | 18 | ||||
-rw-r--r-- | graphics/embree/files/patch-common_cmake_gcc.cmake | 18 | ||||
-rw-r--r-- | graphics/embree/files/patch-common_sys_intrinsics.h | 62 | ||||
-rw-r--r-- | graphics/embree/files/patch-kernels_xeon_bvh4_bvh4__rotate.cpp | 15 |
5 files changed, 123 insertions, 6 deletions
diff --git a/graphics/embree/Makefile b/graphics/embree/Makefile index 3576255470bf..ded25101bf39 100644 --- a/graphics/embree/Makefile +++ b/graphics/embree/Makefile @@ -15,6 +15,9 @@ LICENSE= APACHE20 LIB_DEPENDS= libMagick++-6.so:${PORTSDIR}/graphics/ImageMagick \ libIlmImf.so:${PORTSDIR}/graphics/OpenEXR +ONLY_FOR_ARCHS= i386 amd64 +ONLY_FOR_ARCHS_REASON= heavy use of SSE instructions + BROKEN_FreeBSD_9= does not build (insufficient C++11 support) USE_GITHUB= yes @@ -28,23 +31,24 @@ CMAKE_ARGS= -DRTCORE_TASKING_SYSTEM:STRING=INTERNAL \ -DENABLE_ISPC_SUPPORT:BOOL=OFF \ -DCOMPILER:STRING=${CHOSEN_COMPILER_TYPE:tu} +CXXFLAGS+= -msse2 # required on i386 + PLIST_SUB+= VERSION=${DISTVERSION} post-patch: # MAP_NORESERVE was never implemented in FreeBSD and retired in r273250 @${REINPLACE_CMD} -e 's,MAP_NORESERVE,0,' \ ${WRKSRC}/common/sys/alloc.cpp - @${REINPLACE_CMD} -e 's,_blsr_u64,_&,' \ - ${WRKSRC}/common/sys/intrinsics.h + @${REINPLACE_CMD} -e '/__aligned/s,^,//,' \ + ${WRKSRC}/common/sys/platform.h @${REINPLACE_CMD} -e 's,__UNIX__) &&.*,__LINUX__),' \ ${WRKSRC}/tests/benchmark.cpp @${REINPLACE_CMD} -e '/share\/doc/,+2 { \ s,share/doc/embree-[^)]*,${DOCSDIR_REL}, ; \ s,bin/,, ; } ' ${WRKSRC}/common/cmake/package.cmake -# Do not force particular compiler binaries (obey the framework) - @${REINPLACE_CMD} -e '/_COMPILER/s,^,#,' \ - ${WRKSRC}/common/cmake/clang.cmake \ - ${WRKSRC}/common/cmake/gcc.cmake + @${REINPLACE_CMD} -e '/encodeRGB8_to_JPEG/s,size_t \*,unsigned \ + long *,' ${WRKSRC}/tutorials/common/image/image.h \ + ${WRKSRC}/tutorials/common/image/jpeg.cpp post-install: ${LN} -sf libembree.so.${DISTVERSION} \ diff --git a/graphics/embree/files/patch-common_cmake_clang.cmake b/graphics/embree/files/patch-common_cmake_clang.cmake new file mode 100644 index 000000000000..540629b62ac2 --- /dev/null +++ b/graphics/embree/files/patch-common_cmake_clang.cmake @@ -0,0 +1,18 @@ +--- common/cmake/clang.cmake.orig 2015-09-17 06:11:18 UTC ++++ common/cmake/clang.cmake +@@ -23,11 +23,11 @@ SET(FLAGS_AVX "-mavx") + SET(FLAGS_AVX2 "-mf16c -mavx2 -mfma -mlzcnt -mbmi -mbmi2") + SET(FLAGS_AVX512 "-mavx512") + +-SET(CMAKE_CXX_COMPILER "clang++") +-SET(CMAKE_C_COMPILER "clang") +-SET(CMAKE_CXX_FLAGS "-fPIC -std=c++11 -fno-strict-aliasing -Wno-narrowing -Wno-deprecated-register") ++#SET(CMAKE_CXX_COMPILER "clang++") ++#SET(CMAKE_C_COMPILER "clang") ++SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -std=c++11 -fno-strict-aliasing -Wno-narrowing -Wno-deprecated-register") + SET(CMAKE_CXX_FLAGS_DEBUG "-DDEBUG -g -O0") +-SET(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG -O3") ++SET(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-DDEBUG -g -O3") + SET(CMAKE_EXE_LINKER_FLAGS "") + diff --git a/graphics/embree/files/patch-common_cmake_gcc.cmake b/graphics/embree/files/patch-common_cmake_gcc.cmake new file mode 100644 index 000000000000..f3ba95c99eda --- /dev/null +++ b/graphics/embree/files/patch-common_cmake_gcc.cmake @@ -0,0 +1,18 @@ +--- common/cmake/gcc.cmake.orig 2015-09-17 06:11:18 UTC ++++ common/cmake/gcc.cmake +@@ -23,11 +23,11 @@ SET(FLAGS_AVX "-mavx") + SET(FLAGS_AVX2 "-mf16c -mavx2 -mfma -mlzcnt -mbmi -mbmi2") + SET(FLAGS_AVX512 "-mavx512f -mavx512pf -mavx512er -mavx512cd") + +-SET(CMAKE_CXX_COMPILER "g++") +-SET(CMAKE_C_COMPILER "gcc") +-SET(CMAKE_CXX_FLAGS "-fPIC -std=c++11 -fno-strict-aliasing -Wno-narrowing") ++#SET(CMAKE_CXX_COMPILER "g++") ++#SET(CMAKE_C_COMPILER "gcc") ++SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -std=c++11 -fno-strict-aliasing -Wno-narrowing") + SET(CMAKE_CXX_FLAGS_DEBUG "-DDEBUG -g -O0") +-SET(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG -O3") ++SET(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-DDEBUG -g -O3") + SET(CMAKE_EXE_LINKER_FLAGS "") + diff --git a/graphics/embree/files/patch-common_sys_intrinsics.h b/graphics/embree/files/patch-common_sys_intrinsics.h new file mode 100644 index 000000000000..1aef830e3f15 --- /dev/null +++ b/graphics/embree/files/patch-common_sys_intrinsics.h @@ -0,0 +1,62 @@ +--- common/sys/intrinsics.h.orig 2015-09-17 06:11:18 UTC ++++ common/sys/intrinsics.h +@@ -361,6 +361,7 @@ namespace embree + #endif + } + ++#if defined(__X86_64__) + __forceinline unsigned __bsf(unsigned v) + { + #if defined(__AVX2__) +@@ -369,6 +370,7 @@ namespace embree + unsigned r = 0; asm ("bsf %1,%0" : "=r"(r) : "r"(v)); return r; + #endif + } ++#endif + + __forceinline size_t __bsf(size_t v) { + #if defined(__AVX2__) +@@ -389,12 +391,14 @@ namespace embree + return i; + } + ++#if defined(__X86_64__) + __forceinline unsigned int __bscf(unsigned int& v) + { + unsigned int i = __bsf(v); + v &= v-1; + return i; + } ++#endif + + __forceinline size_t __bscf(size_t& v) + { +@@ -411,6 +415,7 @@ namespace embree + #endif + } + ++#if defined(__X86_64__) + __forceinline unsigned __bsr(unsigned v) { + #if defined(__AVX2__) + return 31 - _lzcnt_u32(v); +@@ -418,6 +423,7 @@ namespace embree + unsigned r = 0; asm ("bsr %1,%0" : "=r"(r) : "r"(v)); return r; + #endif + } ++#endif + + __forceinline size_t __bsr(size_t v) { + #if defined(__AVX2__) +@@ -443,7 +449,11 @@ namespace embree + + __forceinline size_t __blsr(size_t v) { + #if defined(__AVX2__) +- return _blsr_u64(v); ++#if defined(__X86_64__) ++ return __blsr_u64(v); ++#else ++ return __blsr_u32(v); ++#endif + #else + return v & (v-1); + #endif diff --git a/graphics/embree/files/patch-kernels_xeon_bvh4_bvh4__rotate.cpp b/graphics/embree/files/patch-kernels_xeon_bvh4_bvh4__rotate.cpp new file mode 100644 index 000000000000..b698833cadf9 --- /dev/null +++ b/graphics/embree/files/patch-kernels_xeon_bvh4_bvh4__rotate.cpp @@ -0,0 +1,15 @@ +--- kernels/xeon/bvh4/bvh4_rotate.cpp.orig 2015-09-17 06:11:18 UTC ++++ kernels/xeon/bvh4/bvh4_rotate.cpp +@@ -104,7 +104,11 @@ namespace embree + /*! find best other child */ + float4 area0123 = float4(extract<0>(min0),extract<0>(min1),extract<0>(min2),extract<0>(min3)) - float4(childArea[c2]); + int pos[4] = { pos0,pos1,pos2,pos3 }; +- bool4 valid = int4(int(depth+1))+cdepth <= int4(BVH4::maxBuildDepth); // only select swaps that fulfill depth constraints ++ // Ensure that we have a variable to avoid linking problems on i386. ++ // On amd64 sizeof(size_t) == 8, so previously temporary was created ++ // for the int4(BVH4::maxBuildDepth) call. ++ const size_t mbd = BVH4::maxBuildDepth; ++ bool4 valid = int4(int(depth+1))+cdepth <= int4(mbd); // only select swaps that fulfill depth constraints + valid &= int4(c2) != int4(step); + if (none(valid)) continue; + size_t c1 = select_min(valid,area0123); |