mirror of
https://github.com/WerWolv/ImHex.git
synced 2026-04-02 13:37:42 -05:00
Compare commits
84 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f547c3ea3c | ||
|
|
02fc175289 | ||
|
|
6ae38aead8 | ||
|
|
52fa2b4479 | ||
|
|
af57b39d8f | ||
|
|
7321d205fe | ||
|
|
6a724352b0 | ||
|
|
69bd438fe1 | ||
|
|
111c4b71aa | ||
|
|
dd572ba024 | ||
|
|
4bc074fa84 | ||
|
|
66a13266e6 | ||
|
|
bfa3538745 | ||
|
|
362413dbe7 | ||
|
|
3f5b258629 | ||
|
|
def20f7e69 | ||
|
|
ceaf9ac24b | ||
|
|
e6f1dd0490 | ||
|
|
da16be7ad8 | ||
|
|
7b1a146976 | ||
|
|
75331cda94 | ||
|
|
a0a39f1c04 | ||
|
|
48de158d7c | ||
|
|
e71091f4a8 | ||
|
|
3987a5df6a | ||
|
|
3cf9658a17 | ||
|
|
d073128cfb | ||
|
|
6319449cbd | ||
|
|
0e08b0226b | ||
|
|
a66fec489c | ||
|
|
65212f22a6 | ||
|
|
541c0d7547 | ||
|
|
b3a8d02d19 | ||
|
|
49610f59ea | ||
|
|
9cf7fc4a2e | ||
|
|
053c897056 | ||
|
|
8397af5c9b | ||
|
|
914b26caec | ||
|
|
2aed6ec13f | ||
|
|
714d421334 | ||
|
|
6c6fe8ad5c | ||
|
|
48aacc0c2e | ||
|
|
6806f8e5ba | ||
|
|
3e9493f3e7 | ||
|
|
89b9d21eaa | ||
|
|
4e047beabb | ||
|
|
d5d1577b43 | ||
|
|
42eea8ffba | ||
|
|
10df0175d5 | ||
|
|
d69eb440d8 | ||
|
|
768e74d9d3 | ||
|
|
355b99c68f | ||
|
|
cf89cbe662 | ||
|
|
e756c9d46f | ||
|
|
9ddd97a6eb | ||
|
|
ee8b665472 | ||
|
|
c4cbcc7232 | ||
|
|
8701e0f402 | ||
|
|
2df4e22bf8 | ||
|
|
b6c6ff51b4 | ||
|
|
40d7e4aa6e | ||
|
|
a5a1ae6725 | ||
|
|
a70ece7b9c | ||
|
|
ed8ee35a86 | ||
|
|
8a6b110d0b | ||
|
|
1f65fbf422 | ||
|
|
25e4902a1c | ||
|
|
bcbda85a40 | ||
|
|
abac42826c | ||
|
|
012b82c395 | ||
|
|
23190e1f87 | ||
|
|
f462a5f14b | ||
|
|
d8219ad971 | ||
|
|
b34b4c2362 | ||
|
|
0986527495 | ||
|
|
0864d582a2 | ||
|
|
3f936b57f5 | ||
|
|
54785b29dd | ||
|
|
c88d428fb5 | ||
|
|
27c08c1edf | ||
|
|
1f8c9b9f71 | ||
|
|
f6e4d56de6 | ||
|
|
0d02af3cf0 | ||
|
|
a7a57e2bd0 |
178
.clang-format
Normal file
178
.clang-format
Normal file
@@ -0,0 +1,178 @@
|
|||||||
|
---
|
||||||
|
Language: Cpp
|
||||||
|
# BasedOnStyle: LLVM
|
||||||
|
AccessModifierOffset: -4
|
||||||
|
AlignAfterOpenBracket: Align
|
||||||
|
AlignArrayOfStructures: Left
|
||||||
|
AlignConsecutiveMacros: Consecutive
|
||||||
|
AlignConsecutiveAssignments: None
|
||||||
|
AlignConsecutiveBitFields: AcrossEmptyLinesAndComments
|
||||||
|
AlignConsecutiveDeclarations: None
|
||||||
|
AlignEscapedNewlines: Left
|
||||||
|
AlignOperands: Align
|
||||||
|
AlignTrailingComments: true
|
||||||
|
AllowAllArgumentsOnNextLine: true
|
||||||
|
AllowAllConstructorInitializersOnNextLine: true
|
||||||
|
AllowAllParametersOfDeclarationOnNextLine: true
|
||||||
|
AllowShortEnumsOnASingleLine: false
|
||||||
|
AllowShortBlocksOnASingleLine: Always
|
||||||
|
AllowShortCaseLabelsOnASingleLine: false
|
||||||
|
AllowShortFunctionsOnASingleLine: All
|
||||||
|
AllowShortLambdasOnASingleLine: All
|
||||||
|
AllowShortIfStatementsOnASingleLine: AllIfsAndElse
|
||||||
|
AllowShortLoopsOnASingleLine: true
|
||||||
|
AlwaysBreakAfterDefinitionReturnType: None
|
||||||
|
AlwaysBreakAfterReturnType: None
|
||||||
|
AlwaysBreakBeforeMultilineStrings: false
|
||||||
|
AlwaysBreakTemplateDeclarations: Yes
|
||||||
|
AttributeMacros:
|
||||||
|
- __capability
|
||||||
|
BinPackArguments: false
|
||||||
|
BinPackParameters: false
|
||||||
|
BraceWrapping:
|
||||||
|
AfterCaseLabel: false
|
||||||
|
AfterClass: false
|
||||||
|
AfterControlStatement: Never
|
||||||
|
AfterEnum: false
|
||||||
|
AfterFunction: false
|
||||||
|
AfterNamespace: false
|
||||||
|
AfterObjCDeclaration: false
|
||||||
|
AfterStruct: false
|
||||||
|
AfterUnion: false
|
||||||
|
AfterExternBlock: false
|
||||||
|
BeforeCatch: false
|
||||||
|
BeforeElse: false
|
||||||
|
BeforeLambdaBody: false
|
||||||
|
BeforeWhile: false
|
||||||
|
IndentBraces: false
|
||||||
|
SplitEmptyFunction: false
|
||||||
|
SplitEmptyRecord: false
|
||||||
|
SplitEmptyNamespace: false
|
||||||
|
BreakBeforeBinaryOperators: None
|
||||||
|
BreakBeforeConceptDeclarations: false
|
||||||
|
BreakBeforeBraces: Attach
|
||||||
|
BreakBeforeInheritanceComma: false
|
||||||
|
BreakInheritanceList: AfterComma
|
||||||
|
BreakBeforeTernaryOperators: true
|
||||||
|
BreakConstructorInitializersBeforeComma: false
|
||||||
|
BreakConstructorInitializers: BeforeColon
|
||||||
|
BreakAfterJavaFieldAnnotations: false
|
||||||
|
BreakStringLiterals: false
|
||||||
|
ColumnLimit: 0
|
||||||
|
CommentPragmas: '^ IWYU pragma:'
|
||||||
|
CompactNamespaces: false
|
||||||
|
ConstructorInitializerAllOnOneLineOrOnePerLine: false
|
||||||
|
ConstructorInitializerIndentWidth: 4
|
||||||
|
ContinuationIndentWidth: 4
|
||||||
|
Cpp11BracedListStyle: false
|
||||||
|
DeriveLineEnding: true
|
||||||
|
DerivePointerAlignment: false
|
||||||
|
DisableFormat: false
|
||||||
|
EmptyLineAfterAccessModifier: Never
|
||||||
|
EmptyLineBeforeAccessModifier: LogicalBlock
|
||||||
|
ExperimentalAutoDetectBinPacking: true
|
||||||
|
FixNamespaceComments: false
|
||||||
|
ForEachMacros:
|
||||||
|
- foreach
|
||||||
|
- Q_FOREACH
|
||||||
|
- BOOST_FOREACH
|
||||||
|
IfMacros:
|
||||||
|
- KJ_IF_MAYBE
|
||||||
|
IncludeBlocks: Regroup
|
||||||
|
IncludeCategories:
|
||||||
|
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
|
||||||
|
Priority: 2
|
||||||
|
SortPriority: 0
|
||||||
|
CaseSensitive: false
|
||||||
|
- Regex: '^(<|"(gtest|gmock|isl|json)/)'
|
||||||
|
Priority: 3
|
||||||
|
SortPriority: 0
|
||||||
|
CaseSensitive: false
|
||||||
|
- Regex: '.*'
|
||||||
|
Priority: 1
|
||||||
|
SortPriority: 0
|
||||||
|
CaseSensitive: false
|
||||||
|
IncludeIsMainRegex: '(Test)?$'
|
||||||
|
IncludeIsMainSourceRegex: ''
|
||||||
|
IndentAccessModifiers: false
|
||||||
|
IndentCaseLabels: false
|
||||||
|
IndentCaseBlocks: true
|
||||||
|
IndentGotoLabels: true
|
||||||
|
IndentPPDirectives: BeforeHash
|
||||||
|
IndentExternBlock: Indent
|
||||||
|
IndentRequires: false
|
||||||
|
IndentWidth: 4
|
||||||
|
IndentWrappedFunctionNames: false
|
||||||
|
InsertTrailingCommas: None
|
||||||
|
JavaScriptQuotes: Leave
|
||||||
|
JavaScriptWrapImports: true
|
||||||
|
KeepEmptyLinesAtTheStartOfBlocks: true
|
||||||
|
LambdaBodyIndentation: Signature
|
||||||
|
MacroBlockBegin: ''
|
||||||
|
MacroBlockEnd: ''
|
||||||
|
MaxEmptyLinesToKeep: 2
|
||||||
|
NamespaceIndentation: All
|
||||||
|
ObjCBinPackProtocolList: Auto
|
||||||
|
ObjCBlockIndentWidth: 4
|
||||||
|
ObjCBreakBeforeNestedBlockParam: true
|
||||||
|
ObjCSpaceAfterProperty: false
|
||||||
|
ObjCSpaceBeforeProtocolList: true
|
||||||
|
PenaltyBreakAssignment: 2
|
||||||
|
PenaltyBreakBeforeFirstCallParameter: 19
|
||||||
|
PenaltyBreakComment: 300
|
||||||
|
PenaltyBreakFirstLessLess: 120
|
||||||
|
PenaltyBreakString: 1000
|
||||||
|
PenaltyBreakTemplateDeclaration: 10
|
||||||
|
PenaltyExcessCharacter: 1000000
|
||||||
|
PenaltyReturnTypeOnItsOwnLine: 60
|
||||||
|
PenaltyIndentedWhitespace: 0
|
||||||
|
PointerAlignment: Right
|
||||||
|
PPIndentWidth: 4
|
||||||
|
ReferenceAlignment: Pointer
|
||||||
|
ReflowComments: true
|
||||||
|
ShortNamespaceLines: 5
|
||||||
|
SortIncludes: Never
|
||||||
|
SortJavaStaticImport: Before
|
||||||
|
SortUsingDeclarations: true
|
||||||
|
SpaceAfterCStyleCast: false
|
||||||
|
SpaceAfterLogicalNot: false
|
||||||
|
SpaceAfterTemplateKeyword: false
|
||||||
|
SpaceBeforeAssignmentOperators: true
|
||||||
|
SpaceBeforeCaseColon: false
|
||||||
|
SpaceBeforeCpp11BracedList: true
|
||||||
|
SpaceBeforeCtorInitializerColon: true
|
||||||
|
SpaceBeforeInheritanceColon: true
|
||||||
|
SpaceBeforeParens: ControlStatements
|
||||||
|
SpaceAroundPointerQualifiers: Default
|
||||||
|
SpaceBeforeRangeBasedForLoopColon: true
|
||||||
|
SpaceInEmptyBlock: true
|
||||||
|
SpaceInEmptyParentheses: false
|
||||||
|
SpacesBeforeTrailingComments: 4
|
||||||
|
SpacesInAngles: Never
|
||||||
|
SpacesInConditionalStatement: false
|
||||||
|
SpacesInContainerLiterals: true
|
||||||
|
SpacesInCStyleCastParentheses: false
|
||||||
|
SpacesInLineCommentPrefix:
|
||||||
|
Minimum: 1
|
||||||
|
Maximum: -1
|
||||||
|
SpacesInParentheses: false
|
||||||
|
SpacesInSquareBrackets: false
|
||||||
|
SpaceBeforeSquareBrackets: false
|
||||||
|
BitFieldColonSpacing: Both
|
||||||
|
Standard: Latest
|
||||||
|
StatementAttributeLikeMacros:
|
||||||
|
- Q_EMIT
|
||||||
|
StatementMacros:
|
||||||
|
- Q_UNUSED
|
||||||
|
- QT_REQUIRE_VERSION
|
||||||
|
TabWidth: 4
|
||||||
|
UseCRLF: false
|
||||||
|
UseTab: Never
|
||||||
|
WhitespaceSensitiveMacros:
|
||||||
|
- STRINGIZE
|
||||||
|
- PP_STRINGIZE
|
||||||
|
- BOOST_PP_STRINGIZE
|
||||||
|
- NS_SWIFT_NAME
|
||||||
|
- CF_SWIFT_NAME
|
||||||
|
...
|
||||||
|
|
||||||
6
.gitattributes
vendored
6
.gitattributes
vendored
@@ -1,3 +1,3 @@
|
|||||||
external/** linguist-vendored
|
lib/external/** linguist-vendored
|
||||||
plugins/libimhex-rust/imgui-rs/** linguist-vendored
|
lib/libimhex-rs/imgui-rs/** linguist-vendored
|
||||||
plugins/libimhex-rust/imgui-sys/** linguist-vendored
|
lib/libimhex-rs/imgui-sys/** linguist-vendored
|
||||||
|
|||||||
13
.github/workflows/analysis.yml
vendored
13
.github/workflows/analysis.yml
vendored
@@ -30,8 +30,8 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
path: |
|
path: |
|
||||||
~/.ccache
|
~/.ccache
|
||||||
key: ${{ runner.os }}-${{ secrets.CACHE_VERSION }}-build-${{ github.run_id }}
|
key: ${{ runner.os }}-${{ secrets.CACHE_VERSION }}-build-${{ hashFiles('**/CMakeLists.txt') }}
|
||||||
restore-keys: ${{ runner.os }}-${{ secrets.CACHE_VERSION }}-build-
|
restore-keys: ${{ runner.os }}-${{ secrets.CACHE_VERSION }}-build-${{ hashFiles('**/CMakeLists.txt') }}
|
||||||
|
|
||||||
- name: ⬇️ Install dependencies
|
- name: ⬇️ Install dependencies
|
||||||
run: |
|
run: |
|
||||||
@@ -42,10 +42,13 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
mkdir -p build
|
mkdir -p build
|
||||||
cd build
|
cd build
|
||||||
CC=gcc-10 CXX=g++-10 cmake \
|
CC=gcc-10 CXX=g++-10 cmake \
|
||||||
-DCMAKE_BUILD_TYPE=$BUILD_TYPE \
|
-DCMAKE_BUILD_TYPE=$BUILD_TYPE \
|
||||||
-DCMAKE_INSTALL_PREFIX="$PWD/install" \
|
-DCMAKE_INSTALL_PREFIX="$PWD/install" \
|
||||||
-DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
|
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
|
||||||
|
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
|
||||||
|
-DCMAKE_C_FLAGS="-fuse-ld=lld" \
|
||||||
|
-DCMAKE_CXX_FLAGS="-fuse-ld=lld" \
|
||||||
..
|
..
|
||||||
make -j 4 install
|
make -j 4 install
|
||||||
|
|
||||||
|
|||||||
240
.github/workflows/build.yml
vendored
240
.github/workflows/build.yml
vendored
@@ -9,104 +9,9 @@ env:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
|
||||||
linux:
|
# Windows build
|
||||||
runs-on: ubuntu-20.04
|
|
||||||
name: 🐧 Ubuntu 20.04
|
|
||||||
steps:
|
|
||||||
|
|
||||||
- name: 🧰 Checkout
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
submodules: recursive
|
|
||||||
|
|
||||||
- name: 📜 Restore cache
|
|
||||||
uses: actions/cache@v2
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
~/.ccache
|
|
||||||
.flatpak-builder
|
|
||||||
key: ${{ runner.os }}-${{ secrets.CACHE_VERSION }}-build-${{ github.run_id }}
|
|
||||||
restore-keys: ${{ runner.os }}-${{ secrets.CACHE_VERSION }}-build-
|
|
||||||
|
|
||||||
- name: ⬇️ Install dependencies
|
|
||||||
run: |
|
|
||||||
sudo rm -rf /usr/share/dotnet
|
|
||||||
sudo rm -rf /opt/ghc
|
|
||||||
sudo rm -rf "/usr/local/share/boost"
|
|
||||||
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
|
|
||||||
|
|
||||||
sudo apt update
|
|
||||||
sudo bash dist/get_deps_debian.sh
|
|
||||||
|
|
||||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs > rustup-init.sh
|
|
||||||
sh rustup-init.sh -y --default-toolchain none
|
|
||||||
rm rustup-init.sh
|
|
||||||
$HOME/.cargo/bin/rustup install nightly
|
|
||||||
$HOME/.cargo/bin/rustup target add x86_64-unknown-linux-gnu
|
|
||||||
$HOME/.cargo/bin/rustup default nightly
|
|
||||||
|
|
||||||
- name: 🛠️ Build
|
|
||||||
run: |
|
|
||||||
mkdir -p build
|
|
||||||
cd build
|
|
||||||
CC=gcc-10 CXX=g++-10 cmake \
|
|
||||||
-DCMAKE_BUILD_TYPE=$BUILD_TYPE \
|
|
||||||
-DCMAKE_INSTALL_PREFIX="$PWD/install" \
|
|
||||||
-DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
|
|
||||||
-DRUST_PATH="$HOME/.cargo/bin/" \
|
|
||||||
..
|
|
||||||
make -j 4 install
|
|
||||||
|
|
||||||
- name: 📦 Bundle Flatpak
|
|
||||||
run: |
|
|
||||||
sudo apt install flatpak flatpak-builder
|
|
||||||
flatpak --user remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
|
|
||||||
flatpak --user install -y flathub org.freedesktop.Platform//20.08
|
|
||||||
flatpak --user install -y flathub org.freedesktop.Sdk//20.08
|
|
||||||
flatpak-builder --jobs=4 --repo=imhex _flatpak dist/net.werwolv.ImHex.yaml --ccache --keep-build-dirs
|
|
||||||
flatpak build-bundle imhex imhex.flatpak net.werwolv.ImHex stable
|
|
||||||
|
|
||||||
- name: 📦 Bundle DEB
|
|
||||||
run: |
|
|
||||||
dpkg-deb --build build/install
|
|
||||||
mv build/install.deb imhex.deb
|
|
||||||
|
|
||||||
- name: 📦 Bundle AppImage
|
|
||||||
run: |
|
|
||||||
dist/AppImage/package.sh build
|
|
||||||
mv build/ImHex-x86_64.AppImage imhex.AppImage
|
|
||||||
|
|
||||||
- name: ⬆️ Upload ELF
|
|
||||||
uses: actions/upload-artifact@v2
|
|
||||||
with:
|
|
||||||
name: Linux ELF
|
|
||||||
path: |
|
|
||||||
build/install/*
|
|
||||||
|
|
||||||
- name: ⬆️ Upload Flatpak
|
|
||||||
uses: actions/upload-artifact@v2
|
|
||||||
with:
|
|
||||||
name: Linux Flatpak
|
|
||||||
path: |
|
|
||||||
imhex.flatpak
|
|
||||||
|
|
||||||
- name: ⬆️ Upload .deb
|
|
||||||
uses: actions/upload-artifact@v2
|
|
||||||
with:
|
|
||||||
name: Linux DEB
|
|
||||||
path: |
|
|
||||||
imhex.deb
|
|
||||||
|
|
||||||
- name: ⬆️ Upload AppImage
|
|
||||||
uses: actions/upload-artifact@v2
|
|
||||||
with:
|
|
||||||
name: Linux AppImage
|
|
||||||
path: |
|
|
||||||
imhex.AppImage
|
|
||||||
|
|
||||||
win:
|
win:
|
||||||
runs-on: windows-latest
|
runs-on: windows-2022
|
||||||
name: 🟦 Windows MINGW64
|
name: 🟦 Windows MINGW64
|
||||||
defaults:
|
defaults:
|
||||||
run:
|
run:
|
||||||
@@ -128,6 +33,7 @@ jobs:
|
|||||||
msystem: mingw64
|
msystem: mingw64
|
||||||
pacboy: >-
|
pacboy: >-
|
||||||
gcc:p
|
gcc:p
|
||||||
|
lld:p
|
||||||
cmake:p
|
cmake:p
|
||||||
make:p
|
make:p
|
||||||
ccache:p
|
ccache:p
|
||||||
@@ -158,8 +64,8 @@ jobs:
|
|||||||
id: cache-ccache
|
id: cache-ccache
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.prep-ccache.outputs.dir }}
|
path: ${{ steps.prep-ccache.outputs.dir }}
|
||||||
key: ${{ runner.os }}-${{ secrets.CACHE_VERSION }}-build-${{ github.run_id }}
|
key: ${{ runner.os }}-${{ secrets.CACHE_VERSION }}-build-${{ hashFiles('**/CMakeLists.txt') }}
|
||||||
restore-keys: ${{ runner.os }}-${{ secrets.CACHE_VERSION }}-build-
|
restore-keys: ${{ runner.os }}-${{ secrets.CACHE_VERSION }}-build-${{ hashFiles('**/CMakeLists.txt') }}
|
||||||
|
|
||||||
- name: 🛠️ Build
|
- name: 🛠️ Build
|
||||||
run: |
|
run: |
|
||||||
@@ -169,13 +75,16 @@ jobs:
|
|||||||
PYTHON_LIB_NAME=$(pkg-config --libs-only-l python3 | sed 's/^-l//' | sed 's/ //')
|
PYTHON_LIB_NAME=$(pkg-config --libs-only-l python3 | sed 's/^-l//' | sed 's/ //')
|
||||||
PYTHON_LIB_PATH=$(cygpath -m $(which lib${PYTHON_LIB_NAME}.dll))
|
PYTHON_LIB_PATH=$(cygpath -m $(which lib${PYTHON_LIB_NAME}.dll))
|
||||||
|
|
||||||
cmake -G "MinGW Makefiles" \
|
cmake -G "MinGW Makefiles" \
|
||||||
-DCMAKE_BUILD_TYPE=$BUILD_TYPE \
|
-DCMAKE_BUILD_TYPE=$BUILD_TYPE \
|
||||||
-DCMAKE_INSTALL_PREFIX="$PWD/install" \
|
-DCMAKE_INSTALL_PREFIX="$PWD/install" \
|
||||||
-DCREATE_PACKAGE=ON \
|
-DCREATE_PACKAGE=ON \
|
||||||
-DPython_LIBRARY="$PYTHON_LIB_PATH" \
|
-DPython_LIBRARY="$PYTHON_LIB_PATH" \
|
||||||
-DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
|
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
|
||||||
-DRUST_PATH="$USERPROFILE/.cargo/bin/" \
|
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
|
||||||
|
-DCMAKE_C_FLAGS="-fuse-ld=lld" \
|
||||||
|
-DCMAKE_CXX_FLAGS="-fuse-ld=lld" \
|
||||||
|
-DRUST_PATH="$USERPROFILE/.cargo/bin/" \
|
||||||
..
|
..
|
||||||
mingw32-make -j4 install
|
mingw32-make -j4 install
|
||||||
cpack
|
cpack
|
||||||
@@ -194,6 +103,7 @@ jobs:
|
|||||||
path: |
|
path: |
|
||||||
build/*.msi
|
build/*.msi
|
||||||
|
|
||||||
|
# MacOS build
|
||||||
macos:
|
macos:
|
||||||
runs-on: macos-11.0
|
runs-on: macos-11.0
|
||||||
name: 🍎 macOS 11.0
|
name: 🍎 macOS 11.0
|
||||||
@@ -214,8 +124,8 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
path: |
|
path: |
|
||||||
~/.ccache
|
~/.ccache
|
||||||
key: ${{ runner.os }}-${{ secrets.CACHE_VERSION }}-build-${{ github.run_id }}
|
key: ${{ runner.os }}-${{ secrets.CACHE_VERSION }}-build-${{ hashFiles('**/CMakeLists.txt') }}
|
||||||
restore-keys: ${{ runner.os }}-${{ secrets.CACHE_VERSION }}-build-
|
restore-keys: ${{ runner.os }}-${{ secrets.CACHE_VERSION }}-build-${{ hashFiles('**/CMakeLists.txt') }}
|
||||||
|
|
||||||
- name: 🛠️ Build
|
- name: 🛠️ Build
|
||||||
run: |
|
run: |
|
||||||
@@ -225,11 +135,12 @@ jobs:
|
|||||||
CXX=$(brew --prefix llvm)/bin/clang++ \
|
CXX=$(brew --prefix llvm)/bin/clang++ \
|
||||||
PKG_CONFIG_PATH="$(brew --prefix openssl)/lib/pkgconfig":"$(brew --prefix)/lib/pkgconfig" \
|
PKG_CONFIG_PATH="$(brew --prefix openssl)/lib/pkgconfig":"$(brew --prefix)/lib/pkgconfig" \
|
||||||
MACOSX_DEPLOYMENT_TARGET="10.15" \
|
MACOSX_DEPLOYMENT_TARGET="10.15" \
|
||||||
cmake \
|
cmake \
|
||||||
-DCMAKE_BUILD_TYPE=$BUILD_TYPE \
|
-DCMAKE_BUILD_TYPE=$BUILD_TYPE \
|
||||||
-DCREATE_BUNDLE=ON \
|
-DCREATE_BUNDLE=ON \
|
||||||
-DCREATE_PACKAGE=ON \
|
-DCREATE_PACKAGE=ON \
|
||||||
-DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
|
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
|
||||||
|
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
|
||||||
..
|
..
|
||||||
make -j4 package
|
make -j4 package
|
||||||
|
|
||||||
@@ -238,3 +149,106 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
name: macOS DMG
|
name: macOS DMG
|
||||||
path: build/*.dmg
|
path: build/*.dmg
|
||||||
|
|
||||||
|
# Linux build
|
||||||
|
linux:
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
name: 🐧 Ubuntu 20.04
|
||||||
|
steps:
|
||||||
|
|
||||||
|
- name: 🧰 Checkout
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: 📜 Restore cache
|
||||||
|
uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
~/.ccache
|
||||||
|
.flatpak-builder
|
||||||
|
key: ${{ runner.os }}-${{ secrets.CACHE_VERSION }}-build-${{ hashFiles('**/CMakeLists.txt') }}
|
||||||
|
restore-keys: ${{ runner.os }}-${{ secrets.CACHE_VERSION }}-build-${{ hashFiles('**/CMakeLists.txt') }}
|
||||||
|
|
||||||
|
- name: ⬇️ Install dependencies
|
||||||
|
run: |
|
||||||
|
sudo rm -rf /usr/share/dotnet
|
||||||
|
sudo rm -rf /opt/ghc
|
||||||
|
sudo rm -rf "/usr/local/share/boost"
|
||||||
|
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
|
||||||
|
|
||||||
|
sudo apt update
|
||||||
|
sudo bash dist/get_deps_debian.sh
|
||||||
|
|
||||||
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs > rustup-init.sh
|
||||||
|
sh rustup-init.sh -y --default-toolchain none
|
||||||
|
rm rustup-init.sh
|
||||||
|
$HOME/.cargo/bin/rustup install nightly
|
||||||
|
$HOME/.cargo/bin/rustup target add x86_64-unknown-linux-gnu
|
||||||
|
$HOME/.cargo/bin/rustup default nightly
|
||||||
|
|
||||||
|
- name: 🛠️ Build
|
||||||
|
run: |
|
||||||
|
mkdir -p build
|
||||||
|
cd build
|
||||||
|
CC=gcc-10 CXX=g++-10 cmake \
|
||||||
|
-DCMAKE_BUILD_TYPE=$BUILD_TYPE \
|
||||||
|
-DCMAKE_INSTALL_PREFIX="$PWD/install/usr" \
|
||||||
|
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
|
||||||
|
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
|
||||||
|
-DCMAKE_C_FLAGS="-fuse-ld=lld" \
|
||||||
|
-DCMAKE_CXX_FLAGS="-fuse-ld=lld" \
|
||||||
|
-DRUST_PATH="$HOME/.cargo/bin/" \
|
||||||
|
..
|
||||||
|
make -j 4 install
|
||||||
|
|
||||||
|
- name: 📦 Bundle Flatpak
|
||||||
|
run: |
|
||||||
|
sudo apt install flatpak flatpak-builder
|
||||||
|
flatpak --user remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
|
||||||
|
flatpak --user install -y flathub org.freedesktop.Platform//20.08
|
||||||
|
flatpak --user install -y flathub org.freedesktop.Sdk//20.08
|
||||||
|
flatpak-builder --jobs=4 --repo=imhex _flatpak dist/net.werwolv.ImHex.yaml --ccache --keep-build-dirs
|
||||||
|
flatpak build-bundle imhex imhex.flatpak net.werwolv.ImHex stable
|
||||||
|
|
||||||
|
- name: 📦 Bundle DEB
|
||||||
|
run: |
|
||||||
|
cp -r build/DEBIAN build/install
|
||||||
|
dpkg-deb --build build/install
|
||||||
|
mv build/install.deb imhex.deb
|
||||||
|
rm -rf build/install/DEBIAN
|
||||||
|
|
||||||
|
- name: 📦 Bundle AppImage
|
||||||
|
run: |
|
||||||
|
dist/AppImage/package.sh build
|
||||||
|
mv build/ImHex-x86_64.AppImage imhex.AppImage
|
||||||
|
|
||||||
|
- name: ⬆️ Upload ELF
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: Linux ELF
|
||||||
|
path: |
|
||||||
|
build/install/*
|
||||||
|
|
||||||
|
- name: ⬆️ Upload Flatpak
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: Linux Flatpak
|
||||||
|
path: |
|
||||||
|
imhex.flatpak
|
||||||
|
|
||||||
|
- name: ⬆️ Upload .deb
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: Linux DEB
|
||||||
|
path: |
|
||||||
|
imhex.deb
|
||||||
|
|
||||||
|
- name: ⬆️ Upload AppImage
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: Linux AppImage
|
||||||
|
path: |
|
||||||
|
imhex.AppImage
|
||||||
|
|
||||||
|
|||||||
13
.github/workflows/tests.yml
vendored
13
.github/workflows/tests.yml
vendored
@@ -27,8 +27,8 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
path: |
|
path: |
|
||||||
~/.ccache
|
~/.ccache
|
||||||
key: ${{ runner.os }}-${{ secrets.CACHE_VERSION }}-build-${{ github.run_id }}
|
key: ${{ runner.os }}-${{ secrets.CACHE_VERSION }}-build-${{ hashFiles('**/CMakeLists.txt') }}
|
||||||
restore-keys: ${{ runner.os }}-${{ secrets.CACHE_VERSION }}-build-
|
restore-keys: ${{ runner.os }}-${{ secrets.CACHE_VERSION }}-build-${{ hashFiles('**/CMakeLists.txt') }}
|
||||||
|
|
||||||
- name: ⬇️ Install dependencies
|
- name: ⬇️ Install dependencies
|
||||||
run: |
|
run: |
|
||||||
@@ -39,10 +39,13 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
mkdir -p build
|
mkdir -p build
|
||||||
cd build
|
cd build
|
||||||
CC=gcc-10 CXX=g++-10 cmake \
|
CC=gcc-10 CXX=g++-10 cmake \
|
||||||
-DCMAKE_BUILD_TYPE=$BUILD_TYPE \
|
-DCMAKE_BUILD_TYPE=$BUILD_TYPE \
|
||||||
-DCMAKE_INSTALL_PREFIX="$PWD/install" \
|
-DCMAKE_INSTALL_PREFIX="$PWD/install" \
|
||||||
-DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
|
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
|
||||||
|
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
|
||||||
|
-DCMAKE_C_FLAGS="-fuse-ld=lld" \
|
||||||
|
-DCMAKE_CXX_FLAGS="-fuse-ld=lld" \
|
||||||
..
|
..
|
||||||
make -j4 unit_tests install
|
make -j4 unit_tests install
|
||||||
|
|
||||||
|
|||||||
5
.gitignore
vendored
5
.gitignore
vendored
@@ -1,10 +1,7 @@
|
|||||||
.vscode/
|
.vscode/
|
||||||
.idea/
|
.idea/
|
||||||
|
|
||||||
cmake-build-debug/
|
cmake-build-*/
|
||||||
cmake-build-release/
|
|
||||||
cmake-build-relwithdebinfo/
|
|
||||||
cmake-build-wsl/
|
|
||||||
|
|
||||||
build-linux/
|
build-linux/
|
||||||
build*/
|
build*/
|
||||||
|
|||||||
28
.gitmodules
vendored
28
.gitmodules
vendored
@@ -1,26 +1,26 @@
|
|||||||
[submodule "external/nativefiledialog"]
|
[submodule "lib/external/nativefiledialog"]
|
||||||
path = external/nativefiledialog
|
path = lib/external/nativefiledialog
|
||||||
url = https://github.com/btzy/nativefiledialog-extended
|
url = https://github.com/btzy/nativefiledialog-extended
|
||||||
ignore = dirty
|
ignore = dirty
|
||||||
[submodule "external/yara/yara"]
|
[submodule "lib/external/yara/yara"]
|
||||||
path = external/yara/yara
|
path = lib/external/yara/yara
|
||||||
url = https://github.com/VirusTotal/yara
|
url = https://github.com/VirusTotal/yara
|
||||||
ignore = dirty
|
ignore = dirty
|
||||||
[submodule "external/xdgpp"]
|
[submodule "lib/external/xdgpp"]
|
||||||
path = external/xdgpp
|
path = lib/external/xdgpp
|
||||||
url = https://git.sr.ht/~danyspin97/xdgpp
|
url = https://git.sr.ht/~danyspin97/xdgpp
|
||||||
ignore = dirty
|
ignore = dirty
|
||||||
[submodule "external/fmt"]
|
[submodule "lib/external/fmt"]
|
||||||
path = external/fmt
|
path = lib/external/fmt
|
||||||
url = https://github.com/fmtlib/fmt
|
url = https://github.com/fmtlib/fmt
|
||||||
ignore = dirty
|
ignore = dirty
|
||||||
[submodule "external/curl"]
|
[submodule "lib/external/curl"]
|
||||||
path = external/curl
|
path = lib/external/curl
|
||||||
url = https://github.com/curl/curl
|
url = https://github.com/curl/curl
|
||||||
ignore = dirty
|
ignore = dirty
|
||||||
[submodule "external/capstone"]
|
[submodule "lib/external/capstone"]
|
||||||
path = external/capstone
|
path = lib/external/capstone
|
||||||
url = https://github.com/capstone-engine/capstone
|
url = https://github.com/capstone-engine/capstone
|
||||||
[submodule "external/libromfs"]
|
[submodule "lib/external/libromfs"]
|
||||||
path = external/libromfs
|
path = lib/external/libromfs
|
||||||
url = https://github.com/WerWolv/libromfs
|
url = https://github.com/WerWolv/libromfs
|
||||||
|
|||||||
2
.idea/HexEditor.iml
generated
2
.idea/HexEditor.iml
generated
@@ -1,2 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<module classpath="CMake" type="CPP_MODULE" version="4" />
|
|
||||||
14
.idea/vcs.xml
generated
14
.idea/vcs.xml
generated
@@ -2,12 +2,12 @@
|
|||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="VcsDirectoryMappings">
|
<component name="VcsDirectoryMappings">
|
||||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||||
<mapping directory="$PROJECT_DIR$/external/capstone" vcs="Git" />
|
<mapping directory="$PROJECT_DIR$/lib/external/capstone" vcs="Git" />
|
||||||
<mapping directory="$PROJECT_DIR$/external/curl" vcs="Git" />
|
<mapping directory="$PROJECT_DIR$/lib/external/curl" vcs="Git" />
|
||||||
<mapping directory="$PROJECT_DIR$/external/fmt" vcs="Git" />
|
<mapping directory="$PROJECT_DIR$/lib/external/fmt" vcs="Git" />
|
||||||
<mapping directory="$PROJECT_DIR$/external/libromfs" vcs="Git" />
|
<mapping directory="$PROJECT_DIR$/lib/external/libromfs" vcs="Git" />
|
||||||
<mapping directory="$PROJECT_DIR$/external/nativefiledialog" vcs="Git" />
|
<mapping directory="$PROJECT_DIR$/lib/external/nativefiledialog" vcs="Git" />
|
||||||
<mapping directory="$PROJECT_DIR$/external/xdgpp" vcs="Git" />
|
<mapping directory="$PROJECT_DIR$/lib/external/xdgpp" vcs="Git" />
|
||||||
<mapping directory="$PROJECT_DIR$/external/yara/yara" vcs="Git" />
|
<mapping directory="$PROJECT_DIR$/lib/external/yara/yara" vcs="Git" />
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
cmake_minimum_required(VERSION 3.16)
|
cmake_minimum_required(VERSION 3.16)
|
||||||
|
|
||||||
# Updating the version here will update it throughout ImHex as well
|
# Updating the version here will update it throughout ImHex as well
|
||||||
set(IMHEX_VERSION "1.13.2")
|
set(IMHEX_VERSION "1.14.0")
|
||||||
project(imhex VERSION ${IMHEX_VERSION})
|
project(imhex VERSION ${IMHEX_VERSION})
|
||||||
|
|
||||||
set(CMAKE_CXX_STANDARD 20)
|
set(CMAKE_CXX_STANDARD 20)
|
||||||
@@ -9,53 +9,30 @@ set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules")
|
|||||||
set(IMHEX_BASE_FOLDER ${CMAKE_CURRENT_SOURCE_DIR})
|
set(IMHEX_BASE_FOLDER ${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
include("${CMAKE_SOURCE_DIR}/cmake/build_helpers.cmake")
|
include("${CMAKE_SOURCE_DIR}/cmake/build_helpers.cmake")
|
||||||
|
|
||||||
# List plugin names here. Project name must match folder name
|
# Make sure project is configured correctly
|
||||||
set(PLUGINS
|
|
||||||
builtin
|
|
||||||
windows
|
|
||||||
# example_cpp
|
|
||||||
# example_rust
|
|
||||||
)
|
|
||||||
|
|
||||||
detectOS()
|
|
||||||
detectArch()
|
|
||||||
setDefaultBuiltTypeIfUnset()
|
setDefaultBuiltTypeIfUnset()
|
||||||
detectBadClone()
|
detectBadClone()
|
||||||
|
|
||||||
# Add bundled dependencies
|
# List plugin names here. Project name must match folder name
|
||||||
add_subdirectory(plugins/libimhex)
|
set(PLUGINS
|
||||||
|
builtin
|
||||||
|
windows
|
||||||
|
)
|
||||||
|
|
||||||
# Add include directories
|
# Add various defines
|
||||||
include_directories(include)
|
detectOS()
|
||||||
|
detectArch()
|
||||||
|
addVersionDefines()
|
||||||
|
configurePackingResources()
|
||||||
|
|
||||||
|
# Add ImHex sources
|
||||||
|
add_subdirectory(lib/libimhex)
|
||||||
|
add_subdirectory(main)
|
||||||
|
add_custom_target(imhex ALL DEPENDS main)
|
||||||
|
|
||||||
|
# Add unit tests
|
||||||
enable_testing()
|
enable_testing()
|
||||||
add_subdirectory(tests EXCLUDE_FROM_ALL)
|
add_subdirectory(tests EXCLUDE_FROM_ALL)
|
||||||
|
|
||||||
addVersionDefines()
|
# Configure packaging
|
||||||
configurePackageCreation()
|
|
||||||
|
|
||||||
add_executable(imhex ${application_type}
|
|
||||||
source/main.cpp
|
|
||||||
|
|
||||||
source/window/window.cpp
|
|
||||||
source/window/win_window.cpp
|
|
||||||
source/window/macos_window.cpp
|
|
||||||
source/window/linux_window.cpp
|
|
||||||
|
|
||||||
source/init/splash_window.cpp
|
|
||||||
source/init/tasks.cpp
|
|
||||||
|
|
||||||
source/helpers/plugin_manager.cpp
|
|
||||||
|
|
||||||
${imhex_icon}
|
|
||||||
)
|
|
||||||
|
|
||||||
set_target_properties(imhex PROPERTIES CXX_VISIBILITY_PRESET hidden)
|
|
||||||
set_target_properties(imhex PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
|
||||||
if (WIN32)
|
|
||||||
target_link_libraries(imhex PUBLIC dl libimhex wsock32 ws2_32 Dwmapi.lib)
|
|
||||||
else ()
|
|
||||||
target_link_libraries(imhex PUBLIC dl libimhex pthread)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
createPackage()
|
createPackage()
|
||||||
|
|||||||
12
README.md
12
README.md
@@ -55,7 +55,7 @@ If you like my work, please consider supporting me on GitHub Sponsors, Patreon o
|
|||||||
- CRC16 and CRC32 with custom initial values and polynomials
|
- CRC16 and CRC32 with custom initial values and polynomials
|
||||||
- MD4, MD5
|
- MD4, MD5
|
||||||
- SHA-1, SHA-224, SHA-256, SHA-384, SHA-512
|
- SHA-1, SHA-224, SHA-256, SHA-384, SHA-512
|
||||||
- Disassembler supporting many different architectures
|
- Disassembler supporting many architectures (frontend for Capstone)
|
||||||
- ARM32 (ARM, Thumb, Cortex-M, AArch32)
|
- ARM32 (ARM, Thumb, Cortex-M, AArch32)
|
||||||
- ARM64
|
- ARM64
|
||||||
- MIPS (MIPS32, MIPS64, MIPS32R6, Micro)
|
- MIPS (MIPS32, MIPS64, MIPS32R6, Micro)
|
||||||
@@ -68,6 +68,10 @@ If you like my work, please consider supporting me on GitHub Sponsors, Patreon o
|
|||||||
- TMS320C64X
|
- TMS320C64X
|
||||||
- M680X
|
- M680X
|
||||||
- Ethereum
|
- Ethereum
|
||||||
|
- RISC-V
|
||||||
|
- WebAssembly
|
||||||
|
- MOS565XX
|
||||||
|
- Berkeley Packet Filter
|
||||||
- Bookmarks
|
- Bookmarks
|
||||||
- Region highlighting
|
- Region highlighting
|
||||||
- Comments
|
- Comments
|
||||||
@@ -152,7 +156,7 @@ make -j
|
|||||||
|
|
||||||
To create a standalone zipfile on Windows, get the Python standard library (e.g. from https://github.com/python/cpython/tree/master/Lib) and place the files and folders in `lib/python3.8` next to your built executable. Don't forget to also copy the `libpython3.8.dll` and `libwinpthread-1.dll` from your mingw setup next to the executable.
|
To create a standalone zipfile on Windows, get the Python standard library (e.g. from https://github.com/python/cpython/tree/master/Lib) and place the files and folders in `lib/python3.8` next to your built executable. Don't forget to also copy the `libpython3.8.dll` and `libwinpthread-1.dll` from your mingw setup next to the executable.
|
||||||
|
|
||||||
- Copy the files from `python_libs` in the `lib` folder next to your built executable.
|
- Copy the files inside the `/resources/lib/python` folder into the `lib` folder next to your built executable.
|
||||||
- Place your magic databases in the `magic` folder next to your built executable
|
- Place your magic databases in the `magic` folder next to your built executable
|
||||||
- Place your patterns in the `pattern` folder next to your built executable
|
- Place your patterns in the `pattern` folder next to your built executable
|
||||||
- Place your include pattern files in the `include` folder next to your built executable
|
- Place your include pattern files in the `include` folder next to your built executable
|
||||||
@@ -182,6 +186,10 @@ Configuration: ~/Library/Application Support/imhex/config
|
|||||||
Resources: ~/Library/Application Support/imhex/resources
|
Resources: ~/Library/Application Support/imhex/resources
|
||||||
```
|
```
|
||||||
|
|
||||||
|
If the build fails while trying to find the macOS libraries, make sure you have
|
||||||
|
XCode installed with `xcode-select --install`. Homebrew will also help get the
|
||||||
|
most recent SDK installed and configured with `brew doctor`.
|
||||||
|
|
||||||
### Linux
|
### Linux
|
||||||
|
|
||||||
Dependency installation scripts are available for many common Linux distributions in the [/dist](dist) folder.
|
Dependency installation scripts are available for many common Linux distributions in the [/dist](dist) folder.
|
||||||
|
|||||||
@@ -16,15 +16,25 @@ macro(addVersionDefines)
|
|||||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
)
|
)
|
||||||
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DGIT_COMMIT_HASH=\"\\\"${GIT_COMMIT_HASH}\"\\\"")
|
add_compile_definitions(GIT_COMMIT_HASH="${GIT_COMMIT_HASH}" GIT_BRANCH="${GIT_BRANCH}")
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DGIT_BRANCH=\"\\\"${GIT_BRANCH}\"\\\"")
|
endif ()
|
||||||
endif()
|
|
||||||
|
|
||||||
set(CMAKE_RC_FLAGS "${CMAKE_RC_FLAGS} -DPROJECT_VERSION_MAJOR=${PROJECT_VERSION_MAJOR} -DPROJECT_VERSION_MINOR=${PROJECT_VERSION_MINOR} -DPROJECT_VERSION_PATCH=${PROJECT_VERSION_PATCH} ")
|
set(CMAKE_RC_FLAGS "${CMAKE_RC_FLAGS} -DPROJECT_VERSION_MAJOR=${PROJECT_VERSION_MAJOR} -DPROJECT_VERSION_MINOR=${PROJECT_VERSION_MINOR} -DPROJECT_VERSION_PATCH=${PROJECT_VERSION_PATCH} ")
|
||||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DRELEASE -DIMHEX_VERSION=\"\\\"${PROJECT_VERSION}\"\\\"")
|
|
||||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG -DIMHEX_VERSION=\"\\\"${PROJECT_VERSION}-Debug\"\\\"")
|
add_compile_definitions(
|
||||||
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DRELEASE -DIMHEX_VERSION=\"\\\"${PROJECT_VERSION}-ReleaseWithDebugInfo\"\\\"")
|
$<$<CONFIG:Release>:IMHEX_VERSION="${PROJECT_VERSION}">
|
||||||
set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} -DRELEASE -DIMHEX_VERSION=\"\\\"${PROJECT_VERSION}-ReleaseMinimumSize\"\\\"")
|
$<$<CONFIG:Debug>:IMHEX_VERSION="${PROJECT_VERSION}-Debug">
|
||||||
|
$<$<CONFIG:RelWithDebInfo>:IMHEX_VERSION="${PROJECT_VERSION}-ReleaseWithDebugInfo">
|
||||||
|
$<$<CONFIG:MinSizeRel>:IMHEX_VERSION="${PROJECT_VERSION}-ReleaseMinimumSize">
|
||||||
|
)
|
||||||
|
|
||||||
|
add_compile_definitions(
|
||||||
|
$<$<CONFIG:Release>:RELEASE>
|
||||||
|
$<$<CONFIG:Debug>:DEBUG>
|
||||||
|
$<$<CONFIG:RelWithDebInfo>:RELEASE>
|
||||||
|
$<$<CONFIG:MinSizeRel>:RELEASE>
|
||||||
|
)
|
||||||
|
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
macro(configurePython)
|
macro(configurePython)
|
||||||
@@ -49,30 +59,30 @@ macro(configurePython)
|
|||||||
endif ()
|
endif ()
|
||||||
list(JOIN PYTHON_VERSION_MAJOR_MINOR "." PYTHON_VERSION_MAJOR_MINOR)
|
list(JOIN PYTHON_VERSION_MAJOR_MINOR "." PYTHON_VERSION_MAJOR_MINOR)
|
||||||
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_C_FLAGS} -DPYTHON_VERSION_MAJOR_MINOR=\"\\\"${PYTHON_VERSION_MAJOR_MINOR}\"\\\"")
|
add_compile_definitions(PYTHON_VERSION_MAJOR_MINOR="${PYTHON_VERSION_MAJOR_MINOR}")
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
# Detect current OS / System
|
# Detect current OS / System
|
||||||
macro(detectOS)
|
macro(detectOS)
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DOS_WINDOWS")
|
add_compile_definitions(OS_WINDOWS)
|
||||||
set(CMAKE_INSTALL_BINDIR ".")
|
set(CMAKE_INSTALL_BINDIR ".")
|
||||||
set(CMAKE_INSTALL_LIBDIR ".")
|
set(CMAKE_INSTALL_LIBDIR ".")
|
||||||
set(PLUGINS_INSTALL_LOCATION "plugins")
|
set(PLUGINS_INSTALL_LOCATION "plugins")
|
||||||
set(MAGIC_INSTALL_LOCATION "magic")
|
set(MAGIC_INSTALL_LOCATION "magic")
|
||||||
elseif(APPLE)
|
elseif (APPLE)
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DOS_MACOS")
|
add_compile_definitions(OS_MACOS)
|
||||||
set(CMAKE_INSTALL_BINDIR ".")
|
set(CMAKE_INSTALL_BINDIR ".")
|
||||||
set(CMAKE_INSTALL_LIBDIR ".")
|
set(CMAKE_INSTALL_LIBDIR ".")
|
||||||
set(PLUGINS_INSTALL_LOCATION "plugins")
|
set(PLUGINS_INSTALL_LOCATION "plugins")
|
||||||
set(MAGIC_INSTALL_LOCATION "magic")
|
set(MAGIC_INSTALL_LOCATION "magic")
|
||||||
elseif(UNIX AND NOT APPLE)
|
elseif (UNIX AND NOT APPLE)
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DOS_LINUX")
|
add_compile_definitions(OS_LINUX)
|
||||||
set(CMAKE_INSTALL_BINDIR "usr/bin")
|
set(CMAKE_INSTALL_BINDIR "bin")
|
||||||
set(CMAKE_INSTALL_LIBDIR "usr/lib")
|
set(CMAKE_INSTALL_LIBDIR "lib")
|
||||||
set(PLUGINS_INSTALL_LOCATION "usr/share/imhex/plugins")
|
set(PLUGINS_INSTALL_LOCATION "share/imhex/plugins")
|
||||||
set(MAGIC_INSTALL_LOCATION "usr/share/imhex/magic")
|
set(MAGIC_INSTALL_LOCATION "share/imhex/magic")
|
||||||
else()
|
else ()
|
||||||
message(FATAL_ERROR "Unknown / unsupported system!")
|
message(FATAL_ERROR "Unknown / unsupported system!")
|
||||||
endif()
|
endif()
|
||||||
endmacro()
|
endmacro()
|
||||||
@@ -80,14 +90,14 @@ endmacro()
|
|||||||
# Detect 32 vs. 64 bit system
|
# Detect 32 vs. 64 bit system
|
||||||
macro(detectArch)
|
macro(detectArch)
|
||||||
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DARCH_64_BIT")
|
add_compile_definitions(ARCH_64_BIT)
|
||||||
elseif(CMAKE_SIZEOF_VOID_P EQUAL 4)
|
elseif(CMAKE_SIZEOF_VOID_P EQUAL 4)
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DARCH_32_BIT")
|
add_compile_definitions(ARCH_32_BIT)
|
||||||
endif()
|
endif()
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
|
|
||||||
macro(configurePackageCreation)
|
macro(configurePackingResources)
|
||||||
option (CREATE_PACKAGE "Create a package with CPack" OFF)
|
option (CREATE_PACKAGE "Create a package with CPack" OFF)
|
||||||
|
|
||||||
if (APPLE)
|
if (APPLE)
|
||||||
@@ -96,7 +106,7 @@ macro(configurePackageCreation)
|
|||||||
|
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
set(application_type)
|
set(application_type)
|
||||||
set(imhex_icon "${CMAKE_SOURCE_DIR}/res/resource.rc")
|
set(IMHEX_ICON "${CMAKE_SOURCE_DIR}/resources/resource.rc")
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,--allow-multiple-definition")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,--allow-multiple-definition")
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-subsystem,windows")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-subsystem,windows")
|
||||||
|
|
||||||
@@ -105,19 +115,19 @@ macro(configurePackageCreation)
|
|||||||
set(CPACK_PACKAGE_NAME "ImHex")
|
set(CPACK_PACKAGE_NAME "ImHex")
|
||||||
set(CPACK_PACKAGE_VENDOR "WerWolv")
|
set(CPACK_PACKAGE_VENDOR "WerWolv")
|
||||||
set(CPACK_WIX_UPGRADE_GUID "05000E99-9659-42FD-A1CF-05C554B39285")
|
set(CPACK_WIX_UPGRADE_GUID "05000E99-9659-42FD-A1CF-05C554B39285")
|
||||||
set(CPACK_WIX_PRODUCT_ICON "${PROJECT_SOURCE_DIR}/res/icon.ico")
|
set(CPACK_WIX_PRODUCT_ICON "${PROJECT_SOURCE_DIR}/resources/icon.ico")
|
||||||
set(CPACK_PACKAGE_INSTALL_DIRECTORY "ImHex")
|
set(CPACK_PACKAGE_INSTALL_DIRECTORY "ImHex")
|
||||||
set_property(INSTALL "$<TARGET_FILE_NAME:imhex>"
|
set_property(INSTALL "$<TARGET_FILE_NAME:main>"
|
||||||
PROPERTY CPACK_START_MENU_SHORTCUTS "ImHex"
|
PROPERTY CPACK_START_MENU_SHORTCUTS "ImHex"
|
||||||
)
|
)
|
||||||
set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/res/LICENSE.rtf")
|
set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/resources/LICENSE.rtf")
|
||||||
endif()
|
endif()
|
||||||
elseif (APPLE)
|
elseif (APPLE)
|
||||||
set (imhex_icon "${CMAKE_SOURCE_DIR}/res/mac/AppIcon.icns")
|
set (IMHEX_ICON "${CMAKE_SOURCE_DIR}/resources/AppIcon.icns")
|
||||||
|
|
||||||
if (CREATE_BUNDLE)
|
if (CREATE_BUNDLE)
|
||||||
set(application_type MACOSX_BUNDLE)
|
set(application_type MACOSX_BUNDLE)
|
||||||
set_source_files_properties(${imhex_icon} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
|
set_source_files_properties(${IMHEX_ICON} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
|
||||||
set(MACOSX_BUNDLE_ICON_FILE "AppIcon.icns")
|
set(MACOSX_BUNDLE_ICON_FILE "AppIcon.icns")
|
||||||
set(MACOSX_BUNDLE_INFO_STRING "WerWolv")
|
set(MACOSX_BUNDLE_INFO_STRING "WerWolv")
|
||||||
set(MACOSX_BUNDLE_BUNDLE_NAME "ImHex")
|
set(MACOSX_BUNDLE_BUNDLE_NAME "ImHex")
|
||||||
@@ -157,7 +167,7 @@ macro(createPackage)
|
|||||||
install(TARGETS ${plugin} RUNTIME DESTINATION ${PLUGINS_INSTALL_LOCATION})
|
install(TARGETS ${plugin} RUNTIME DESTINATION ${PLUGINS_INSTALL_LOCATION})
|
||||||
elseif (APPLE)
|
elseif (APPLE)
|
||||||
if (CREATE_BUNDLE)
|
if (CREATE_BUNDLE)
|
||||||
set_target_properties(${plugin} PROPERTIES LIBRARY_OUTPUT_DIRECTORY $<TARGET_FILE_DIR:imhex>/${PLUGINS_INSTALL_LOCATION})
|
set_target_properties(${plugin} PROPERTIES LIBRARY_OUTPUT_DIRECTORY $<TARGET_FILE_DIR:main>/${PLUGINS_INSTALL_LOCATION})
|
||||||
else ()
|
else ()
|
||||||
set_target_properties(${plugin} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/plugins)
|
set_target_properties(${plugin} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/plugins)
|
||||||
endif ()
|
endif ()
|
||||||
@@ -183,7 +193,7 @@ macro(createPackage)
|
|||||||
INSTALL(CODE "LIST(APPEND DEP_FOLDERS \${PY_PARENT})")
|
INSTALL(CODE "LIST(APPEND DEP_FOLDERS \${PY_PARENT})")
|
||||||
install(CODE [[
|
install(CODE [[
|
||||||
file(GET_RUNTIME_DEPENDENCIES
|
file(GET_RUNTIME_DEPENDENCIES
|
||||||
EXECUTABLES $<TARGET_FILE:builtin> $<TARGET_FILE:libimhex> $<TARGET_FILE:imhex>
|
EXECUTABLES $<TARGET_FILE:builtin> $<TARGET_FILE:libimhex> $<TARGET_FILE:main>
|
||||||
RESOLVED_DEPENDENCIES_VAR _r_deps
|
RESOLVED_DEPENDENCIES_VAR _r_deps
|
||||||
UNRESOLVED_DEPENDENCIES_VAR _u_deps
|
UNRESOLVED_DEPENDENCIES_VAR _u_deps
|
||||||
CONFLICTING_DEPENDENCIES_PREFIX _c_deps
|
CONFLICTING_DEPENDENCIES_PREFIX _c_deps
|
||||||
@@ -209,29 +219,28 @@ macro(createPackage)
|
|||||||
]])
|
]])
|
||||||
elseif(UNIX AND NOT APPLE)
|
elseif(UNIX AND NOT APPLE)
|
||||||
configure_file(${CMAKE_SOURCE_DIR}/dist/DEBIAN/control.in ${CMAKE_BINARY_DIR}/DEBIAN/control)
|
configure_file(${CMAKE_SOURCE_DIR}/dist/DEBIAN/control.in ${CMAKE_BINARY_DIR}/DEBIAN/control)
|
||||||
install(FILES ${CMAKE_BINARY_DIR}/DEBIAN/control DESTINATION ${CMAKE_INSTALL_PREFIX}/DEBIAN)
|
install(FILES ${CMAKE_SOURCE_DIR}/dist/imhex.desktop DESTINATION ${CMAKE_INSTALL_PREFIX}/share/applications)
|
||||||
install(FILES ${CMAKE_SOURCE_DIR}/dist/imhex.desktop DESTINATION ${CMAKE_INSTALL_PREFIX}/usr/share/applications)
|
install(FILES ${CMAKE_SOURCE_DIR}/resources/icon.png DESTINATION ${CMAKE_INSTALL_PREFIX}/share/pixmaps RENAME imhex.png)
|
||||||
install(FILES ${CMAKE_SOURCE_DIR}/res/icon.png DESTINATION ${CMAKE_INSTALL_PREFIX}/usr/share/pixmaps RENAME imhex.png)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (CREATE_BUNDLE)
|
if (CREATE_BUNDLE)
|
||||||
include(PostprocessBundle)
|
include(PostprocessBundle)
|
||||||
|
|
||||||
# Fix rpath
|
# Fix rpath
|
||||||
add_custom_command(TARGET imhex POST_BUILD COMMAND ${CMAKE_INSTALL_NAME_TOOL} -add_rpath "@executable_path/../Frameworks/" $<TARGET_FILE:imhex>)
|
add_custom_command(TARGET imhex POST_BUILD COMMAND ${CMAKE_INSTALL_NAME_TOOL} -add_rpath "@executable_path/../Frameworks/" $<TARGET_FILE:main>)
|
||||||
|
|
||||||
# FIXME: Remove this once we move/integrate the plugins directory.
|
# FIXME: Remove this once we move/integrate the plugins directory.
|
||||||
add_custom_target(build-time-make-plugins-directory ALL COMMAND ${CMAKE_COMMAND} -E make_directory "${bundle_path}/Contents/MacOS/plugins")
|
add_custom_target(build-time-make-plugins-directory ALL COMMAND ${CMAKE_COMMAND} -E make_directory "${bundle_path}/Contents/MacOS/plugins")
|
||||||
|
|
||||||
# Update library references to make the bundle portable
|
# Update library references to make the bundle portable
|
||||||
postprocess_bundle(imhex)
|
postprocess_bundle(imhex main)
|
||||||
|
|
||||||
# Enforce DragNDrop packaging.
|
# Enforce DragNDrop packaging.
|
||||||
set(CPACK_GENERATOR "DragNDrop")
|
set(CPACK_GENERATOR "DragNDrop")
|
||||||
|
|
||||||
install(TARGETS imhex BUNDLE DESTINATION .)
|
install(TARGETS main BUNDLE DESTINATION .)
|
||||||
else()
|
else()
|
||||||
install(TARGETS imhex RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
install(TARGETS main RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -13,9 +13,9 @@
|
|||||||
if(CMAKE_GENERATOR)
|
if(CMAKE_GENERATOR)
|
||||||
# Being called as include(PostprocessBundle), so define a helper function.
|
# Being called as include(PostprocessBundle), so define a helper function.
|
||||||
set(_POSTPROCESS_BUNDLE_MODULE_LOCATION "${CMAKE_CURRENT_LIST_FILE}")
|
set(_POSTPROCESS_BUNDLE_MODULE_LOCATION "${CMAKE_CURRENT_LIST_FILE}")
|
||||||
function(postprocess_bundle target)
|
function(postprocess_bundle out_target in_target)
|
||||||
add_custom_command(TARGET ${target} POST_BUILD
|
add_custom_command(TARGET ${out_target} POST_BUILD
|
||||||
COMMAND ${CMAKE_COMMAND} -DBUNDLE_PATH="$<TARGET_FILE_DIR:${target}>/../.." -DCODE_SIGN_CERTIFICATE_ID="${CODE_SIGN_CERTIFICATE_ID}"
|
COMMAND ${CMAKE_COMMAND} -DBUNDLE_PATH="$<TARGET_FILE_DIR:${in_target}>/../.." -DCODE_SIGN_CERTIFICATE_ID="${CODE_SIGN_CERTIFICATE_ID}"
|
||||||
-P "${_POSTPROCESS_BUNDLE_MODULE_LOCATION}"
|
-P "${_POSTPROCESS_BUNDLE_MODULE_LOCATION}"
|
||||||
)
|
)
|
||||||
endfunction()
|
endfunction()
|
||||||
@@ -58,5 +58,4 @@ if (CODE_SIGN_CERTIFICATE_ID)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Add a necessary rpath to the imhex binary
|
# Add a necessary rpath to the imhex binary
|
||||||
get_bundle_main_executable("${BUNDLE_PATH}" IMHEX_EXECUTABLE)
|
get_bundle_main_executable("${BUNDLE_PATH}" IMHEX_EXECUTABLE)
|
||||||
execute_process(COMMAND ${CMAKE_INSTALL_NAME_TOOL} -add_rpath @executable_path/../Frameworks/ "${IMHEX_EXECUTABLE}")
|
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
set (CPACK_BUNDLE_NAME "ImHex")
|
set (CPACK_BUNDLE_NAME "ImHex")
|
||||||
set (CPACK_BUNDLE_ICON "${CMAKE_SOURCE_DIR}/res/mac/AppIcon.icns" )
|
set (CPACK_BUNDLE_ICON "${CMAKE_SOURCE_DIR}/resources/AppIcon.icns" )
|
||||||
set (CPACK_BUNDLE_PLIST "${CMAKE_BINARY_DIR}/ImHex.app/Contents/Info.plist")
|
set (CPACK_BUNDLE_PLIST "${CMAKE_BINARY_DIR}/ImHex.app/Contents/Info.plist")
|
||||||
|
|||||||
2
dist/AppImage/package.sh
vendored
2
dist/AppImage/package.sh
vendored
@@ -41,7 +41,7 @@ chmod a+x ${BUILDDIR}/ImHex.AppDir/AppRun
|
|||||||
## Add all dependencies
|
## Add all dependencies
|
||||||
ldd ${BUILDDIR}/imhex | awk '/ => /{print $3}' | awk '!/(libc|libstdc++|libc++|libdl|libpthread|libselinux|ld-linux|libgdk)/' | xargs -I '{}' cp '{}' ${APPDIR}/usr/lib
|
ldd ${BUILDDIR}/imhex | awk '/ => /{print $3}' | awk '!/(libc|libstdc++|libc++|libdl|libpthread|libselinux|ld-linux|libgdk)/' | xargs -I '{}' cp '{}' ${APPDIR}/usr/lib
|
||||||
ldd ${BUILDDIR}/plugins/builtin/builtin.hexplug | awk '/ => /{print $3}' | awk '!/(libc|libstdc++|libc++|libdl|libpthread|libselinux|ld-linux|libgdk)/' | xargs -I '{}' cp '{}' ${APPDIR}/usr/lib
|
ldd ${BUILDDIR}/plugins/builtin/builtin.hexplug | awk '/ => /{print $3}' | awk '!/(libc|libstdc++|libc++|libdl|libpthread|libselinux|ld-linux|libgdk)/' | xargs -I '{}' cp '{}' ${APPDIR}/usr/lib
|
||||||
ldd ${BUILDDIR}/plugins/libimhex/libimhex.so | awk '/ => /{print $3}' | awk '!/(libc|libstdc++|libc++|libdl|libpthread|libselinux|ld-linux|libgdk)/' | xargs -I '{}' cp '{}' ${APPDIR}/usr/lib
|
ldd ${BUILDDIR}/lib/libimhex/libimhex.so | awk '/ => /{print $3}' | awk '!/(libc|libstdc++|libc++|libdl|libpthread|libselinux|ld-linux|libgdk)/' | xargs -I '{}' cp '{}' ${APPDIR}/usr/lib
|
||||||
|
|
||||||
# Package it up as described here:
|
# Package it up as described here:
|
||||||
# https://github.com/AppImage/AppImageKit#appimagetool-usage
|
# https://github.com/AppImage/AppImageKit#appimagetool-usage
|
||||||
|
|||||||
2
dist/Brewfile
vendored
2
dist/Brewfile
vendored
@@ -1,4 +1,4 @@
|
|||||||
brew "glfw3"
|
brew "glfw"
|
||||||
brew "mbedtls"
|
brew "mbedtls"
|
||||||
brew "nlohmann-json"
|
brew "nlohmann-json"
|
||||||
brew "cmake"
|
brew "cmake"
|
||||||
|
|||||||
13
dist/get_deps_archlinux.sh
vendored
13
dist/get_deps_archlinux.sh
vendored
@@ -1,11 +1,12 @@
|
|||||||
#!/usr/bin/env sh
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
pacman -S --needed \
|
pacman -S --needed \
|
||||||
cmake \
|
cmake \
|
||||||
gcc \
|
gcc \
|
||||||
glfw \
|
lld \
|
||||||
file \
|
glfw \
|
||||||
mbedtls \
|
file \
|
||||||
python3 \
|
mbedtls \
|
||||||
|
python3 \
|
||||||
freetype2 \
|
freetype2 \
|
||||||
gtk3
|
gtk3
|
||||||
|
|||||||
1
dist/get_deps_debian.sh
vendored
1
dist/get_deps_debian.sh
vendored
@@ -14,6 +14,7 @@ apt install -y \
|
|||||||
build-essential \
|
build-essential \
|
||||||
gcc-10 \
|
gcc-10 \
|
||||||
g++-10 \
|
g++-10 \
|
||||||
|
lld \
|
||||||
${PKGCONF:-} \
|
${PKGCONF:-} \
|
||||||
cmake \
|
cmake \
|
||||||
make \
|
make \
|
||||||
|
|||||||
19
dist/get_deps_fedora.sh
vendored
19
dist/get_deps_fedora.sh
vendored
@@ -1,12 +1,13 @@
|
|||||||
#!/usr/bin/env sh
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
dnf install \
|
dnf install \
|
||||||
cmake \
|
cmake \
|
||||||
gcc-c++ \
|
gcc-c++ \
|
||||||
file-devel \
|
lld \
|
||||||
glfw-devel \
|
file-devel \
|
||||||
mesa-libGL-devel \
|
glfw-devel \
|
||||||
mbedtls-devel \
|
mesa-libGL-devel \
|
||||||
python-devel \
|
mbedtls-devel \
|
||||||
freetype-devel \
|
python-devel \
|
||||||
|
freetype-devel \
|
||||||
gtk3-devel
|
gtk3-devel
|
||||||
|
|||||||
21
dist/get_deps_msys2.sh
vendored
21
dist/get_deps_msys2.sh
vendored
@@ -1,13 +1,14 @@
|
|||||||
#!/usr/bin/env sh
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
pacman -S --needed --noconfirm \
|
pacman -S --needed --noconfirm \
|
||||||
mingw-w64-x86_64-gcc \
|
mingw-w64-x86_64-gcc \
|
||||||
mingw-w64-x86_64-cmake \
|
mingw-w64-x86_64-lld \
|
||||||
mingw-w64-x86_64-make \
|
mingw-w64-x86_64-cmake \
|
||||||
mingw-w64-x86_64-ccache \
|
mingw-w64-x86_64-make \
|
||||||
mingw-w64-x86_64-glfw \
|
mingw-w64-x86_64-ccache \
|
||||||
mingw-w64-x86_64-file \
|
mingw-w64-x86_64-glfw \
|
||||||
mingw-w64-x86_64-mbedtls \
|
mingw-w64-x86_64-file \
|
||||||
mingw-w64-x86_64-python \
|
mingw-w64-x86_64-mbedtls \
|
||||||
mingw-w64-x86_64-freetype \
|
mingw-w64-x86_64-python \
|
||||||
|
mingw-w64-x86_64-freetype \
|
||||||
mingw-w64-x86_64-dlfcn
|
mingw-w64-x86_64-dlfcn
|
||||||
|
|||||||
1
dist/msys2/PKGBUILD
vendored
1
dist/msys2/PKGBUILD
vendored
@@ -9,6 +9,7 @@ url="https://github.com/WerWolv/ImHex"
|
|||||||
license=('GPLv2')
|
license=('GPLv2')
|
||||||
depends=("${MINGW_PACKAGE_PREFIX}-python")
|
depends=("${MINGW_PACKAGE_PREFIX}-python")
|
||||||
makedepends=("${MINGW_PACKAGE_PREFIX}-gcc"
|
makedepends=("${MINGW_PACKAGE_PREFIX}-gcc"
|
||||||
|
"${MINGW_PACKAGE_PREFIX}-lld"
|
||||||
"${MINGW_PACKAGE_PREFIX}-cmake"
|
"${MINGW_PACKAGE_PREFIX}-cmake"
|
||||||
"${MINGW_PACKAGE_PREFIX}-make"
|
"${MINGW_PACKAGE_PREFIX}-make"
|
||||||
"${MINGW_PACKAGE_PREFIX}-dlfcn"
|
"${MINGW_PACKAGE_PREFIX}-dlfcn"
|
||||||
|
|||||||
2
dist/net.werwolv.ImHex.yaml
vendored
2
dist/net.werwolv.ImHex.yaml
vendored
@@ -3,7 +3,7 @@ runtime: org.freedesktop.Platform
|
|||||||
runtime-version: '20.08'
|
runtime-version: '20.08'
|
||||||
default-branch: stable
|
default-branch: stable
|
||||||
sdk: org.freedesktop.Sdk
|
sdk: org.freedesktop.Sdk
|
||||||
command: /bin/imhex
|
command: imhex
|
||||||
|
|
||||||
finish-args:
|
finish-args:
|
||||||
- --share=ipc
|
- --share=ipc
|
||||||
|
|||||||
1
external/capstone
vendored
1
external/capstone
vendored
Submodule external/capstone deleted from 68102c05f1
1
external/curl
vendored
1
external/curl
vendored
Submodule external/curl deleted from aceff6088c
1
external/libromfs
vendored
1
external/libromfs
vendored
Submodule external/libromfs deleted from 63edca64c7
@@ -1,69 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
#include <hex.hpp>
|
|
||||||
|
|
||||||
#include <hex/views/view.hpp>
|
|
||||||
#include <hex/providers/provider.hpp>
|
|
||||||
#include <hex/helpers/fmt.hpp>
|
|
||||||
|
|
||||||
#include <string_view>
|
|
||||||
#include <dlfcn.h>
|
|
||||||
|
|
||||||
struct ImGuiContext;
|
|
||||||
|
|
||||||
namespace hex {
|
|
||||||
|
|
||||||
class Plugin {
|
|
||||||
public:
|
|
||||||
Plugin(const std::string &path);
|
|
||||||
Plugin(const Plugin&) = delete;
|
|
||||||
Plugin(Plugin &&other) noexcept;
|
|
||||||
~Plugin();
|
|
||||||
|
|
||||||
void initializePlugin() const;
|
|
||||||
[[nodiscard]] std::string getPluginName() const;
|
|
||||||
[[nodiscard]] std::string getPluginAuthor() const;
|
|
||||||
[[nodiscard]] std::string getPluginDescription() const;
|
|
||||||
void setImGuiContext(ImGuiContext *ctx) const;
|
|
||||||
|
|
||||||
|
|
||||||
private:
|
|
||||||
using InitializePluginFunc = void(*)();
|
|
||||||
using GetPluginNameFunc = const char*(*)();
|
|
||||||
using GetPluginAuthorFunc = const char*(*)();
|
|
||||||
using GetPluginDescriptionFunc = const char*(*)();
|
|
||||||
using SetImGuiContextFunc = void(*)(ImGuiContext*);
|
|
||||||
|
|
||||||
void *m_handle = nullptr;
|
|
||||||
|
|
||||||
InitializePluginFunc m_initializePluginFunction = nullptr;
|
|
||||||
GetPluginNameFunc m_getPluginNameFunction = nullptr;
|
|
||||||
GetPluginAuthorFunc m_getPluginAuthorFunction = nullptr;
|
|
||||||
GetPluginDescriptionFunc m_getPluginDescriptionFunction = nullptr;
|
|
||||||
SetImGuiContextFunc m_setImGuiContextFunction = nullptr;
|
|
||||||
|
|
||||||
template<typename T>
|
|
||||||
auto getPluginFunction(const std::string &pluginName, const std::string &symbol) {
|
|
||||||
auto symbolName = hex::format(symbol.data(), pluginName.length(), pluginName.data());
|
|
||||||
return reinterpret_cast<T>(dlsym(this->m_handle, symbolName.c_str()));
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
class PluginManager {
|
|
||||||
public:
|
|
||||||
PluginManager() = delete;
|
|
||||||
|
|
||||||
static bool load(const std::string &pluginFolder);
|
|
||||||
static void unload();
|
|
||||||
static void reload();
|
|
||||||
|
|
||||||
static const auto& getPlugins() {
|
|
||||||
return PluginManager::s_plugins;
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
static inline std::string s_pluginFolder;
|
|
||||||
static inline std::vector<Plugin> s_plugins;
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
1
lib/external/capstone
vendored
Submodule
1
lib/external/capstone
vendored
Submodule
Submodule lib/external/capstone added at c7c665f8f3
1
lib/external/curl
vendored
Submodule
1
lib/external/curl
vendored
Submodule
Submodule lib/external/curl added at 801bd5138c
0
external/fmt → lib/external/fmt
vendored
0
external/fmt → lib/external/fmt
vendored
@@ -320,8 +320,8 @@ struct MemoryEditor
|
|||||||
else if (ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_DownArrow)) && DataEditingAddr < mem_size - Cols) { data_editing_addr_next = DataEditingAddr + Cols; DataEditingTakeFocus = true; }
|
else if (ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_DownArrow)) && DataEditingAddr < mem_size - Cols) { data_editing_addr_next = DataEditingAddr + Cols; DataEditingTakeFocus = true; }
|
||||||
else if (ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_LeftArrow)) && DataEditingAddr > 0) { data_editing_addr_next = DataEditingAddr - 1; DataEditingTakeFocus = true; }
|
else if (ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_LeftArrow)) && DataEditingAddr > 0) { data_editing_addr_next = DataEditingAddr - 1; DataEditingTakeFocus = true; }
|
||||||
else if (ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_RightArrow)) && DataEditingAddr < mem_size - 1) { data_editing_addr_next = DataEditingAddr + 1; DataEditingTakeFocus = true; }
|
else if (ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_RightArrow)) && DataEditingAddr < mem_size - 1) { data_editing_addr_next = DataEditingAddr + 1; DataEditingTakeFocus = true; }
|
||||||
else if (ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_PageUp)) && DataEditingAddr > 0) { data_editing_addr_next = std::max(s64(0), s64(DataEditingAddr) - s64(visible_count)); DataEditingTakeFocus = true; }
|
else if (ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_PageUp)) && DataEditingAddr > 0) { data_editing_addr_next = std::max<i64>(0, DataEditingAddr - visible_count); DataEditingTakeFocus = true; }
|
||||||
else if (ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_PageDown)) && DataEditingAddr < mem_size - 1) { data_editing_addr_next = std::min(s64(mem_size - 1), s64(DataEditingAddr) + s64(visible_count)); DataEditingTakeFocus = true; }
|
else if (ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_PageDown)) && DataEditingAddr < mem_size - 1) { data_editing_addr_next = std::min<i64>(mem_size - 1, DataEditingAddr + visible_count); DataEditingTakeFocus = true; }
|
||||||
else if (ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Home)) && DataEditingAddr > 0) { data_editing_addr_next = 0; DataEditingTakeFocus = true; }
|
else if (ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Home)) && DataEditingAddr > 0) { data_editing_addr_next = 0; DataEditingTakeFocus = true; }
|
||||||
else if (ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_End)) && DataEditingAddr < mem_size - 1) { data_editing_addr_next = mem_size - 1; DataEditingTakeFocus = true; }
|
else if (ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_End)) && DataEditingAddr < mem_size - 1) { data_editing_addr_next = mem_size - 1; DataEditingTakeFocus = true; }
|
||||||
} else if (DataPreviewAddr != -1) {
|
} else if (DataPreviewAddr != -1) {
|
||||||
@@ -329,8 +329,8 @@ struct MemoryEditor
|
|||||||
else if (ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_DownArrow)) && DataPreviewAddr < mem_size - Cols) { DataPreviewAddr = data_preview_addr_next = DataPreviewAddr + Cols; if (!ImGui::GetIO().KeyShift) DataPreviewAddrEnd = DataPreviewAddr; }
|
else if (ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_DownArrow)) && DataPreviewAddr < mem_size - Cols) { DataPreviewAddr = data_preview_addr_next = DataPreviewAddr + Cols; if (!ImGui::GetIO().KeyShift) DataPreviewAddrEnd = DataPreviewAddr; }
|
||||||
else if (ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_LeftArrow)) && DataPreviewAddr > 0) { DataPreviewAddr = data_preview_addr_next = DataPreviewAddr - 1; if (!ImGui::GetIO().KeyShift) DataPreviewAddrEnd = DataPreviewAddr; }
|
else if (ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_LeftArrow)) && DataPreviewAddr > 0) { DataPreviewAddr = data_preview_addr_next = DataPreviewAddr - 1; if (!ImGui::GetIO().KeyShift) DataPreviewAddrEnd = DataPreviewAddr; }
|
||||||
else if (ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_RightArrow)) && DataPreviewAddr < mem_size - 1) { DataPreviewAddr = data_preview_addr_next = DataPreviewAddr + 1; if (!ImGui::GetIO().KeyShift) DataPreviewAddrEnd = DataPreviewAddr; }
|
else if (ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_RightArrow)) && DataPreviewAddr < mem_size - 1) { DataPreviewAddr = data_preview_addr_next = DataPreviewAddr + 1; if (!ImGui::GetIO().KeyShift) DataPreviewAddrEnd = DataPreviewAddr; }
|
||||||
else if (ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_PageUp)) && DataPreviewAddr > 0) { DataPreviewAddr = data_preview_addr_next = std::max(s64(0), s64(DataPreviewAddr) - s64(visible_count)); if (!ImGui::GetIO().KeyShift) DataPreviewAddrEnd = DataPreviewAddr; }
|
else if (ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_PageUp)) && DataPreviewAddr > 0) { DataPreviewAddr = data_preview_addr_next = std::max<i64>(0, DataPreviewAddr - visible_count); if (!ImGui::GetIO().KeyShift) DataPreviewAddrEnd = DataPreviewAddr; }
|
||||||
else if (ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_PageDown)) && DataPreviewAddr < mem_size - 1) { DataPreviewAddr = data_preview_addr_next = std::min(s64(mem_size - 1), s64(DataPreviewAddr) + s64(visible_count)); if (!ImGui::GetIO().KeyShift) DataPreviewAddrEnd = DataPreviewAddr; }
|
else if (ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_PageDown)) && DataPreviewAddr < mem_size - 1) { DataPreviewAddr = data_preview_addr_next = std::min<i64>(mem_size - 1, DataPreviewAddr + visible_count); if (!ImGui::GetIO().KeyShift) DataPreviewAddrEnd = DataPreviewAddr; }
|
||||||
else if (ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Home)) && DataPreviewAddr > 0) { DataPreviewAddr = data_preview_addr_next = 0; if (!ImGui::GetIO().KeyShift) DataPreviewAddrEnd = DataPreviewAddr; }
|
else if (ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Home)) && DataPreviewAddr > 0) { DataPreviewAddr = data_preview_addr_next = 0; if (!ImGui::GetIO().KeyShift) DataPreviewAddrEnd = DataPreviewAddr; }
|
||||||
else if (ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_End)) && DataPreviewAddr < mem_size - 1) { DataPreviewAddr = data_preview_addr_next = mem_size - 1; if (!ImGui::GetIO().KeyShift) DataPreviewAddrEnd = DataPreviewAddr; }
|
else if (ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_End)) && DataPreviewAddr < mem_size - 1) { DataPreviewAddr = data_preview_addr_next = mem_size - 1; if (!ImGui::GetIO().KeyShift) DataPreviewAddrEnd = DataPreviewAddr; }
|
||||||
}
|
}
|
||||||
@@ -418,16 +418,24 @@ struct MemoryEditor
|
|||||||
size_t min = std::min(DataPreviewAddr, DataPreviewAddrEnd);
|
size_t min = std::min(DataPreviewAddr, DataPreviewAddrEnd);
|
||||||
size_t max = std::max(DataPreviewAddr, DataPreviewAddrEnd);
|
size_t max = std::max(DataPreviewAddr, DataPreviewAddrEnd);
|
||||||
|
|
||||||
|
// Draw vertical line at the left of first byte and the start of the line
|
||||||
if (n == 0 || addr == min)
|
if (n == 0 || addr == min)
|
||||||
draw_list->AddLine(pos, pos + ImVec2(0, s.LineHeight), ImColor(ImGui::GetStyleColorVec4(ImGuiCol_Text)), 1.0F);
|
draw_list->AddLine(pos, pos + ImVec2(0, s.LineHeight), ImColor(ImGui::GetStyleColorVec4(ImGuiCol_Text)), 1.0F);
|
||||||
|
|
||||||
|
// Draw vertical line at the right of the last byte and the end of the line
|
||||||
if (n == Cols - 1 || addr == max) {
|
if (n == Cols - 1 || addr == max) {
|
||||||
draw_list->AddRectFilled(pos + ImVec2(highlight_width, 0), pos + ImVec2(highlight_width + 1, s.LineHeight), color);
|
draw_list->AddRectFilled(pos + ImVec2(highlight_width, 0), pos + ImVec2(highlight_width + 1, s.LineHeight), color);
|
||||||
draw_list->AddLine(pos + ImVec2(highlight_width + 1, -1), pos + ImVec2(highlight_width + 1, s.LineHeight), ImColor(ImGui::GetStyleColorVec4(ImGuiCol_Text)), 1.0F);
|
draw_list->AddLine(pos + ImVec2(highlight_width + 1, -1), pos + ImVec2(highlight_width + 1, s.LineHeight), ImColor(ImGui::GetStyleColorVec4(ImGuiCol_Text)), 1.0F);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (addr - Cols < min)
|
// Draw horizontal line at the top of the bytes
|
||||||
|
if ((addr - Cols) < min)
|
||||||
draw_list->AddLine(pos, pos + ImVec2(highlight_width + 1, 0), ImColor(ImGui::GetStyleColorVec4(ImGuiCol_Text)), 1.0F);
|
draw_list->AddLine(pos, pos + ImVec2(highlight_width + 1, 0), ImColor(ImGui::GetStyleColorVec4(ImGuiCol_Text)), 1.0F);
|
||||||
if (addr + Cols > max)
|
|
||||||
|
// Draw horizontal line at the bottom of the bytes
|
||||||
|
if ((addr + Cols) == (max + 1) && OptMidColsCount > 0 && n > 0 && (n + 1) < Cols && ((n + 1) % OptMidColsCount) == 1)
|
||||||
|
draw_list->AddLine(pos + ImVec2(-s.SpacingBetweenMidCols, s.LineHeight), pos + ImVec2(highlight_width + 1, s.LineHeight), ImColor(ImGui::GetStyleColorVec4(ImGuiCol_Text)), 1.0F);
|
||||||
|
else if ((addr + Cols) > max)
|
||||||
draw_list->AddLine(pos + ImVec2(0, s.LineHeight), pos + ImVec2(highlight_width + 1, s.LineHeight), ImColor(ImGui::GetStyleColorVec4(ImGuiCol_Text)), 1.0F);
|
draw_list->AddLine(pos + ImVec2(0, s.LineHeight), pos + ImVec2(highlight_width + 1, s.LineHeight), ImColor(ImGui::GetStyleColorVec4(ImGuiCol_Text)), 1.0F);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -731,7 +739,7 @@ struct MemoryEditor
|
|||||||
if (GotoAddr < mem_size)
|
if (GotoAddr < mem_size)
|
||||||
{
|
{
|
||||||
ImGui::BeginChild("##scrolling");
|
ImGui::BeginChild("##scrolling");
|
||||||
ImGui::SetScrollFromPosY(ImGui::GetCursorStartPos().y + (GotoAddr / Cols) * ImGui::GetTextLineHeight() * 2);
|
ImGui::SetScrollFromPosY(ImGui::GetCursorStartPos().y + (GotoAddr / Cols) * ImGui::GetTextLineHeight());
|
||||||
ImGui::EndChild();
|
ImGui::EndChild();
|
||||||
}
|
}
|
||||||
GotoAddr = (size_t)-1;
|
GotoAddr = (size_t)-1;
|
||||||
1
lib/external/libromfs
vendored
Submodule
1
lib/external/libromfs
vendored
Submodule
Submodule lib/external/libromfs added at 5d3273443a
0
external/xdgpp → lib/external/xdgpp
vendored
0
external/xdgpp → lib/external/xdgpp
vendored
@@ -81,7 +81,7 @@ dependencies = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "hex"
|
name = "libimhex-rs"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cxx",
|
"cxx",
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "hex"
|
name = "libimhex-rs"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
build = "build.rs"
|
build = "build.rs"
|
||||||
@@ -7,7 +7,7 @@ build = "build.rs"
|
|||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
macros = { path = "proc_macros" }
|
imhex-macros = { path = "proc_macros" }
|
||||||
imgui = { path = "imgui-rs" }
|
imgui = { path = "imgui-rs" }
|
||||||
|
|
||||||
cxx = "1.0.55"
|
cxx = "1.0.55"
|
||||||
0
plugins/libimhex-rust/imgui-rs/Cargo.lock → lib/libimhex-rs/imgui-rs/Cargo.lock
generated
vendored
0
plugins/libimhex-rust/imgui-rs/Cargo.lock → lib/libimhex-rs/imgui-rs/Cargo.lock
generated
vendored
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user