diff --git a/build b/build
index 69cdfa6457..c538e91aeb 100755
--- a/build
+++ b/build
@@ -1,6 +1,8 @@
 #!/bin/sh
 
 set -e
+set -u
+set -x
 
 JOBS="$1"
 TARGET="$2" # Example: riscv64-linux-gnu
@@ -16,6 +18,7 @@ TARGET_OS_CMAKE=${TARGET_OS_AND_ABI%-*} # Example: linux
 case $TARGET_OS_CMAKE in
   macos) TARGET_OS_CMAKE="Darwin";;
   freebsd) TARGET_OS_CMAKE="FreeBSD";;
+  netbsd) TARGET_OS_CMAKE="NetBSD";;
   windows) TARGET_OS_CMAKE="Windows";;
   linux) TARGET_OS_CMAKE="Linux";;
   native) TARGET_OS_CMAKE="";;
@@ -53,8 +56,16 @@ make "$JOBS" install
 
 # Now we have Zig as a cross compiler.
 ZIG="$ROOTDIR/out/host/bin/zig"
-export CC="$ZIG cc -fno-sanitize=all -target $TARGET -mcpu=$MCPU"
-export CXX="$ZIG c++ -fno-sanitize=all -target $TARGET -mcpu=$MCPU"
+export CC="$ZIG cc -fno-sanitize=all -mcpu=$MCPU"
+export CXX="$ZIG c++ -fno-sanitize=all -mcpu=$MCPU"
+echo "#!/bin/sh
+env CC=\"clang\" $CC \"\$@\"" > $ROOTDIR/out/host/bin/zigcc
+echo "#!/bin/sh
+env CC=\"clang\" $CXX \"\$@\"" > $ROOTDIR/out/host/bin/zigcxx
+chmod +x $ROOTDIR/out/host/bin/zigcc
+chmod +x $ROOTDIR/out/host/bin/zigcxx
+export CC="$ROOTDIR/out/host/bin/zigcc"
+export CXX="$ROOTDIR/out/host/bin/zigcxx"
 
 # First cross compile zlib for the target, as we need the LLVM linked into
 # the finaly zig binary to have zlib support enabled.
@@ -129,6 +140,6 @@ cmake "$ROOTDIR/zig" \
   -DZIG_VERSION="$ZIG_VERSION" \
   -DZIG_USE_LLVM_CONFIG=OFF \
   -DZIG_STATIC_ZLIB=ON
+make "$JOBS" install
 unset CC
 unset CXX
-make "$JOBS" install
diff --git a/llvm/lib/Target/AMDGPU/CMakeLists.txt b/llvm/lib/Target/AMDGPU/CMakeLists.txt
index 71f2026c33..043c62d68e 100644
--- a/llvm/lib/Target/AMDGPU/CMakeLists.txt
+++ b/llvm/lib/Target/AMDGPU/CMakeLists.txt
@@ -144,6 +144,7 @@ add_llvm_target(AMDGPUCodeGen
   GCNNSAReassign.cpp
   GCNDPPCombine.cpp
   SIModeRegister.cpp
+  sincos_netbsd_compat.c
 
   LINK_COMPONENTS
   Analysis
diff --git a/llvm/lib/Target/AMDGPU/sincos_netbsd_compat.c b/llvm/lib/Target/AMDGPU/sincos_netbsd_compat.c
new file mode 100644
index 0000000000..44db15af99
--- /dev/null
+++ b/llvm/lib/Target/AMDGPU/sincos_netbsd_compat.c
@@ -0,0 +1,16 @@
+#include <math.h>
+
+void sincos(double x, double *sin_result, double *cos_result) {
+	*sin_result = sin(x);
+	*cos_result = cos(x);
+}
+
+void sincosf(float x, float *sin_result, float *cos_result) {
+	*sin_result = sinf(x);
+	*cos_result = cosf(x);
+}
+
+void sincosl(long double x, long double *sin_result, long double *cos_result) {
+	*sin_result = sinl(x);
+	*cos_result = cosl(x);
+}
diff --git a/zig/cmake/install.cmake b/zig/cmake/install.cmake
index 386773e30c..f7d6a57bb1 100644
--- a/zig/cmake/install.cmake
+++ b/zig/cmake/install.cmake
@@ -10,7 +10,7 @@ if(NOT EXISTS ${zig_EXE})
     message(FATAL_ERROR)
 endif()
 
-execute_process(COMMAND ${zig_EXE} ${ZIG_INSTALL_ARGS}
+execute_process(COMMAND env CC=clang ${zig_EXE} ${ZIG_INSTALL_ARGS}
     WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
     RESULT_VARIABLE _result
 )