Permalink
Cannot retrieve contributors at this time
executable file
100 lines (82 sloc)
2.99 KB
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
# Computes the flags for ghcide to pass to ghci. You probably won’t be running this yourself, but rather script/repl will. | |
set -e | |
cd "$(dirname "$0")/.." | |
ghc_version="$(ghc --numeric-version)" | |
build_dir="dist-newstyle/build/x86_64-osx/ghc-$ghc_version" | |
build_products_dir="$build_dir/build-repl" | |
function add_autogen_includes { | |
echo "-optP-include" | |
echo "-optP$1/cabal_macros.h" | |
# autogenerated files, .h and .hs | |
echo "-i$1" | |
echo "-I$1" | |
} | |
cores=$(sysctl -n machdep.cpu.core_count || echo 4) | |
# disable optimizations for faster loading | |
echo "-O0" | |
# don’t load .ghci files (for ghcide) | |
echo "-ignore-dot-ghci" | |
# use as many jobs as there are physical cores | |
echo "-j$cores" | |
# where to put build products | |
echo "-outputdir $build_products_dir" | |
echo "-odir $build_products_dir" | |
echo "-hidir $build_products_dir" | |
echo "-stubdir $build_products_dir" | |
if [ -d "$build_dir/semantic-0.11.0.0/build/autogen" ] | |
then add_autogen_includes "$build_dir/semantic-0.11.0.0/build/autogen" | |
elif [ -d "$build_dir/semantic-0.11.0.0/noopt/build/autogen" ] | |
then add_autogen_includes "$build_dir/semantic-0.11.0.0/noopt/build/autogen" | |
fi | |
echo "-optP-Wno-macro-redefined" | |
echo "-DBAZEL_BUILD=0" | |
# .hs source dirs | |
# TODO: would be nice to figure this out from cabal.project & the .cabal files | |
echo "-isemantic/app" | |
echo "-isemantic/src" | |
echo "-isemantic/bench" | |
echo "-isemantic/test" | |
echo "-isemantic-analysis/src" | |
echo "-isemantic-ast/src" | |
echo "-isemantic-codeql/src" | |
echo "-isemantic-codeql/test" | |
echo "-isemantic-go/src" | |
echo "-isemantic-java/src" | |
echo "-isemantic-json/src" | |
echo "-isemantic-json/test" | |
echo "-isemantic-parse/src" | |
echo "-isemantic-php/src" | |
echo "-isemantic-proto/src" | |
echo "-isemantic-python/src" | |
echo "-isemantic-python/test" | |
echo "-isemantic-ruby/src" | |
echo "-isemantic-rust/src" | |
echo "-isemantic-scope-graph/src" | |
echo "-isemantic-tsx/src" | |
echo "-isemantic-typescript/src" | |
echo "-isemantic-tags/src" | |
# disable automatic selection of packages | |
echo "-hide-all-packages" | |
echo "-package proto-lens-jsonpb" | |
# run cabal and emit package flags from the environment file, removing comments & prefixing with - | |
cabal v2-exec -v0 bash -- -c 'cat "$GHC_ENVIRONMENT"' | grep -v '^--' | sed -e 's/^/-/' | |
# default language extensions | |
echo "-XHaskell2010" | |
echo "-XStrictData" | |
# treat warnings as warnings | |
echo "-Wwarn" | |
# default warning flags | |
echo "-Weverything" | |
echo "-Wno-all-missed-specialisations" | |
echo "-Wno-implicit-prelude" | |
echo "-Wno-missed-specialisations" | |
echo "-Wno-missing-import-lists" | |
echo "-Wno-missing-local-signatures" | |
echo "-Wno-monomorphism-restriction" | |
echo "-Wno-name-shadowing" | |
echo "-Wno-safe" | |
echo "-Wno-unsafe" | |
[[ "$ghc_version" = 8.6.* ]] || [[ "$ghc_version" = 8.8.* ]] || [[ "$ghc_version" = 8.10.* ]] && echo "-Wno-star-is-type" || true | |
[[ "$ghc_version" = 8.8.* ]] || [[ "$ghc_version" = 8.10.* ]] && echo "-Wno-missing-deriving-strategies" || true | |
[[ "$ghc_version" = 8.10.* ]] && echo "-Wno-missing-safe-haskell-mode" && echo "-Wno-prepositive-qualified-module" && echo "-Wno-unused-packages" |