@@ -62,6 +62,13 @@ def is_verbose() -> bool:
6262 return to_bool (doit .get_var ("VERBOSE" , False ))
6363
6464
65+ def append_flags (env : dict [str , str ], var : str , flags : str ) -> None :
66+ if var in env :
67+ env [var ] += " " + flags
68+ else :
69+ env [var ] = flags
70+
71+
6572def architecture () -> str :
6673 match platform .machine ():
6774 case "AMD64" :
@@ -230,16 +237,26 @@ def build(
230237
231238 env = {}
232239
240+ smuggle_vars = ("CGO_CFLAGS" , "CGO_LDFLAGS" )
241+ for var in smuggle_vars :
242+ if var in os .environ :
243+ env [var ] = os .environ [var ]
244+
233245 if platform .system () == "Darwin" :
234- env [ "CGO_CFLAGS" ] = "-mmacosx-version-min=10.12"
235- env [ "CGO_LDFLAGS" ] = "-mmacosx-version-min=10.12"
246+ append_flags ( env , "CGO_CFLAGS" , "-mmacosx-version-min=10.12" )
247+ append_flags ( env , "CGO_LDFLAGS" , "-mmacosx-version-min=10.12" )
236248
237249 if ci and platform .system () == "Linux" :
238250 env ["SOURCE_ROOT" ] = str (repo_root )
239251 env ["ARCH" ] = architecture ()
240252
241253 check_call (["go" , "mod" , "vendor" ], cwd = driver_root )
242254
255+ smuggle_env = ""
256+ for var in smuggle_vars :
257+ if var in env :
258+ smuggle_env += f'{ var } ="{ shlex .quote (env [var ])} " '
259+
243260 ldflags += (
244261 " -linkmode external -extldflags=-Wl,--version-script=/only-export-adbc.ld"
245262 )
@@ -254,7 +271,7 @@ def build(
254271 "--" ,
255272 "bash" ,
256273 "-c" ,
257- f'cd /source/{ driver_root .relative_to (repo_root )} && go build -buildmode=c-shared { tags } -o /source/build/{ target } -ldflags "{ ldflags } " ./pkg' ,
274+ f'cd /source/{ driver_root .relative_to (repo_root )} && env { smuggle_env } go build -buildmode=c-shared { tags } -o /source/build/{ target } -ldflags "{ ldflags } " ./pkg' ,
258275 ]
259276 check_call (command , cwd = Path (__file__ ).parent , env = env )
260277 else :
0 commit comments