#!/bin/bash
set -e
SRC=/chromium/chromium/src
CLANG=$SRC/third_party/llvm-build/Release+Asserts/bin/clang

# Chromium's exact compile-time SQLite flags (sqlite_chromium_configuration_flags
# + sqlite_common_configuration_flags), minus ICU/FTS which are unused here.
$CLANG -g -O1 -fsanitize=address -fno-omit-frame-pointer \
  -I "$SRC/third_party/sqlite/src/amalgamation" \
  -DSQLITE_THREADSAFE=0 -DSQLITE_OMIT_LOAD_EXTENSION \
  -DSQLITE_DEFAULT_LOOKASIDE=0,0 -DSQLITE_OMIT_LOOKASIDE \
  -DSQLITE_DEFAULT_PCACHE_INITSZ=0 -DSQLITE_DEFAULT_MEMSTATUS=1 \
  -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_OMIT_AUTOINIT \
  -DSQLITE_DQS=0 -DSQLITE_OMIT_JSON -DSQLITE_DEFAULT_PAGE_SIZE=4096 \
  -DSQLITE_OMIT_WINDOWFUNC -DSQLITE_OMIT_ANALYZE -DSQLITE_OMIT_AUTOMATIC_INDEX \
  -DSQLITE_OMIT_COMPILEOPTION_DIAGS -DSQLITE_OMIT_EXPLAIN -DSQLITE_OMIT_GET_TABLE \
  -DSQLITE_OMIT_INTROSPECTION_PRAGMAS -DSQLITE_OMIT_TCL_VARIABLE \
  -DSQLITE_OMIT_REINDEX -DSQLITE_OMIT_UPSERT -DSQLITE_OMIT_DEPRECATED \
  -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_DECLTYPE \
  -DSQLITE_HAVE_ISNAN -DSQLITE_USE_ALLOCA -DSQLITE_LIKE_DOESNT_MATCH_BLOBS \
  -DSQLITE_SECURE_DELETE -DSQLITE_DEFAULT_LOCKING_MODE=1 \
  "$SRC/third_party/sqlite/src/amalgamation/sqlite3.c" poc.c \
  -lm -ldl -lpthread -o poc
echo "[+] built ./poc"
