11 Commits

Author SHA1 Message Date
e68db8a433 Add man page to AUR build 2025-08-05 23:34:07 +02:00
4b9e2aa96a Make man page optional 2025-08-05 23:32:35 +02:00
b726d5ba75 Fix version generation 2025-08-05 23:29:24 +02:00
bfb587360d Make version generation more sane for program 2025-08-05 23:22:45 +02:00
f964ef7b60 fix stuff 2025-07-31 20:50:39 +02:00
dd05449f36 Remove man page generation without version 2025-07-31 20:37:05 +02:00
3ff626134e Allow build without git 2025-07-31 20:28:18 +02:00
29fdc841b7 Update cmake version 2025-05-10 22:53:35 +02:00
dc30188593 Update libraries 2025-05-10 22:51:36 +02:00
2bea5d288c Update linklist for cmake version 2025-05-10 22:47:55 +02:00
8a0226a5ea Fix typos in man page 2023-05-29 23:27:24 +02:00
11 changed files with 50 additions and 25 deletions

View File

@@ -24,6 +24,7 @@ build () {
cd "$srcdir/$pkgname-git/build"
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j12
make man-page
}
prepare () {

View File

@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.5)
cmake_minimum_required(VERSION 3.5...3.18)
project(patchelfcrc LANGUAGES C)
@@ -28,8 +28,6 @@ pkg_check_modules(ELF REQUIRED libelf)
find_package(Doxygen)
find_package(LibXml2 REQUIRED)
add_subdirectory(man)
aux_source_directory("src" CFILES)
set(GEN_HEADER_PATH "${CMAKE_CURRENT_BINARY_DIR}/include/generated")
@@ -37,12 +35,17 @@ set(GEN_HEADER_PATH "${CMAKE_CURRENT_BINARY_DIR}/include/generated")
add_custom_target(
version-header
COMMAND
mkdir -p ${GEN_HEADER_PATH} && bash "${CMAKE_CURRENT_SOURCE_DIR}/gen_version_header.sh" "${GEN_HEADER_PATH}/version.h"
${CMAKE_COMMAND} -D SRC=${CMAKE_SOURCE_DIR}/version.h.template
-D DST=${GEN_HEADER_PATH}/version.h
-P ${CMAKE_SOURCE_DIR}/GenerateVersion.cmake
WORKING_DIRECTORY
${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Generating version header"
)
add_subdirectory(man)
add_custom_target(schema-header DEPENDS "${GEN_HEADER_PATH}/schema-blob.h")
add_custom_command(
OUTPUT "${GEN_HEADER_PATH}/schema-blob.h"
@@ -66,7 +69,8 @@ target_link_directories(${PROJECT_NAME} PRIVATE ${ELF_LIBRARY_DIRS} ${LIBXML2_LI
target_include_directories(${PROJECT_NAME} PRIVATE ${ELF_INCLUDE_DIRS})
target_include_directories(${PROJECT_NAME} PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/include")
target_include_directories(${PROJECT_NAME} PRIVATE "include")
add_dependencies(${PROJECT_NAME} version-header schema-header)
add_dependencies(${PROJECT_NAME} schema-header)
add_dependencies(${PROJECT_NAME} version-header)
if (DOXYGEN_FOUND)
set(DOXYFILE_SRC "${CMAKE_CURRENT_SOURCE_DIR}/doxygen/Doxyfile.in")
@@ -83,11 +87,13 @@ if (DOXYGEN_FOUND)
add_custom_target(doxygen-version-header
COMMAND
bash ${CMAKE_CURRENT_SOURCE_DIR}/doxygen/gen-version-string.sh "${CMAKE_CURRENT_BINARY_DIR}/doxyversion.in"
${CMAKE_COMMAND} -D SRC="${CMAKE_SOURCE_DIR}/doxyversion.in.template"
-D DST="${CMAKE_CURRENT_BINARY_DIR}/doxyversion.in"
-P ${CMAKE_SOURCE_DIR}/GenerateVersion.cmake
WORKING_DIRECTORY
${CMAKE_CURRENT_SOURCE_DIR}
)
else (DOXYGEN_FOUND)
else (DOXYGEN_FOUND)
message("${BoldMagenta}Doxygen needs to be installed to generate the doxygen documentation${ColorReset}")
message("${BoldMagenta}doxygen target will not be available${ColorReset}")
endif (DOXYGEN_FOUND)
endif (DOXYGEN_FOUND)

26
GenerateVersion.cmake Normal file
View File

@@ -0,0 +1,26 @@
find_package(Git)
if(GIT_EXECUTABLE)
get_filename_component(WORKING_DIR ${SRC} DIRECTORY)
execute_process(
COMMAND ${GIT_EXECUTABLE} describe --always --dirty
WORKING_DIRECTORY ${WORKING_DIR}
OUTPUT_VARIABLE PROGRAM_GIT_VERSION
RESULT_VARIABLE ERROR_CODE
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(NOT ERROR_CODE EQUAL "0")
set(PROGRAM_GIT_VERSION "")
endif()
endif()
if(PROGRAM_GIT_VERSION STREQUAL "")
set(PROGRAM_GIT_VERSION 0.0.0-unknown)
message(WARNING "Failed to determine version from Git tags. Using default version \"${PROGRAM_GIT_VERSION}\".")
else()
message("Git Version: \"${PROGRAM_GIT_VERSION}\".")
endif()
configure_file(${SRC} ${DST} @ONLY)

1
doxyversion.in.template Normal file
View File

@@ -0,0 +1 @@
@PROGRAM_GIT_VERSION@

View File

@@ -1 +0,0 @@
echo `git describe --tags --always --dirty`

View File

@@ -1,11 +0,0 @@
#!/bin/bash
if [[ -z $1 ]]; then
exit -1;
fi
ver=`git describe --tags --always --dirty`
echo "#ifndef _VERSION_GENERATED_H_" > $1
echo "#define _VERSION_GENERATED_H_" >> $1
echo "#define GIT_VERSION_STRING \"$ver\"" >> $1
echo "#endif /* _VERSION_GENERATED_H_ */" >> $1

View File

@@ -1,7 +1,6 @@
set (MAN_PAGE_NAME "patchelfcrc.1.gz")
add_custom_target(man-page
ALL
DEPENDS
${CMAKE_CURRENT_BINARY_DIR}/${MAN_PAGE_NAME}
)

View File

@@ -61,7 +61,7 @@
: Export the calculated files to an XML file *XMLFILE*.
**--import**=*XMLFILE*
: Import the CRCs from an XML file *XMLFILE* and do not caclulate anything in the given *ELF*
: Import the CRCs from an XML file *XMLFILE* and do not calculate anything in the given *ELF*
**--help**, **-h**, **-?**
: Print help.
@@ -134,7 +134,7 @@
**patchelfcrc** -l -g word --start-magic=0x12345678 --end-magic=0x8754321 -p crc-32-mpeg -f bare -O .outputsection -S .text executable.elf
: Calculate the CRC over *.text* section and place the result in the *.outputsection* section.
The output sections start and end are checked for the given magic numbers in order to assure correct memory layout.
The output sections start and end are checked for the given magic numbers in order to ensure correct memory layout.
*CRC-32-MPEG* is used as CRC algorithm.
The memory is interpreted as *little endian* and the CRC calculation granularity is a 32 bit *word*.

4
version.h.template Normal file
View File

@@ -0,0 +1,4 @@
#ifndef _GENRATED_VERSION_H_
#define _GENRATED_VERSION_H_
#define GIT_VERSION_STRING "@PROGRAM_GIT_VERSION@"
#endif /* _GENRATED_VERSION_H_ */