shithub: h264bsd

ref: eaadd4c4e7232a8ad0d795b534dfe2c29de99cf9
dir: /posix/Rakefile/

View raw version
CC = "cc"
AR = "ar"

if ENV["DEBUG"]
  CC_FLAGS = ENV["CC_FLAGS"] || "-O0 -g4 -D_ASSERT_USED -D_ERROR_PRINT"
else
  CC_FLAGS = ENV["CC_FLAGS"] || "-O3 -D_ERROR_PRINT"
end

static_lib = "lib/libh264bsd.a"
test_app = "bin/test_h264bsd"

directory "obj"
directory "bin"
directory "lib"

# Convert .c file in ../src to .o file in obj
rule ".o" => ->(o_file) {[o_file.gsub(/o$/, 'c').gsub("obj/", "../src/"), "obj"]} do |t|
  sh "#{CC} #{t.source} -c #{CC_FLAGS} -o #{t.name}"
end

# Use all .c files in the ../src directory
o_files = FileList["../src/*.c"].gsub(/c$/, 'o').gsub("../src/", "obj/")

# Build static lib
file static_lib => o_files + ["lib"] do |t|
  sh "#{AR} rcs #{static_lib} #{o_files.join(' ')}"
end

# Build test application
file test_app => [static_lib, "test_h264bsd.c", "bin"] do |t|
  sh "#{CC} test_h264bsd.c -Llib -lh264bsd -o #{test_app}"
end

# Run test application
task :test => test_app do |t|
  sh "#{test_app} ../test/test_1920x1080.h264"
end

task :clean do
  FileUtils.rm_rf("obj")
  FileUtils.rm_rf("bin")
  FileUtils.rm_rf("lib")
end

task :default => [static_lib]