From d32f772e5274e8490ade20e88c6bfa10b8ecfee5 Mon Sep 17 00:00:00 2001 From: John Preston Date: Fri, 8 Nov 2019 14:08:03 +0300 Subject: [PATCH] Divide codegen cmake scripts. --- CMakeLists.txt | 2 ++ cmake/generate_emoji.cmake | 23 ++++++++++++ cmake/generate_palette.cmake | 25 +++++++++++++ cmake/generate_styles.cmake | 70 ++++-------------------------------- 4 files changed, 57 insertions(+), 63 deletions(-) create mode 100644 cmake/generate_emoji.cmake create mode 100644 cmake/generate_palette.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 61793b7..5fb7fb3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,9 @@ add_library(lib_ui OBJECT) init_target(lib_ui) +include(cmake/generate_palette.cmake) include(cmake/generate_styles.cmake) +include(cmake/generate_emoji.cmake) get_filename_component(src_loc . REALPATH) diff --git a/cmake/generate_emoji.cmake b/cmake/generate_emoji.cmake new file mode 100644 index 0000000..77456d6 --- /dev/null +++ b/cmake/generate_emoji.cmake @@ -0,0 +1,23 @@ +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} + ) + generate_target(${target_name} emoji "${generated_files}" ${gen_dst}) +endfunction() diff --git a/cmake/generate_palette.cmake b/cmake/generate_palette.cmake new file mode 100644 index 0000000..f0e349a --- /dev/null +++ b/cmake/generate_palette.cmake @@ -0,0 +1,25 @@ +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} + ) + generate_target(${target_name} palette "${generated_files}" ${gen_dst}) +endfunction() diff --git a/cmake/generate_styles.cmake b/cmake/generate_styles.cmake index b759319..2bb4259 100644 --- a/cmake/generate_styles.cmake +++ b/cmake/generate_styles.cmake @@ -1,45 +1,13 @@ -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}) + set(full_dependencies_list ${dependent_style_files}) foreach (file ${style_files}) - set(gen_src ${CMAKE_CURRENT_SOURCE_DIR}/${file}) + list(APPEND full_dependencies_list ${src_loc}/${file}) + endforeach() + + foreach (file ${style_files}) + set(gen_src ${src_loc}/${file}) get_filename_component(file_name ${file} NAME_WLE) set(generated_files ${gen_dst}/styles/style_${file_name}.cpp @@ -66,29 +34,5 @@ function(generate_styles target_name src_loc style_files dependent_style_files) ) 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}) + generate_target(${target_name} styles "${full_generated_files}" ${gen_dst}) endfunction()