svn commit: r557818 - in head/editors: . imhex imhex/files

MANTANI Nobutaka nobutaka at FreeBSD.org
Sat Dec 12 12:57:32 UTC 2020


Author: nobutaka
Date: Sat Dec 12 12:57:29 2020
New Revision: 557818
URL: https://svnweb.freebsd.org/changeset/ports/557818

Log:
  Add editors/imhex, hex editor for reverse engineers and programmers.

Added:
  head/editors/imhex/
  head/editors/imhex/Makefile   (contents, props changed)
  head/editors/imhex/distinfo   (contents, props changed)
  head/editors/imhex/files/
  head/editors/imhex/files/patch-CMakeLists.txt   (contents, props changed)
  head/editors/imhex/files/patch-include_helpers_utils.hpp   (contents, props changed)
  head/editors/imhex/files/patch-source_helpers_utils.cpp   (contents, props changed)
  head/editors/imhex/files/patch-source_providers_file__provider.cpp   (contents, props changed)
  head/editors/imhex/files/patch-source_views_view__hexeditor.cpp   (contents, props changed)
  head/editors/imhex/files/patch-source_views_view__strings.cpp   (contents, props changed)
  head/editors/imhex/files/patch-source_views_view__tools.cpp   (contents, props changed)
  head/editors/imhex/pkg-descr   (contents, props changed)
Modified:
  head/editors/Makefile

Modified: head/editors/Makefile
==============================================================================
--- head/editors/Makefile	Sat Dec 12 12:05:02 2020	(r557817)
+++ head/editors/Makefile	Sat Dec 12 12:57:29 2020	(r557818)
@@ -64,6 +64,7 @@
     SUBDIR += hexpert
     SUBDIR += hnb
     SUBDIR += hte
+    SUBDIR += imhex
     SUBDIR += impress
     SUBDIR += jed
     SUBDIR += jedit

Added: head/editors/imhex/Makefile
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/editors/imhex/Makefile	Sat Dec 12 12:57:29 2020	(r557818)
@@ -0,0 +1,43 @@
+# $FreeBSD$
+
+PORTNAME=	imhex
+PORTVERSION=	1.5.0
+CATEGORIES=	editors
+
+MAINTAINER=	nobutaka at FreeBSD.org
+COMMENT=	Hex editor for reverse engineers and programmers
+
+LICENSE=	GPLv2
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+BUILD_DEPENDS=	c++10:lang/gcc10 \
+		glm>0:math/glm \
+		nlohmann-json>0:devel/nlohmann-json
+LIB_DEPENDS=	libcapstone.so:devel/capstone4 \
+		libglfw.so:graphics/glfw \
+		libstdc++.so:lang/gcc10 \
+		libtre.so:textproc/libtre
+
+USES=		cmake pkgconfig python:3.8+ ssl xorg
+USE_XORG=	x11 xcb xau xdmcp
+USE_GITHUB=	yes
+GH_ACCOUNT=	WerWolv
+GH_PROJECT=	ImHex
+GH_TAGNAME=	v1.5.0
+
+CXX=	${LOCALBASE}/bin/c++10
+
+PLIST_FILES=	bin/imhex
+PORTDOCS=	README.md
+
+OPTIONS_DEFINE=	DOCS NLS
+NLS_USES=	gettext
+
+do-install:
+	${INSTALL_PROGRAM} ${WRKDIR}/.build/imhex ${STAGEDIR}${PREFIX}/bin
+
+post-install-DOCS-on:
+	${MKDIR} ${STAGEDIR}${DOCSDIR}
+	${INSTALL_DATA} ${WRKSRC}/README.md ${STAGEDIR}${DOCSDIR}
+
+.include <bsd.port.mk>

Added: head/editors/imhex/distinfo
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/editors/imhex/distinfo	Sat Dec 12 12:57:29 2020	(r557818)
@@ -0,0 +1,3 @@
+TIMESTAMP = 1607336763
+SHA256 (WerWolv-ImHex-1.5.0-v1.5.0_GH0.tar.gz) = 211cca3a22d9c0d8a7a3bfa2a3aa7c29cd954c207979632fe9b9a08cf9b8444b
+SIZE (WerWolv-ImHex-1.5.0-v1.5.0_GH0.tar.gz) = 848041

