| #!/bin/sh | 
 | # Copyright (c) 2018-2021 Apple Inc. All rights reserved. | 
 | # | 
 | # Redistribution and use in source and binary forms, with or without | 
 | # modification, are permitted provided that the following conditions | 
 | # are met: | 
 | # | 
 | # 1.  Redistributions of source code must retain the above copyright | 
 | #     notice, this list of conditions and the following disclaimer.  | 
 | # 2.  Redistributions in binary form must reproduce the above copyright | 
 | #     notice, this list of conditions and the following disclaimer in the | 
 | #     documentation and/or other materials provided with the distribution.  | 
 | # | 
 | # THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS ``AS IS'' AND ANY | 
 | # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | 
 | # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | 
 | # DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY | 
 | # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | 
 | # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | 
 | # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | 
 | # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 
 | # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | 
 | # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 
 |  | 
 | . common.sh | 
 |  | 
 | build_variant_xcodebuild() { | 
 |     variant=$1 | 
 |     target=$2 | 
 |     extra_xcodebuild_options="EXTRA_DEFINES=$3" | 
 |      | 
 |     build_dir=build-$sdk-$variant | 
 |     mkdir -p $build_dir | 
 |      | 
 |     xcodebuild_options="-project libpas.xcodeproj -configuration $config -sdk $sdk OBJROOT=$build_dir SYMROOT=$build_dir $extra_xcodebuild_options" | 
 |  | 
 |     if [ "x$archs" != "xblank" ] | 
 |     then | 
 |         xcodebuild_options="$xcodebuild_options ARCHS=$archs" | 
 |     fi | 
 |      | 
 |     xcodebuild $xcodebuild_options -target $target | 
 |              | 
 |     case $target in | 
 |         mbmalloc|all) | 
 |             link_mbmalloc_personality() { | 
 |                 personality=$1 | 
 |                  | 
 |                 mkdir -p $build_dir/$configdir/mbmalloc_$personality | 
 |                 ln -fs $PWD/$build_dir/$configdir/libpas.dylib $build_dir/$configdir/mbmalloc_$personality | 
 |                 ln -fs $PWD/$build_dir/$configdir/libpas_verifier.dylib $build_dir/$configdir/mbmalloc_$personality | 
 |                 ln -fs $PWD/$build_dir/$configdir/libmbmalloc_$personality.dylib $build_dir/$configdir/mbmalloc_$personality/libmbmalloc.dylib | 
 |             } | 
 |              | 
 |             link_mbmalloc_personality iso_common_primitive | 
 |             link_mbmalloc_personality iso_common_primitive_verified | 
 |             ;; | 
 |         *) | 
 |             ;; | 
 |     esac | 
 | } | 
 |  | 
 | build_variant_cmake() { | 
 |     variant=$1 | 
 |     target=$2 | 
 |     extra_options=$3 | 
 |  | 
 |     case $config in | 
 |         Release) | 
 |             ;; | 
 |         Debug) | 
 |             ;; | 
 |         *) | 
 |             echo "Bad value of config" | 
 |             exit 1 | 
 |     esac | 
 |  | 
 |     build_dir=build-$sdk-$variant/$configdir | 
 |     mkdir -p $build_dir | 
 |  | 
 |     extra_cmake_options="" | 
 |     for option in $extra_options; do | 
 |         extra_cmake_options="${extra_cmake_options} -D${option}" | 
 |     done | 
 |     extra_cmake_options=\"${extra_cmake_options#* }\" | 
 |  | 
 |     echo $extra_cmake_options | 
 |  | 
 |     cmake -DCMAKE_BUILD_TYPE=$config -DCMAKE_C_FLAGS=$extra_cmake_options -DCMAKE_CXX_FLAGS=$extra_cmake_options -B $build_dir | 
 |     cmake --build $build_dir --parallel | 
 | } | 
 |  | 
 | build_variant() { | 
 |     case $sdk in | 
 |         cmake) | 
 |             build_variant_cmake $@ | 
 |             ;; | 
 |         *) | 
 |             build_variant_xcodebuild $@ | 
 |             ;; | 
 |     esac | 
 | } | 
 |  | 
 | build_variants() { | 
 |     target=$1 | 
 |      | 
 |     case $variants in | 
 |         all|testing) | 
 |             build_variant testing $target "ENABLE_PAS_TESTING" | 
 |             ;; | 
 |     esac | 
 |     case $variants in | 
 |         all|default) | 
 |             build_variant default $target "" | 
 |             ;; | 
 |     esac | 
 | } | 
 |  | 
 | build_variants $target | 
 |  |