graphics/shaderc: clean up

- Optionally build tests
- Connect to "make test"
- Enable examples (not installed)
- Define complete version
- Document patches
- Improve style
This commit is contained in:
Jan Beich 2020-12-26 22:30:38 +00:00
parent d6baf67f84
commit b8380e9254
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=559314
3 changed files with 60 additions and 14 deletions

View file

@ -1,9 +1,9 @@
# $FreeBSD$
PORTNAME= shaderc
DISTVERSIONPREFIX=v
DISTVERSIONPREFIX= v
DISTVERSION= 2020.4
PORTREVISION= 2
PORTREVISION= 3
CATEGORIES= graphics devel
MAINTAINER= jbeich@FreeBSD.org
@ -11,26 +11,38 @@ COMMENT= GLSL/HLSL to SPIR-V shader compiler
LICENSE= APACHE20
BUILD_DEPENDS= ${LOCALBASE}/lib/libHLSL.a:graphics/glslang \
${LOCALBASE}/lib/libSPIRV-Tools-opt.a:graphics/spirv-tools
USES= cmake compiler:c++11-lib pkgconfig localbase:ldflags python:build
USE_LDCONFIG= yes
BUILD_DEPENDS= glslang>0:graphics/glslang \
spirv-tools>0:graphics/spirv-tools
USES= cmake compiler:c++11-lib localbase:ldflags python:3.4+,build
USE_GITHUB= yes
USE_LDCONFIG= yes
GH_ACCOUNT= google
GH_TUPLE= KhronosGroup:SPIRV-Headers:1.5.3:headers/third_party/spirv-headers
CMAKE_ARGS= -Dglslang_SOURCE_DIR:PATH="${LOCALBASE}/include/glslang" \
-DSPIRV-Headers_SOURCE_DIR:PATH="${WRKSRC}/third_party/spirv-headers"
LDFLAGS+= -Wl,-z,defs # glslang
CMAKE_ON+= SHADERC_SKIP_TESTS
CMAKE_ARGS+= -DSPIRV-Headers_SOURCE_DIR=${WRKSRC}/third_party/spirv-headers
CMAKE_ARGS+= -Dglslang_SOURCE_DIR=${LOCALBASE}/include/glslang
# https://git.archlinux.org/svntogit/packages.git/tree/trunk/PKGBUILD?h=packages/shaderc
OPTIONS_DEFINE= TEST
TEST_BUILD_DEPENDS= googletest>0:devel/googletest
TEST_TEST_TARGET= test
TEST_CMAKE_BOOL_OFF= SHADERC_SKIP_TESTS
post-patch:
${REINPLACE_CMD} '/examples/d;/third_party/d' ${WRKSRC}/CMakeLists.txt
# Disable bundled dependencies
${REINPLACE_CMD} '/third_party/d' ${WRKSRC}/CMakeLists.txt
# Unbreak tests with system spirv-tools
${REINPLACE_CMD} 's,\$$<TARGET_FILE:\(spirv-dis\)>,\1,' \
${WRKSRC}/glslc/test/CMakeLists.txt
pre-configure:
# Extract (snapshot) version from the port instead of CHANGES + .git/
${REINPLACE_CMD} '/build-version/d' ${WRKSRC}/glslc/CMakeLists.txt
${ECHO} "\"${DISTVERSIONFULL}\"" > ${WRKSRC}/glslc/src/build-version.inc
${ECHO_CMD} "\"${PORTNAME} ${DISTVERSIONFULL}\n\"" >> ${WRKSRC}/glslc/src/build-version.inc
${ECHO_CMD} "\"`${PKG_BIN} query '%n v%v' spirv-tools`\n\"" >> ${WRKSRC}/glslc/src/build-version.inc
${ECHO_CMD} "\"`${PKG_BIN} query '%n 10-%v' glslang`\n\"" >> ${WRKSRC}/glslc/src/build-version.inc
pre-install-TEST-on: do-test
.include <bsd.port.mk>

View file

@ -1,3 +1,8 @@
ld: error: undefined symbol: spvBinaryDestroy
>>> referenced by shaderc.cc
>>> shaderc.cc.o:(shaderc_compilation_result_spv_binary::~shaderc_compilation_result_spv_binary()) in archive libshaderc/./libshaderc_combined.a
>>> referenced by shaderc.cc
>>> shaderc.cc.o:(shaderc_compilation_result_spv_binary::~shaderc_compilation_result_spv_binary()) in archive libshaderc/./libshaderc_combined.a
ld: error: undefined symbol: glslang::InitializeProcess()
>>> referenced by compiler.cc
>>> compiler.cc.o:(shaderc_util::GlslangInitializer::GlslangInitializer()) in archive libshaderc_util/libshaderc_util.a
@ -5,6 +10,17 @@ ld: error: undefined symbol: ConstructCompiler(EShLanguage, int)
>>> referenced by ShaderLang.cpp
>>> ShaderLang.cpp.o:(ShConstructCompiler) in archive /usr/local/lib/libMachineIndependent.a
--- libshaderc/CMakeLists.txt.orig 2020-12-09 21:30:21 UTC
+++ libshaderc/CMakeLists.txt
@@ -114,7 +114,7 @@ endif(SHADERC_ENABLE_INSTALL)
shaderc_add_tests(
TEST_PREFIX shaderc_combined
- LINK_LIBS shaderc_combined ${CMAKE_THREAD_LIBS_INIT}
+ LINK_LIBS shaderc_combined ${SHADERC_LIBS}
INCLUDE_DIRS include ${shaderc_SOURCE_DIR}/libshaderc_util/include ${glslang_SOURCE_DIR}
${spirv-tools_SOURCE_DIR}/include
${SPIRV-Headers_SOURCE_DIR}/include
--- libshaderc_util/CMakeLists.txt.orig 2020-12-09 21:30:21 UTC
+++ libshaderc_util/CMakeLists.txt
@@ -46,8 +46,8 @@ add_definitions(-DENABLE_HLSL)

View file

@ -0,0 +1,18 @@
ld: error: undefined symbol: testing::internal::IsTrue(bool)
>>> referenced by compiler_test.cc
>>> libshaderc_util/CMakeFiles/shaderc_util_compiler_test.dir/src/compiler_test.cc.o:(testing::internal::SuiteApiResolver<(anonymous namespace)::CompilerTest>::GetSetUpCaseOrSuite(char const*, int))
ld: error: undefined symbol: pthread_create
>>> referenced by shaderc_test.cc
>>> libshaderc/CMakeFiles/shaderc_shared_shaderc_test.dir/src/shaderc_test.cc.o:((anonymous namespace)::Init_MultipleThreadsCalling_Test::TestBody())
--- cmake/utils.cmake.orig 2020-12-09 21:30:21 UTC
+++ cmake/utils.cmake
@@ -18,7 +18,7 @@ function (shaderc_use_gmock TARGET)
target_include_directories(${TARGET} PRIVATE
${gmock_SOURCE_DIR}/include
${gtest_SOURCE_DIR}/include)
- target_link_libraries(${TARGET} PRIVATE gmock gtest_main)
+ target_link_libraries(${TARGET} PRIVATE gmock gtest gtest_main ${CMAKE_THREAD_LIBS_INIT})
endfunction(shaderc_use_gmock)
function(shaderc_default_c_compile_options TARGET)