Move source code to SRC folder and start doxygen
This commit is contained in:
parent
f3f7b1a7ad
commit
19a84ef4f2
@ -2,17 +2,32 @@ cmake_minimum_required(VERSION 3.5)
|
|||||||
|
|
||||||
project(patchelfcrc LANGUAGES C)
|
project(patchelfcrc LANGUAGES C)
|
||||||
|
|
||||||
|
if(NOT WIN32)
|
||||||
|
string(ASCII 27 Esc)
|
||||||
|
set(ColorReset "${Esc}[m")
|
||||||
|
set(ColorBold "${Esc}[1m")
|
||||||
|
set(Red "${Esc}[31m")
|
||||||
|
set(Green "${Esc}[32m")
|
||||||
|
set(Yellow "${Esc}[33m")
|
||||||
|
set(Blue "${Esc}[34m")
|
||||||
|
set(Magenta "${Esc}[35m")
|
||||||
|
set(Cyan "${Esc}[36m")
|
||||||
|
set(White "${Esc}[37m")
|
||||||
|
set(BoldRed "${Esc}[1;31m")
|
||||||
|
set(BoldGreen "${Esc}[1;32m")
|
||||||
|
set(BoldYellow "${Esc}[1;33m")
|
||||||
|
set(BoldBlue "${Esc}[1;34m")
|
||||||
|
set(BoldMagenta "${Esc}[1;35m")
|
||||||
|
set(BoldCyan "${Esc}[1;36m")
|
||||||
|
set(BoldWhite "${Esc}[1;37m")
|
||||||
|
endif()
|
||||||
|
|
||||||
find_package(PkgConfig REQUIRED)
|
find_package(PkgConfig REQUIRED)
|
||||||
pkg_check_modules(ELF REQUIRED libelf)
|
pkg_check_modules(ELF REQUIRED libelf)
|
||||||
|
|
||||||
set (CFILES
|
find_package(Doxygen)
|
||||||
main.c
|
|
||||||
version.c
|
aux_source_directory("src" CFILES)
|
||||||
named_crcs.c
|
|
||||||
crc.c
|
|
||||||
elfpatch.c
|
|
||||||
reporting.c
|
|
||||||
)
|
|
||||||
|
|
||||||
set(GEN_HEADER_PATH "${CMAKE_CURRENT_BINARY_DIR}/include/generated")
|
set(GEN_HEADER_PATH "${CMAKE_CURRENT_BINARY_DIR}/include/generated")
|
||||||
|
|
||||||
@ -38,4 +53,26 @@ target_include_directories(${PROJECT_NAME} PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/
|
|||||||
target_include_directories(${PROJECT_NAME} PRIVATE "include")
|
target_include_directories(${PROJECT_NAME} PRIVATE "include")
|
||||||
add_dependencies(${PROJECT_NAME} version-header)
|
add_dependencies(${PROJECT_NAME} version-header)
|
||||||
|
|
||||||
|
if (DOXYGEN_FOUND)
|
||||||
|
set(DOXYFILE_SRC "${CMAKE_CURRENT_SOURCE_DIR}/doxygen/Doxyfile.in")
|
||||||
|
set(DOXYFILE_DEST "${CMAKE_CURRENT_BINARY_DIR}/Doxyfile")
|
||||||
|
configure_file(${DOXYFILE_SRC} ${DOXYFILE_DEST} @ONLY)
|
||||||
|
add_custom_target(doxygen
|
||||||
|
DEPENDS
|
||||||
|
doxygen-version-header
|
||||||
|
COMMAND
|
||||||
|
${DOXYGEN_EXECUTABLE} ${DOXYFILE_DEST}
|
||||||
|
WORKING_DIRECTORY
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
|
)
|
||||||
|
|
||||||
|
add_custom_target(doxygen-version-header
|
||||||
|
COMMAND
|
||||||
|
bash ${CMAKE_CURRENT_SOURCE_DIR}/doxygen/gen-version-string.sh "${CMAKE_CURRENT_BINARY_DIR}/doxyversion.in"
|
||||||
|
WORKING_DIRECTORY
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
|
)
|
||||||
|
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)
|
||||||
|
2666
doxygen/Doxyfile.in
Normal file
2666
doxygen/Doxyfile.in
Normal file
File diff suppressed because it is too large
Load Diff
7
doxygen/gen-version-string.sh
Executable file
7
doxygen/gen-version-string.sh
Executable file
@ -0,0 +1,7 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [[ -z $1 ]]; then
|
||||||
|
exit -1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "PROJECT_NUMBER = `git describe --tags --always --dirty`" > $1
|
@ -1,3 +1,20 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of patchelfcrc.
|
||||||
|
* Copyright (c) 2022 Mario Hüttel.
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, version 2 only.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but
|
||||||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
#ifndef _CRC_OUTPUT_STRUCT_H_
|
#ifndef _CRC_OUTPUT_STRUCT_H_
|
||||||
#define _CRC_OUTPUT_STRUCT_H_
|
#define _CRC_OUTPUT_STRUCT_H_
|
||||||
|
|
||||||
|
@ -1,3 +1,25 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of patchelfcrc.
|
||||||
|
* Copyright (c) 2022 Mario Hüttel.
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, version 2 only.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but
|
||||||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file elfpatch.h
|
||||||
|
* @brief Header for ELF Patching Class
|
||||||
|
*/
|
||||||
|
|
||||||
#ifndef _ELFPATCH_H_
|
#ifndef _ELFPATCH_H_
|
||||||
#define _ELFPATCH_H_
|
#define _ELFPATCH_H_
|
||||||
|
|
||||||
@ -28,6 +50,16 @@ elfpatch_handle_t *elf_patch_open(const char *path, bool readonly);
|
|||||||
*/
|
*/
|
||||||
int elf_patch_check_for_section(elfpatch_handle_t *ep, const char *section);
|
int elf_patch_check_for_section(elfpatch_handle_t *ep, const char *section);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Compute CRC over a section in an ELF file
|
||||||
|
* @param ep Elf patch object
|
||||||
|
* @param section Section name
|
||||||
|
* @param[out] crc CRC output
|
||||||
|
* @param granularity CRC calculation granularity
|
||||||
|
* @param little_endian memory layout is little endian
|
||||||
|
* @return 0 if successful
|
||||||
|
* @return negative if error
|
||||||
|
*/
|
||||||
int elf_patch_compute_crc_over_section(elfpatch_handle_t *ep, const char *section, struct crc_calc *crc,
|
int elf_patch_compute_crc_over_section(elfpatch_handle_t *ep, const char *section, struct crc_calc *crc,
|
||||||
enum granularity granularity, bool little_endian);
|
enum granularity granularity, bool little_endian);
|
||||||
|
|
||||||
|
@ -1,3 +1,21 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of patchelfcrc.
|
||||||
|
* Copyright (c) 2022 Mario Hüttel.
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, version 2 only.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but
|
||||||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#ifndef _REPORTING_H_
|
#ifndef _REPORTING_H_
|
||||||
#define _REPORTING_H_
|
#define _REPORTING_H_
|
||||||
|
|
||||||
|
27
reporting.c
27
reporting.c
@ -1,27 +0,0 @@
|
|||||||
#include <patchelfcrc/reporting.h>
|
|
||||||
#include <stdarg.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdbool.h>
|
|
||||||
|
|
||||||
static bool global_verbosity_state = false;
|
|
||||||
|
|
||||||
void print_debug(const char *fmt, ...)
|
|
||||||
{
|
|
||||||
va_list va;
|
|
||||||
|
|
||||||
if (global_verbosity_state) {
|
|
||||||
va_start(va, fmt);
|
|
||||||
(void)vprintf(fmt, va);
|
|
||||||
va_end(va);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void reporting_enable_verbose(void)
|
|
||||||
{
|
|
||||||
global_verbosity_state = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool reporting_get_verbosity(void)
|
|
||||||
{
|
|
||||||
return global_verbosity_state;
|
|
||||||
}
|
|
@ -53,6 +53,14 @@ struct command_line_options {
|
|||||||
const char *output_section;
|
const char *output_section;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Parse command line options
|
||||||
|
* @param key Option key
|
||||||
|
* @param arg Argument passed
|
||||||
|
* @param state State of ARGP parser
|
||||||
|
* @return 0 No error
|
||||||
|
* @return ARGP_ERR_UNKNOWN in case of an unknown option
|
||||||
|
*/
|
||||||
static error_t parse_opt(int key, char *arg, struct argp_state *state)
|
static error_t parse_opt(int key, char *arg, struct argp_state *state)
|
||||||
{
|
{
|
||||||
struct command_line_options *args = (struct command_line_options *)state->input;
|
struct command_line_options *args = (struct command_line_options *)state->input;
|
||||||
@ -324,6 +332,12 @@ static int compute_crcs(elfpatch_handle_t *ep, SlList *list, const struct comman
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Debug-print the CRCs of sections in form of a table
|
||||||
|
* @param[in] list List of section names
|
||||||
|
* @param[in] crcs Array of CRCs.
|
||||||
|
* @note The array @p crcs must be at least as long as @p list
|
||||||
|
*/
|
||||||
static void print_crcs(SlList *list, const uint32_t *crcs)
|
static void print_crcs(SlList *list, const uint32_t *crcs)
|
||||||
{
|
{
|
||||||
SlList *iter;
|
SlList *iter;
|
45
src/reporting.c
Normal file
45
src/reporting.c
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of patchelfcrc.
|
||||||
|
* Copyright (c) 2022 Mario Hüttel.
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, version 2 only.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but
|
||||||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include <patchelfcrc/reporting.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
static bool global_verbosity_state = false;
|
||||||
|
|
||||||
|
void print_debug(const char *fmt, ...)
|
||||||
|
{
|
||||||
|
va_list va;
|
||||||
|
|
||||||
|
if (global_verbosity_state) {
|
||||||
|
va_start(va, fmt);
|
||||||
|
(void)vprintf(fmt, va);
|
||||||
|
va_end(va);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void reporting_enable_verbose(void)
|
||||||
|
{
|
||||||
|
global_verbosity_state = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool reporting_get_verbosity(void)
|
||||||
|
{
|
||||||
|
return global_verbosity_state;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user