gollvm: pass sysroot to C compiler

There are a few places where the C compiler is invoked
"manually", not by CMake. In those places, if CMAKE_SYSROOT is
set, pass it to the C compiler.

Change-Id: I3384419138cc012eccf2bc724bf2e9322c412802
Reviewed-on: https://go-review.googlesource.com/118321
Reviewed-by: Than McIntosh <thanm@google.com>
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c826f59..487b6a0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -21,7 +21,10 @@
 set(EXTINSTALLDIR ${CMAKE_CURRENT_BINARY_DIR}/external/install)
 set(EXTLIBDIR "${EXTINSTALLDIR}/lib")
 set(EXTINCLUDEDIR "${EXTINSTALLDIR}/include")
-set(EXTCPPFLAGS "CFLAGS=-I${EXTINCLUDEDIR}")
+set(EXTCPPFLAGS "CFLAGS=-I${EXTINCLUDEDIR} --sysroot=${CMAKE_SYSROOT}")
+if(NOT "${CMAKE_SYSROOT}" STREQUAL "")
+  string(APPEND EXTCPPFLAGS " --sysroot=${CMAKE_SYSROOT}")
+endif()
 set(EXTLDFLAGS "LDFLAGS=-L${EXTLIBDIR}")
 set(EXTCC "CC=${CMAKE_C_COMPILER}" "CXX=${CMAKE_CXX_COMPILER}")
 
diff --git a/cmake/modules/AutoGenGo.cmake b/cmake/modules/AutoGenGo.cmake
index a93df0f..c5f40b3 100644
--- a/cmake/modules/AutoGenGo.cmake
+++ b/cmake/modules/AutoGenGo.cmake
@@ -414,6 +414,10 @@
   CMAKE_PARSE_ARGUMENTS(ARG "" "" "DEPS;CFLAGS" ${ARGN})
 
   set(ccomp ${CMAKE_C_COMPILER})
+  set(cflags ${ARG_CFLAGS})
+  if(NOT "${CMAKE_SYSROOT}" STREQUAL "")
+    set(cflags ${cflags} "--sysroot=${CMAKE_SYSROOT}")
+  endif()
 
   # Run the host C compiler to generate the object. NB: clang will
   # accept -fno-eliminate-unused-debug-types but does not actually
@@ -421,7 +425,7 @@
   add_custom_command(
     OUTPUT ${objfile}
     COMMAND ${ccomp} "-g3" "-c" "-fno-eliminate-unused-debug-types"
-            ${sysinfoc} -o ${objfile} ${ARG_CFLAGS}
+            ${sysinfoc} -o ${objfile} ${cflags}
     DEPENDS ${sysinfoc} ${ARG_DEPS}
     COMMENT "Building sysinfo.o "
     VERBATIM)
@@ -430,7 +434,7 @@
   add_custom_command(
     OUTPUT ${macrofile}
     COMMAND ${ccomp} "-E" "-dM"
-            ${sysinfoc} -o ${macrofile} ${ARG_CFLAGS}
+            ${sysinfoc} -o ${macrofile} ${cflags}
     DEPENDS ${sysinfoc} ${ARG_DEPS}
     COMMENT "Building sysinfo.c macro temp file"
     VERBATIM)
diff --git a/libgo/CMakeLists.txt b/libgo/CMakeLists.txt
index 890cb51..6a9b8cb 100644
--- a/libgo/CMakeLists.txt
+++ b/libgo/CMakeLists.txt
@@ -277,9 +277,13 @@
 set(errnoi "${libgo_binroot}/errno.i")
 set(errnoitmp "${libgo_binroot}/tmp-errno.i")
 set(mkerrnoish "${CMAKE_CURRENT_SOURCE_DIR}/mkerrnoi.sh")
+set(cflags ${CMAKE_C_FLAGS})
+if(NOT "${CMAKE_SYSROOT}" STREQUAL "")
+  set(cflags "--sysroot=${CMAKE_SYSROOT}")
+endif()
 generate_go_from_script(${errnoi} ${mkerrnoish} ${goos} ${goarch}
                         ${libgo_binroot} SCRIPTARGS "${CMAKE_C_COMPILER}"
-                        ${errnoitmp} ${CMAKE_C_FLAGS})
+                        ${errnoitmp} ${cflags})
 
 # Generated file sysinfo.go
 set(sysinfodotgo "${libgo_binroot}/sysinfo.go")