Skip to content

Instantly share code, notes, and snippets.

@crabtw
Created March 26, 2013 05:35
Show Gist options
  • Save crabtw/5243377 to your computer and use it in GitHub Desktop.
Save crabtw/5243377 to your computer and use it in GitHub Desktop.
cross scan-build wrappers
#!/bin/sh
TARGET="mips-unknown-linux-uclibc"
TOOLCHAIN_PATH="$HOME/x-tools/$TARGET"
SYSROOT="$HOME/sysroot/$TARGET"
SCAN_BUILD_DIR="$HOME/src/llvm-svn/tools/clang/tools/scan-build"
SCAN_BUILD_CC="$HOME/bin/$TARGET-clang"
SCAN_BUILD_CXX="$HOME/bin/$TARGET-clang++"
SCAN_BUILD_OUT="analysis"
export PATH="$SCAN_BUILD_DIR:$TOOLCHAIN_PATH/bin:$PATH"
export CC="$TARGET-gcc"
export CPP="$TARGET-cpp"
export CXX="$TARGET-g++"
export LD="$TARGET-ld"
export AR="$TARGET-ar"
export AS="$TARGET-as"
export STRIP="$TARGET-strip"
export CFLAGS="--sysroot=$SYSROOT $CFLAGS"
export CXXFLAGS="--sysroot=$SYSROOT $CXXFLAGS"
export LDFLAGS="--sysroot=$SYSROOT $LDFLAGS"
export CPPFLAGS="--sysroot=$SYSROOT $CPPFLAGS"
scan-build \
--use-analyzer="$SCAN_BUILD_CC" \
--use-cc="$SCAN_BUILD_CC" \
--use-c++="$SCAN_BUILD_CXX" \
-o "$SCAN_BUILD_OUT" \
\
cmake -DCMAKE_TOOLCHAIN_FILE="$HOME/cmake/cross.cmake" $*
#!/bin/sh
TARGET="mips-unknown-linux-uclibc"
TOOLCHAIN_PATH="$HOME/x-tools/$TARGET"
SYSROOT="$HOME/sysroot/$TARGET"
SCAN_BUILD_DIR="$HOME/src/llvm-svn/tools/clang/tools/scan-build"
SCAN_BUILD_CC="$HOME/bin/$TARGET-clang"
SCAN_BUILD_CXX="$HOME/bin/$TARGET-clang++"
SCAN_BUILD_OUT="analysis"
export PATH="$SCAN_BUILD_DIR:$TOOLCHAIN_PATH/bin:$PATH"
export CC="$TARGET-gcc"
export CPP="$TARGET-cpp"
export CXX="$TARGET-g++"
export LD="$TARGET-ld"
export AR="$TARGET-ar"
export AS="$TARGET-as"
export STRIP="$TARGET-strip"
export CFLAGS="--sysroot=$SYSROOT $CFLAGS"
export CXXFLAGS="--sysroot=$SYSROOT $CXXFLAGS"
export LDFLAGS="--sysroot=$SYSROOT $LDFLAGS"
export CPPFLAGS="--sysroot=$SYSROOT $CPPFLAGS"
export PKG_CONFIG_SYSROOT_DIR="$SYSROOT"
scan-build \
--use-analyzer="$SCAN_BUILD_CC" \
--use-cc="$SCAN_BUILD_CC" \
--use-c++="$SCAN_BUILD_CXX" \
-o "$SCAN_BUILD_OUT" \
\
$* --host="$TARGET"
Index: ccc-analyzer
===================================================================
--- ccc-analyzer (revision 177849)
+++ ccc-analyzer (working copy)
@@ -359,7 +359,8 @@
'-v' => 0,
'-fpascal-strings' => 0,
'-mmacosx-version-min' => 0, # This is really a 1 argument, but always has '='
- '-miphoneos-version-min' => 0 # This is really a 1 argument, but always has '='
+ '-miphoneos-version-min' => 0, # This is really a 1 argument, but always has '='
+ '--sysroot' => 0
);
my %IgnoredOptionMap = (
@@ -399,7 +400,8 @@
);
my %UniqueOptions = (
- '-isysroot' => 0
+ '-isysroot' => 0,
+ '--sysroot' => 0
);
##----------------------------------------------------------------------------##
set(CMAKE_SYSTEM_NAME Linux)
if(NOT ("$ENV{CC}" STREQUAL ""))
set(CMAKE_C_COMPILER "$ENV{CC}")
endif()
if(NOT ("$ENV{CXX}" STREQUAL ""))
set(CMAKE_CXX_COMPILER "$ENV{CXX}")
endif()
if(NOT ("$ENV{CFLAGS}" STREQUAL ""))
set(CMAKE_C_FLAGS "$ENV{CFLAGS}")
endif()
if(NOT ("$ENV{CXXFLAGS}" STREQUAL ""))
set(CMAKE_CXX_FLAGS "$ENV{CXXFLAGS}")
endif()
if(NOT ("$ENV{LDFLAGS}" STREQUAL ""))
set(CMAKE_EXE_LINKER_FLAGS "$ENV{LDFLAGS}")
set(CMAKE_MODULE_LINKER_FLAGS "$ENV{LDFLAGS}")
set(CMAKE_SHARED_LINKER_FLAGS "$ENV{LDFLAGS}")
endif()
set(CMAKE_INSTALL_SO_NO_EXE 0)
if(NOT ("$ENV{SYSROOT}" STREQUAL ""))
set(CMAKE_FIND_ROOT_PATH "$ENV{SYSROOT}")
endif()
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
if(NOT ("$ENV{SYSROOT}" STREQUAL ""))
set(ENV{PKG_CONFIG_SYSROOT_DIR} "$ENV{SYSROOT}")
endif()
#!/bin/sh
TARGET="mips-unknown-linux-uclibc"
TOOLCHAIN_PATH="$HOME/x-tools/$TARGET"
SCAN_BUILD_DIR="$HOME/src/llvm-svn/tools/clang/tools/scan-build"
SCAN_BUILD_CC="$HOME/bin/$TARGET-clang"
SCAN_BUILD_CXX="$HOME/bin/$TARGET-clang++"
SCAN_BUILD_OUT="analysis"
SCAN_BUILD_OPTS="-maxloop 100"
export PATH="$SCAN_BUILD_DIR:$TOOLCHAIN_PATH/bin:$PATH"
scan-build \
--use-analyzer="$SCAN_BUILD_CC" \
--use-cc="$SCAN_BUILD_CC" \
--use-c++="$SCAN_BUILD_CXX" \
-o "$SCAN_BUILD_OUT" \
$SCAN_BUILD_OPTS \
\
make $*
let home = Sys.getenv "HOME"
let llvm_path = home ^ "/src/llvm-svn/b/Release+Asserts/bin"
let toolchain_dir = "/usr/local/bin/x-tools/mips-unknown-linux-uclibc"
let toolchain_path = toolchain_dir ^ "/bin"
let settings = [|
"clang";
"-target"; "mips-unknown-linux-uclibc";
"-msoft-float";
"-mips32r2";
"-fPIC";
"--sysroot"; toolchain_dir ^ "/mips-unknown-linux-uclibc/sysroot";
"-B" ^ toolchain_dir ^ "/lib/gcc/mips-unknown-linux-uclibc/4.3.2";
"-L" ^ toolchain_dir ^ "/lib/gcc/mips-unknown-linux-uclibc/4.3.2";
(*"-integrated-as";*)
"-Qunused-arguments"
|]
let args =
let has_cc1 = Array.fold_left (fun x a -> x || a = "-cc1") false Sys.argv in
let prefix = if has_cc1 then [| settings.(0) |] else settings in
let cc_args = Array.sub Sys.argv 1 (Array.length Sys.argv - 1) in
Array.append prefix cc_args
let prepend_path path =
let cur = Unix.getenv "PATH" in
let new_path = path ^ ":" ^ cur in
Unix.putenv "PATH" new_path
let () =
let () = prepend_path toolchain_path in
let () = prepend_path llvm_path in
Unix.execvp ("clang") args
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment