blob: 04e6cda4c42fcc47124a56b5b7f5135de83b05e9 (
plain)
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
83
84
85
86
87
88
89
90
91
92
93
|
package BoxPlatform;
use Exporter;
@ISA = qw/Exporter/;
@EXPORT = qw/$build_os $build_cpu $target_os $make_command $bsd_make $platform_define $platform_cpu $gcc_v3 $product_version $product_name $install_into_dir $sub_make_options $platform_compile_line_extra $platform_link_line_extra $platform_lib_files $platform_exe_ext/;
BEGIN
{
# which OS are we building under?
$build_os = `uname`;
chomp $build_os;
$build_cpu = `uname -p`;
chomp $build_cpu;
# Cygwin Builds usually something like CYGWIN_NT-5.0, CYGWIN_NT-5.1
# Box Backup tried on Win2000,XP only :)
$build_os = 'CYGWIN' if $build_os =~ m/CYGWIN/;
$make_command = ($build_os eq 'Darwin') ? 'bsdmake' : ($build_os eq 'SunOS') ? 'gmake' : 'make';
$bsd_make = ($build_os ne 'Linux' && $build_os ne 'CYGWIN' && $build_os ne "SunOS");
# blank extra flags by default
$platform_compile_line_extra = '@CPPFLAGS@ @CXXFLAGS@ @CXXFLAGS_STRICT@';
$platform_compile_line_extra =~ s/ -O2//;
$platform_link_line_extra = '@LDFLAGS@';
$platform_lib_files = '@LIBS@';
$target_os = '@target_os@';
$platform_exe_ext = '@EXEEXT@';
# get version
open VERSION,"VERSION.txt" or die "VERSION.txt: $!";
$product_version = <VERSION>;
chomp $product_version;
$product_name = <VERSION>;
chomp $product_name;
close VERSION;
if($product_version eq 'USE_SVN_VERSION')
{
# for developers, use SVN version
my $svnversion = `svnversion .`;
chomp $svnversion;
$svnversion =~ tr/0-9A-Za-z/_/c;
open INFO,'svn info . |';
my $svnurl;
while(<INFO>)
{
if(m/^URL: (.+?)[\n\r]+/)
{
$svnurl = $1
}
}
close INFO;
$svnurl =~ m!box/(.+)$!;
my $svndir = $1;
$svndir =~ tr/0-9A-Za-z/_/c;
$product_version = $svndir.'_'.$svnversion;
}
# where to put the files
$install_into_dir = '@bindir_expanded@';
# if it's Darwin,
if($build_os eq 'Darwin')
{
# see how many processors there are, and set make flags accordingly
my $cpus = `sysctl hw.ncpu`;
if($cpus =~ m/hw.ncpu:\s(\d+)/ && $1 > 1)
{
print "$1 processors detected, will set make to perform concurrent jobs\n";
$sub_make_options = ' -j '.($1 + 1);
}
# test for fink installation
if(-d '/sw/include' && -d '/sw/lib')
{
print "Fink installation detected, will use headers and libraries\n\n\n";
$platform_compile_line_extra = '-I/sw/include ';
$platform_link_line_extra = '-L/sw/lib ';
}
}
}
sub make_flag
{
if($bsd_make)
{
return "-D $_[0]"
}
return $_[0].'=1';
}
1;
|