Added: head/editors/imhex/files/patch-CMakeLists.txt
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/editors/imhex/files/patch-CMakeLists.txt	Sat Dec 12 12:57:29 2020	(r557818)
@@ -0,0 +1,55 @@
+--- CMakeLists.txt.orig	2020-12-06 20:40:57 UTC
++++ CMakeLists.txt
+@@ -10,23 +10,21 @@ set(CMAKE_CXX_STANDARD 20)
+ find_package(PkgConfig REQUIRED)
+ pkg_search_module(GLFW REQUIRED glfw3)
+ pkg_search_module(GLM REQUIRED glm)
+-pkg_search_module(CRYPTO REQUIRED libcrypto)
+ pkg_search_module(CAPSTONE REQUIRED capstone)
+ find_package(OpenGL REQUIRED)
+-find_package(LLVM REQUIRED CONFIG)
+ find_package(nlohmann_json REQUIRED)
+ find_package(Python COMPONENTS Interpreter Development)
+ 
++include(CheckCXXSymbolExists)
++check_cxx_symbol_exists(abi::__cxa_demangle "cxxabi.h" HAVE_CXXABI)
++
+ if(Python_VERSION LESS 3)
+     message(STATUS ${PYTHON_VERSION_MAJOR_MINOR})
+     message(FATAL_ERROR "No valid version of Python 3 was found.")
+ endif()
+ 
+-llvm_map_components_to_libnames(_llvm_libs demangle)
+-llvm_expand_dependencies(llvm_libs ${_llvm_libs})
++include_directories(include ${GLFW_INCLUDE_DIRS} ${CAPSTONE_INCLUDE_DIRS} libs/ImGui/include libs/glad/include ${Python_INCLUDE_DIRS})
+ 
+-include_directories(include ${GLFW_INCLUDE_DIRS} ${CAPSTONE_INCLUDE_DIRS} ${LLVM_INCLUDE_DIRS} libs/ImGui/include libs/glad/include ${Python_INCLUDE_DIRS})
+-
+ # Get Python major and minor
+ string(REPLACE "." ";" PYTHON_VERSION_MAJOR_MINOR ${Python_VERSION})
+ list(REMOVE_AT PYTHON_VERSION_MAJOR_MINOR 2)
+@@ -42,7 +40,7 @@ endif (WIN32)
+ SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DRELEASE")
+ SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG")
+ 
+-add_executable(ImHex
++add_executable(imhex
+         source/main.cpp
+         source/window.cpp
+ 
+@@ -88,12 +86,10 @@ add_executable(ImHex
+         resource.rc
+         )
+ 
+-target_link_directories(ImHex PRIVATE ${LLVM_LIBRARY_DIR})
+-
+ if (WIN32)
+     target_link_libraries(ImHex libglfw3.a libgcc.a libstdc++.a libmagic.a libgnurx.a libtre.a libintl.a libiconv.a shlwapi.lib libcrypto.a libwinpthread.a libcapstone.a ${llvm_libs} ${Python_LIBRARIES} nlohmann_json::nlohmann_json)
+ endif (WIN32)
+ 
+ if (UNIX)
+-    target_link_libraries(ImHex libglfw.so libmagic.so libcrypto.so libdl.so libcapstone.so ${llvm_libs} ${Python_LIBRARIES} nlohmann_json::nlohmann_json)
+-endif (UNIX)
+\ No newline at end of file
++    target_link_libraries(imhex libglfw.so libmagic.so libcrypto.so libdl.so libcapstone.so ${Python_LIBRARIES} nlohmann_json::nlohmann_json)
++endif (UNIX)

Added: head/editors/imhex/files/patch-include_helpers_utils.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/editors/imhex/files/patch-include_helpers_utils.hpp	Sat Dec 12 12:57:29 2020	(r557818)
@@ -0,0 +1,10 @@
+--- include/helpers/utils.hpp.orig	2020-12-06 20:40:57 UTC
++++ include/helpers/utils.hpp
+@@ -61,6 +61,7 @@ namespace hex {
+ 
+     std::string toByteString(u64 bytes);
+     std::string makePrintable(char c);
++    std::string demangle(const std::string &mangled_name);
+ 
+     template<typename T>
+     struct always_false : std::false_type {};

Added: head/editors/imhex/files/patch-source_helpers_utils.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/editors/imhex/files/patch-source_helpers_utils.cpp	Sat Dec 12 12:57:29 2020	(r557818)
@@ -0,0 +1,29 @@
+--- source/helpers/utils.cpp.orig	2020-12-06 20:40:57 UTC
++++ source/helpers/utils.cpp
+@@ -3,6 +3,8 @@
+ #include <cstdio>
+ #include <codecvt>
+ #include <locale>
++#include <iostream>
++#include <cxxabi.h>
+ 
+ namespace hex {
+ 
+@@ -90,4 +92,16 @@ namespace hex {
+         return result;
+     }
+ 
++    std::string demangle(const std::string &mangled_name) {
++        int status = 0;
++        int skip_underscore = mangled_name.find("__") == 0;
++        char *realname = abi::__cxa_demangle(mangled_name.c_str() + skip_underscore,
++                                             0, 0, &status);
++        std::string result{mangled_name};
++        if (status == 0 && realname) {
++            result = realname;
++            std::free(realname);
++        }
++        return result;
++    }
+ }
+\ No newline at end of file

Added: head/editors/imhex/files/patch-source_providers_file__provider.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/editors/imhex/files/patch-source_providers_file__provider.cpp	Sat Dec 12 12:57:29 2020	(r557818)
@@ -0,0 +1,11 @@
+--- source/providers/file_provider.cpp.orig	2020-12-06 20:40:57 UTC
++++ source/providers/file_provider.cpp
+@@ -10,7 +10,7 @@
+ #include "helpers/project_file_handler.hpp"
+ 
+ 
+-#ifdef __APPLE__
++#if defined(__APPLE__) || defined(__FreeBSD__)
+     #define off64_t off_t
+     #define fopen64 fopen
+     #define fseeko64 fseek

Added: head/editors/imhex/files/patch-source_views_view__hexeditor.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/editors/imhex/files/patch-source_views_view__hexeditor.cpp	Sat Dec 12 12:57:29 2020	(r557818)
@@ -0,0 +1,13 @@
+--- source/views/view_hexeditor.cpp.orig	2020-12-06 20:40:57 UTC
++++ source/views/view_hexeditor.cpp
+@@ -13,6 +13,10 @@
+ #undef __STRICT_ANSI__
+ #include <cstdio>
+ 
++#if defined(__APPLE__) || defined(__FreeBSD__)
++    #define ftello64 ftell
++#endif
++
+ namespace hex {
+ 
+     ViewHexEditor::ViewHexEditor(prv::Provider* &dataProvider, std::vector<lang::PatternData*> &patternData)

Added: head/editors/imhex/files/patch-source_views_view__strings.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/editors/imhex/files/patch-source_views_view__strings.cpp	Sat Dec 12 12:57:29 2020	(r557818)
@@ -0,0 +1,20 @@
+--- source/views/view_strings.cpp.orig	2020-12-06 20:40:57 UTC
++++ source/views/view_strings.cpp
+@@ -5,8 +5,6 @@
+ 
+ #include <cstring>
+ 
+-#include <llvm/Demangle/Demangle.h>
+-
+ using namespace std::literals::string_literals;
+ 
+ namespace hex {
+@@ -37,7 +35,7 @@ namespace hex {
+             }
+             ImGui::Separator();
+             if (ImGui::MenuItem("Demangle")) {
+-                this->m_demangledName = llvm::demangle(this->m_selectedString);
++                this->m_demangledName = demangle(this->m_selectedString);
+                 if (!this->m_demangledName.empty())
+                     View::doLater([]{ ImGui::OpenPopup("Demangled Name"); });
+             }

Added: head/editors/imhex/files/patch-source_views_view__tools.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/editors/imhex/files/patch-source_views_view__tools.cpp	Sat Dec 12 12:57:29 2020	(r557818)
@@ -0,0 +1,20 @@
+--- source/views/view_tools.cpp.orig	2020-12-06 20:40:57 UTC
++++ source/views/view_tools.cpp
+@@ -7,8 +7,6 @@
+ #include "providers/provider.hpp"
+ #include "helpers/utils.hpp"
+ 
+-#include <llvm/Demangle/Demangle.h>
+-
+ namespace hex {
+ 
+     ViewTools::ViewTools(hex::prv::Provider* &provider) : View("Tools"), m_dataProvider(provider) {
+@@ -76,7 +74,7 @@ namespace hex {
+     void ViewTools::drawDemangler() {
+         if (ImGui::CollapsingHeader("Itanium/MSVC demangler")) {
+             if (ImGui::InputText("Mangled name", this->m_mangledBuffer, 0xF'FFFF)) {
+-                this->m_demangledName = llvm::demangle(this->m_mangledBuffer);
++                this->m_demangledName = demangle(this->m_mangledBuffer);
+             }
+ 
+             ImGui::InputText("Demangled name", this->m_demangledName.data(), this->m_demangledName.size(), ImGuiInputTextFlags_ReadOnly);

Added: head/editors/imhex/pkg-descr
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/editors/imhex/pkg-descr	Sat Dec 12 12:57:29 2020	(r557818)
@@ -0,0 +1,16 @@
+ImHex is a hex editor for reverse engineers, programmers and people that value
+their eye sight when working at 3 AM.
+
+ImHex has many features including the following:
+- Byte patching
+- String and hex search
+- Colorful highlighting
+- Custom C++-like pattern language for parsing highlighting a file's content
+- Data inspector allowing interpretation of data as many different types
+  (little and big endian)
+- File hashing support
+- Disassembler supporting many different architectures
+- Bookmarks
+- Data Analyzer
+
+WWW: https://github.com/WerWolv/ImHex


More information about the svn-ports-all mailing list