mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-06 14:16:32 +02:00
128 lines
4.0 KiB
Ruby
Executable File
128 lines
4.0 KiB
Ruby
Executable File
#!/usr/bin/ruby
|
|
if ARGV.include? '--help'
|
|
puts "usage: ./configure [--prefix <dir>] [--release] [--no-strip] [--skip-checks]"
|
|
exit
|
|
end
|
|
|
|
cwd = File.dirname( __FILE__ )
|
|
require "#{cwd}/admin/platform.rb"
|
|
require "#{cwd}/admin/which_qmake.rb"
|
|
require "#{cwd}/admin/utils.rb"
|
|
|
|
begin
|
|
IO.read("#{cwd}/src/global.h") =~ /LASTFM_VERSION_STRING\s+"((\d\.)*\d)"/
|
|
abort "Couldn't determine our version!" if $1.nil?
|
|
LFM_VERSION=$1
|
|
ENV['LFM_VERSION']=LFM_VERSION
|
|
|
|
h1 "Configuring liblastfm-#{LFM_VERSION}..."
|
|
|
|
unless ARGV.include? '--skip-checks'
|
|
$qmake=which_qmake
|
|
pkgconfig 'samplerate', 'libsamplerate'
|
|
pkgconfig 'fftw3f', 'fftw'
|
|
puts 'Using '+`which #{$qmake}` unless Platform::IMPL == :mswin
|
|
else
|
|
$qmake='qmake'
|
|
end
|
|
|
|
h2 'Determining installation prefix' do
|
|
if ARGV.include? '--prefix'
|
|
n=ARGV.index '--prefix'
|
|
ENV['LFM_PREFIX'] = ARGV[n+1]
|
|
end
|
|
ENV['LFM_PREFIX'] = '/usr/local' if ENV['LFM_PREFIX'].nil?
|
|
if File.exists? ENV['LFM_PREFIX'] and !File.directory? ENV['LFM_PREFIX']
|
|
abort "Installation prefix exists but isn't a directory: "+ENV['LFM_PREFIX']
|
|
end
|
|
puts "Will install to: "+ENV['LFM_PREFIX']
|
|
end
|
|
|
|
h1 'Generating Build System'
|
|
|
|
h2 'Generating .qmake.env' do
|
|
f = File.new("#{cwd}/.qmake.env", 'w')
|
|
f.write qmake_env('CC', 'QMAKE_CC')
|
|
f.write qmake_env('CXX', 'QMAKE_CXX')
|
|
f.write qmake_env('LDFLAGS', 'QMAKE_LFLAGS_RELEASE')
|
|
f.write qmake_env(['CFLAGS', 'CPPFLAGS'], 'QMAKE_CFLAGS_RELEASE')
|
|
f.write qmake_env(['CXXFLAGS', 'CPPFLAGS'], 'QMAKE_CXXFLAGS_RELEASE')
|
|
f.close
|
|
end unless Platform::IMPL == :mswin
|
|
|
|
h2 "Running qpp..." do
|
|
['src/lastfm.pro','src/fingerprint/fingerprint.pro'].each do |p|
|
|
d="#{cwd}/#{File.dirname p}"
|
|
f=File.new "#{d}/_files.qmake", 'w'
|
|
f.write `ruby admin/qpp #{p}`
|
|
# on Windows VERSION produces lastfm0.dll, the 0 breaks the build
|
|
f.puts "VERSION = #{LFM_VERSION}" unless Platform::OS == :win32
|
|
end
|
|
end
|
|
|
|
h2 "Configuring qmake..." do
|
|
args=Array.new
|
|
args << '-spec macx-g++' if Platform::IMPL == :macosx
|
|
if ARGV.include? '--release'
|
|
args << '-config release'
|
|
args << '"CONFIG += app_bundle"' if Platform::IMPL == :macosx and ARGV.include? '--bundle'
|
|
else
|
|
args << '-config debug'
|
|
end
|
|
if ARGV.include? '--no-strip'
|
|
args << '"CONFIG += nostrip"'
|
|
end
|
|
ENV['LFM_QMAKE'] = "#{$qmake} #{args.join(' ')}"
|
|
end
|
|
|
|
h2 "Generating Makefile..." do
|
|
hs = Array.new
|
|
hs << 'global.h'
|
|
hs << 'core/UrlBuilder.h' << 'core/XmlQuery.h' << 'core/misc.h'
|
|
hs << 'fingerprint/Fingerprint.h' << 'fingerprint/FingerprintableSource.h'
|
|
hs << 'radio/RadioStation.h' << 'radio/RadioTuner.h'
|
|
hs << 'scrobble/Audioscrobbler.h' << 'scrobble/ScrobblePoint.h' << 'scrobble/ScrobbleCache.h'
|
|
hs << 'types/AbstractType.h' << 'types/Track.h' << 'types/Mbid.h' << 'types/Artist.h' << 'types/Album.h' << 'types/FingerprintId.h' << 'types/Playlist.h' << 'types/Tag.h' << 'types/User.h' << 'types/Xspf.h'
|
|
hs << 'ws/ws.h' << 'ws/InternetConnectionMonitor.h' << 'ws/NetworkAccessManager.h'
|
|
|
|
File.new("#{cwd}/Makefile", 'w').write `ruby admin/Makefile.rb #{hs.join(' ')}`
|
|
end
|
|
|
|
case Platform::IMPL
|
|
when :mswin then make='nmake all'
|
|
else make='make' # NOTE only tested with GNU make, sorry :(
|
|
end
|
|
|
|
puts
|
|
puts "Good, your configure is finished! Now type: #{make}"
|
|
|
|
rescue QMakeTooOld
|
|
puts <<-sput
|
|
|
|
Your version of Qt seems to be too old, we require Qt 4.4 or above.
|
|
|
|
It is possible you have Qt3 and Qt4 both installed. Locate your Qt4
|
|
installation and ensure it is placed first in the path, eg:
|
|
|
|
PATH=/opt/qt4/bin:\$PATH ./configure
|
|
|
|
sput
|
|
exit 1
|
|
rescue QMakeNotFound
|
|
puts "Sorry, qmake was not found, is Qt4 installed?"
|
|
exit 2
|
|
rescue PkgNotFound => e
|
|
puts <<-sput
|
|
|
|
Sorry, we couldn't find #{e}.
|
|
You can try to compile anyway by forcing configure to finish:
|
|
|
|
./configure --skip-checks
|
|
|
|
sput
|
|
exit 3
|
|
rescue PkgConfigNotFound
|
|
puts "Sorry, pkg-config could not be found. You should install it!"
|
|
exit 4
|
|
end
|