OSDN Git Service

BuildSystem: effects Darwin platforms only
[handbrake-jp/handbrake-jp-git.git] / make / xcodemake
1 #!/bin/bash
2 #
3
4 set -e
5
6 ## This script is invoked by Xcode external targets.
7 ##
8 ## We must guarantee no jobserver is passed through since the file-descriptors
9 ## have been clobbered by Xcode. If this is not done then make behaves as if
10 ## it is allowed to run an infinite number of jobs.
11 ##
12 MAKEFLAGS=
13 MFLAGS=
14
15 ## sanity check - the build system only supports 1 arch at a time
16 archcount=`echo $ARCHS | awk '{ print NF }'`
17 if [ "$archcount" -ne 1 ]; then
18     echo "*********************************************************************"
19     echo "***"
20     echo "*** ERROR: invalid number of architectures: $ARCHS"
21     echo "*** This build system builds one (1) archtecture at a time."
22     echo "***"
23     echo "*********************************************************************"
24     exit 1
25 fi
26
27 ## compute if re/configure necessary
28 if [ $EXTERNAL_METHOD != 'xcode' ]; then
29     reconfigure="terminal -> Xcode"
30 elif [ ! -f $EXTERNAL_BUILD/GNUmakefile ]; then
31     reconfigure="no configuration present"
32 elif [ $EXTERNAL_SRC/make/configure.py -nt $EXTERNAL_BUILD/GNUmakefile ]; then
33     reconfigure="configure script was updated"
34 else
35     reconfigure=
36 fi
37
38 ## perform re/configure
39 if [ -n "$reconfigure" ]; then
40     echo "reconfiguring ($reconfigure)"
41
42     case "$CONFIGURATION" in
43     debug*)
44         debug="--debug=max --optimize=none"
45         ;;
46     standard*|*)
47         debug=
48         ;;
49     esac
50
51     ## invoke configure with (hidden) option which indicates conf performed by xcode
52     (set -x; $EXTERNAL_SRC/configure --force --build=$EXTERNAL_BUILD \
53         $EXTERNAL_CONFARGS \
54         --arch=$ARCHS $debug --conf-method=xcode PATH=$PATH )
55 fi
56
57 ## compute goals; these correlate with TARGET_NAME and ACTION from Xcode
58 spec="$TARGET_NAME:$ACTION"
59 echo "env specification: $spec"
60 case "$spec" in
61     contrib:clean)
62         goals=contrib.xclean
63         ;;
64     contrib:*)
65         goals=contrib.install
66         ;;
67     external:clean)
68         goals=clean
69         ;;
70     external:*)
71         if [ -z "$EXTERNAL_GOALS" ]; then
72             goals=build
73         else
74             goals="$EXTERNAL_GOALS"
75         fi
76         ;;
77     libhb:clean)
78         goals=libhb.clean
79         ;;
80     libhb:*)
81         goals=libhb.build
82         ;;
83     *)
84         echo "ERROR: invalid env specification: $spec"
85         exit 1
86         ;;
87 esac
88
89 ## safeguard against passing blank value which would result in unlimited jobs
90 if [ -z "$EXTERNAL_JOBS" ]; then
91     jobs=
92 else
93     jobs=--jobs=$EXTERNAL_JOBS
94 fi
95
96 ## pull the trigger
97 set -x
98 exec make -C $EXTERNAL_BUILD BUILD.method=xcode $jobs $goals $EXTERNAL_VARS