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 @@ -1,68 +1,74 @@ PORTNAME= xray_re-tools DISTVERSION= g20180902 CATEGORIES= games converters 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 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 post-patch: @${REINPLACE_CMD} -e '/#include/s,Math,math,' \ -e '/#include/s,\.\\Ice\\,Ice/,' \ ${WRKSRC}/sources/utils/converter/opcode/OPC_IceHook.h @${REINPLACE_CMD} -e 's,string& version,string version,' \ ${WRKSRC}/sources/utils/converter/level_tools.cxx @${REINPLACE_CMD} -e '19s,attenuation1,attenuation2,' \ ${WRKSRC}/sources/xray_re/xr_d3d_light.cxx @${REINPLACE_CMD} -e '/OGF3_S_SMPARAMS_VERSION/s,||,\&\&,' \ ${WRKSRC}/sources/xray_re/xr_ogf_v3.cxx @${REINPLACE_CMD} -e 's,mP0,mP1,' \ ${WRKSRC}/sources/utils/converter/opcode/Ice/IceLSS.h @${REINPLACE_CMD} -e 's,} if,} else if,' \ ${WRKSRC}/sources/utils/converter/level_mesh_ladders.cxx @${REINPLACE_CMD} -e 's,push_back,this->&,' \ ${WRKSRC}/sources/xray_re/xr_influence.h @${REINPLACE_CMD} -e 's,type_info& type,std::&,' \ ${WRKSRC}/sources/xray_re/xr_scene.cxx @${REINPLACE_CMD} -e 's,sprintf_s,xr_snprintf,' \ ${WRKSRC}/sources/xray_re/xr_scene_ways.cxx @${REINPLACE_CMD} -e '/return/s,_stricmp,strcasecmp,' \ ${WRKSRC}/sources/xray_re/xr_string_utils.h @${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 # Alternative to DOS2UNIX_FILES that preserves original timestamps, # to be used together with `-l' switch added to PATCH_ARGS below. fixpatches: @${FIND} ${FILESDIR} -name patch-* | ${XARGS} ${SED} -i '' \ -E 's,[[:cntrl:]]*$$,,' .include PATCH_ARGS+= -l 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,170 +1,171 @@ 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 \ xray_re/xr_ai_graph.o \ xray_re/xr_ai_way.o \ xray_re/xr_blender.o \ xray_re/xr_bone.o \ xray_re/xr_build_err.o \ xray_re/xr_build_lights.o \ xray_re/xr_cform.o \ xray_re/xr_cl_parser.o \ xray_re/xr_clsid.o \ xray_re/xr_d3d_light.o \ xray_re/xr_details.o \ xray_re/xr_dm.o \ xray_re/xr_entity.o \ xray_re/xr_entity_factory.o \ xray_re/xr_entity_la.o \ xray_re/xr_entity_script.o \ xray_re/xr_entity_zenobian.o \ xray_re/xr_envelope.o \ xray_re/xr_envelope_eval.o \ xray_re/xr_file_system.o \ xray_re/xr_file_system_posix.o \ xray_re/xr_game_graph.o \ xray_re/xr_game_spawn.o \ xray_re/xr_gamemtls_lib.o \ xray_re/xr_geom_buf.o \ xray_re/xr_guid.o \ xray_re/xr_image.o \ xray_re/xr_image_bmp.o \ xray_re/xr_image_dds.o \ xray_re/xr_image_tga.o \ xray_re/xr_influence.o \ xray_re/xr_ini_file.o \ xray_re/xr_level.o \ xray_re/xr_level_ai.o \ xray_re/xr_level_cform.o \ xray_re/xr_level_details.o \ xray_re/xr_level_dm.o \ xray_re/xr_level_env_mod.o \ xray_re/xr_level_fog_vol.o \ xray_re/xr_level_game.o \ xray_re/xr_level_gct.o \ xray_re/xr_level_gct_v9.o \ xray_re/xr_level_geom.o \ xray_re/xr_level_glows.o \ xray_re/xr_level_graph.o \ xray_re/xr_level_hom.o \ xray_re/xr_level_lights.o \ xray_re/xr_level_ltx.o \ xray_re/xr_level_portals.o \ xray_re/xr_level_ps_static.o \ xray_re/xr_level_sectors.o \ xray_re/xr_level_shaders.o \ xray_re/xr_level_snd_env.o \ xray_re/xr_level_snd_static.o \ xray_re/xr_level_som.o \ xray_re/xr_level_spawn.o \ xray_re/xr_level_visuals.o \ xray_re/xr_level_wallmarks.o \ xray_re/xr_log.o \ xray_re/xr_lzhuf.o \ xray_re/xr_matrix.o \ xray_re/xr_mesh.o \ xray_re/xr_mesh_builder.o \ xray_re/xr_mesh_vbuf.o \ xray_re/xr_motion.o \ xray_re/xr_name_gen.o \ xray_re/xr_obj_motion.o \ xray_re/xr_object.o \ xray_re/xr_ogf.o \ xray_re/xr_ogf_v3.o \ xray_re/xr_ogf_v4.o \ xray_re/xr_packet.o \ xray_re/xr_quaternion.o \ xray_re/xr_reader.o \ xray_re/xr_reader_scrambler.o \ xray_re/xr_scene.o \ xray_re/xr_scene_ai_map.o \ xray_re/xr_scene_details.o \ xray_re/xr_scene_glows.o \ xray_re/xr_scene_groups.o \ xray_re/xr_scene_lights.o \ xray_re/xr_scene_objects.o \ xray_re/xr_scene_part.o \ xray_re/xr_scene_particles.o \ xray_re/xr_scene_portals.o \ xray_re/xr_scene_revision.o \ xray_re/xr_scene_sectors.o \ xray_re/xr_scene_shapes.o \ xray_re/xr_scene_sound_envs.o \ xray_re/xr_scene_sound_srcs.o \ xray_re/xr_scene_spawns.o \ xray_re/xr_scene_visuals.o \ xray_re/xr_scene_wallmarks.o \ xray_re/xr_scene_ways.o \ xray_re/xr_scrambler.o \ xray_re/xr_shaders_lib.o \ xray_re/xr_shaders_xrlc_lib.o \ xray_re/xr_skeleton.o \ xray_re/xr_skl_motion.o \ xray_re/xr_sound_thumbnail.o \ xray_re/xr_surface.o \ xray_re/xr_texture_thumbnail.o \ xray_re/xr_vector3.o \ xray_re/xr_writer.o converter_OBJS= utils/converter/batch_helper.o \ utils/converter/converter.o \ utils/converter/db_tools.o \ utils/converter/dds_tools.o \ utils/converter/dm_tools.o \ utils/converter/fancy_tools.o \ utils/converter/level_aux_mesh.o \ utils/converter/level_mesh.o \ utils/converter/level_mesh_commit.o \ utils/converter/level_mesh_ladders.o \ utils/converter/level_mesh_materials.o \ utils/converter/level_mesh_terrain.o \ utils/converter/level_tools.o \ utils/converter/level_tools_ai_map.o \ utils/converter/level_tools_debug_cform.o \ utils/converter/level_tools_details.o \ utils/converter/level_tools_glows.o \ utils/converter/level_tools_hom.o \ utils/converter/level_tools_lights.o \ utils/converter/level_tools_particles.o \ utils/converter/level_tools_portals.o \ utils/converter/level_tools_sectors.o \ utils/converter/level_tools_som.o \ utils/converter/level_tools_sound_envs.o \ utils/converter/level_tools_sound_srcs.o \ utils/converter/level_tools_spawns.o \ utils/converter/level_tools_visuals.o \ utils/converter/level_tools_wallmarks.o \ utils/converter/level_tools_ways.o \ utils/converter/object_tools.o \ utils/converter/ogf_tools.o \ utils/converter/ogg_tools.o \ utils/converter/opcode/Ice/IceAABB.o \ utils/converter/opcode/Ice/IceContainer.o \ utils/converter/opcode/Ice/IceHPoint.o \ utils/converter/opcode/Ice/IceMatrix4x4.o \ utils/converter/opcode/Ice/IcePoint.o \ utils/converter/opcode/Ice/IceRandom.o \ utils/converter/opcode/OPC_AABBTree.o \ utils/converter/opcode/OPC_BaseModel.o \ utils/converter/opcode/OPC_Collider.o \ utils/converter/opcode/OPC_MeshInterface.o \ utils/converter/opcode/OPC_Model.o \ utils/converter/opcode/OPC_OptimizedTree.o \ utils/converter/opcode/OPC_TreeBuilders.o \ utils/converter/opcode/OPC_TreeCollider.o \ utils/converter/xrdemo_tools.o .cpp.o: $(CXX) $(CXXFLAGS) $(CPPFLAGS) -o $@ -c $< .cxx.o: $(CXX) $(CXXFLAGS) $(CPPFLAGS) -o $@ -c $< all: converter converter: $(xray_re_OBJS) $(converter_OBJS) $(CXX) $(LDFLAGS) -llzo2 -lnvcore -lnvimage -lnvtt -lvorbisfile -lz -o $@ $> .PHONY: all 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 + #include + #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));