105 lines
4.2 KiB
Plaintext
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"
|
|
) |