lib_ui/cmake/generate_styles.cmake
2019-11-08 13:04:53 +03:00

94 lines
3.1 KiB
CMake

function(append_generate_target target_name postfix generated_files gen_dst)
add_custom_target(${target_name}_${postfix} DEPENDS ${generated_files})
init_target(${target_name}_${postfix} "(gen)")
add_dependencies(${target_name} ${target_name}_${postfix})
target_sources(${target_name} PRIVATE ${generated_files})
target_include_directories(${target_name} PUBLIC ${gen_dst})
source_group("(gen)" FILES ${generated_files})
endfunction()
function(generate_palette target_name palette_file)
set(gen_dst ${CMAKE_CURRENT_BINARY_DIR}/gen)
set(gen_src ${CMAKE_CURRENT_SOURCE_DIR}/${palette_file})
set(generated_files
${gen_dst}/styles/palette.cpp
${gen_dst}/styles/palette.h
)
add_custom_command(
OUTPUT
${generated_files}
COMMAND
codegen_style
-I${gen_dst}
-o${gen_dst}/styles
-w${CMAKE_CURRENT_SOURCE_DIR}
${gen_src}
COMMENT "Generating palette (${target_name})"
DEPENDS
codegen_style
${gen_src}
MAIN_DEPENDENCY
${gen_src}
)
append_generate_target(${target_name} palette "${generated_files}" ${gen_dst})
endfunction()
function(generate_styles target_name src_loc style_files dependent_style_files)
set(gen_dst ${CMAKE_CURRENT_BINARY_DIR}/gen)
set(full_generated_files "")
set(full_dependencies_list ${style_files})
list(APPEND full_dependencies_list ${dependent_style_files})
foreach (file ${style_files})
set(gen_src ${CMAKE_CURRENT_SOURCE_DIR}/${file})
get_filename_component(file_name ${file} NAME_WLE)
set(generated_files
${gen_dst}/styles/style_${file_name}.cpp
${gen_dst}/styles/style_${file_name}.h
)
list(APPEND full_generated_files ${generated_files})
add_custom_command(
OUTPUT
${generated_files}
COMMAND
codegen_style
-I${src_loc}
-I${submodules_loc}/lib_ui
-I${submodules_loc}/Resources
-o${gen_dst}/styles
-w${CMAKE_CURRENT_SOURCE_DIR}
${gen_src}
COMMENT "Generating style (${target_name}:${file_name})"
DEPENDS
codegen_style
${full_dependencies_list}
MAIN_DEPENDENCY
${gen_src}
)
endforeach()
append_generate_target(${target_name} styles "${full_generated_files}" ${gen_dst})
endfunction()
function(generate_emoji target_name suggestions_json)
set(gen_dst ${CMAKE_CURRENT_BINARY_DIR}/gen)
set(gen_src ${CMAKE_CURRENT_SOURCE_DIR}/${suggestions_json})
set(generated_files
${gen_dst}/emoji.cpp
${gen_dst}/emoji.h
${gen_dst}/emoji_suggestions_data.cpp
${gen_dst}/emoji_suggestions_data.h
)
add_custom_command(
OUTPUT
${generated_files}
COMMAND
codegen_emoji
-o${gen_dst}
${gen_src}
COMMENT "Generating emoji (${target_name})"
DEPENDS
codegen_emoji
${gen_src}
)
append_generate_target(${target_name} emoji "${generated_files}" ${gen_dst})
endfunction()