@@ -65,7 +65,9 @@ enum fARCH {
65
65
fARCH_i386 ,
66
66
fARCH_x86_64 ,
67
67
fARCH_arm ,
68
- fARCH_aarch64
68
+ fARCH_aarch64 ,
69
+ fARCH_loongarch64 ,
70
+ fARCH_SIZE // To get the number of architectures.
69
71
};
70
72
71
73
static gchar const APPIMAGEIGNORE [] = ".appimageignore" ;
@@ -288,7 +290,7 @@ static void replacestr(char *line, const char *search, const char *replace)
288
290
int count_archs (bool * archs ) {
289
291
int countArchs = 0 ;
290
292
int i ;
291
- for (i = 0 ; i < 4 ; i ++ ) {
293
+ for (i = 0 ; i < fARCH_SIZE ; i ++ ) {
292
294
countArchs += archs [i ];
293
295
}
294
296
return countArchs ;
@@ -303,11 +305,18 @@ gchar* getArchName(bool* archs) {
303
305
return "armhf" ;
304
306
else if (archs [fARCH_aarch64 ])
305
307
return "aarch64" ;
308
+ else if (archs [fARCH_loongarch64 ])
309
+ return "loongarch64" ;
306
310
else
307
311
return "all" ;
308
312
}
309
313
310
314
void extract_arch_from_e_machine_field (int16_t e_machine , const gchar * sourcename , bool * archs ) {
315
+ if (e_machine == 2 ) {
316
+ archs [fARCH_loongarch64 ] = 1 ;
317
+ if (verbose )
318
+ fprintf (stderr , "%s used for determining architecture loongarch64\n" , sourcename );
319
+ }
311
320
if (e_machine == 3 ) {
312
321
archs [fARCH_i386 ] = 1 ;
313
322
if (verbose )
@@ -363,6 +372,10 @@ void extract_arch_from_text(gchar *archname, const gchar* sourcename, bool* arch
363
372
archs [fARCH_aarch64 ] = 1 ;
364
373
if (verbose )
365
374
fprintf (stderr , "%s used for determining architecture ARM aarch64\n" , sourcename );
375
+ } else if (g_ascii_strncasecmp ("loongarch64" , archname , 20 ) == 0 ) {
376
+ archs [fARCH_loongarch64 ] = 1 ;
377
+ if (verbose )
378
+ fprintf (stderr , "%s used for determining architecture loongarch64\n" , sourcename );
366
379
}
367
380
}
368
381
}
@@ -720,7 +733,8 @@ main (int argc, char *argv[])
720
733
}
721
734
722
735
/* Determine the architecture */
723
- bool archs [4 ] = {0 , 0 , 0 , 0 };
736
+ bool archs [fARCH_SIZE ];
737
+ memset (archs ,0 ,sizeof (bool )* fARCH_SIZE );
724
738
extract_arch_from_text (getenv ("ARCH" ), "Environmental variable ARCH" , archs );
725
739
if (count_archs (archs ) != 1 ) {
726
740
/* If no $ARCH variable is set check a file */
0 commit comments