#!/usr/bin/ruby require 'fileutils' require 'optparse' include FileUtils baseDir = Dir.pwd gitArgs = "" qtPath = "" doPull = false doCMake = false doInit = false doClean = false doPackage = false cmakePlatformArgs = "-G Xcode" cmakeCommonArgs = "-DCMAKE_INSTALL_PREFIX=#{baseDir}/dist" cmakeSGArgs = "-DSIMGEAR_SHARED=1" cmakeFGArgs = "-DSIMGEAR_SHARED=1" sfUser = "jmturner" OptionParser.new do |opts| opts.banner = "Usage: commands.rb [options]" opts.on("", "--init", "Setup empty") do |v| doInit = v end opts.on("-p", "--[no-]pull", "Pull from Git") do |v| doPull = v end opts.on("-c", "--cmake", "Run Cmake") do |v| doCMake = v end opts.on("", "--clean", "Clean build dirs") do |v| doClean = v end opts.on("-r", "--rebase", "Rebase when pulling") do |v| gitArgs += "--rebase" end opts.on("", "--qt=QTPATH", "Set Qt path when running cmake") do |v| qtPath = v end end.parse!(ARGV) def cloneEverything() puts "Initialising" if File.exist?("#{Dir.pwd}/simgear") or File.exist?("#{Dir.pwd}/flightgear") puts "Checkout already exists" return end `git clone ssh://#{sfUser}@git.code.sf.net/p/flightgear/simgear simgear` `git clone ssh://#{sfUser}@git.code.sf.net/p/flightgear/flightgear flightgear` `git clone git@github.com:zakalawe/osg.git osg` end def createDirs() `mkdir -p sgbuild` `mkdir -p fgbuild` `mkdir -p osg_fg_build` end # path is needed for Cmake & running macdeployqt if qtPath != "" ENV['PATH'] = "#{ENV['PATH']}:#{qtPath}/bin" end if doClean puts "Cleaning build dirs" `rm -r sgbuild` `rm -r fgbuild` `rm -r osg_fg_build` end if doInit puts "Doing init" cloneEverything() end if doPull puts "Pulling from Git" dataPull = Thread.new do puts "Syncing FGData" Dir.chdir "#{baseDir}/fgdata" `git pull #{gitArgs}` end Dir.chdir "#{baseDir}/simgear" `git pull #{gitArgs}` Dir.chdir "#{baseDir}/flightgear" `git pull #{gitArgs}` end createDirs() Dir.chdir "#{baseDir}/osg_fg_build" if doCMake or !File.exist?("#{Dir.pwd}/Makefile") `cmake ../osg #{cmakeCommonArgs}` end puts "Building OpenSceneGraph" `make -j4` `make install` Dir.chdir "#{baseDir}/sgbuild" if doCMake or !File.exist?("#{Dir.pwd}/SimGear.xcodeproj") `cmake ../simgear #{cmakePlatformArgs} #{cmakeCommonArgs} #{cmakeSGArgs}` end puts "Building SimGear Debug" `xcodebuild -target install -configuration Debug` puts "Building SimGear Release" `xcodebuild -target install -configuration Release` Dir.chdir "#{baseDir}/fgbuild" if doCMake or !File.exist?("#{Dir.pwd}/FlightGear.xcodeproj") if qtPath != "" cmakeFGArgs = '-DENABLE_QT=1' end `cmake ../flightgear #{cmakePlatformArgs} #{cmakeCommonArgs} #{cmakeFGArgs}` end puts "Building FlightGear Debug" `xcodebuild -target fgfs -configuration Debug` puts "Building FlightGear Release" `xcodebuild -target fgfs -configuration Release` puts "All done."