diff options
Diffstat (limited to 'ext/win32-eventlog/Rakefile')
-rw-r--r-- | ext/win32-eventlog/Rakefile | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/ext/win32-eventlog/Rakefile b/ext/win32-eventlog/Rakefile new file mode 100644 index 0000000000..0200783433 --- /dev/null +++ b/ext/win32-eventlog/Rakefile @@ -0,0 +1,49 @@ +require 'rubygems' +require 'rake' +require 'mkmf' +require 'win32/eventlog' + +desc "Building event log dll" + +def ensure_present(commands) + commands.each do |c| + unless find_executable c + warn "Could not find #{c}. Windows Event Logging will not correctly function." + end + end +end + + +EVT_MC_FILE = 'chef-log.man' +EVT_RC_FILE = 'chef-log.rc' +EVT_RESOURCE_OBJECT = 'resource.o' +EVT_SHARED_OBJECT = 'chef-log.dll' +MC = 'windmc' +RC = 'windres' +CC = 'gcc' + +ensure_present [MC, RC, CC] + +task :default => [EVT_RESOURCE_OBJECT, EVT_SHARED_OBJECT, :register] + +file EVT_RC_FILE=> EVT_MC_FILE do + sh "#{MC} #{EVT_MC_FILE}" +end + +file EVT_RESOURCE_OBJECT => EVT_RC_FILE do + sh "#{RC} -i #{EVT_RC_FILE} -o #{EVT_RESOURCE_OBJECT}" +end + +file EVT_SHARED_OBJECT => EVT_RESOURCE_OBJECT do + sh "#{CC} -o #{EVT_SHARED_OBJECT} -shared #{EVT_RESOURCE_OBJECT}" +end + +task :register => EVT_SHARED_OBJECT do + dll_file = File.expand_path(EVT_SHARED_OBJECT) + Win32::EventLog.add_event_source( + :source => "Application", + :key_name => "Chef", + :event_message_file => dll_file, + :category_message_file => dll_file + ) +end |