-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmake.pl
executable file
·78 lines (72 loc) · 2.04 KB
/
make.pl
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
#!/usr/bin/perl
#
# Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
#
# @APPLE_LICENSE_HEADER_START@
#
# This file contains Original Code and/or Modifications of Original Code
# as defined in and that are subject to the Apple Public Source License
# Version 2.0 (the 'License'). You may not use this file except in
# compliance with the License. Please obtain a copy of the License at
# http://www.opensource.apple.com/apsl/ and read it before using this
# file.
#
# The Original Code and all software distributed under the License are
# distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
# EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
# INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
# Please see the License for the specific language governing rights and
# limitations under the License.
#
# @APPLE_LICENSE_HEADER_END@
use strict;
# exec make, but first run make with a target of no64. If it outputs YES,
# then remove 64-bit arches from RC_CFLAGS and RC_ARCHS, remover RC_xxx,
# where xxx is a 64-bit architecture. If there are no archs left, just
# return success.
my $dir = '.';
for(0...$#ARGV) {
if($ARGV[$_] eq '-C') {
$dir = $ARGV[$_ + 1];
last;
}
}
my $no64 = `make -C $dir no64`;
chomp($no64);
if($no64 eq 'YES') {
my @archs;
my @arch64;
my @cflags;
my $arch = 0;
for(split(" ", $ENV{RC_CFLAGS})) {
if($arch) {
if(/64/) {
push(@arch64, $_);
} else {
push(@cflags, '-arch', $_);
push(@archs, $_);
}
$arch = 0;
next;
}
if($_ eq '-arch') {
$arch = 1;
next;
}
push(@cflags, $_);
}
unless(scalar(@archs) > 0) {
print "Not building:\tmake @ARGV\n";
exit 0;
}
$ENV{RC_CFLAGS} = join(' ', @cflags);
$ENV{RC_ARCHS} = join(' ', @archs);
push(@ARGV, "RC_CFLAGS=$ENV{RC_CFLAGS}", "RC_ARCHS=$ENV{RC_ARCHS}");
for(@arch64) {
delete($ENV{"RC_$_"});
push(@ARGV, "RC_$_=");
}
}
print "make @ARGV\n";
exec {'make'} 'make', @ARGV;