48 lines
No EOL
1.2 KiB
Ruby
48 lines
No EOL
1.2 KiB
Ruby
|
|
|
|
$core.add_artefact_engine Comfpile::ParserEngine,
|
|
file_regex: /^(.+)\.(h|c|cpp)$/,
|
|
search_regexes: [
|
|
{
|
|
regex: /^#include\s*[<"](?<value>.+)[>"]/,
|
|
key: 'include'
|
|
},
|
|
{
|
|
regex: /\/\/\s*comf\.(?<key>\w+)[=:]\s*(?<value>.+)/
|
|
}
|
|
]
|
|
|
|
$core.add_artefact_engine do |engine|
|
|
|
|
engine.add_recipe(:dependency_list, /^(.+)\.(h|c|cpp)$/) do |match, a|
|
|
|
|
a.require_artefact :dependency_analysis, a.target
|
|
a.require_artefact :dependency_analysis_include, a.target
|
|
|
|
a.add_step do
|
|
deps_artefact = find_artefact(:dependency_analysis, @target)
|
|
@parameters[:dependency_list] = deps_artefact.dependencies
|
|
end
|
|
end
|
|
|
|
engine.add_recipe(:x86_debug, /^run (.+)/) do |match, a|
|
|
|
|
a.require_artefact :parsed, "#{match[1]}.cpp"
|
|
end
|
|
|
|
engine.add_recipe(:x86_debug, /(.+)\.o$/) do |match, a|
|
|
a.require_artefact :sourcefile, "#{match[1]}.cpp"
|
|
|
|
a.add_step do
|
|
|
|
end
|
|
end
|
|
|
|
engine.add_recipe(:execute, /(.*)/) do |match, a|
|
|
a.parent_artefact :executable, match[0]
|
|
|
|
a.add_step do
|
|
@parent_artefact
|
|
end
|
|
end
|
|
end |