37
37
# Internal logger
38
38
_logger = logging .getLogger (__name__ )
39
39
40
- # Flag for debugging
40
+ # Flag for debugging
41
41
DEBUG = False
42
42
43
43
@@ -66,7 +66,7 @@ def __init__(self, inputList, exactMatches={}, patternMatches={}):
66
66
'-c' : (0 , ArgumentListFilter .compileOnlyCallback ),
67
67
'-E' : (0 , ArgumentListFilter .preprocessOnlyCallback ),
68
68
'-S' : (0 , ArgumentListFilter .assembleOnlyCallback ),
69
-
69
+
70
70
'--verbose' : (0 , ArgumentListFilter .verboseFlagCallback ),
71
71
'--param' : (1 , ArgumentListFilter .defaultBinaryCallback ),
72
72
'-aux-info' : (1 , ArgumentListFilter .defaultBinaryCallback ),
@@ -77,8 +77,8 @@ def __init__(self, inputList, exactMatches={}, patternMatches={}):
77
77
#warnings (apart from the regex below)
78
78
'-w' : (0 , ArgumentListFilter .compileOnlyCallback ),
79
79
'-W' : (0 , ArgumentListFilter .compileOnlyCallback ),
80
-
81
-
80
+
81
+
82
82
#iam: if this happens, then we need to stop and think.
83
83
'-emit-llvm' : (0 , ArgumentListFilter .abortUnaryCallback ),
84
84
@@ -92,7 +92,7 @@ def __init__(self, inputList, exactMatches={}, patternMatches={}):
92
92
'-integrated-as' : (0 , ArgumentListFilter .compileUnaryCallback ),
93
93
#iam: gcc uses this in both compile and link, but clang only in compile
94
94
'-pthread' : (0 , ArgumentListFilter .compileUnaryCallback ),
95
-
95
+
96
96
#iam: arm stuff
97
97
'-mno-omit-leaf-frame-pointer' : (0 , ArgumentListFilter .compileUnaryCallback ),
98
98
'-maes' : (0 , ArgumentListFilter .compileUnaryCallback ),
@@ -151,8 +151,8 @@ def __init__(self, inputList, exactMatches={}, patternMatches={}):
151
151
'-g0' : (0 , ArgumentListFilter .compileUnaryCallback ), #iam: clang not gcc
152
152
'-gdwarf-2' : (0 , ArgumentListFilter .compileUnaryCallback ),
153
153
'-gdwarf-3' : (0 , ArgumentListFilter .compileUnaryCallback ),
154
- '-p' : (0 , ArgumentListFilter .compileUnaryCallback ),
155
- '-pg' : (0 , ArgumentListFilter .compileUnaryCallback ),
154
+ '-p' : (0 , ArgumentListFilter .compileUnaryCallback ),
155
+ '-pg' : (0 , ArgumentListFilter .compileUnaryCallback ),
156
156
157
157
# Optimization
158
158
'-O' : (0 , ArgumentListFilter .compileUnaryCallback ),
@@ -275,7 +275,7 @@ def _shiftArgs(self, nargs):
275
275
def abortUnaryCallback (self , flag ):
276
276
_logger .warning ('Out of context experience: "{0}"' .format (str (self .inputList )))
277
277
sys .exit (1 )
278
-
278
+
279
279
def inputFileCallback (self , infile ):
280
280
_logger .debug ('Input file: ' + infile )
281
281
self .inputFiles .append (infile )
@@ -284,9 +284,9 @@ def inputFileCallback(self, infile):
284
284
285
285
def outputFileCallback (self , flag , filename ):
286
286
self .outputFilename = filename
287
-
287
+
288
288
def objectFileCallback (self , objfile ):
289
- self .objectFiles .append (objfile )
289
+ self .objectFiles .append (objfile )
290
290
291
291
def preprocessOnlyCallback (self , flag ):
292
292
self .isPreprocessOnly = True
@@ -591,7 +591,7 @@ def buildAndAttachBitcode(builder):
591
591
592
592
#iam: when we have multiple input files we'll have to keep track of their object files.
593
593
newObjectFiles = []
594
-
594
+
595
595
hidden = not af .isCompileOnly
596
596
597
597
if len (af .inputFiles ) == 1 and af .isCompileOnly :
@@ -610,36 +610,36 @@ def buildAndAttachBitcode(builder):
610
610
attachBitcodePathToObject (bcFile , objFile )
611
611
612
612
else :
613
-
613
+
614
614
for srcFile in af .inputFiles :
615
615
(objFile , bcFile ) = af .getArtifactNames (srcFile , hidden )
616
616
if hidden :
617
617
buildObjectFile (builder , srcFile , objFile )
618
618
newObjectFiles .append (objFile )
619
619
buildBitcodeFile (builder , srcFile , bcFile )
620
620
attachBitcodePathToObject (bcFile , objFile )
621
-
621
+
622
622
623
623
if not af .isCompileOnly :
624
624
linkFiles (builder , newObjectFiles )
625
-
625
+
626
626
sys .exit (0 )
627
627
628
628
def linkFiles (builder , objectFiles ):
629
629
af = builder .getBitcodeArglistFilter ()
630
630
outputFile = af .getOutputFilename ()
631
631
cc = builder .getCompiler ()
632
- cc .extend (af .objectFiles )
633
- cc .extend (objectFiles )
634
- cc .extend (af .linkArgs )
632
+ cc .extend (af .objectFiles )
633
+ cc .extend (objectFiles )
634
+ cc .extend (af .linkArgs )
635
635
cc .extend (['-o' , outputFile ])
636
636
proc = Popen (cc )
637
637
rc = proc .wait ()
638
638
if rc != 0 :
639
639
_logger .warning ('Failed to link "{0}"' .format (str (cc )))
640
640
sys .exit (rc )
641
641
642
-
642
+
643
643
def buildBitcodeFile (builder , srcFile , bcFile ):
644
644
af = builder .getBitcodeArglistFilter ()
645
645
bcc = builder .getBitcodeCompiler ()
@@ -663,7 +663,7 @@ def buildObjectFile(builder, srcFile, objFile):
663
663
if rc != 0 :
664
664
_logger .warning ('Failed to generate object "{0}" for "{1}"' .format (objFile , srcFile ))
665
665
sys .exit (rc )
666
-
666
+
667
667
# bd & iam:
668
668
#
669
669
# case 1 (compileOnly):
@@ -674,14 +674,14 @@ def buildObjectFile(builder, srcFile, objFile):
674
674
# locating them is easy:
675
675
# either the .o is in the cmdline and we are in the simple case,
676
676
# or else it was generated according to getObjectFilename
677
- #
677
+ #
678
678
# we then produce and attach bitcode for each inputFile in the cmdline
679
679
#
680
680
#
681
681
# case 2 (compile and link)
682
682
#
683
683
# af.inputFiles is not empty, and compileOnly is false.
684
- # in this case the .o's may not exist, we must regenerate
684
+ # in this case the .o's may not exist, we must regenerate
685
685
# them in any case.
686
686
#
687
687
#
@@ -690,4 +690,3 @@ def buildObjectFile(builder, srcFile, objFile):
690
690
# in this case af.inputFiles is empty and we are done
691
691
#
692
692
#
693
-
0 commit comments