1
1
#! /bin/bash
2
- # externalの共通ファイルをそのままincludeして使う。
3
- . $( cd $( dirname $0 ) ; pwd) /external/WafHelper/bld.sh
2
+ # -*- coding: utf-8 -*-
3
+ # Donut-lang
4
+ #
5
+ # Copyright 2012-2013, PSI
6
+
7
+ if [ -z $PYTHON ]; then
8
+ PYTHON=python
9
+ fi
10
+
11
+ DIRNAME=$( cd $( dirname $0 ) ; pwd)
12
+ if [ -z $BUILDDIR ]; then
13
+ BUILDDIR=$DIRNAME /build
14
+ fi
15
+
16
+ if [ -z $CCACHE ]; then
17
+ CCACHE=' ccache'
18
+ fi
19
+
20
+ function detectCompiler() {
21
+ echo " ------------------------------------------------------------"
22
+ echo " detecting compiler"
23
+ echo " ------------------------------------------------------------"
24
+
25
+ CCACHE_OK=0
26
+ if [ -n " $CC " -a -n " $CXX " ]; then
27
+ echo " [custom] using $CC and $CXX "
28
+ if echo " $CXX " | grep -- " g++" > /dev/null 2>&1 ; then # gccである
29
+ CCACHE_OK=1
30
+ fi
31
+ elif which clang++ > /dev/null 2>&1 ; then
32
+ echo " [clang] found."
33
+ export set CC=' clang'
34
+ export set CXX=' clang++'
35
+ elif which g++ > /dev/null 2>&1 ; then
36
+ echo " [gcc] found."
37
+ export set CC=' gcc'
38
+ export set CXX=' g++'
39
+ CCACHE_OK=1
40
+ else
41
+ echo " Compiler not found."
42
+ exit -1
43
+ fi
44
+
45
+ if test $CCACHE_OK -ne 0 && which $CCACHE > /dev/null 2>&1 ; then
46
+ echo " [ccache] found."
47
+ export set CC=" $CCACHE $CC "
48
+ export set CXX=" $CCACHE $CXX "
49
+ else
50
+ echo " [cchache] not found."
51
+ fi
52
+ echo " CC =" $CC
53
+ echo " CXX =" $CXX
54
+ echo " ------------------------------------------------------------"
55
+ }
56
+
57
+ function runConfig() {
58
+ echo " ------------------------------------------------------------"
59
+ echo " cleaning"
60
+ echo " ------------------------------------------------------------"
61
+ echo " %" $PYTHON waf distclean
62
+ $PYTHON waf distclean
63
+ echo " ------------------------------------------------------------"
64
+ echo " configureing"
65
+ echo " ------------------------------------------------------------"
66
+ if [ " $MSYSTEM " = " MINGW32" -o " $OS " = " Windows_NT" ] ; then
67
+ CONFIGURE_CMD=" $PYTHON waf configure --out $BUILDDIR $CONF_OPT "
68
+ else
69
+ CONFIGURE_CMD=" $PYTHON waf configure --out $BUILDDIR $CONF_OPT "
70
+ fi
71
+ echo " %" $CONFIGURE_CMD
72
+ $CONFIGURE_CMD
73
+ res=$?
74
+ echo " ------------------------------------------------------------"
75
+ return $res
76
+ }
77
+
78
+ function ensureConfigure() {
79
+ if test -d $BUILDDIR && $PYTHON ./waf list > /dev/null 2>&1
80
+ then
81
+ echo " configured"
82
+ return 0
83
+ fi
84
+ echo " not configured"
85
+ detectCompiler
86
+ runConfig
87
+ }
88
+
89
+ function parse() {
90
+ if echo " $1 " | grep -- " -.*" > /dev/null 2>&1 ; then # オプションである
91
+ return 1
92
+ elif [ " $1 " = " debug" ] ; then
93
+ MODE=$1
94
+ elif [ " $1 " = " release" ] ; then
95
+ MODE=$1
96
+ elif [ " $1 " = " build" ] ; then
97
+ TARGET=$1
98
+ elif [ " $1 " = " clean" ] ; then
99
+ TARGET=$1
100
+ elif [ " $1 " = " install" ] ; then
101
+ TARGET=$1
102
+ elif [ " $1 " = " uninstall" ] ; then
103
+ TARGET=$1
104
+ elif [ " $1 " = " all" ] ; then
105
+ LAUNCH=" all"
106
+ elif [ " $1 " = " test" ] ; then
107
+ LAUNCH=" test"
108
+ elif [ " $1 " = " update" ] ; then
109
+ LAUNCH=" update"
110
+ elif [ ! -z " $1 " ]; then
111
+ LAUNCH=" custom"
112
+ return 1
113
+ fi
114
+ return 0
115
+ }
116
+
117
+ # parsing command line
118
+ LAUNCH=" normal"
119
+ parse $1 && shift
120
+ parse $1 && shift
121
+ if [ -z " $MODE " ]; then
122
+ MODE=" debug"
123
+ fi
124
+ if [ -z " $TARGET " ]; then
125
+ TARGET=" build"
126
+ fi
127
+
128
+ # launching main task
129
+ if [ $LAUNCH = " normal" ]; then
130
+ WAF_CMD=" $PYTHON ./waf --out $BUILDDIR ${TARGET} _${MODE} $* "
131
+ ensureConfigure
132
+ if [ $? -eq 0 ]; then
133
+ echo " ============================================================"
134
+ echo " Normal launch"
135
+ echo " mode =" $MODE
136
+ echo " target =" $TARGET
137
+ echo " ============================================================"
138
+ echo " %" $WAF_CMD
139
+ $WAF_CMD
140
+ else
141
+ echo " build faled to configure."
142
+ exit 1
143
+ fi
144
+ elif [ $LAUNCH = " all" ]; then
145
+ WAF_CMD=" $PYTHON ./waf --out $BUILDDIR build_debug build_release $* "
146
+ ensureConfigure
147
+ if [ $? -eq 0 ]; then
148
+ echo " ============================================================"
149
+ echo " all"
150
+ echo " mode = build"
151
+ echo " target = release, debug"
152
+ echo " ============================================================"
153
+ echo " %" $WAF_CMD
154
+ $WAF_CMD
155
+ else
156
+ echo " build faled to configure."
157
+ exit 1
158
+ fi
159
+ elif [ $LAUNCH = " test" ] ; then
160
+ echo " ============================================================"
161
+ echo " Run test"
162
+ echo " ============================================================"
163
+ if [ -e runtest.sh ] ; then
164
+ echo " %" sh runtest.sh
165
+ sh runtest.sh
166
+ else
167
+ echo " runtest.sh not found."
168
+ exit 1
169
+ fi
170
+ elif [ $LAUNCH = " update" ] ; then
171
+ git submodule foreach ' git pull --rebase origin master'
172
+ elif [ $LAUNCH = " custom" ] ; then
173
+ echo " ============================================================"
174
+ echo " Custom launch"
175
+ echo " ============================================================"
176
+ WAF_CMD=" $PYTHON ./waf --out $BUILDDIR $* "
177
+ echo " %" $WAF_CMD
178
+ $WAF_CMD
179
+ fi
0 commit comments