diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 97a0083c4..7d99ccc60 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -70,15 +70,17 @@ jobs: mkdir -p build cd build - cmake -G "MinGW Makefiles" \ - -DCMAKE_BUILD_TYPE=$BUILD_TYPE \ - -DCMAKE_INSTALL_PREFIX="$PWD/install" \ - -DCREATE_PACKAGE=ON \ - -DCMAKE_C_COMPILER_LAUNCHER=ccache \ - -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ - -DCMAKE_C_FLAGS="-fuse-ld=lld" \ - -DCMAKE_CXX_FLAGS="-fuse-ld=lld" \ - -DIMHEX_PATTERNS_PULL_MASTER=ON \ + cmake -G "MinGW Makefiles" \ + -DCMAKE_BUILD_TYPE=$BUILD_TYPE \ + -DCMAKE_INSTALL_PREFIX="$PWD/install" \ + -DCREATE_PACKAGE=ON \ + -DCMAKE_C_COMPILER_LAUNCHER=ccache \ + -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ + -DCMAKE_C_FLAGS="-fuse-ld=lld" \ + -DCMAKE_CXX_FLAGS="-fuse-ld=lld" \ + -DIMHEX_PATTERNS_PULL_MASTER=ON \ + -DIMHEX_COMMIT_HASH="${GITHUB_SHA::7}" \ + -DIMHEX_COMMIT_BRANCH="${GITHUB_REF##*/}" \ .. mingw32-make -j4 install cpack @@ -179,12 +181,14 @@ jobs: mkdir build cd build - cmake \ - -DBUILD_SHARED_LIBS=ON \ - -DCMAKE_C_COMPILER_LAUNCHER=ccache \ - -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ - -DCMAKE_OBJC_COMPILER_LAUNCHER=ccache \ - -DCMAKE_OBJCXX_COMPILER_LAUNCHER=ccache \ + cmake \ + -DBUILD_SHARED_LIBS=ON \ + -DCMAKE_C_COMPILER_LAUNCHER=ccache \ + -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ + -DCMAKE_OBJC_COMPILER_LAUNCHER=ccache \ + -DCMAKE_OBJCXX_COMPILER_LAUNCHER=ccache \ + -DIMHEX_COMMIT_HASH="${GITHUB_SHA::7}" \ + -DIMHEX_COMMIT_BRANCH="${GITHUB_REF##*/}" \ .. make -j 4 install @@ -193,22 +197,24 @@ jobs: run: | mkdir -p build cd build - CC=$(brew --prefix gcc@12)/bin/gcc-12 \ - CXX=$(brew --prefix gcc@12)/bin/g++-12 \ - OBJC=$(brew --prefix llvm)/bin/clang \ - OBJCXX=$(brew --prefix llvm)/bin/clang++ \ + CC=$(brew --prefix gcc@12)/bin/gcc-12 \ + CXX=$(brew --prefix gcc@12)/bin/g++-12 \ + OBJC=$(brew --prefix llvm)/bin/clang \ + OBJCXX=$(brew --prefix llvm)/bin/clang++ \ PKG_CONFIG_PATH="$(brew --prefix openssl)/lib/pkgconfig":"$(brew --prefix)/lib/pkgconfig" \ - MACOSX_DEPLOYMENT_TARGET="10.10" \ - cmake \ - -DCMAKE_BUILD_TYPE=$BUILD_TYPE \ - -DCREATE_BUNDLE=ON \ - -DCREATE_PACKAGE=ON \ - -DCMAKE_C_COMPILER_LAUNCHER=ccache \ - -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ - -DCMAKE_OBJC_COMPILER_LAUNCHER=ccache \ - -DCMAKE_OBJCXX_COMPILER_LAUNCHER=ccache \ - -DIMHEX_PATTERNS_PULL_MASTER=ON \ - -DCMAKE_OSX_DEPLOYMENT_TARGET="10.10" \ + MACOSX_DEPLOYMENT_TARGET="10.10" \ + cmake \ + -DCMAKE_BUILD_TYPE=$BUILD_TYPE \ + -DCREATE_BUNDLE=ON \ + -DCREATE_PACKAGE=ON \ + -DCMAKE_C_COMPILER_LAUNCHER=ccache \ + -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ + -DCMAKE_OBJC_COMPILER_LAUNCHER=ccache \ + -DCMAKE_OBJCXX_COMPILER_LAUNCHER=ccache \ + -DIMHEX_PATTERNS_PULL_MASTER=ON \ + -DIMHEX_COMMIT_HASH="${GITHUB_SHA::7}" \ + -DIMHEX_COMMIT_BRANCH="${GITHUB_REF##*/}" \ + -DCMAKE_OSX_DEPLOYMENT_TARGET="10.10" \ -DCPACK_PACKAGE_FILE_NAME="imhex-${{env.IMHEX_VERSION}}-macOS${{matrix.suffix}}-x86_64" \ .. make -j4 package @@ -260,6 +266,8 @@ jobs: -DCMAKE_C_COMPILER_LAUNCHER=ccache \ -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ -DIMHEX_PATTERNS_PULL_MASTER=ON \ + -DIMHEX_COMMIT_HASH="${GITHUB_SHA::7}" \ + -DIMHEX_COMMIT_BRANCH="${GITHUB_REF##*/}" \ -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON \ .. make -j 4 install DESTDIR=DebDir @@ -330,6 +338,8 @@ jobs: -DCMAKE_C_COMPILER_LAUNCHER=ccache \ -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ -DIMHEX_PATTERNS_PULL_MASTER=ON \ + -DIMHEX_COMMIT_HASH="${GITHUB_SHA::7}" \ + -DIMHEX_COMMIT_BRANCH="${GITHUB_REF##*/}" \ -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON \ -DIMHEX_PLUGINS_IN_SHARE=ON \ -DIMHEX_USE_BUNDLED_CA=ON \ @@ -410,6 +420,8 @@ jobs: -DUSE_SYSTEM_NLOHMANN_JSON=ON \ -DUSE_SYSTEM_CAPSTONE=OFF \ -DIMHEX_PATTERNS_PULL_MASTER=ON \ + -DIMHEX_COMMIT_HASH="${GITHUB_SHA::7}" \ + -DIMHEX_COMMIT_BRANCH="${GITHUB_REF##*/}" \ -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON \ .. make -j 4 install DESTDIR=installDir @@ -515,7 +527,7 @@ jobs: - name: 🗜️ Create tarball from sources with dependencies run: tar --exclude-vcs -czf $GITHUB_WORKSPACE/imhex-$IMHEX_VERSION.tar.gz ImHex - - name: "✒️ Modify spec file: set version, use latest pattern language, enable online build" + - name: ✒️ Modify spec file run: | sed -i \ -e 's/Version: [0-9]*\.[0-9]*\.[0-9]*$/Version: ${{env.IMHEX_VERSION}}/g' \ @@ -546,9 +558,9 @@ jobs: uses: actions/cache@v3 with: path: /var/cache/mock - key: ${{ matrix.mock_release }}-${{secrets.CACHE_VERSION }}-mock-${{ github.run_id }} + key: ${{ matrix.mock_release }}-${{ secrets.CACHE_VERSION }}-mock-${{ github.run_id }} restore-keys: | - ${{ matrix.mock_release }}-${{secrets.CACHE_VERSION }}-mock- + ${{ matrix.mock_release }}-${{ secrets.CACHE_VERSION }}-mock- # Fedora cmake build (in imhex.spec) - name: 📦 Build RPM diff --git a/cmake/build_helpers.cmake b/cmake/build_helpers.cmake index 633a8392f..95e6b8dd5 100644 --- a/cmake/build_helpers.cmake +++ b/cmake/build_helpers.cmake @@ -14,13 +14,16 @@ macro(addVersionDefines) message(FATAL_ERROR "IMHEX_VERSION is not defined") endif () - if (IS_DIRECTORY "${CMAKE_SOURCE_DIR}/.git") + if (DEFINED IMHEX_COMMIT_HASH AND DEFINED IMHEX_COMMIT_BRANCH) + add_compile_definitions(GIT_COMMIT_HASH="${IMHEX_COMMIT_HASH}" GIT_BRANCH="${IMHEX_COMMIT_BRANCH}") + else() # Get the current working branch execute_process( COMMAND git rev-parse --abbrev-ref HEAD WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} OUTPUT_VARIABLE GIT_BRANCH OUTPUT_STRIP_TRAILING_WHITESPACE + RESULT_VARIABLE RESULT_BRANCH ) # Get the latest abbreviated commit hash of the working branch @@ -29,9 +32,12 @@ macro(addVersionDefines) WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} OUTPUT_VARIABLE GIT_COMMIT_HASH OUTPUT_STRIP_TRAILING_WHITESPACE + RESULT_VARIABLE RESULT_HASH ) - add_compile_definitions(GIT_COMMIT_HASH="${GIT_COMMIT_HASH}" GIT_BRANCH="${GIT_BRANCH}") + if (RESULT_BRANCH EQUAL 0 AND RESULT_HASH EQUAL 0) + add_compile_definitions(GIT_COMMIT_HASH="${GIT_COMMIT_HASH}" GIT_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} ")