2019-05-24 13:35:20 +00:00
|
|
|
# Generates a header file with a hash.
|
|
|
|
function(qt_declarative_write_tag_header target_name)
|
|
|
|
set(tag_file "${CMAKE_CURRENT_SOURCE_DIR}/../../.tag")
|
|
|
|
set(tag_contents "")
|
|
|
|
if(EXISTS "${tag_file}")
|
|
|
|
file(READ "${tag_file}" tag_contents)
|
2022-01-06 11:01:37 +00:00
|
|
|
string(STRIP "${tag_contents}" tag_contents)
|
2019-05-24 13:35:20 +00:00
|
|
|
endif()
|
2022-01-14 14:02:48 +00:00
|
|
|
find_program(git_path git)
|
|
|
|
|
|
|
|
if(tag_contents AND NOT tag_contents STREQUAL "$Format:%H$")
|
2019-05-24 13:35:20 +00:00
|
|
|
set(QML_COMPILE_HASH "${tag_contents}")
|
2022-01-14 14:02:48 +00:00
|
|
|
elseif(git_path AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/../../.git")
|
|
|
|
execute_process(
|
|
|
|
COMMAND ${git_path} rev-parse HEAD
|
|
|
|
OUTPUT_VARIABLE QML_COMPILE_HASH
|
|
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
|
|
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}")
|
2022-01-06 11:01:37 +00:00
|
|
|
else()
|
2022-01-14 14:02:48 +00:00
|
|
|
set(sources_hash "")
|
|
|
|
file(GLOB_RECURSE qtqml_source_files "${CMAKE_CURRENT_SOURCE_DIR}/*")
|
|
|
|
foreach(file IN LISTS qtqml_source_files)
|
|
|
|
file(SHA1 ${file} file_hash)
|
|
|
|
string(APPEND sources_hash ${file_hash})
|
|
|
|
endforeach()
|
|
|
|
string(SHA1 QML_COMPILE_HASH "${sources_hash}")
|
2019-05-24 13:35:20 +00:00
|
|
|
endif()
|
2022-01-14 14:02:48 +00:00
|
|
|
|
2019-05-24 13:35:20 +00:00
|
|
|
string(LENGTH "${QML_COMPILE_HASH}" QML_COMPILE_HASH_LENGTH)
|
2022-01-06 11:01:37 +00:00
|
|
|
if(QML_COMPILE_HASH_LENGTH GREATER 0)
|
|
|
|
configure_file("qml_compile_hash_p.h.in" "${CMAKE_CURRENT_BINARY_DIR}/qml_compile_hash_p.h")
|
|
|
|
else()
|
|
|
|
message(FATAL_ERROR "QML compile hash is empty! "
|
|
|
|
"You need either a valid git repository or a non-empty .tag file.")
|
|
|
|
endif()
|
2019-05-24 13:35:20 +00:00
|
|
|
endfunction()
|
|
|
|
|
2019-09-23 09:41:41 +00:00
|
|
|
find_package(PythonInterp REQUIRED)
|
2019-05-24 13:35:20 +00:00
|
|
|
|
|
|
|
# Generate a header file containing a regular expression jit table.
|
|
|
|
function(qt_declarative_generate_reg_exp_jit_tables consuming_target)
|
|
|
|
set(generate_dir "${CMAKE_CURRENT_BINARY_DIR}/.generated")
|
|
|
|
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
|
|
string(APPEND generate_dir "/debug")
|
|
|
|
elseif(CMAKE_BUILD_TYPE STREQUAL "Release")
|
|
|
|
string(APPEND generate_dir "/release")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
set(output_file "${generate_dir}/RegExpJitTables.h")
|
|
|
|
set(retgen_script_file "${CMAKE_CURRENT_SOURCE_DIR}/../3rdparty/masm/yarr/create_regex_tables")
|
|
|
|
|
|
|
|
add_custom_command(
|
|
|
|
OUTPUT "${output_file}"
|
2019-09-23 09:41:41 +00:00
|
|
|
COMMAND "${PYTHON_EXECUTABLE}" ${retgen_script_file} ${output_file}
|
2019-05-24 13:35:20 +00:00
|
|
|
MAIN_DEPENDENCY ${retgen_script_file}
|
|
|
|
)
|
|
|
|
target_sources(${consuming_target} PRIVATE ${output_file})
|
|
|
|
target_include_directories(${consuming_target} PRIVATE $<BUILD_INTERFACE:${generate_dir}>)
|
|
|
|
endfunction()
|
2020-06-04 16:55:51 +00:00
|
|
|
|
|
|
|
function(qt_qml_find_python out_var_path out_var_found)
|
|
|
|
find_program(QT_QML_PYTHON_PATH
|
|
|
|
NAMES python python2 python3 py
|
|
|
|
DOC "Qt Declarative python path")
|
|
|
|
if(QT_QML_PYTHON_PATH)
|
|
|
|
set(${out_var_path} "${QT_QML_PYTHON_PATH}" PARENT_SCOPE)
|
|
|
|
set(${out_var_found} "TRUE" PARENT_SCOPE)
|
|
|
|
else()
|
|
|
|
set(${out_var_found} "FALSE" PARENT_SCOPE)
|
|
|
|
endif()
|
|
|
|
endfunction()
|