#!/bin/sh # build-swig-wrapper-classes.sh # # For each scripting language liblldb supports, we need to create the # appropriate Script Bridge wrapper classes for that language so that # users can call Script Bridge functions from within the script interpreter. # # We use SWIG to help create the appropriate wrapper classes/functions for # the scripting language. In some cases the file generated by SWIG may # need some tweaking before it is completely ready to use. # Below are the arguments/parameters that this script takes (and passes along # to all the language-specific build scripts that it calls): # # SRC_ROOT is the root of the lldb source tree. # TARGET_DIR is where the lldb framework/shared library gets put. # CONFIG_BUILD_DIR is where the build-swig-Python-LLDB.sh shell script # put the lldb.py file it was generated from running SWIG. # PREFIX is where non-Darwin systems want to put the .py and .so # files so that Python can find them automatically. # debug_flag (optional) determines whether or not this script outputs # additional information when running. SRC_ROOT=$1 TARGET_DIR=$2 CONFIG_BUILD_DIR=$3 PREFIX=$4 shift 4 # # Check to see if we are in debug-mode or not. # if [ -n "$1" -a "$1" = "-debug" ] then debug_flag="$1" Debug=1 shift else debug_flag="" Debug=0 fi # # Check to see if we were called from the Makefile system. If we were, check # if the caller wants swig to generate a dependency file. # if [ -n "$1" -a "$1" = "-m" ] then makefile_flag="$1" shift if [ -n "$1" -a "$1" = "-M" ] then dependency_flag="$1" shift else dependency_flag="" fi else makefile_flag="" dependency_flag="" fi # # Verify that 'lldb.swig' exists. # if [ ! -f ${SRC_ROOT}/scripts/lldb.swig ] then echo Error: unable to find file 'lldb.swig' >&2 exit 1 fi if [ $Debug -eq 1 ] then echo "Found lldb.swig file" fi # # Next look for swig # SWIG=`which swig` if [ ! -x "$SWIG" -a -f /usr/bin/swig ] then SWIG=/usr/bin/swig else if [ -f /usr/local/bin/swig ] then SWIG=/usr/local/bin/swig fi fi if [ ${SWIG}a = a ] then echo Error: could not find the swig binary exit 1 fi # # For each scripting language, make sure the build script for that language # exists, and if so, call it. # # For now the only language we support is Python, but we expect this to # change. languages="Python" cwd=${SRC_ROOT}/scripts for curlang in $languages do if [ $Debug -eq 1 ] then echo "Current language is $curlang" fi if [ ! -d "$cwd/$curlang" ] then echo "Error: unable to find $curlang script sub-dirctory" >&2 continue else if [ $Debug -eq 1 ] then echo "Found $curlang sub-directory" fi cd $cwd/$curlang filename="./build-swig-${curlang}.sh" if [ ! -f $filename ] then echo "Error: unable to find swig build script for $curlang: $filename" >&2 continue else if [ $Debug -eq 1 ] then echo "Found $curlang build script." echo "Executing $curlang build script..." fi ./build-swig-${curlang}.sh "$SRC_ROOT" "$TARGET_DIR" "$CONFIG_BUILD_DIR" "${PREFIX}" "${debug_flag}" "${SWIG}" "${makefile_flag}" "${dependency_flag}" || exit $? fi fi done