Add my Mac and Linux build helpers.
This is to save new contributors some time getting a build env, since download-and-compile produces a slightly Baroque setup for day-to-day development.
This commit is contained in:
parent
08cb5c481b
commit
224a9a0b18
@ -6,9 +6,16 @@ and Linux ones require Ruby (which is usually pre-installed). There are no
|
|||||||
instructions - if you can't figure out what these do from reading the scripts,
|
instructions - if you can't figure out what these do from reading the scripts,
|
||||||
you almost certainly should not be using them!
|
you almost certainly should not be using them!
|
||||||
|
|
||||||
They all assume a top-level folder (called 'FGFS' in my case) which contains
|
They all assume a top-level folder which contains
|
||||||
checkouts of simgear, flightgear, fgdata, OpenSceneGraph (into a dir named
|
checkouts of simgear, flightgear, fgdata, OpenSceneGraph (into a dir named
|
||||||
'osg') and the windows-3rd-party dir in the case of Windows. It's assumed
|
'osg') and the windows-3rd-party dir in the case of Windows. It's assumed
|
||||||
you copy the script to that same dir, edit paths and run from there.
|
you copy the script to that same dir, edit paths and run from there.
|
||||||
|
|
||||||
|
The Mac and Linux scripts will do the checkout for you - the Windows is not
|
||||||
|
so smart because Window batch scripts are not my friend.
|
||||||
|
|
||||||
|
On Mac you will need to grab the 3rdparty-dependency-build from Jenkins, or
|
||||||
|
build PLIB manually yourself, either should be straightforward. For all other
|
||||||
|
dependencies on Mac / Linux use your package manager / Homebrew.
|
||||||
|
|
||||||
Files will be installed into a subdir called 'dist'
|
Files will be installed into a subdir called 'dist'
|
||||||
|
130
compile-scripts/commands-linux.rb
Executable file
130
compile-scripts/commands-linux.rb
Executable file
@ -0,0 +1,130 @@
|
|||||||
|
#!/usr/bin/ruby
|
||||||
|
|
||||||
|
require 'fileutils'
|
||||||
|
require 'optparse'
|
||||||
|
include FileUtils
|
||||||
|
|
||||||
|
baseDir = Dir.pwd
|
||||||
|
gitArgs = ""
|
||||||
|
qtPath = ""
|
||||||
|
|
||||||
|
doPull = false
|
||||||
|
doCMake = false
|
||||||
|
doInit = false
|
||||||
|
doClean = false
|
||||||
|
doPackage = false
|
||||||
|
|
||||||
|
cmakeCommonArgs = "-DCMAKE_INSTALL_PREFIX=#{baseDir}/dist -DSIMGEAR_SHARED=1"
|
||||||
|
cmakeFGArgs = ""
|
||||||
|
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 ssh://#{sfUser}@git.code.sf.net/p/flightgear/fgdata fgdata`
|
||||||
|
`git clone https://github.com/openscenegraph/osg.git osg`
|
||||||
|
end
|
||||||
|
|
||||||
|
def createDirs()
|
||||||
|
`mkdir -p sgbuild`
|
||||||
|
`mkdir -p fgbuild`
|
||||||
|
`mkdir -p osg_release_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_release_build`
|
||||||
|
createDirs()
|
||||||
|
end
|
||||||
|
|
||||||
|
if doInit
|
||||||
|
puts "Doing init"
|
||||||
|
cloneEverything()
|
||||||
|
createDirs();
|
||||||
|
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
|
||||||
|
|
||||||
|
Dir.chdir "#{baseDir}/osg_release_build"
|
||||||
|
if doCMake or !File.exist?("#{Dir.pwd}/Makefile")
|
||||||
|
`cmake ../osg -DCMAKE_INSTALL_PREFIX=#{baseDir}/dist`
|
||||||
|
end
|
||||||
|
|
||||||
|
puts "Building OpenSceneGraph"
|
||||||
|
`make`
|
||||||
|
`make install`
|
||||||
|
|
||||||
|
Dir.chdir "#{baseDir}/sgbuild"
|
||||||
|
|
||||||
|
if doCMake or !File.exist?("#{Dir.pwd}/Makefile")
|
||||||
|
`cmake ../simgear #{cmakeCommonArgs}`
|
||||||
|
end
|
||||||
|
|
||||||
|
puts "Building SimGear"
|
||||||
|
`make`
|
||||||
|
`make install`
|
||||||
|
|
||||||
|
Dir.chdir "#{baseDir}/fgbuild"
|
||||||
|
|
||||||
|
if doCMake or !File.exist?("#{Dir.pwd}/Makefile")
|
||||||
|
if qtPath != ""
|
||||||
|
cmakeFGArgs = '-DENABLE_QT=1'
|
||||||
|
end
|
||||||
|
`cmake ../flightgear #{cmakeCommonArgs} #{cmakeFGArgs}`
|
||||||
|
end
|
||||||
|
|
||||||
|
puts "Building FlightGear"
|
||||||
|
`make`
|
||||||
|
`make install`
|
||||||
|
|
||||||
|
puts "All done."
|
134
compile-scripts/commands-mac.rb
Executable file
134
compile-scripts/commands-mac.rb
Executable file
@ -0,0 +1,134 @@
|
|||||||
|
#!/usr/bin/ruby
|
||||||
|
|
||||||
|
require 'fileutils'
|
||||||
|
require 'optparse'
|
||||||
|
include FileUtils
|
||||||
|
|
||||||
|
baseDir = Dir.pwd
|
||||||
|
gitArgs = ""
|
||||||
|
qtPath = ""
|
||||||
|
|
||||||
|
doPull = false
|
||||||
|
doCMake = false
|
||||||
|
doInit = false
|
||||||
|
doClean = false
|
||||||
|
doPackage = false
|
||||||
|
|
||||||
|
cmakeCommonArgs = "-G Xcode -DCMAKE_INSTALL_PREFIX=#{baseDir}/dist"
|
||||||
|
cmakeSGArgs = "-DSIMGEAR_SHARED=1 -DENABLE_CURL=0"
|
||||||
|
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_mac_release_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_mac_release_build`
|
||||||
|
createDirs()
|
||||||
|
end
|
||||||
|
|
||||||
|
if doInit
|
||||||
|
puts "Doing init"
|
||||||
|
cloneEverything()
|
||||||
|
createDirs();
|
||||||
|
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
|
||||||
|
|
||||||
|
Dir.chdir "#{baseDir}/osg_mac_release_build"
|
||||||
|
if doCMake or !File.exist?("#{Dir.pwd}/Makefile")
|
||||||
|
`cmake ../osg -DCMAKE_INSTALL_PREFIX=#{baseDir}/dist`
|
||||||
|
end
|
||||||
|
|
||||||
|
puts "Building OpenSceneGraph"
|
||||||
|
`make -j4`
|
||||||
|
`make install`
|
||||||
|
|
||||||
|
Dir.chdir "#{baseDir}/sgbuild"
|
||||||
|
|
||||||
|
if doCMake or !File.exist?("#{Dir.pwd}/SimGear.xcodeproj")
|
||||||
|
`cmake ../simgear #{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 #{cmakeCommonArgs} #{cmakeFGArgs}`
|
||||||
|
end
|
||||||
|
|
||||||
|
puts "Building FlightGear Debug"
|
||||||
|
`xcodebuild -target fgfs -configuration Debug`
|
||||||
|
|
||||||
|
puts "Building FlightGear Release"
|
||||||
|
`xcodebuild -target fgfs -configuration Release`
|
||||||
|
|
||||||
|
puts "All done."
|
Loading…
Reference in New Issue
Block a user