#!/bin/sh # # Create the unity file # OUTPUT=$1 if test -z "$OUTPUT"; then echo "usage: $0 " >&2 exit 1 fi # Delete existing file, if it exists rm -f "$OUTPUT" touch "$OUTPUT" # Detect OS if test -z "$TARGET_OS"; then TARGET_OS=`uname -s` fi # generic port files (working on all platform by #ifdef) go directly in /port GENERIC_PORT_FILES=`cd "$ROCKSDB_ROOT"; find port -name '*.cc' | tr "\n" " "` # On GCC, we pick libc's memcmp over GCC's memcmp via -fno-builtin-memcmp case "$TARGET_OS" in Darwin) # PORT_FILES=port/darwin/darwin_specific.cc ;; IOS) ;; Linux) # PORT_FILES=port/linux/linux_specific.cc ;; SunOS) # PORT_FILES=port/sunos/sunos_specific.cc ;; FreeBSD) # PORT_FILES=port/freebsd/freebsd_specific.cc ;; NetBSD) # PORT_FILES=port/netbsd/netbsd_specific.cc ;; OpenBSD) # PORT_FILES=port/openbsd/openbsd_specific.cc ;; DragonFly) # PORT_FILES=port/dragonfly/dragonfly_specific.cc ;; OS_ANDROID_CROSSCOMPILE) # PORT_FILES=port/android/android.cc ;; *) echo "Unknown platform!" >&2 exit 1 esac # We want to make a list of all cc files within util, db, table, and helpers # except for the test and benchmark files. By default, find will output a list # of all files matching either rule, so we need to append -print to make the # prune take effect. DIRS="util db table utilities" set -f # temporarily disable globbing so that our patterns arent expanded PRUNE_TEST="-name *test*.cc -prune" PRUNE_BENCH="-name *bench*.cc -prune" PORTABLE_FILES=`cd "$ROCKSDB_ROOT"; find $DIRS $PRUNE_TEST -o $PRUNE_BENCH -o -name '*.cc' -print | sort` PORTABLE_CPP=`cd "$ROCKSDB_ROOT"; find $DIRS $PRUNE_TEST -o $PRUNE_BENCH -o -name '*.cpp' -print | sort` set +f # re-enable globbing # The sources consist of the portable files, plus the platform-specific port # file. for SOURCE_FILE in $PORTABLE_FILES $GENERIC_PORT_FILES $PORT_FILES $PORTABLE_CPP do echo "#include <$SOURCE_FILE>" >> "$OUTPUT" done echo "int main(int argc, char** argv){ return 0; }" >> "$OUTPUT"