mirror of https://github.com/PCSX2/pcsx2.git
152 lines
3.8 KiB
Ruby
152 lines
3.8 KiB
Ruby
|
#!/usr/bin/env ruby
|
||
|
|
||
|
# Usage: ruby build.rb [option] [pcsx2, plugins, <plugin name>] [dev,debug,release] [all, install, clean]
|
||
|
# If you don't specify pcsx2, plugins, or a plugin name, it will assume you want to rebuild everything.
|
||
|
# If you don't specify dev or debug, it assumes a release build.
|
||
|
# If it isn't all, install, or clean, it assumes install.
|
||
|
|
||
|
# If you want other options, add them to $pcsx2_build_types. This is still a work in progress...
|
||
|
# --arcum42
|
||
|
|
||
|
require "fileutils.rb"
|
||
|
include FileUtils
|
||
|
|
||
|
$main_dir = Dir.pwd
|
||
|
$pcsx2_install_dir = "#{$main_dir}/bin"
|
||
|
$plugin_install_dir = "#{$main_dir}/bin/plugins"
|
||
|
|
||
|
$pcsx2_dir = "#{$main_dir}/pcsx2"
|
||
|
$plugins_dir = "#{$main_dir}/plugins"
|
||
|
|
||
|
$pcsx2_prefix = " --prefix #{$main_dir}"
|
||
|
$plugins_prefix = " --prefix #{$plugin_install_dir}"
|
||
|
|
||
|
$plugin_list=["CDVDnull", "dev9null", "FWnull", "USBnull", "SPU2null", "zerogs", "zzogl", "zeropad", "zerospu2", "PeopsSPU2", "CDVDiso", "CDVDisoEFP", "CDVDlinuz"]
|
||
|
|
||
|
$pcsx2_build_types = {
|
||
|
"dev" => " --enable-devbuild ",
|
||
|
"debug" => " --enable-debug ",
|
||
|
"release" => " "
|
||
|
}
|
||
|
|
||
|
$pcsx2_release_params=["dev","debug","release"]
|
||
|
$make_params=["all", "clean","install"]
|
||
|
|
||
|
def plugin_src_dir(plugin_name)
|
||
|
name = "#{$plugins_dir}/#{plugin_name}/"
|
||
|
case plugin_name
|
||
|
when "CDVDiso" then
|
||
|
name += "src"
|
||
|
when "CDVDisoEFP" then
|
||
|
name += "src/Linux"
|
||
|
when "CDVDlinuz"
|
||
|
name += "Src/Linux"
|
||
|
when "zerogs", "zzogl"
|
||
|
name += "opengl"
|
||
|
end
|
||
|
|
||
|
return name
|
||
|
end
|
||
|
|
||
|
def announce(my_program)
|
||
|
print "---------------\n"
|
||
|
print "Building #{my_program}\n"
|
||
|
print "---------------\n"
|
||
|
end
|
||
|
|
||
|
def make(options)
|
||
|
system("make #{options}")
|
||
|
end
|
||
|
|
||
|
def rebuild(options)
|
||
|
system("aclocal")
|
||
|
system("automake")
|
||
|
system("autoconf")
|
||
|
system("chmod +x configure")
|
||
|
system("./configure #{options}")
|
||
|
make "clean"
|
||
|
end
|
||
|
|
||
|
def install(build_name)
|
||
|
make "install"
|
||
|
|
||
|
case build_name
|
||
|
# If the package isn't inclined to obey simple instructions...
|
||
|
when "CDVDisoEFP" then
|
||
|
system("cp #{plugin_src_dir(build_name)}/cfgCDVDisoEFP #{$plugin_install_dir}")
|
||
|
system("cp #{plugin_src_dir(build_name)}/libCDVDisoEFP.so #{$plugin_install_dir}")
|
||
|
when "CDVDlinuz" then
|
||
|
system("cp #{plugin_src_dir(build_name)}/cfgCDVDlinuz #{$plugin_install_dir}")
|
||
|
system("cp #{plugin_src_dir(build_name)}/libCDVDlinuz.so #{$plugin_install_dir}")
|
||
|
when "PeopsSPU2" then
|
||
|
system("cp #{plugin_src_dir(build_name)}/libspu2Peops*.so* #{$plugin_install_dir}")
|
||
|
|
||
|
# Copy the shaders over. Shouldn't the makefile do this?
|
||
|
when "zzogl","zerogs" then
|
||
|
system("cp #{plugin_src_dir(build_name)}/Win32/ps2hw.dat #{$plugin_install_dir}")
|
||
|
|
||
|
#And while we have the opportunity...
|
||
|
when "pcsx2" then
|
||
|
svn_revision = `svn info | grep Revision:`
|
||
|
svn_revision = /[0-9]+/.match(svn_revision)
|
||
|
system("cp #{$pcsx2_install_dir}/pcsx2 #{$pcsx2_install_dir}/pcsx2-#{svn_revision}")
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def build(build_name, make_parameter)
|
||
|
announce "#{build_name.capitalize}"
|
||
|
|
||
|
if build_name != "pcsx2" then
|
||
|
build_dir = plugin_src_dir(build_name)
|
||
|
else
|
||
|
build_dir = "#{$pcsx2_dir}"
|
||
|
end
|
||
|
|
||
|
Dir.chdir build_dir
|
||
|
|
||
|
case make_parameter
|
||
|
when "all" then
|
||
|
if build_name == "pcsx2"
|
||
|
rebuild($pcsx2_prefix)
|
||
|
else
|
||
|
rebuild($plugins_prefix)
|
||
|
end
|
||
|
install(build_name)
|
||
|
|
||
|
when "clean" then
|
||
|
make "clean"
|
||
|
|
||
|
else
|
||
|
install(build_name)
|
||
|
end
|
||
|
|
||
|
Dir.chdir $main_dir
|
||
|
end
|
||
|
|
||
|
build_parameter = "all"
|
||
|
make_parameter = ""
|
||
|
build_items = Array.new([])
|
||
|
|
||
|
ARGV.each do |x|
|
||
|
make_parameter = x if $make_params.include?(x)
|
||
|
|
||
|
build_items.push(x) if $plugin_list.include?(x) or (x == "pcsx2")
|
||
|
$pcsx2_prefix = $pcsx2_build_types[x] + $pcsx2_prefix if $pcsx2_release_params.include?(x)
|
||
|
|
||
|
if (x == "plugins") then
|
||
|
x = $plugin_list
|
||
|
build_items.push(x)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
if build_items.empty? then
|
||
|
build_items.push($plugin_list)
|
||
|
build_items.push("pcsx2")
|
||
|
end
|
||
|
|
||
|
build_items.flatten!
|
||
|
|
||
|
build_items.each do |x|
|
||
|
build(x,make_parameter)
|
||
|
end
|