Andre', our current solution
will produce the "forgotten include"
error, well known from the builds with
precompiled headers.
Attached a patch which enables the creation
of a _touched.C file for each .C file.
These touched files then are compiled separate,
and will fail if one has forgotten a to add an include.
Do you think I should also commit this patch?
It increases a bit the compile time because
of the multiple touched files.
Peter
Index: boost/libs/signals/CMakeLists.txt
===================================================================
--- boost/libs/signals/CMakeLists.txt (revision 17619)
+++ boost/libs/signals/CMakeLists.txt (working copy)
@@ -19,9 +19,9 @@
if(NOT MERGE_FILES)
add_library(boost_signals STATIC ${boost_signals_sources})
else(NOT MERGE_FILES)
- lyx_merge_files(allinone boost_signals_sources)
+ lyx_const_touched_files(allinone touched_files boost_signals_sources)
add_library(boost_signals STATIC
${CMAKE_CURRENT_BINARY_DIR}/allinone_const.C
-
${CMAKE_CURRENT_BINARY_DIR}/allinone_touched.C)
+ ${touched_files})
endif(NOT MERGE_FILES)
Index: boost/libs/filesystem/CMakeLists.txt
===================================================================
--- boost/libs/filesystem/CMakeLists.txt (revision 17619)
+++ boost/libs/filesystem/CMakeLists.txt (working copy)
@@ -19,9 +19,9 @@
add_library(boost_filesystem STATIC ${boost_filesystem_sources})
else(NOT MERGE_FILES)
add_definitions(-D_WIN32_WINNT=0x500)
- lyx_merge_files(allinone boost_filesystem_sources)
+ lyx_const_touched_files(allinone touched_files
boost_filesystem_sources)
add_library(boost_filesystem STATIC
${CMAKE_CURRENT_BINARY_DIR}/allinone_const.C
-
${CMAKE_CURRENT_BINARY_DIR}/allinone_touched.C)
+ ${touched_files})
endif(NOT MERGE_FILES)
Index: boost/libs/iostreams/CMakeLists.txt
===================================================================
--- boost/libs/iostreams/CMakeLists.txt (revision 17619)
+++ boost/libs/iostreams/CMakeLists.txt (working copy)
@@ -19,10 +19,10 @@
if(NOT MERGE_FILES)
add_library(boost_iostreams STATIC ${boost_iostreams_sources})
else(NOT MERGE_FILES)
- lyx_merge_files(allinone boost_iostreams_sources)
+ lyx_const_touched_files(allinone touched_files boost_iostreams_sources)
add_library(boost_iostreams STATIC
${CMAKE_CURRENT_BINARY_DIR}/allinone_const.C
-
${CMAKE_CURRENT_BINARY_DIR}/allinone_touched.C)
+ ${touched_files})
endif(NOT MERGE_FILES)
Index: src/graphics/CMakeLists.txt
===================================================================
--- src/graphics/CMakeLists.txt (revision 17619)
+++ src/graphics/CMakeLists.txt (working copy)
@@ -17,10 +17,10 @@
if(NOT MERGE_FILES)
add_library(graphics ${library_type} ${graphics_sources}
${graphics_headers})
else(NOT MERGE_FILES)
- lyx_merge_files(allinone graphics_sources)
+ lyx_const_touched_files(allinone touched_files graphics_sources)
add_library(graphics ${library_type}
${CMAKE_CURRENT_BINARY_DIR}/allinone_const.C
-
${CMAKE_CURRENT_BINARY_DIR}/allinone_touched.C)
+ ${touched_files})
endif(NOT MERGE_FILES)
project_source_group("${GROUP_CODE}" graphics_sources graphics_headers)
Index: src/frontends/controllers/CMakeLists.txt
===================================================================
--- src/frontends/controllers/CMakeLists.txt (revision 17619)
+++ src/frontends/controllers/CMakeLists.txt (working copy)
@@ -16,10 +16,10 @@
if(NOT MERGE_FILES)
add_library(controllers ${library_type} ${controllers_sources}
${controllers_headers})
else(NOT MERGE_FILES)
- lyx_merge_files(allinone controllers_sources)
+ lyx_const_touched_files(allinone touched_files controllers_sources)
add_library(controllers ${library_type}
${CMAKE_CURRENT_BINARY_DIR}/allinone_const.C
-
${CMAKE_CURRENT_BINARY_DIR}/allinone_touched.C)
+ ${touched_files})
endif(NOT MERGE_FILES)
target_link_libraries(controllers boost_regex boost_filesystem)
Index: src/frontends/qt4/CMakeLists.txt
===================================================================
--- src/frontends/qt4/CMakeLists.txt (revision 17619)
+++ src/frontends/qt4/CMakeLists.txt (working copy)
@@ -37,13 +37,13 @@
list(REVERSE frontends_qt4_sources)
list(REMOVE_ITEM frontends_qt4_sources
${TOP_SRC_DIR}/src/frontends/qt4/GuiApplication.C)
list(APPEND frontends_qt4_sources
${TOP_SRC_DIR}/src/frontends/qt4/GuiApplication.C)
- lyx_merge_files(allinone frontends_qt4_sources)
+ lyx_const_touched_files(allinone touched_files frontends_qt4_sources)
set(depends_moc_uic ${frontends_qt4_headers} ${ui_files})
SET_SOURCE_FILES_PROPERTIES(allinone_const.C PROPERTIES OBJECT_DEPENDS
"${depends_moc_uic}")
- SET_SOURCE_FILES_PROPERTIES(allinone_touched.C PROPERTIES
OBJECT_DEPENDS "${depends_moc_uic}")
+ #SET_SOURCE_FILES_PROPERTIES(allinone_touched.C PROPERTIES
OBJECT_DEPENDS "${depends_moc_uic}")
add_library(frontend_qt4 ${library_type}
${CMAKE_CURRENT_BINARY_DIR}/allinone_const.C
-
${CMAKE_CURRENT_BINARY_DIR}/allinone_touched.C
+ ${touched_files}
${frontends_qt4_headers}
${ui_files}
)
Index: src/frontends/CMakeLists.txt
===================================================================
--- src/frontends/CMakeLists.txt (revision 17619)
+++ src/frontends/CMakeLists.txt (working copy)
@@ -21,10 +21,10 @@
if(NOT MERGE_FILES)
add_library(frontends ${library_type} ${frontends_sources}
${frontends_headers})
else(NOT MERGE_FILES)
- lyx_merge_files(allinone frontends_sources)
+ lyx_const_touched_files(allinone touched_files frontends_sources)
add_library(frontends ${library_type}
${CMAKE_CURRENT_BINARY_DIR}/allinone_const.C
-
${CMAKE_CURRENT_BINARY_DIR}/allinone_touched.C)
+ ${touched_files})
endif(NOT MERGE_FILES)
project_source_group("${GROUP_CODE}" frontends_sources frontends_headers)
Index: src/mathed/CMakeLists.txt
===================================================================
--- src/mathed/CMakeLists.txt (revision 17619)
+++ src/mathed/CMakeLists.txt (working copy)
@@ -20,10 +20,10 @@
if(NOT MERGE_FILES)
add_library(mathed ${library_type} ${mathed_sources} ${mathed_headers})
else(NOT MERGE_FILES)
- lyx_merge_files(allinone mathed_sources)
+ lyx_const_touched_files(allinone touched_files mathed_sources)
add_library(mathed ${library_type}
${CMAKE_CURRENT_BINARY_DIR}/allinone_const.C
-
${CMAKE_CURRENT_BINARY_DIR}/allinone_touched.C)
+ ${touched_files})
endif(NOT MERGE_FILES)
Index: src/insets/CMakeLists.txt
===================================================================
--- src/insets/CMakeLists.txt (revision 17619)
+++ src/insets/CMakeLists.txt (working copy)
@@ -19,10 +19,10 @@
if(NOT MERGE_FILES)
add_library(insets ${library_type} ${insets_sources} ${insets_headers})
else(NOT MERGE_FILES)
- lyx_merge_files(allinone insets_sources)
+ lyx_const_touched_files(allinone touched_files insets_sources)
add_library(insets ${library_type}
${CMAKE_CURRENT_BINARY_DIR}/allinone_const.C
-
${CMAKE_CURRENT_BINARY_DIR}/allinone_touched.C)
+ ${touched_files})
endif(NOT MERGE_FILES)
Index: src/support/CMakeLists.txt
===================================================================
--- src/support/CMakeLists.txt (revision 17619)
+++ src/support/CMakeLists.txt (working copy)
@@ -35,10 +35,10 @@
list(REMOVE_ITEM support_sources ${TOP_SRC_DIR}/src/support/lstrings.C)
list(APPEND support_sources ${TOP_SRC_DIR}/src/support/lstrings.C)
list(REVERSE support_sources)
- lyx_merge_files(allinone support_sources)
+ lyx_const_touched_files(allinone touched_files support_sources)
add_library(support ${library_type}
${CMAKE_CURRENT_BINARY_DIR}/allinone_const.C
-
${CMAKE_CURRENT_BINARY_DIR}/allinone_touched.C)
+ ${touched_files})
endif(NOT MERGE_FILES)
Index: src/CMakeLists.txt
===================================================================
--- src/CMakeLists.txt (revision 17619)
+++ src/CMakeLists.txt (working copy)
@@ -43,10 +43,10 @@
if(NOT MERGE_FILES)
set(lyx_sources ${lyx_sources} ${CMAKE_CURRENT_BINARY_DIR}/version.C)
else(NOT MERGE_FILES)
- lyx_merge_files(allinone lyx_sources)
+ lyx_const_touched_files(allinone touched_files lyx_sources)
set(lyx_sources
${CMAKE_CURRENT_BINARY_DIR}/allinone_const.C
-
${CMAKE_CURRENT_BINARY_DIR}/allinone_touched.C
+ ${touched_files}
${CMAKE_CURRENT_BINARY_DIR}/version.C
)
endif(NOT MERGE_FILES)
Index: modules/LyXMacros.cmake
===================================================================
--- modules/LyXMacros.cmake (revision 17630)
+++ modules/LyXMacros.cmake (working copy)
@@ -135,16 +135,11 @@
set(${_filesExcludedFromFinalFile})
set(_file_const ${CMAKE_CURRENT_BINARY_DIR}/${_filenameCPP}_const.C)
- set(_file_touched ${CMAKE_CURRENT_BINARY_DIR}/${_filenameCPP}_touched.C)
-
file(WRITE ${_file_const} "//autogenerated file\n")
- file(WRITE ${_file_touched} "//autogenerated file\n")
-
- file(APPEND ${_file_touched} "// touched files\n\n")
- file(APPEND ${_file_touched} "// look for non-const files\n")
- file(APPEND ${_file_touched} "#define DONT_INCLUDE_CONST_FILES\n")
- file(APPEND ${_file_touched} "#include \"${_file_const}\"\n\n\n")
-
+
+ set(_file_all_touched ${CMAKE_CURRENT_BINARY_DIR}/${_filenameCPP}_touched.C)
+ file(WRITE ${_file_all_touched} "//autogenerated file\n")
+
foreach (_current_FILE ${ARGN})
get_filename_component(_abs_FILE ${_current_FILE} ABSOLUTE)
# don't include any generated files in the final-file
@@ -169,10 +164,18 @@
file(APPEND ${_file_const} "#include \"${_abs_FILE}\"\n")
file(APPEND ${_file_const} "#endif\n\n")
+ set(_file_touched
${CMAKE_CURRENT_BINARY_DIR}/${_file_name}_touched.C)
+ file(WRITE ${_file_touched} "//autogenerated file\n")
+
+ file(APPEND ${_file_touched} "// touched files\n\n")
+ file(APPEND ${_file_touched} "// look for non-const
files\n")
+ file(APPEND ${_file_touched} "#define
DONT_INCLUDE_CONST_FILES\n")
+ file(APPEND ${_file_touched} "#include
\"${_file_const}\"\n\n\n")
file(APPEND ${_file_touched} "#ifndef ${__macro_name}\n")
file(APPEND ${_file_touched} "#include \"${_abs_FILE}\"\n")
file(APPEND ${_file_touched} "#endif\n\n")
+ set(${_filesExcludedFromFinalFile}
${${_filesExcludedFromFinalFile}} ${_file_touched})
endif (_isCFile)
endif (_isGenerated)
endforeach (_current_FILE)
@@ -183,3 +186,7 @@
LYX_CREATE_FINAL_FILES(${_filename} _nix_nothing ${${_list}})
endmacro(lyx_merge_files _list _filename)
+
+macro(lyx_const_touched_files _filename _touched_files _list)
+ LYX_CREATE_FINAL_FILES(${_filename} ${_touched_files} ${${_list}})
+endmacro(lyx_const_touched_files _touched_files _list _filename)