Skip to content

Instantly share code, notes, and snippets.

@BSFishy
Created April 20, 2018 00:41
Show Gist options
  • Save BSFishy/8c598e26a4c34cb9236b59ff55acb211 to your computer and use it in GitHub Desktop.
Save BSFishy/8c598e26a4c34cb9236b59ff55acb211 to your computer and use it in GitHub Desktop.
My build script for Dart natives
#!/usr/bin/env bash
set -e
cd $(dirname $0)
SCRIPT_DIR=$(pwd)
DART_BIN=$(which dart)
DART_SDK_DIR=$(dirname ${DART_BIN})/..
PLATFORM="$(uname -s)"
DART_VERSION=$(dart --version 2>&1)
case "$DART_VERSION" in
(*32*)
MACOS_ARCH="i386"
LINUX_ARCH="32"
;;
(*64*)
MACOS_ARCH="x86_64"
LINUX_ARCH="64"
;;
(*)
echo Unsupported dart architecture ${DART_VERSION}. Exiting ... >&2
exit 3
;;
esac
# see https://www.dartlang.org/articles/native-extensions-for-standalone-dart-vm/
cd ${SCRIPT_DIR}/..
cp -r ${X_DIR} X11
CURRENT_DIR=$(pwd)
FILENAME=$1
FILE_PATH=$(locate ${FILENAME})
FILE_DIR=$(dirname ${FILE_PATH})
FILE=$(basename ${FILENAME} .cc)
pub install
echo Building natives for platform ${PLATFORM}/${MACOS_ARCH}
case "$PLATFORM" in
(Darwin)
g++ -fPIC -I ${DART_SDK_DIR}/include -c ${FILE_PATH} -arch ${MACOS_ARCH} -o ${FILE_DIR}/${FILE}.o
gcc -shared -Wl,-install_name,${FILE_DIR}/lib${FILE}.dylib,-undefined,dynamic_lookup,-arch,${MACOS_ARCH} -o \
${FILE_DIR}/lib${FILE}.dylib ${FILE_DIR}/${FILE}.o
;;
(Linux)
g++ -fPIC -I ${DART_SDK_DIR}/include -c ${FILE_PATH} -m${LINUX_ARCH} -o ${FILE_DIR}/${FILE}.o
gcc -shared -Wl,-soname,${FILE_DIR}/lib${FILE}.so -o \
${FILE_DIR}/lib${FILE}.so ${FILE_DIR}/${FILE}.o
;;
(*)
echo Unsupported platform ${PLATFORM}. Exiting ... >&2
exit 3
;;
esac
rm ${FILE_DIR}/${FILE}.o
echo Successfully built natives
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment