48 lines
1.2 KiB
Ruby
48 lines
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
|