Skip to content

Commit

Permalink
cmake: Avoid extra recompilation updating generated_definitions.hpp o…
Browse files Browse the repository at this point in the history
…nly if needed (#235)

This commit updates the build system to ensure the generated_definitions
header is updated only if its content changed. This will avoid recompilation
if the re-configured without changing any options.
  • Loading branch information
jcfr authored and Kjell Hedström committed Dec 3, 2017
1 parent b4be5a0 commit 0005e14
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 12 deletions.
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,4 @@ nbproject/*
build_clang
build_travis
gtest-1.7.0
generated_definitions.hpp
*~
35 changes: 24 additions & 11 deletions GenerateMacroDefinitionsFile.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -21,20 +21,33 @@
message( STATUS "" )
message( STATUS "COMPILE_DEFINITIONS:\n\t[${G3_DEFINITIONS}]" )
message( STATUS "" )

SET(GENERATED_G3_DEFINITIONS "${CMAKE_CURRENT_BINARY_DIR}/include/g3log/generated_definitions.hpp")
file(REMOVE ${GENERATED_G3_DEFINITIONS} )
FILE(WRITE ${GENERATED_G3_DEFINITIONS} "// AUTO GENERATED MACRO DEFINITIONS FOR G3LOG\n\n")
FILE(APPEND ${GENERATED_G3_DEFINITIONS} "${HEADER}\n")
FILE(APPEND ${GENERATED_G3_DEFINITIONS} "#pragma once\n\n")
FILE(APPEND ${GENERATED_G3_DEFINITIONS} "// CMake induced definitions below. See g3log/Options.cmake for details.\n\n")

# If it exists, read existing file
set(current_content "")
if(EXISTS ${GENERATED_G3_DEFINITIONS})
file(READ ${GENERATED_G3_DEFINITIONS} current_content)
endif()

set(generated_content "// AUTO GENERATED MACRO DEFINITIONS FOR G3LOG\n\n")
set(generated_content "${generated_content}\n${HEADER}\n")
set(generated_content "${generated_content}\n#pragma once\n\n")
set(generated_content "${generated_content}\n// CMake induced definitions below. See g3log/Options.cmake for details.\n\n")

FOREACH(definition ${G3_DEFINITIONS} )
FILE(APPEND ${GENERATED_G3_DEFINITIONS} "#define ${definition}\n")
set(generated_content "${generated_content}\n#define ${definition}\n")
ENDFOREACH(definition)

message( STATUS "Generated ${GENERATED_G3_DEFINITIONS}" )
file(READ ${GENERATED_G3_DEFINITIONS} generated_content)
if(NOT "${current_content}" STREQUAL "${generated_content}")

message( STATUS "Generated ${GENERATED_G3_DEFINITIONS}" )

message( STATUS "******************** START *************************" )
message(${generated_content})
message( STATUS "******************** END *************************" )

file(WRITE ${GENERATED_G3_DEFINITIONS} ${generated_content})

endif()

message( STATUS "******************** START *************************" )
MESSAGE(${generated_content})
message( STATUS "******************** END *************************" )

0 comments on commit 0005e14

Please sign in to comment.