build system: add accidentally ignored compilation_database.rb

This commit is contained in:
Moritz Bunkus 2018-02-27 20:42:01 +01:00
parent 9d2dd3b10c
commit 5f3f995fde
2 changed files with 36 additions and 1 deletions

1
.gitignore vendored
View File

@ -50,7 +50,6 @@
/po/*.mo
/po/mkvtoolnix.pot
/po/qt/*.qm
/rake.d/compilation_database.rb
/rake.d/dependency.d
/share/icons/*/*.h
/src/*/qt_resources.cpp

View File

@ -0,0 +1,36 @@
module Mtx
module CompilationDatabase
@file_name = "#{$build_dir}/compile_commands.json"
@compilation_commands = {}
def self.database_file_name
@file_name
end
def self.read
return {} unless FileTest.exists?(@file_name)
Hash[
*JSON.parse(IO.readlines(@file_name).join("")).
map { |entry| [ entry["file"], entry ] }.
flatten
]
end
def self.write
return if @compilation_commands.empty?
return if !FileTest.exists?(@file_name) && !c?(:BUILD_COMPILATION_DATABASE)
entries = self.read.merge(@compilation_commands).values.sort_by { |e| e["file"] }
File.open(@file_name, "w") do |f|
f.write(JSON.generate(entries, :indent => " ", :object_nl => "\n", :array_nl => "\n"))
end
end
def self.add entry
@compilation_commands[entry["file"]] = entry
end
end
end
at_exit { Mtx::CompilationDatabase.write }