diff --git a/CMakeLists.txt b/CMakeLists.txt index 0e95cb65a..8ed9f5201 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -333,6 +333,18 @@ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}") set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}") +################################################################################ +# Extra dependencies for build rules that use the Python infrastructure to +# generate files used for Z3's build. Changes to these files will trigger +# a rebuild of all the generated files. +################################################################################ +# Note: ``update_api.py`` is deliberately not here because it not used +# to generate every generated file. The targets that need it list it explicitly. +# FIXME: We should drop the dependency on ``mk_util.py`` +set(Z3_GENERATED_FILE_EXTRA_DEPENDENCIES + "${CMAKE_SOURCE_DIR}/scripts/mk_util.py" +) + ################################################################################ # Z3 components, library and executables ################################################################################ diff --git a/contrib/cmake/cmake/z3_add_component.cmake b/contrib/cmake/cmake/z3_add_component.cmake index eebc0c8d9..b90aa2fe7 100644 --- a/contrib/cmake/cmake/z3_add_component.cmake +++ b/contrib/cmake/cmake/z3_add_component.cmake @@ -104,7 +104,8 @@ macro(z3_add_component component_name) add_custom_command(OUTPUT "${_output_file}" COMMAND "${PYTHON_EXECUTABLE}" "${CMAKE_SOURCE_DIR}/scripts/pyg2hpp.py" "${_full_pyg_file_path}" "${CMAKE_CURRENT_BINARY_DIR}" MAIN_DEPENDENCY "${_full_pyg_file_path}" - DEPENDS "${CMAKE_SOURCE_DIR}/scripts/pyg2hpp.py" "${CMAKE_SOURCE_DIR}/scripts/mk_util.py" + DEPENDS "${CMAKE_SOURCE_DIR}/scripts/pyg2hpp.py" + ${Z3_GENERATED_FILE_EXTRA_DEPENDENCIES} COMMENT "Generating \"${_full_output_file_path}\" from \"${pyg_file}\"" WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" ${ADD_CUSTOM_COMMAND_USES_TERMINAL_ARG} @@ -203,7 +204,7 @@ macro(z3_add_install_tactic_rule) "${CMAKE_CURRENT_BINARY_DIR}" ${_search_paths} DEPENDS "${CMAKE_SOURCE_DIR}/scripts/mk_install_tactic_cpp.py" - "${CMAKE_SOURCE_DIR}/scripts/mk_util.py" + ${Z3_GENERATED_FILE_EXTRA_DEPENDENCIES} ${_expanded_components} COMMENT "Generating \"${CMAKE_CURRENT_BINARY_DIR}/install_tactic.cpp\"" ${ADD_CUSTOM_COMMAND_USES_TERMINAL_ARG} @@ -235,7 +236,7 @@ macro(z3_add_memory_initializer_rule) "${CMAKE_CURRENT_BINARY_DIR}" ${_search_paths} DEPENDS "${CMAKE_SOURCE_DIR}/scripts/mk_mem_initializer_cpp.py" - "${CMAKE_SOURCE_DIR}/scripts/mk_util.py" + ${Z3_GENERATED_FILE_EXTRA_DEPENDENCIES} ${_expanded_components} COMMENT "Generating \"${CMAKE_CURRENT_BINARY_DIR}/mem_initializer.cpp\"" ${ADD_CUSTOM_COMMAND_USES_TERMINAL_ARG} @@ -267,7 +268,7 @@ macro(z3_add_gparams_register_modules_rule) "${CMAKE_CURRENT_BINARY_DIR}" ${_search_paths} DEPENDS "${CMAKE_SOURCE_DIR}/scripts/mk_gparams_register_modules_cpp.py" - "${CMAKE_SOURCE_DIR}/scripts/mk_util.py" + ${Z3_GENERATED_FILE_EXTRA_DEPENDENCIES} ${_expanded_components} COMMENT "Generating \"${CMAKE_CURRENT_BINARY_DIR}/gparams_register_modules.cpp\"" ${ADD_CUSTOM_COMMAND_USES_TERMINAL_ARG} diff --git a/contrib/cmake/src/CMakeLists.txt b/contrib/cmake/src/CMakeLists.txt index 6708f505e..36b524f0a 100644 --- a/contrib/cmake/src/CMakeLists.txt +++ b/contrib/cmake/src/CMakeLists.txt @@ -186,7 +186,7 @@ if (MSVC) ${Z3_FULL_PATH_API_HEADER_FILES_TO_SCAN} DEPENDS "${CMAKE_SOURCE_DIR}/scripts/mk_def_file.py" - "${CMAKE_SOURCE_DIR}/scripts/mk_util.py" + ${Z3_GENERATED_FILE_EXTRA_DEPENDENCIES} ${Z3_FULL_PATH_API_HEADER_FILES_TO_SCAN} COMMENT "Generating \"${dll_module_exports_file}\"" ${ADD_CUSTOM_COMMAND_USES_TERMINAL_ARG} diff --git a/contrib/cmake/src/api/CMakeLists.txt b/contrib/cmake/src/api/CMakeLists.txt index 0fd012b87..78837c001 100644 --- a/contrib/cmake/src/api/CMakeLists.txt +++ b/contrib/cmake/src/api/CMakeLists.txt @@ -24,7 +24,7 @@ add_custom_command(OUTPUT ${generated_files} "--api_output_dir" "${CMAKE_CURRENT_BINARY_DIR}" DEPENDS "${CMAKE_SOURCE_DIR}/scripts/update_api.py" - "${CMAKE_SOURCE_DIR}/scripts/mk_util.py" + ${Z3_GENERATED_FILE_EXTRA_DEPENDENCIES} ${Z3_FULL_PATH_API_HEADER_FILES_TO_SCAN} COMMENT "Generating ${generated_files}" ${ADD_CUSTOM_COMMAND_USES_TERMINAL_ARG} diff --git a/contrib/cmake/src/api/python/CMakeLists.txt b/contrib/cmake/src/api/python/CMakeLists.txt index 2279be716..05d04e552 100644 --- a/contrib/cmake/src/api/python/CMakeLists.txt +++ b/contrib/cmake/src/api/python/CMakeLists.txt @@ -38,7 +38,7 @@ add_custom_command(OUTPUT "${z3py_bindings_build_dest}/z3core.py" DEPENDS ${Z3_FULL_PATH_API_HEADER_FILES_TO_SCAN} "${CMAKE_SOURCE_DIR}/scripts/update_api.py" - "${CMAKE_SOURCE_DIR}/scripts/mk_util.py" + ${Z3_GENERATED_FILE_EXTRA_DEPENDENCIES} COMMENT "Generating z3core.py" ${ADD_CUSTOM_COMMAND_USES_TERMINAL_ARG} ) @@ -54,7 +54,7 @@ add_custom_command(OUTPUT "${z3py_bindings_build_dest}/z3consts.py" DEPENDS ${Z3_FULL_PATH_API_HEADER_FILES_TO_SCAN} "${CMAKE_SOURCE_DIR}/scripts/mk_consts_files.py" - "${CMAKE_SOURCE_DIR}/scripts/mk_util.py" + ${Z3_GENERATED_FILE_EXTRA_DEPENDENCIES} COMMENT "Generating z3consts.py" ${ADD_CUSTOM_COMMAND_USES_TERMINAL_ARG} ) diff --git a/contrib/cmake/src/ast/pattern/CMakeLists.txt b/contrib/cmake/src/ast/pattern/CMakeLists.txt index 8cff3e739..59e0545a1 100644 --- a/contrib/cmake/src/ast/pattern/CMakeLists.txt +++ b/contrib/cmake/src/ast/pattern/CMakeLists.txt @@ -13,7 +13,7 @@ add_custom_command(OUTPUT "database.h" "${CMAKE_CURRENT_BINARY_DIR}/database.h" MAIN_DEPENDENCY "${CMAKE_CURRENT_SOURCE_DIR}/database.smt2" DEPENDS "${CMAKE_SOURCE_DIR}/scripts/mk_pat_db.py" - "${CMAKE_SOURCE_DIR}/scripts/mk_util.py" + ${Z3_GENERATED_FILE_EXTRA_DEPENDENCIES} COMMENT "Generating \"database.h\"" ${ADD_CUSTOM_COMMAND_USES_TERMINAL_ARG} VERBATIM