tsan: update script to support windows
authorDmitry Vyukov <dvyukov@google.com>
Tue, 6 Nov 2012 13:32:53 +0000 (13:32 +0000)
committerDmitry Vyukov <dvyukov@google.com>
Tue, 6 Nov 2012 13:32:53 +0000 (13:32 +0000)
llvm-svn: 167456

compiler-rt/lib/tsan/go/buildgo.sh

index 9d290d1..e7e27c8 100755 (executable)
@@ -1,17 +1,6 @@
 #!/bin/bash
 set -e
 
-if [ "`uname -a | grep Linux`" != "" ]; then
-       LINUX=1
-       SUFFIX="linux_amd64"
-elif [ "`uname -a | grep Darwin`" != "" ]; then
-       MAC=1
-       SUFFIX="darwin_amd64"
-else
-       echo Unknown platform
-       exit 1
-fi
-
 SRCS="
        tsan_go.cc
        ../rtl/tsan_clock.cc
@@ -30,47 +19,59 @@ SRCS="
        ../../sanitizer_common/sanitizer_common.cc
        ../../sanitizer_common/sanitizer_flags.cc
        ../../sanitizer_common/sanitizer_libc.cc
-       ../../sanitizer_common/sanitizer_posix.cc
        ../../sanitizer_common/sanitizer_printf.cc
 "
 
-if [ "$LINUX" != "" ]; then
+if [ "`uname -a | grep Linux`" != "" ]; then
+       SUFFIX="linux_amd64"
+       OSCFLAGS="-fPIC -ffreestanding"
+       OSLDFLAGS="-lpthread"
        SRCS+="
                ../rtl/tsan_platform_linux.cc
+               ../../sanitizer_common/sanitizer_posix.cc
                ../../sanitizer_common/sanitizer_linux.cc
        "
-elif [ "$MAC" != "" ]; then
+elif [ "`uname -a | grep Darwin`" != "" ]; then
+       SUFFIX="darwin_amd64"
+       OSCFLAGS="-fPIC"
+       OSLDFLAGS="-lpthread"
        SRCS+="
                ../rtl/tsan_platform_mac.cc
+               ../../sanitizer_common/sanitizer_posix.cc
                ../../sanitizer_common/sanitizer_mac.cc
        "
+elif [ "`uname -a | grep MINGW`" != "" ]; then
+       SUFFIX="windows_amd64"
+       OSCFLAGS="-Wno-error=attributes -Wno-attributes"
+       OSLDFLAGS=""
+       SRCS+="
+               ../rtl/tsan_platform_windows.cc
+               ../../sanitizer_common/sanitizer_win.cc
+       "
+else
+       echo Unknown platform
+       exit 1
 fi
 
 SRCS+=$ADD_SRCS
-#ASMS="../rtl/tsan_rtl_amd64.S"
 
 rm -f gotsan.cc
 for F in $SRCS; do
        cat $F >> gotsan.cc
 done
 
-FLAGS=" -I../rtl -I../.. -I../../sanitizer_common -I../../../include -fPIC -Wall -Werror -fno-exceptions -DTSAN_GO -DSANITIZER_GO -DTSAN_SHADOW_COUNT=4"
+FLAGS=" -I../rtl -I../.. -I../../sanitizer_common -I../../../include -m64 -Wall -Werror -fno-exceptions -DTSAN_GO -DSANITIZER_GO -DTSAN_SHADOW_COUNT=4 $OSCFLAGS"
 if [ "$DEBUG" == "" ]; then
        FLAGS+=" -DTSAN_DEBUG=0 -O3 -fomit-frame-pointer"
 else
        FLAGS+=" -DTSAN_DEBUG=1 -g"
 fi
 
-if [ "$LINUX" != "" ]; then
-       FLAGS+=" -ffreestanding"
-fi
-
 echo gcc gotsan.cc -S -o tmp.s $FLAGS $CFLAGS
 gcc gotsan.cc -S -o tmp.s $FLAGS $CFLAGS
 cat tmp.s $ASMS > gotsan.s
 echo as gotsan.s -o race_$SUFFIX.syso
 as gotsan.s -o race_$SUFFIX.syso
 
-gcc test.c race_$SUFFIX.syso -lpthread -o test
+gcc test.c race_$SUFFIX.syso -m64 -o test $OSLDFLAGS
 TSAN_OPTIONS="exitcode=0" ./test
-