require "bundler" Bundler.setup(:default) require "rake/clean" require "rscons" NAME = "jes" GTEST_VERSION = "1.7.0" base_env = Rscons::Environment.new do |env| env.build_root = "build" env["CPPPATH"] << "src/lib/include" env["CFLAGS"] += ["-Wall", "-O2"] env["CXXFLAGS"] += ["-Wall", "-O2"] end task :library do base_env.clone(clone: :all) do |env| env.Library("^/lib#{NAME}.a", Dir["src/lib/**/*.{cc,c}"]) end end task :gui => :library do base_env.clone(clone: :all) do |env| env["CFLAGS"] += `sdl2-config --cflags`.split(" ") + `freetype-config --cflags`.split(" ") env["CXXFLAGS"] += `sdl2-config --cflags`.split(" ") + `freetype-config --cflags`.split(" ") env["LDCMD"] += `sdl2-config --libs`.split(" ") + `freetype-config --libs`.split(" ") env["LIBS"] += ["dl", "GL"] env.Program("^/jes", Dir["src/gui/**/*.{cc,c}"]) end end task :test => :library do base_env.clone(clone: :all) do |env| env["CPPPATH"] << "gtest-#{GTEST_VERSION}/include" env["CPPPATH"] << "gtest-#{GTEST_VERSION}" env["LIBS"] << NAME env["LIBPATH"] << env.build_root sources = Dir["gtest-#{GTEST_VERSION}/src/gtest-all.cc", "gtest-#{GTEST_VERSION}/src/gtest_main.cc", "test/src/**/*.cc"] env.Program("build/tests", sources) if RUBY_PLATFORM =~ /linux/ env["LIBS"] << "pthread" end end system("./build/tests") end task :default => :all task :all => [:library, :gui] task :clean do Rscons.clean end