@@ -213,11 +213,13 @@ def is_windows() -> bool:
213
213
EXE = ".exe" if is_windows () else ""
214
214
215
215
216
- def make_flags_str (cflags : Union [str , List [str ]]) -> str :
217
- if isinstance (cflags , list ):
218
- return " " .join (cflags )
216
+ def make_flags_str (flags : Optional [Union [str , List [str ]]]) -> str :
217
+ if flags is None :
218
+ return ""
219
+ elif isinstance (flags , list ):
220
+ return " " .join (flags )
219
221
else :
220
- return cflags
222
+ return flags
221
223
222
224
223
225
# Load decomp-toolkit generated config.json
@@ -234,14 +236,14 @@ def versiontuple(v: str) -> Tuple[int, ...]:
234
236
build_config : Dict [str , Any ] = json .load (f )
235
237
config_version = build_config .get ("version" )
236
238
if config_version is None :
237
- # Invalid config.json
239
+ print ( " Invalid config.json, regenerating..." )
238
240
f .close ()
239
241
os .remove (build_config_path )
240
242
return None
241
243
242
244
dtk_version = str (config .dtk_tag )[1 :] # Strip v
243
245
if versiontuple (config_version ) < versiontuple (dtk_version ):
244
- # Outdated config.json
246
+ print ( " Outdated config.json, regenerating..." )
245
247
f .close ()
246
248
os .remove (build_config_path )
247
249
return None
@@ -282,7 +284,7 @@ def generate_build_ninja(
282
284
# Variables
283
285
###
284
286
n .comment ("Variables" )
285
- n .variable ("ldflags" , " " . join (config .ldflags or [] ))
287
+ n .variable ("ldflags" , make_flags_str (config .ldflags ))
286
288
if config .linker_version is None :
287
289
sys .exit ("ProjectConfig.linker_version missing" )
288
290
n .variable ("mw_version" , Path (config .linker_version ))
@@ -1188,7 +1190,6 @@ def generate_objdiff_config(
1188
1190
}
1189
1191
1190
1192
# decomp.me compiler name mapping
1191
- # Commented out versions have not been added to decomp.me yet
1192
1193
COMPILER_MAP = {
1193
1194
"GC/1.0" : "mwcc_233_144" ,
1194
1195
"GC/1.1" : "mwcc_233_159" ,
@@ -1365,16 +1366,11 @@ class ProgressUnit:
1365
1366
def __init__ (self , name : str ) -> None :
1366
1367
self .name : str = name
1367
1368
self .code_total : int = 0
1368
- self .code_fancy_frac : int = config .progress_code_fancy_frac
1369
- self .code_fancy_item : str = config .progress_code_fancy_item
1370
1369
self .code_progress : int = 0
1371
1370
self .data_total : int = 0
1372
- self .data_fancy_frac : int = config .progress_data_fancy_frac
1373
- self .data_fancy_item : str = config .progress_data_fancy_item
1374
1371
self .data_progress : int = 0
1375
- self .objects_progress : int = 0
1376
- self .objects_total : int = 0
1377
1372
self .objects : Set [Object ] = set ()
1373
+ self .objects_progress : int = 0
1378
1374
1379
1375
def add (self , build_obj : Dict [str , Any ]) -> None :
1380
1376
self .code_total += build_obj ["code_size" ]
@@ -1384,7 +1380,6 @@ def add(self, build_obj: Dict[str, Any]) -> None:
1384
1380
include_object = build_obj ["name" ] not in self .objects
1385
1381
if include_object :
1386
1382
self .objects .add (build_obj ["name" ])
1387
- self .objects_total += 1
1388
1383
1389
1384
if build_obj ["autogenerated" ]:
1390
1385
# Skip autogenerated objects
@@ -1460,33 +1455,39 @@ def add_unit(id: str, unit: Dict[str, Any]) -> None:
1460
1455
print ("Progress:" )
1461
1456
1462
1457
for unit in progress_units .values ():
1463
- if unit .objects_total == 0 :
1458
+ if len ( unit .objects ) == 0 :
1464
1459
continue
1465
1460
1466
1461
code_frac = unit .code_frac ()
1467
1462
data_frac = unit .data_frac ()
1468
1463
print (
1469
- f" { unit .name } : { code_frac :.2%} code, { data_frac :.2%} data ({ unit .objects_progress } / { unit .objects_total } files)"
1464
+ f" { unit .name } : { code_frac :.2%} code, { data_frac :.2%} data ({ unit .objects_progress } / { len ( unit .objects ) } files)"
1470
1465
)
1471
1466
print (f" Code: { unit .code_progress } / { unit .code_total } bytes" )
1472
1467
print (f" Data: { unit .data_progress } / { unit .data_total } bytes" )
1473
- if config .progress_use_fancy :
1474
- code_items = math .floor (code_frac * unit .code_fancy_frac )
1475
- print (
1476
- "\n You have {} out of {} {} and {} out of {} {}." .format (
1477
- math .floor (code_frac * unit .code_fancy_frac ),
1478
- unit .code_fancy_frac ,
1479
- unit .code_fancy_item ,
1480
- math .floor (data_frac * unit .data_fancy_frac ),
1481
- unit .data_fancy_frac ,
1482
- unit .data_fancy_item ,
1483
- )
1468
+
1469
+ if config .progress_use_fancy :
1470
+ unit = progress_units .get ("all" ) or progress_units .get ("dol" )
1471
+ if unit is None or len (unit .objects ) == 0 :
1472
+ return
1473
+
1474
+ code_frac = unit .code_frac ()
1475
+ data_frac = unit .data_frac ()
1476
+ print (
1477
+ "\n You have {} out of {} {} and {} out of {} {}." .format (
1478
+ math .floor (code_frac * config .progress_code_fancy_frac ),
1479
+ config .progress_code_fancy_frac ,
1480
+ config .progress_code_fancy_item ,
1481
+ math .floor (data_frac * config .progress_data_fancy_frac ),
1482
+ config .progress_data_fancy_frac ,
1483
+ config .progress_data_fancy_item ,
1484
1484
)
1485
+ )
1485
1486
1486
1487
# Generate and write progress.json
1487
1488
progress_json : Dict [str , Any ] = {}
1488
1489
for id , unit in progress_units .items ():
1489
- if unit .objects_total == 0 :
1490
+ if len ( unit .objects ) == 0 :
1490
1491
continue
1491
1492
progress_json [id ] = {
1492
1493
"code" : unit .code_progress ,
0 commit comments