mirror of
https://git.adityakumar.xyz/flakes.git
synced 2024-11-22 02:32:53 +00:00
40 lines
1.5 KiB
Nix
40 lines
1.5 KiB
Nix
|
|
{
|
|
description = "A build environment for C programs";
|
|
|
|
inputs = { nixpkgs.url = "github:nixos/nixpkgs/master"; };
|
|
|
|
outputs = { self, nixpkgs }:
|
|
let
|
|
pkgs = nixpkgs.legacyPackages.x86_64-linux.pkgs;
|
|
in {
|
|
devShell.x86_64-linux = pkgs.llvmPackages_16.libcxxStdenv.mkDerivation {
|
|
name = "A build environment for C programs";
|
|
buildInputs = [
|
|
pkgs.clang_16
|
|
pkgs.clang-tools
|
|
pkgs.clang-analyzer
|
|
pkgs.lldb_16
|
|
pkgs.llvmPackages_16.stdenv
|
|
pkgs.llvmPackages_16.libcxxStdenv
|
|
pkgs.llvmPackages_16.libcxxClang
|
|
pkgs.llvmPackages_16.compiler-rt
|
|
pkgs.llvmPackages_16.compiler-rt-libc
|
|
pkgs.llvmPackages_16.bintools
|
|
pkgs.llvmPackages_16.clangUseLLVM
|
|
pkgs.llvmPackages_16.libcxxabi
|
|
pkgs.llvmPackages_16.libcxx
|
|
pkgs.llvmPackages_16.libllvm
|
|
pkgs.llvmPackages_16.lld
|
|
pkgs.llvmPackages_16.bintools
|
|
];
|
|
shellHook = ''
|
|
echo "Usage: cc -o bin source.c"
|
|
export C_SANITIZE_FLAGS='-fsanitize=address -fsanitize=leak -fsanitize=undefined -fsanitize=bounds -fsanitize=float-divide-by-zero -fsanitize=integer-divide-by-zero -fsanitize=nonnull-attribute -fsanitize=null -fsanitize=pointer-overflow -fsanitize=integer -fno-omit-frame-pointer'
|
|
export C_WARNING_FLAGS='-Weverything -Wno-c++98-compat'
|
|
alias cc='clang -O1 -std=c17 -stdlib=libc++ $(echo $C_SANITIZE_FLAGS $C_WARNING_FLAGS) -g'
|
|
'';
|
|
};
|
|
};
|
|
}
|
|
|