blob: 37dffb15ea4ea0b7f8ce27063bbcd286997d60d0 [file] [log] [blame]
Chris Lattner30fdc8d2010-06-08 16:52:24 +00001#!/bin/sh
2
3# build-swig-Python.sh
4
Caroline Ticed6ac3842010-06-16 19:26:52 +00005# SRC_ROOT is the root of the lldb source tree.
6# TARGET_DIR is where the lldb framework/shared library gets put.
Filipe Cabecinhasc281a3b2012-11-01 18:55:16 +00007# CONFIG_BUILD_DIR is where the build-swig-Python-LLDB.sh shell script
Caroline Ticed6ac3842010-06-16 19:26:52 +00008# put the lldb.py file it was generated from running SWIG.
9# PREFIX is the root directory used to determine where third-party modules
10# for scripting languages should be installed.
Filipe Cabecinhasc281a3b2012-11-01 18:55:16 +000011# debug_flag (optional) determines whether or not this script outputs
Caroline Ticed6ac3842010-06-16 19:26:52 +000012# additional information when running.
Chris Lattner30fdc8d2010-06-08 16:52:24 +000013
Caroline Ticed6ac3842010-06-16 19:26:52 +000014SRC_ROOT=$1
15TARGET_DIR=$2
16CONFIG_BUILD_DIR=$3
17PYTHON_INSTALL_DIR=$4
Filipe Cabecinhasc281a3b2012-11-01 18:55:16 +000018debug_flag=$5
Jim Ingham6b90ba42011-03-01 01:39:04 +000019SWIG=$6
Filipe Cabecinhasc281a3b2012-11-01 18:55:16 +000020makefile_flag=$7
21dependency_flag=$8
Caroline Ticed6ac3842010-06-16 19:26:52 +000022
Ed Masted010f9a2014-05-07 12:52:08 +000023PYTHON=${PYTHON_EXECUTABLE:-/usr/bin/env python}
24
Filipe Cabecinhasc281a3b2012-11-01 18:55:16 +000025if [ -n "$makefile_flag" -a "$makefile_flag" = "-m" ]
26then
27 MakefileCalled=1
28 if [ -n "$dependency_flag" -a "$dependency_flag" = "-M" ]
29 then
30 GenerateDependencies=1
31 swig_depend_file="${TARGET_DIR}/LLDBWrapPython.cpp.d"
32 SWIG_DEPEND_OPTIONS="-MMD -MF \"${swig_depend_file}.tmp\""
33 else
34 GenerateDependencies=0
35 fi
36else
37 MakefileCalled=0
38 GenerateDependencies=0
39fi
40
Greg Clayton9bb8cb12014-03-14 18:24:30 +000041swig_output_file=${TARGET_DIR}/LLDBWrapPython.cpp
Caroline Ticed6ac3842010-06-16 19:26:52 +000042swig_input_file=${SRC_ROOT}/scripts/lldb.swig
Johnny Chen30123f12011-08-22 22:10:57 +000043swig_python_extensions=${SRC_ROOT}/scripts/Python/python-extensions.swig
44swig_python_wrapper=${SRC_ROOT}/scripts/Python/python-wrapper.swig
Enrico Granata9d2063e2012-02-02 17:26:00 +000045swig_python_typemaps=${SRC_ROOT}/scripts/Python/python-typemaps.swig
Enrico Granatac972c702013-06-21 18:57:30 +000046swig_python_swigsafecast=${SRC_ROOT}/scripts/Python/python-swigsafecast.swig
Chris Lattner30fdc8d2010-06-08 16:52:24 +000047
Filipe Cabecinhas3e9e0812012-09-14 17:09:15 +000048if [ "$LLDB_DISABLE_PYTHON" = "1" ] ; then
Jim Inghamde221822012-05-26 00:23:52 +000049 # We don't want Python for this build, but touch the output file so we don't have to
50 # conditionalize the build on this as well.
51 # Note, at present iOS doesn't have Python, so if you're building for iOS be sure to
52 # set LLDB_DISABLE_PYTHON to 1.
Jim Ingham777e6d02012-05-24 01:16:09 +000053 rm -rf ${swig_output_file}
54 touch ${swig_output_file}
55
56else
Greg Claytondce502e2011-11-04 03:34:56 +000057
Jason Molenda47d114a2012-09-27 21:26:57 +000058if [ -n "$debug_flag" -a "$debug_flag" = "-debug" ]
Chris Lattner30fdc8d2010-06-08 16:52:24 +000059then
60 Debug=1
61else
62 Debug=0
63fi
64
Jason Molendacf7e2dc2012-02-21 05:33:55 +000065# If this project is being built with LLDB_DISABLE_PYTHON defined,
66# don't bother generating Python swig bindings -- we don't have
67# Python available.
68
69if echo $GCC_PREPROCESSOR_DEFINITIONS | grep LLDB_DISABLE_PYTHON
70then
71 echo "" > "${swig_output_file}"
72 exit 0
73fi
Chris Lattner30fdc8d2010-06-08 16:52:24 +000074
Greg Claytone0d378b2011-03-24 21:19:54 +000075HEADER_FILES="${SRC_ROOT}/include/lldb/lldb.h"\
Caroline Ticee206be22010-10-18 23:00:51 +000076" ${SRC_ROOT}/include/lldb/lldb-defines.h"\
77" ${SRC_ROOT}/include/lldb/lldb-enumerations.h"\
78" ${SRC_ROOT}/include/lldb/lldb-forward.h"\
79" ${SRC_ROOT}/include/lldb/lldb-forward-rtti.h"\
80" ${SRC_ROOT}/include/lldb/lldb-types.h"\
Caroline Ticed6ac3842010-06-16 19:26:52 +000081" ${SRC_ROOT}/include/lldb/API/SBAddress.h"\
82" ${SRC_ROOT}/include/lldb/API/SBBlock.h"\
83" ${SRC_ROOT}/include/lldb/API/SBBreakpoint.h"\
84" ${SRC_ROOT}/include/lldb/API/SBBreakpointLocation.h"\
85" ${SRC_ROOT}/include/lldb/API/SBBroadcaster.h"\
Caroline Ticed6ac3842010-06-16 19:26:52 +000086" ${SRC_ROOT}/include/lldb/API/SBCommandInterpreter.h"\
87" ${SRC_ROOT}/include/lldb/API/SBCommandReturnObject.h"\
Greg Clayton05faeb72010-10-07 04:19:01 +000088" ${SRC_ROOT}/include/lldb/API/SBCommunication.h"\
Caroline Ticed6ac3842010-06-16 19:26:52 +000089" ${SRC_ROOT}/include/lldb/API/SBCompileUnit.h"\
Enrico Granata9128ee22011-09-06 19:20:51 +000090" ${SRC_ROOT}/include/lldb/API/SBData.h"\
Caroline Ticed6ac3842010-06-16 19:26:52 +000091" ${SRC_ROOT}/include/lldb/API/SBDebugger.h"\
92" ${SRC_ROOT}/include/lldb/API/SBError.h"\
93" ${SRC_ROOT}/include/lldb/API/SBEvent.h"\
Enrico Granatae85e84a2014-10-01 20:43:45 +000094" ${SRC_ROOT}/include/lldb/API/SBExecutionContext.h"\
Jim Ingham35e1bda2012-10-16 21:41:58 +000095" ${SRC_ROOT}/include/lldb/API/SBExpressionOptions.h"\
Johnny Chen23fd10c2010-08-27 22:35:26 +000096" ${SRC_ROOT}/include/lldb/API/SBFileSpec.h"\
Caroline Ticed6ac3842010-06-16 19:26:52 +000097" ${SRC_ROOT}/include/lldb/API/SBFrame.h"\
98" ${SRC_ROOT}/include/lldb/API/SBFunction.h"\
Greg Clayton05faeb72010-10-07 04:19:01 +000099" ${SRC_ROOT}/include/lldb/API/SBHostOS.h"\
Greg Clayton1d273162010-10-06 03:09:58 +0000100" ${SRC_ROOT}/include/lldb/API/SBInstruction.h"\
101" ${SRC_ROOT}/include/lldb/API/SBInstructionList.h"\
Oleksiy Vyalov1ef7b2c2015-02-04 23:19:15 +0000102" ${SRC_ROOT}/include/lldb/API/SBLaunchInfo.h"\
Caroline Ticed6ac3842010-06-16 19:26:52 +0000103" ${SRC_ROOT}/include/lldb/API/SBLineEntry.h"\
104" ${SRC_ROOT}/include/lldb/API/SBListener.h"\
105" ${SRC_ROOT}/include/lldb/API/SBModule.h"\
Greg Clayton226cce22013-07-08 22:22:41 +0000106" ${SRC_ROOT}/include/lldb/API/SBModuleSpec.h"\
Caroline Ticed6ac3842010-06-16 19:26:52 +0000107" ${SRC_ROOT}/include/lldb/API/SBProcess.h"\
Jason Molenda5e8dce42013-12-13 00:29:16 +0000108" ${SRC_ROOT}/include/lldb/API/SBQueue.h"\
109" ${SRC_ROOT}/include/lldb/API/SBQueueItem.h"\
Caroline Ticed6ac3842010-06-16 19:26:52 +0000110" ${SRC_ROOT}/include/lldb/API/SBSourceManager.h"\
Caroline Tice77404122010-09-22 16:41:52 +0000111" ${SRC_ROOT}/include/lldb/API/SBStream.h"\
Caroline Ticed6ac3842010-06-16 19:26:52 +0000112" ${SRC_ROOT}/include/lldb/API/SBStringList.h"\
113" ${SRC_ROOT}/include/lldb/API/SBSymbol.h"\
114" ${SRC_ROOT}/include/lldb/API/SBSymbolContext.h"\
Greg Clayton05faeb72010-10-07 04:19:01 +0000115" ${SRC_ROOT}/include/lldb/API/SBSymbolContextList.h"\
Caroline Ticed6ac3842010-06-16 19:26:52 +0000116" ${SRC_ROOT}/include/lldb/API/SBTarget.h"\
117" ${SRC_ROOT}/include/lldb/API/SBThread.h"\
Kuba Breckaa5ea1e22014-09-06 01:21:19 +0000118" ${SRC_ROOT}/include/lldb/API/SBThreadCollection.h"\
Jim Ingham2bdbfd52014-09-29 23:17:18 +0000119" ${SRC_ROOT}/include/lldb/API/SBThreadPlan.h"\
Caroline Ticed6ac3842010-06-16 19:26:52 +0000120" ${SRC_ROOT}/include/lldb/API/SBType.h"\
Enrico Granata061858c2012-02-15 02:34:21 +0000121" ${SRC_ROOT}/include/lldb/API/SBTypeCategory.h"\
122" ${SRC_ROOT}/include/lldb/API/SBTypeFilter.h"\
123" ${SRC_ROOT}/include/lldb/API/SBTypeFormat.h"\
124" ${SRC_ROOT}/include/lldb/API/SBTypeNameSpecifier.h"\
125" ${SRC_ROOT}/include/lldb/API/SBTypeSummary.h"\
126" ${SRC_ROOT}/include/lldb/API/SBTypeSynthetic.h"\
Caroline Tice77404122010-09-22 16:41:52 +0000127" ${SRC_ROOT}/include/lldb/API/SBValue.h"\
Johnny Chend4dd7992011-09-27 01:19:20 +0000128" ${SRC_ROOT}/include/lldb/API/SBValueList.h"\
Todd Fiala802dc4022014-06-23 19:30:49 +0000129" ${SRC_ROOT}/include/lldb/API/SBWatchpoint.h"\
130" ${SRC_ROOT}/include/lldb/API/SBUnixSignals.h"
Chris Lattner30fdc8d2010-06-08 16:52:24 +0000131
Johnny Chen8a8ce4a2011-09-09 17:37:06 +0000132INTERFACE_FILES="${SRC_ROOT}/scripts/Python/interface/SBAddress.i"\
133" ${SRC_ROOT}/scripts/Python/interface/SBBlock.i"\
134" ${SRC_ROOT}/scripts/Python/interface/SBBreakpoint.i"\
135" ${SRC_ROOT}/scripts/Python/interface/SBBreakpointLocation.i"\
136" ${SRC_ROOT}/scripts/Python/interface/SBBroadcaster.i"\
137" ${SRC_ROOT}/scripts/Python/interface/SBCommandInterpreter.i"\
138" ${SRC_ROOT}/scripts/Python/interface/SBCommandReturnObject.i"\
139" ${SRC_ROOT}/scripts/Python/interface/SBCommunication.i"\
140" ${SRC_ROOT}/scripts/Python/interface/SBCompileUnit.i"\
141" ${SRC_ROOT}/scripts/Python/interface/SBData.i"\
142" ${SRC_ROOT}/scripts/Python/interface/SBDebugger.i"\
Enrico Granata10de0902012-10-10 22:54:17 +0000143" ${SRC_ROOT}/scripts/Python/interface/SBDeclaration.i"\
Johnny Chen8a8ce4a2011-09-09 17:37:06 +0000144" ${SRC_ROOT}/scripts/Python/interface/SBError.i"\
145" ${SRC_ROOT}/scripts/Python/interface/SBEvent.i"\
Enrico Granatae85e84a2014-10-01 20:43:45 +0000146" ${SRC_ROOT}/scripts/Python/interface/SBExecutionContext.i"\
Jim Ingham35e1bda2012-10-16 21:41:58 +0000147" ${SRC_ROOT}/scripts/Python/interface/SBExpressionOptions.i"\
Johnny Chen8a8ce4a2011-09-09 17:37:06 +0000148" ${SRC_ROOT}/scripts/Python/interface/SBFileSpec.i"\
149" ${SRC_ROOT}/scripts/Python/interface/SBFrame.i"\
150" ${SRC_ROOT}/scripts/Python/interface/SBFunction.i"\
151" ${SRC_ROOT}/scripts/Python/interface/SBHostOS.i"\
Johnny Chen8a8ce4a2011-09-09 17:37:06 +0000152" ${SRC_ROOT}/scripts/Python/interface/SBInstruction.i"\
153" ${SRC_ROOT}/scripts/Python/interface/SBInstructionList.i"\
Oleksiy Vyalov1ef7b2c2015-02-04 23:19:15 +0000154" ${SRC_ROOT}/scripts/Python/interface/SBLaunchInfo.i"\
Johnny Chen8a8ce4a2011-09-09 17:37:06 +0000155" ${SRC_ROOT}/scripts/Python/interface/SBLineEntry.i"\
156" ${SRC_ROOT}/scripts/Python/interface/SBListener.i"\
157" ${SRC_ROOT}/scripts/Python/interface/SBModule.i"\
Greg Clayton226cce22013-07-08 22:22:41 +0000158" ${SRC_ROOT}/scripts/Python/interface/SBModuleSpec.i"\
Greg Claytonfbb76342013-11-20 21:07:01 +0000159" ${SRC_ROOT}/scripts/Python/interface/SBPlatform.i"\
Johnny Chen8a8ce4a2011-09-09 17:37:06 +0000160" ${SRC_ROOT}/scripts/Python/interface/SBProcess.i"\
Jason Molenda5e8dce42013-12-13 00:29:16 +0000161" ${SRC_ROOT}/scripts/Python/interface/SBQueue.i"\
162" ${SRC_ROOT}/scripts/Python/interface/SBQueueItem.i"\
Johnny Chen8a8ce4a2011-09-09 17:37:06 +0000163" ${SRC_ROOT}/scripts/Python/interface/SBSourceManager.i"\
164" ${SRC_ROOT}/scripts/Python/interface/SBStream.i"\
165" ${SRC_ROOT}/scripts/Python/interface/SBStringList.i"\
166" ${SRC_ROOT}/scripts/Python/interface/SBSymbol.i"\
167" ${SRC_ROOT}/scripts/Python/interface/SBSymbolContext.i"\
168" ${SRC_ROOT}/scripts/Python/interface/SBTarget.i"\
169" ${SRC_ROOT}/scripts/Python/interface/SBThread.i"\
Kuba Breckaa5ea1e22014-09-06 01:21:19 +0000170" ${SRC_ROOT}/scripts/Python/interface/SBThreadCollection.i"\
Jim Ingham2bdbfd52014-09-29 23:17:18 +0000171" ${SRC_ROOT}/scripts/Python/interface/SBThreadPlan.i"\
Johnny Chen8a8ce4a2011-09-09 17:37:06 +0000172" ${SRC_ROOT}/scripts/Python/interface/SBType.i"\
Enrico Granata061858c2012-02-15 02:34:21 +0000173" ${SRC_ROOT}/scripts/Python/interface/SBTypeCategory.i"\
174" ${SRC_ROOT}/scripts/Python/interface/SBTypeFilter.i"\
175" ${SRC_ROOT}/scripts/Python/interface/SBTypeFormat.i"\
176" ${SRC_ROOT}/scripts/Python/interface/SBTypeNameSpecifier.i"\
177" ${SRC_ROOT}/scripts/Python/interface/SBTypeSummary.i"\
178" ${SRC_ROOT}/scripts/Python/interface/SBTypeSynthetic.i"\
Johnny Chen8a8ce4a2011-09-09 17:37:06 +0000179" ${SRC_ROOT}/scripts/Python/interface/SBValue.i"\
Johnny Chend4dd7992011-09-27 01:19:20 +0000180" ${SRC_ROOT}/scripts/Python/interface/SBValueList.i"\
Todd Fiala802dc4022014-06-23 19:30:49 +0000181" ${SRC_ROOT}/scripts/Python/interface/SBWatchpoint.i"\
182" ${SRC_ROOT}/scripts/Python/interface/SBUnixSignals.i"
Chris Lattner30fdc8d2010-06-08 16:52:24 +0000183
Jason Molenda47d114a2012-09-27 21:26:57 +0000184if [ $Debug -eq 1 ]
Chris Lattner30fdc8d2010-06-08 16:52:24 +0000185then
186 echo "Header files are:"
187 echo ${HEADER_FILES}
188fi
189
Jason Molenda47d114a2012-09-27 21:26:57 +0000190if [ $Debug -eq 1 ]
Enrico Granata9128ee22011-09-06 19:20:51 +0000191then
192 echo "SWIG interface files are:"
193 echo ${INTERFACE_FILES}
194fi
195
Chris Lattner30fdc8d2010-06-08 16:52:24 +0000196NeedToUpdate=0
197
Chris Lattner30fdc8d2010-06-08 16:52:24 +0000198
Johnny Chen5fca8ca2010-08-26 20:04:17 +0000199if [ ! -f ${swig_output_file} ]
Chris Lattner30fdc8d2010-06-08 16:52:24 +0000200then
201 NeedToUpdate=1
Jason Molenda47d114a2012-09-27 21:26:57 +0000202 if [ $Debug -eq 1 ]
Chris Lattner30fdc8d2010-06-08 16:52:24 +0000203 then
204 echo "Failed to find LLDBWrapPython.cpp"
205 fi
206fi
207
Jason Molenda47d114a2012-09-27 21:26:57 +0000208if [ $NeedToUpdate -eq 0 ]
Chris Lattner30fdc8d2010-06-08 16:52:24 +0000209then
210 for hdrfile in ${HEADER_FILES}
211 do
Johnny Chen5fca8ca2010-08-26 20:04:17 +0000212 if [ $hdrfile -nt ${swig_output_file} ]
Chris Lattner30fdc8d2010-06-08 16:52:24 +0000213 then
214 NeedToUpdate=1
Jason Molenda47d114a2012-09-27 21:26:57 +0000215 if [ $Debug -eq 1 ]
Chris Lattner30fdc8d2010-06-08 16:52:24 +0000216 then
217 echo "${hdrfile} is newer than ${swig_output_file}"
218 echo "swig file will need to be re-built."
219 fi
Johnny Chen5fca8ca2010-08-26 20:04:17 +0000220 break
Chris Lattner30fdc8d2010-06-08 16:52:24 +0000221 fi
222 done
223fi
224
Jason Molenda47d114a2012-09-27 21:26:57 +0000225if [ $NeedToUpdate -eq 0 ]
Johnny Chen5fca8ca2010-08-26 20:04:17 +0000226then
Enrico Granata9128ee22011-09-06 19:20:51 +0000227 for intffile in ${INTERFACE_FILES}
228 do
229 if [ $intffile -nt ${swig_output_file} ]
230 then
231 NeedToUpdate=1
Jason Molenda47d114a2012-09-27 21:26:57 +0000232 if [ $Debug -eq 1 ]
Enrico Granata9128ee22011-09-06 19:20:51 +0000233 then
234 echo "${intffile} is newer than ${swig_output_file}"
235 echo "swig file will need to be re-built."
236 fi
237 break
238 fi
239 done
240fi
241
Jason Molenda47d114a2012-09-27 21:26:57 +0000242if [ $NeedToUpdate -eq 0 ]
Enrico Granata9128ee22011-09-06 19:20:51 +0000243then
Johnny Chen5fca8ca2010-08-26 20:04:17 +0000244 if [ ${swig_input_file} -nt ${swig_output_file} ]
245 then
246 NeedToUpdate=1
Jason Molenda47d114a2012-09-27 21:26:57 +0000247 if [ $Debug -eq 1 ]
Johnny Chen5fca8ca2010-08-26 20:04:17 +0000248 then
249 echo "${swig_input_file} is newer than ${swig_output_file}"
250 echo "swig file will need to be re-built."
251 fi
252 fi
253fi
254
Jason Molenda47d114a2012-09-27 21:26:57 +0000255if [ $NeedToUpdate -eq 0 ]
Caroline Ticeceb6b132010-10-26 03:11:13 +0000256then
Johnny Chen30123f12011-08-22 22:10:57 +0000257 if [ ${swig_python_extensions} -nt ${swig_output_file} ]
Caroline Ticeceb6b132010-10-26 03:11:13 +0000258 then
259 NeedToUpdate=1
Jason Molenda47d114a2012-09-27 21:26:57 +0000260 if [ $Debug -eq 1 ]
Caroline Ticeceb6b132010-10-26 03:11:13 +0000261 then
Johnny Chen30123f12011-08-22 22:10:57 +0000262 echo "${swig_python_extensions} is newer than ${swig_output_file}"
263 echo "swig file will need to be re-built."
264 fi
265 fi
266fi
267
Jason Molenda47d114a2012-09-27 21:26:57 +0000268if [ $NeedToUpdate -eq 0 ]
Johnny Chen30123f12011-08-22 22:10:57 +0000269then
270 if [ ${swig_python_wrapper} -nt ${swig_output_file} ]
271 then
272 NeedToUpdate=1
Jason Molenda47d114a2012-09-27 21:26:57 +0000273 if [ $Debug -eq 1 ]
Johnny Chen30123f12011-08-22 22:10:57 +0000274 then
275 echo "${swig_python_wrapper} is newer than ${swig_output_file}"
Caroline Ticeceb6b132010-10-26 03:11:13 +0000276 echo "swig file will need to be re-built."
277 fi
278 fi
279fi
280
Jason Molenda47d114a2012-09-27 21:26:57 +0000281if [ $NeedToUpdate -eq 0 ]
Enrico Granata9d2063e2012-02-02 17:26:00 +0000282then
283 if [ ${swig_python_typemaps} -nt ${swig_output_file} ]
284 then
285 NeedToUpdate=1
Jason Molenda47d114a2012-09-27 21:26:57 +0000286 if [ $Debug -eq 1 ]
Enrico Granata9d2063e2012-02-02 17:26:00 +0000287 then
288 echo "${swig_python_typemaps} is newer than ${swig_output_file}"
289 echo "swig file will need to be re-built."
290 fi
291 fi
292fi
293
Enrico Granatac972c702013-06-21 18:57:30 +0000294if [ $NeedToUpdate -eq 0 ]
295then
296 if [ ${swig_python_swigsafecast} -nt ${swig_output_file} ]
297 then
298 NeedToUpdate=1
299 if [ $Debug -eq 1 ]
300 then
301 echo "${swig_python_swigsafecast} is newer than ${swig_output_file}"
302 echo "swig file will need to be re-built."
303 fi
304 fi
305fi
306
Ed Masted010f9a2014-05-07 12:52:08 +0000307python_version=`${PYTHON} --version 2>&1 | sed -e 's,Python ,,' -e 's,[.][0-9],,2' -e 's,[a-z][a-z][0-9],,'`
Caroline Ticed6ac3842010-06-16 19:26:52 +0000308
Filipe Cabecinhasc281a3b2012-11-01 18:55:16 +0000309if [ $MakefileCalled -eq 0 ]
Caroline Ticed6ac3842010-06-16 19:26:52 +0000310then
Filipe Cabecinhasc281a3b2012-11-01 18:55:16 +0000311 framework_python_dir="${TARGET_DIR}/LLDB.framework/Resources/Python/lldb"
Caroline Ticed6ac3842010-06-16 19:26:52 +0000312else
Filipe Cabecinhasc281a3b2012-11-01 18:55:16 +0000313 if [ -n "${PYTHON_INSTALL_DIR}" ]
314 then
Ed Masted010f9a2014-05-07 12:52:08 +0000315 framework_python_dir=`${PYTHON} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(True, False, \"${PYTHON_INSTALL_DIR}\");"`/lldb
Filipe Cabecinhasc281a3b2012-11-01 18:55:16 +0000316 else
Ed Masted010f9a2014-05-07 12:52:08 +0000317 framework_python_dir=`${PYTHON} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(True, False);"`/lldb
Filipe Cabecinhasc281a3b2012-11-01 18:55:16 +0000318 fi
Caroline Ticed6ac3842010-06-16 19:26:52 +0000319fi
320
Filipe Cabecinhasc281a3b2012-11-01 18:55:16 +0000321[ -n "${CONFIG_BUILD_DIR}" ] || CONFIG_BUILD_DIR=${framework_python_dir}
Chris Lattner30fdc8d2010-06-08 16:52:24 +0000322
323if [ ! -L "${framework_python_dir}/_lldb.so" ]
324then
325 NeedToUpdate=1
326fi
327
Filipe Cabecinhasc281a3b2012-11-01 18:55:16 +0000328if [ ! -f "${framework_python_dir}/__init__.py" ]
Chris Lattner30fdc8d2010-06-08 16:52:24 +0000329then
330 NeedToUpdate=1
331fi
332
333
Jason Molenda47d114a2012-09-27 21:26:57 +0000334if [ $NeedToUpdate -eq 0 ]
Chris Lattner30fdc8d2010-06-08 16:52:24 +0000335then
336 echo "Everything is up-to-date."
337 exit 0
338else
339 echo "SWIG needs to be re-run."
Caroline Ticeceb6b132010-10-26 03:11:13 +0000340 if [ -f ${swig_output_file} ]
341 then
342 rm ${swig_output_file}
343 fi
Chris Lattner30fdc8d2010-06-08 16:52:24 +0000344fi
345
346
347# Build the SWIG C++ wrapper file for Python.
348
Filipe Cabecinhasc281a3b2012-11-01 18:55:16 +0000349if [ $GenerateDependencies -eq 1 ]
350then
351 if $SWIG -c++ -shadow -python -threads -I"${SRC_ROOT}/include" -I./. -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -MMD -MF "${swig_depend_file}.tmp" -outdir "${CONFIG_BUILD_DIR}" -o "${swig_output_file}" "${swig_input_file}"
352 then
353 mv -f "${swig_depend_file}.tmp" "${swig_depend_file}"
354 else
355 rm -f "${swig_depend_file}.tmp"
356 exit 1
357 fi
358else
359 $SWIG -c++ -shadow -python -threads -I"${SRC_ROOT}/include" -I./. -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -outdir "${CONFIG_BUILD_DIR}" -o "${swig_output_file}" "${swig_input_file}" || exit $?
360fi
Chris Lattner30fdc8d2010-06-08 16:52:24 +0000361
Johnny Chenf1c95f82011-04-29 19:22:24 +0000362# Implement the iterator protocol and/or eq/ne operators for some lldb objects.
Caroline Ticeebc1bb22010-06-30 16:22:25 +0000363# Append global variable to lldb Python module.
Johnny Chenfbc0d272011-04-28 21:31:18 +0000364# And initialize the lldb debugger subsystem.
Caroline Ticeebc1bb22010-06-30 16:22:25 +0000365current_dir=`pwd`
Johnny Chenfbc0d272011-04-28 21:31:18 +0000366if [ -f "${current_dir}/modify-python-lldb.py" ]
Caroline Ticeebc1bb22010-06-30 16:22:25 +0000367then
Ed Masted010f9a2014-05-07 12:52:08 +0000368 ${PYTHON} ${current_dir}/modify-python-lldb.py ${CONFIG_BUILD_DIR}
Caroline Ticeebc1bb22010-06-30 16:22:25 +0000369fi
Caroline Tice3cc87512010-10-28 21:51:20 +0000370
Greg Claytondce502e2011-11-04 03:34:56 +0000371
Greg Claytondce502e2011-11-04 03:34:56 +0000372fi