@@ -58,6 +58,12 @@ def main():
58
58
default = os .getcwd (),
59
59
help = "Path to BOLT build directory, default is current " "directory" ,
60
60
)
61
+ parser .add_argument (
62
+ "--create-wrapper" ,
63
+ default = False ,
64
+ action = "store_true" ,
65
+ help = "Sets up llvm-bolt as a symlink to llvm-bolt-wrapper. Passes the options through to llvm-bolt-wrapper." ,
66
+ )
61
67
parser .add_argument (
62
68
"--check-bolt-sources" ,
63
69
default = False ,
@@ -75,7 +81,12 @@ def main():
75
81
default = "HEAD^" ,
76
82
help = "Revision to checkout to compare vs HEAD" ,
77
83
)
78
- args = parser .parse_args ()
84
+
85
+ # When creating a wrapper, pass any unknown arguments to it. Otherwise, die.
86
+ args , wrapper_args = parser .parse_known_args ()
87
+ if not args .create_wrapper and len (wrapper_args ) > 0 :
88
+ parser .parse_args ()
89
+
79
90
bolt_path = f"{ args .build_dir } /bin/llvm-bolt"
80
91
81
92
source_dir = None
@@ -128,6 +139,24 @@ def main():
128
139
)
129
140
# rename llvm-bolt
130
141
os .replace (bolt_path , f"{ bolt_path } .old" )
142
+
143
+ # symlink llvm-bolt-wrapper
144
+ if args .create_wrapper :
145
+ script_dir = os .path .dirname (os .path .abspath (__file__ ))
146
+ wrapper_path = f"{ script_dir } /llvm-bolt-wrapper.py"
147
+ try :
148
+ # set up llvm-bolt-wrapper.ini
149
+ ini = subprocess .check_output (
150
+ shlex .split (f"{ wrapper_path } { bolt_path } .old { bolt_path } .new" ) + wrapper_args ,
151
+ text = True ,
152
+ )
153
+ with open (f"{ args .build_dir } /bin/llvm-bolt-wrapper.ini" , "w" ) as f :
154
+ f .write (ini )
155
+ # symlink llvm-bolt-wrapper
156
+ os .symlink (wrapper_path , bolt_path )
157
+ except Exception as e :
158
+ sys .exit ("Failed to create a wrapper:\n " + str (e ))
159
+
131
160
if args .switch_back :
132
161
if stash :
133
162
subprocess .run (shlex .split ("git stash pop" ), cwd = source_dir )
0 commit comments