1985deba9SUtkarsh Saxena# Run the Completion Model Codegenerator on the model present in the 2985deba9SUtkarsh Saxena# ${model} directory. 3985deba9SUtkarsh Saxena# Produces a pair of files called ${filename}.h and ${filename}.cpp in the 4985deba9SUtkarsh Saxena# ${CMAKE_CURRENT_BINARY_DIR}. The generated header 5985deba9SUtkarsh Saxena# will define a C++ class called ${cpp_class} - which may be a 6985deba9SUtkarsh Saxena# namespace-qualified class name. 7*7907c46fSHarald van Dijkset(CLANGD_COMPLETION_MODEL_COMPILER ${CMAKE_CURRENT_LIST_DIR}/CompletionModelCodegen.py) 8985deba9SUtkarsh Saxenafunction(gen_decision_forest model filename cpp_class) 9*7907c46fSHarald van Dijk set(model_compiler ${CLANGD_COMPLETION_MODEL_COMPILER}) 10985deba9SUtkarsh Saxena 11985deba9SUtkarsh Saxena set(output_dir ${CMAKE_CURRENT_BINARY_DIR}) 12985deba9SUtkarsh Saxena set(header_file ${output_dir}/${filename}.h) 13985deba9SUtkarsh Saxena set(cpp_file ${output_dir}/${filename}.cpp) 14985deba9SUtkarsh Saxena 15985deba9SUtkarsh Saxena add_custom_command(OUTPUT ${header_file} ${cpp_file} 16985deba9SUtkarsh Saxena COMMAND "${Python3_EXECUTABLE}" ${model_compiler} 17985deba9SUtkarsh Saxena --model ${model} 18985deba9SUtkarsh Saxena --output_dir ${output_dir} 19985deba9SUtkarsh Saxena --filename ${filename} 20985deba9SUtkarsh Saxena --cpp_class ${cpp_class} 21985deba9SUtkarsh Saxena COMMENT "Generating code completion model runtime..." 22985deba9SUtkarsh Saxena DEPENDS ${model_compiler} ${model}/forest.json ${model}/features.json 23985deba9SUtkarsh Saxena VERBATIM ) 24985deba9SUtkarsh Saxena 25985deba9SUtkarsh Saxena set_source_files_properties(${header_file} PROPERTIES 26985deba9SUtkarsh Saxena GENERATED 1) 27985deba9SUtkarsh Saxena set_source_files_properties(${cpp_file} PROPERTIES 28985deba9SUtkarsh Saxena GENERATED 1) 29985deba9SUtkarsh Saxena 30985deba9SUtkarsh Saxena # Disable unused label warning for generated files. 31985deba9SUtkarsh Saxena if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") 32985deba9SUtkarsh Saxena set_source_files_properties(${cpp_file} PROPERTIES 33985deba9SUtkarsh Saxena COMPILE_FLAGS /wd4102) 34985deba9SUtkarsh Saxena else() 35985deba9SUtkarsh Saxena set_source_files_properties(${cpp_file} PROPERTIES 36985deba9SUtkarsh Saxena COMPILE_FLAGS -Wno-unused) 37985deba9SUtkarsh Saxena endif() 38985deba9SUtkarsh Saxenaendfunction() 39