diff options
author | Alexey Dokuchaev <danfe@FreeBSD.org> | 2022-10-15 18:08:20 +0000 |
---|---|---|
committer | Alexey Dokuchaev <danfe@FreeBSD.org> | 2022-10-15 18:08:20 +0000 |
commit | c5f751f8a9d0d1a0a753f9b95562db4c97eea836 (patch) | |
tree | 5f8244709b793482ba1200a0f1e6eb9449682a76 | |
parent | 470f0bf1c3353bca73e516f4053a29886f48d0fb (diff) | |
download | ports-c5f751f8a9d0d1a0a753f9b95562db4c97eea836.tar.gz ports-c5f751f8a9d0d1a0a753f9b95562db4c97eea836.zip |
games/xray_re-tools: unbreak the build against new nVidia Texture Tools
In 2020 Ignacio had modified the API with NVTT upstream commit adce1a00
which must have been cleanup, but was more than that. Particularly, it
shuffled things around DirectDrawSurface class, and thus had broken the
port's build. While here, remove all bundled 3rd-party code to prevent
accidental use thereof.
5 files changed, 58 insertions, 37 deletions
diff --git a/games/xray_re-tools/Makefile b/games/xray_re-tools/Makefile index 91c0d035e431..6267cb8bf449 100644 --- a/games/xray_re-tools/Makefile +++ b/games/xray_re-tools/Makefile @@ -6,12 +6,11 @@ MAINTAINER= danfe@FreeBSD.org COMMENT= X-Ray engine game asset converter (unofficial) WWW= https://github.com/abramcumner/xray_re-tools +BUILD_DEPENDS= ${NONEXISTENT}:graphics/nvidia-texture-tools:patch LIB_DEPENDS= liblzo2.so:archivers/lzo2 \ libvorbisfile.so:audio/libvorbis \ libnvtt.so:graphics/nvidia-texture-tools -BROKEN= does not link: ld: error: undefined symbol: nv::mem::malloc - USE_GITHUB= yes GH_ACCOUNT= abramcumner GH_TAGNAME= 52721d2 @@ -19,11 +18,13 @@ GH_TAGNAME= 52721d2 MAKEFILE= ${FILESDIR}/Makefile BUILD_WRKSRC= ${WRKSRC}/sources WITHOUT_FBSD10_FIX= yes +_NVTT_WRKSRC= ${MAKE} -C ${PORTSDIR}/graphics/nvidia-texture-tools -V WRKSRC PLIST_FILES= bin/xr_converter post-extract: @${MV} ${WRKSRC}/sources/3rd\ party ${WRKSRC}/sources/3rd-party + @cd ${WRKSRC}/sources/3rd-party && ${RM} -r libogg libvorbis nvtt @${MV} ${WRKSRC}/sources/utils/converter/opcode/Ice/IceTrilist.h \ ${WRKSRC}/sources/utils/converter/opcode/Ice/IceTriList.h @${LN} -s StdAfx.h ${WRKSRC}/sources/utils/converter/opcode/Stdafx.h @@ -53,6 +54,11 @@ post-patch: @${REINPLACE_CMD} -e 's,MINGW32__),& || defined(__FreeBSD__),' \ ${WRKSRC}/sources/xray_re/xr_types.h +post-configure: + @${LN} -sf ${_NVTT_WRKSRC:sh}/src ${WRKSRC}/sources/3rd-party/nvtt + @${REINPLACE_CMD} -e '/#include "nvconfig\.h"/d' \ + ${WRKSRC}/sources/3rd-party/nvtt/nvcore/nvcore.h + do-install: ${INSTALL_PROGRAM} ${BUILD_WRKSRC}/converter \ ${STAGEDIR}${PREFIX}/bin/xr_converter diff --git a/games/xray_re-tools/files/Makefile b/games/xray_re-tools/files/Makefile index 3220d663a3ba..0ac7ccba00a4 100644 --- a/games/xray_re-tools/files/Makefile +++ b/games/xray_re-tools/files/Makefile @@ -1,5 +1,6 @@ CXXFLAGS+= -Wall -Wextra -CPPFLAGS+= -Ixray_re -Iutils/converter/opcode -I3rd-party/nvtt -I$(LOCALBASE)/include +CPPFLAGS+= -Ixray_re -Iutils/converter/opcode -I3rd-party/nvtt \ + -I3rd-party/nvtt/../extern/poshlib -I$(LOCALBASE)/include LDFLAGS+= -L$(LOCALBASE)/lib xray_re_OBJS= xray_re/xr_ai_cross_table.o \ diff --git a/games/xray_re-tools/files/patch-sources_3rd-party_nvtt_nvcore_Memory.h b/games/xray_re-tools/files/patch-sources_3rd-party_nvtt_nvcore_Memory.h deleted file mode 100644 index b6b6833f06ad..000000000000 --- a/games/xray_re-tools/files/patch-sources_3rd-party_nvtt_nvcore_Memory.h +++ /dev/null @@ -1,20 +0,0 @@ ---- sources/3rd-party/nvtt/nvcore/Memory.h.orig 2018-09-02 12:42:44 UTC -+++ sources/3rd-party/nvtt/nvcore/Memory.h -@@ -28,7 +28,7 @@ namespace nv - - // Override new/delete - --inline void * operator new (size_t size) throw() -+inline void * operator new (size_t size) _THROW_BAD_ALLOC - { - return nv::mem::malloc(size); - } -@@ -38,7 +38,7 @@ inline void operator delete (void *p) throw() - nv::mem::free(p); - } - --inline void * operator new [] (size_t size) throw() -+inline void * operator new [] (size_t size) _THROW_BAD_ALLOC - { - return nv::mem::malloc(size); - } diff --git a/games/xray_re-tools/files/patch-sources_3rd-party_nvtt_nvcore_poshlib_posh.h b/games/xray_re-tools/files/patch-sources_3rd-party_nvtt_nvcore_poshlib_posh.h deleted file mode 100644 index 7448d82366c0..000000000000 --- a/games/xray_re-tools/files/patch-sources_3rd-party_nvtt_nvcore_poshlib_posh.h +++ /dev/null @@ -1,14 +0,0 @@ ---- sources/3rd-party/nvtt/nvcore/poshlib/posh.h.orig 2018-09-02 12:42:44 UTC -+++ sources/3rd-party/nvtt/nvcore/poshlib/posh.h -@@ -293,6 +293,11 @@ Metrowerks: - # define POSH_OS_STRING "Linux" - #endif - -+#if defined __FreeBSD__ -+# define POSH_OS_LINUX 1 -+# define POSH_OS_STRING "FreeBSD" -+#endif -+ - #if defined __CYGWIN32__ - # define POSH_OS_CYGWIN32 1 - # define POSH_OS_STRING "Cygwin" diff --git a/games/xray_re-tools/files/patch-sources_xray__re_xr__image__dds.cxx b/games/xray_re-tools/files/patch-sources_xray__re_xr__image__dds.cxx new file mode 100644 index 000000000000..4323a3afc70c --- /dev/null +++ b/games/xray_re-tools/files/patch-sources_xray__re_xr__image__dds.cxx @@ -0,0 +1,48 @@ +--- sources/xray_re/xr_image_dds.cxx.orig 2018-09-02 12:42:44 UTC ++++ sources/xray_re/xr_image_dds.cxx +@@ -7,6 +7,7 @@ + #include <nvmath/Color.h> + #include <nvtt/nvtt.h> + #pragma warning(pop) ++#undef sqrt + #include "xr_image.h" + #include "xr_file_system.h" + +@@ -14,13 +15,14 @@ bool xr_image::load_dds(const std::string& path) + + bool xr_image::load_dds(const std::string& path) + { +- nv::DirectDrawSurface dds(path.c_str()); ++ nv::DirectDrawSurface dds; ++ dds.load(path.c_str()); + if (!dds.isValid() || !dds.isTexture2D()) + return false; + nv::Image image; +- dds.mipmap(&image, 0, 0); +- m_width = image.width(); +- m_height = image.height(); ++ imageFromDDS(&image, dds, 0, 0); ++ m_width = image.width; ++ m_height = image.height; + m_data = new rgba32[m_width*m_height]; + for (unsigned i = m_height*m_width; i > 0;) { + const nv::Color32& pix = image.pixel(--i); +@@ -50,6 +52,7 @@ struct dds_writer: public nvtt::OutputHandler { + dds_writer(xr_writer& _w); + + virtual void beginImage(int size, int width, int height, int depth, int face, int miplevel); ++ virtual void endImage(); + virtual bool writeData(const void* data, int size); + xr_writer& w; + }; +@@ -60,6 +63,10 @@ void dds_writer::beginImage(int size, int width, int h + { + } + ++void dds_writer::endImage() ++{ ++} ++ + bool dds_writer::writeData(const void* data, int size) + { + w.w_raw(data, size_t(size & INT_MAX)); |