-
Notifications
You must be signed in to change notification settings - Fork 16
/
configure
executable file
·82 lines (74 loc) · 2 KB
/
configure
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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
#!/usr/bin/env ruby
#
# Copyright 2009, Curtis Spencer.
#
# This configure script is based on Lloyd Hilaiel's configure script in yajl
# Copyright 2007-2009, Lloyd Hilaiel.
#
require 'fileutils'
require 'optparse'
options = {}
OptionParser.new do |opts|
opts.banner = "Usage: configure [options]"
opts.on("-p", "--prefix PATH", "Set installation prefix") do |prefix|
options[:prefix] = prefix
end
opts.on("-d","--debug", "Configure with debug options enabled") do |d|
options[:debug] = d
end
opts.on_tail("-h", "--help", "Output usage summary") do
puts opts
exit
end
end.parse!
additional_cmake_options = []
if options[:debug]
puts "== Generating Debug Configuration"
additional_cmake_options << "-D CMAKE_BUILD_TYPE=Debug"
end
if options[:prefix]
additional_cmake_options << "-DCMAKE_INSTALL_PREFIX='#{options[:prefix]}'"
end
puts "== Removing Old Build Files"
FileUtils.rm_rf("build")
FileUtils.rm_f("Makefile")
puts "== Running CMake in Build Directory"
FileUtils.mkdir("build")
FileUtils.cd("build") do
# Check for cmake's existence
if (!system("cmake > /dev/null"))
puts "The \"cmake\" program is required to configure pillowtalk. It's"
puts "available from most ports/packaging systems and http://cmake.org"
exit 1
end
puts "cmake #{additional_cmake_options.join(' ')} .."
if (!system("cmake #{additional_cmake_options.join(' ')} .."))
exit 1
end
end
# now generate a Makefile
puts "== Generating Makefile"
File.open("Makefile", "w+") do |f|
f.puts ".PHONY: all clean distclean install test distro"
f.puts "all: distro"
f.puts
f.puts "distro:"
f.puts " @cd build && make"
f.puts
f.puts "doc:"
f.puts " @cd build && make doc"
f.puts
f.puts "test:"
f.puts " @cd build && make && make test"
f.puts
f.puts "clean:"
f.puts " @cd build && make clean"
f.puts
f.puts "distclean:"
f.puts " @rm -rf Makefile build"
f.puts
f.puts "install: all"
f.puts " @cd build && make && make install"
f.puts
end
puts "== Configuration complete"