Sha256: 19b7ef50b8e6431d5e195ece2ae16030d0c8877b56629b975d3d2a3cc66986d4
Contents?: true
Size: 1.7 KB
Versions: 2
Compression:
Stored size: 1.7 KB
Contents
# ========================================================================= # Ceedling - Test-Centered Build System for C # ThrowTheSwitch.org # Copyright (c) 2010-25 Mike Karlesky, Mark VanderVoord, & Greg Williams # SPDX-License-Identifier: MIT # ========================================================================= # modified version of Rake's provided make-style dependency loader # customizations: # (1) handles windows drives in paths -- colons don't confuse task demarcation # (2) handles spaces in directory paths module Rake # Makefile loader to be used with the import file loader. class MakefileLoader # Load the makefile dependencies in +fn+. def load(fn) open(fn) do |mf| lines = mf.read lines.gsub!(/#[^\n]*\n/m, "") # remove comments lines.gsub!(/\\\n/, ' ') # string together line continuations into single line lines.split("\n").each do |line| process_line(line) end end end private # Process one logical line of makefile data. def process_line(line) # split on presence of task demaractor followed by space (i.e don't get confused by a colon in a win path) file_tasks, args = line.split(/:\s/) return if args.nil? # split at non-escaped space boundary between files (i.e. escaped spaces in paths are left alone) dependents = args.split(/\b\s+/) # replace escaped spaces and clean up any extra whitespace dependents.map! { |path| path.gsub(/\\ /, ' ').strip } file_tasks.strip.split.each do |file_task| file file_task => dependents end end end # Install the handler Rake.application.add_loader('mf', MakefileLoader.new) end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
ceedling-1.0.1 | lib/ceedling/makefile.rb |
ceedling-1.0.0 | lib/ceedling/makefile.rb |