Newer
Older
# Which directories to search?
def search_directories
dirs = [
"/usr/include/fox-1.6",
"/usr/local/include/fox-1.6",
"/sw/include/fox-1.6",
"/opt/local/include/fox-1.6"
]
ARGV.each do |arg|
if arg =~ /--with-fox-include/
option, value = arg.split('=')
dirs = [ value ] + dirs
dirs.uniq! # remove duplicates
end
end
dirs
end
# Return true if found in any of the search directories
def fox_include_files_found?
search_directories.each do |path|
filename = File.join(path, "fxver.h")
return true if FileTest.exist?(filename)
end
false
end
# Read installed FOX version info from fxver.h include file
def read_fox_version(filename)
foxMajor, foxMinor, foxLevel = nil, nil, nil
File.foreach(filename) do |line|
if line =~ /FOX_MAJOR/
foxMajor = line.split()[2]
elsif line =~ /FOX_MINOR/
foxMinor = line.split()[2]
elsif line =~ /FOX_LEVEL/
foxLevel = line.split()[2]
end
end
[foxMajor, foxMinor, foxLevel]
end
# Returns a string (e.g. "1.0.36") indicating the installed version of FOX.
def installed_fox_version
search_directories.each do |path|
filename = File.join(path, "fxver.h")
if FileTest.exist?(filename)
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
foxMajor, foxMinor, foxLevel = read_fox_version(filename)
return [foxMajor, foxMinor, foxLevel].join('.')
end
end
raise RuntimeError, "couldn't find FOX header files"
end
#
# Confirm that FOX is installed; check for an "fxver.h"
# include file in the directory specified via the
# --with-fox-include command line argument (if any),
# as well as /usr/include/fox-1.6, /usr/local/include/fox-1.6 and
# /sw/include/fox-1.6.
#
unless fox_include_files_found?
puts ""
puts " **********************************************************************"
puts " * Hey! *"
puts " * Where is FOX installed? *"
puts " * *"
puts " * I couldn't locate 'fxver.h' in any of the following directories: *"
puts " * *"
search_directories.each { |incdir| puts " * #{incdir}" }
puts " * *"
puts " * Please specify the locations for the FOX header files and library *"
puts " * using the --with-fox-include and --with-fox-lib options to *"
puts " * extconf.rb as described in the FXRuby installation instructions. *"
puts " **********************************************************************"
puts ""
exit
end
#
# Stable releases of FXRuby (i.e. FXRuby-1.0.x) should go with stable releases
# of FOX (i.e. fox-1.0.x) but it's only necessary for the major and minor version
# numbers to match. For example, FXRuby-1.0.22 should work fine with fox-1.0.40.
#
# Development releases of FXRuby (e.g. FXRuby-1.1.65) must go with a specific
# development version of FOX, usually the one with the same version number
# (e.g. fox-1.1.65). All three version numbers must match.
#
instMajor, instMinor, instLevel = installed_fox_version().split('.')
thisMajor, thisMinor, thisLevel = "@@FOX_VERSION@@".split('.')
expecting_stable_fox_release = ((thisMinor.to_i % 2) == 0)
if expecting_stable_fox_release
if (instMinor != thisMinor)
puts ""
puts " ********************************************************"
puts " * This version of FXRuby (@@FXRUBY_VERSION@@) must be built against"
puts " * one of the stable releases of FOX, but it appears that"
puts " * you have a development version of FOX (version #{installed_fox_version})"
puts " * installed instead. Please download and install one of"
puts " * the stable releases of FOX first, and then try again."
puts " ********************************************************"
puts ""
exit
end
else
# Minor version number is odd, so it's a development release
raise RuntimeError unless ((instMajor == thisMajor) && (instMinor == thisMinor) && (instLevel == thisLevel))
end