src.dualinventive.com/jjacobs/dinetrpcll-sniffer/libdipp/common/cmake/CodeReview.txt

105 lines
4.2 KiB
Plaintext

set(PROJECT_REVIEW_LIST "${PROJECT_SOURCE_DIR}/codereview.txt")
set(PROJECT_REVIEW_DIR "${PROJECT_BINARY_DIR}/codereview")
set(PROJECT_REVIEW_INFILE "${CMAKE_CURRENT_LIST_DIR}/templates/CodeReview/review.tex.in")
set(PROJECT_REVIEW_OUTFILENAME "${PROJECT_NAME}-${APPLICATION_VERSION}_codereview.tex")
set(PROJECT_REVIEW_OUTNAME "${PROJECT_NAME}-${APPLICATION_VERSION}_codereview")
set(PROJECT_REVIEW_OUTFILE "${PROJECT_REVIEW_DIR}/${PROJECT_REVIEW_OUTFILENAME}")
string (REPLACE "_" "\\\_" PROJECT_BRIEF_LATEX "${PROJECT_BRIEF}")
# Search h/c/cpp files
if(EXISTS "${PROJECT_REVIEW_LIST}")
message("-- Codereview read filelist from ${PROJECT_REVIEW_LIST}")
file(STRINGS "${PROJECT_REVIEW_LIST}" list)
foreach(line ${list})
string(STRIP "${line}" line)
file(GLOB files "${CMAKE_SOURCE_DIR}/${line}")
if ("${files}" STREQUAL "")
message(FATAL_ERROR "File ${line} from ${PROJECT_REVIEW_LIST} does not exist")
endif()
set(PROJECT_REVIEW_FILES "${PROJECT_REVIEW_FILES};${files}")
endforeach()
else()
file(GLOB_RECURSE PROJECT_REVIEW_C_FILES ${CMAKE_SOURCE_DIR}/src/*.c)
file(GLOB_RECURSE PROJECT_REVIEW_CPP_FILES ${CMAKE_SOURCE_DIR}/src/*.cpp)
# When folder include/di exists it is assumed we only interessted in this
if(EXISTS "${CMAKE_SOURCE_DIR}/include/di")
file(GLOB_RECURSE PROJECT_REVIEW_H_FILES ${CMAKE_SOURCE_DIR}/include/di/*.h)
else()
file(GLOB_RECURSE PROJECT_REVIEW_H_FILES ${CMAKE_SOURCE_DIR}/include/*.h)
endif()
set(PROJECT_REVIEW_FILES "${PROJECT_REVIEW_H_FILES};${PROJECT_REVIEW_C_FILES};${PROJECT_REVIEW_CPP_FILES}")
endif()
# Read per-file LaTeX template
file(READ "${CMAKE_CURRENT_LIST_DIR}/templates/CodeReview/file.tex.in" TEX_LINE)
set(PROJECT_REVIEW_TEX "")
foreach(f ${PROJECT_REVIEW_FILES})
get_filename_component(f_type ${f} EXT)
string(REPLACE "." "" f_type "${f_type}")
if (${f_type} MATCHES "h")
if (${PRIMARY_LANGUAGE} MATCHES "C")
set(f_type "c")
else()
set(f_type "cpp")
endif()
elseif (${f_type} MATCHES "c")
set (f_type "c")
elseif (${f_type} MATCHES "cpp")
set (f_type "cpp")
else ()
set(f_type "text")
endif()
set(PROJECT_REVIEW_FILE_TEX ${TEX_LINE})
string(REPLACE "${PROJECT_SOURCE_DIR}/" "" f_caption "${f}")
string(REPLACE "FILENAME_CAPTION" "${f_caption}" PROJECT_REVIEW_FILE_TEX "${PROJECT_REVIEW_FILE_TEX}")
string(REPLACE "FILENAME" "${f}" PROJECT_REVIEW_FILE_TEX "${PROJECT_REVIEW_FILE_TEX}")
string(REPLACE "FILETYPE" "${f_type}" PROJECT_REVIEW_FILE_TEX "${PROJECT_REVIEW_FILE_TEX}")
set(PROJECT_REVIEW_TEX "${PROJECT_REVIEW_TEX}${PROJECT_REVIEW_FILE_TEX}")
endforeach()
# Write all generated LaTeX to the file at variable
# - PROJECT_REVIEW_TEX
configure_file (
"${PROJECT_REVIEW_INFILE}"
"${PROJECT_REVIEW_OUTFILE}"
)
# TODO: now we need texlive 2015 installed because of package minted 2.0
# http://cmake.org/Wiki/CMake_FAQ#How_do_I_use_CMake_to_build_LaTeX_documents.3F
set(LATEX_COMPILER "/usr/local/texlive/2016/bin/x86_64-linux/pdflatex")
set(LATEX_COMPILER_ARGS "-shell-escape")
ADD_CUSTOM_COMMAND(
OUTPUT "${PROJECT_REVIEW_DIR}/${PROJECT_REVIEW_OUTNAME}.aux"
COMMAND ${LATEX_COMPILER}
ARGS -interaction=batchmode ${LATEX_COMPILER_ARGS} ${PROJECT_REVIEW_OUTFILENAME} 1>/dev/null
COMMENT "Latex (first pass)"
WORKING_DIRECTORY ${PROJECT_REVIEW_DIR}
)
ADD_CUSTOM_COMMAND(
OUTPUT "${PROJECT_REVIEW_DIR}/${PROJECT_REVIEW_OUTNAME}.out"
DEPENDS "${PROJECT_REVIEW_DIR}/${PROJECT_REVIEW_OUTNAME}.aux"
COMMAND ${LATEX_COMPILER}
ARGS -interaction=batchmode ${LATEX_COMPILER_ARGS} ${PROJECT_REVIEW_OUTFILENAME} 1>/dev/null
COMMENT "Latex (second pass)"
WORKING_DIRECTORY ${PROJECT_REVIEW_DIR}
)
ADD_CUSTOM_COMMAND(
OUTPUT "${PROJECT_REVIEW_DIR}/${PROJECT_REVIEW_OUTNAME}.log"
DEPENDS "${PROJECT_REVIEW_DIR}/${PROJECT_REVIEW_OUTNAME}.aux"
"${PROJECT_REVIEW_DIR}/${PROJECT_REVIEW_OUTNAME}.out"
COMMAND ${LATEX_COMPILER}
ARGS -interaction=batchmode ${LATEX_COMPILER_ARGS} ${PROJECT_REVIEW_OUTFILENAME} 1>/dev/null
COMMENT "Latex (third pass)"
WORKING_DIRECTORY ${PROJECT_REVIEW_DIR}
)
ADD_CUSTOM_TARGET(di-review
DEPENDS ${PROJECT_REVIEW_DIR}/${PROJECT_REVIEW_OUTNAME}.log
COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --cyan
"Your review is located here: ${PROJECT_REVIEW_DIR}/${PROJECT_REVIEW_OUTNAME}.pdf"
)