@@ -35,6 +35,7 @@ package shared
3535
3636import (
3737 "os"
38+ "strings"
3839)
3940
4041const (
@@ -82,6 +83,9 @@ var LLVMObjcopy string
8283//LLVMLd is the path to the ld executable used to attach the bitcode on OSX.
8384var LLVMLd string
8485
86+ //LLVMbcGen is the list of args to pass to clang during the bitcode generation step.
87+ var LLVMbcGen []string
88+
8589const (
8690 envpath = "LLVM_COMPILER_PATH"
8791 envcc = "LLVM_CC_NAME"
@@ -95,14 +99,17 @@ const (
9599 envld = "GLLVM_LD" //iam: we are deviating from wllvm here.
96100 envobjcopy = "GLLVM_OBJCOPY" //iam: we are deviating from wllvm here.
97101 //wllvm uses a BINUTILS_TARGET_PREFIX, which seems less general.
102+ //iam: 03/24/2020 new feature to pass things like "-flto -fwhole-program-vtables"
103+ // to clang during the bitcode generation step
104+ envbcgen = "LLVM_BITCODE_GENERATION_FLAGS"
98105)
99106
100107func init () {
101108 FetchEnvironment ()
102109}
103110
104- func printEnvironment () {
105- vars := []string {envpath , envcc , envcxx , envar , envlnk , envcfg , envbc , envlvl , envfile , envobjcopy , envld }
111+ func PrintEnvironment () {
112+ vars := []string {envpath , envcc , envcxx , envar , envlnk , envcfg , envbc , envlvl , envfile , envobjcopy , envld , envbcgen }
106113
107114 informUser ("\n Living in this environment:\n \n " )
108115 for _ , v := range vars {
@@ -116,7 +123,23 @@ func printEnvironment() {
116123
117124}
118125
119- // used in testing
126+ // also used in testing
127+ func ResetEnvironment () {
128+ LLVMToolChainBinDir = ""
129+ LLVMCCName = ""
130+ LLVMCXXName = ""
131+ LLVMARName = ""
132+ LLVMLINKName = ""
133+ LLVMConfigureOnly = ""
134+ LLVMBitcodeStorePath = ""
135+ LLVMLoggingLevel = ""
136+ LLVMLoggingFile = ""
137+ LLVMObjcopy = ""
138+ LLVMLd = ""
139+ LLVMbcGen = []string {}
140+ }
141+
142+ // also used in testing
120143func FetchEnvironment () {
121144 LLVMToolChainBinDir = os .Getenv (envpath )
122145 LLVMCCName = os .Getenv (envcc )
@@ -132,4 +155,7 @@ func FetchEnvironment() {
132155
133156 LLVMObjcopy = os .Getenv (envobjcopy )
134157 LLVMLd = os .Getenv (envld )
158+
159+ LLVMbcGen = strings .Fields (os .Getenv (envbcgen ))
160+
135161}
0 commit comments