From 12e21308063ceb88ed1a5fb8e5a76b40fe74192a Mon Sep 17 00:00:00 2001 From: Michael James Date: Fri, 14 Jul 2017 09:18:56 -0600 Subject: [PATCH] macOS build gridslice library --- nativeLib/gridslice/src/build_osx.sh | 11 +++++++++++ nativeLib/gridslice/src/gridslice.c | 20 -------------------- nativeLib/gridslice/src/gridslice.so | Bin 0 -> 51420 bytes 3 files changed, 11 insertions(+), 20 deletions(-) create mode 100755 nativeLib/gridslice/src/build_osx.sh create mode 100755 nativeLib/gridslice/src/gridslice.so diff --git a/nativeLib/gridslice/src/build_osx.sh b/nativeLib/gridslice/src/build_osx.sh new file mode 100755 index 0000000000..902fe3135b --- /dev/null +++ b/nativeLib/gridslice/src/build_osx.sh @@ -0,0 +1,11 @@ +#!/bin/bash -fv +# +# build_osx.sh: Build gridslice library for macOS +# author: mjames@ucar +# +export C_INCLUDE_PATH=/System/Library/Frameworks/Python.framework/Headers +export CFLAGS="-I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7/ -I /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/core/include $CFLAGS" +gcc -c -fPIC $CFLAGS gridslice.c -o gridslice.o +gcc -c -fPIC $CFLAGS sliceConvert.c -o sliceConvert.o +gcc gridslice.o sliceConvert.o -lpython -shared -o gridslice.so +# cp gridslice.so /Library/Python/2.7/site-packages/ diff --git a/nativeLib/gridslice/src/gridslice.c b/nativeLib/gridslice/src/gridslice.c index 247c97ff20..a281967084 100644 --- a/nativeLib/gridslice/src/gridslice.c +++ b/nativeLib/gridslice/src/gridslice.c @@ -1,23 +1,3 @@ -/***************************************************************************************** - * COPYRIGHT (c), 2009, RAYTHEON COMPANY - * ALL RIGHTS RESERVED, An Unpublished Work - * - * RAYTHEON PROPRIETARY - * If the end user is not the U.S. Government or any agency thereof, use - * or disclosure of data contained in this source code file is subject to - * the proprietary restrictions set forth in the Master Rights File. - * - * U.S. GOVERNMENT PURPOSE RIGHTS NOTICE - * If the end user is the U.S. Government or any agency thereof, this source - * code is provided to the U.S. Government with Government Purpose Rights. - * Use or disclosure of data contained in this source code file is subject to - * the "Government Purpose Rights" restriction in the Master Rights File. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * Use or disclosure of data contained in this source code file is subject to - * the export restrictions set forth in the Master Rights File. - ******************************************************************************************/ - /* * Python module that utilizes the AWIPSI sliceConvert functions to offer * slicing capability to numpy arrays. diff --git a/nativeLib/gridslice/src/gridslice.so b/nativeLib/gridslice/src/gridslice.so new file mode 100755 index 0000000000000000000000000000000000000000..2581ba09e084d93139bec8e3d90aabbeccc84682 GIT binary patch literal 51420 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 Xu= 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