Changes in tools/autotool.py [a4a0f1d:7174403] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
tools/autotool.py
ra4a0f1d r7174403 49 49 50 50 PACKAGE_BINUTILS = "usually part of binutils" 51 PACKAGE_GCC = "preferably version 4. 7.0or newer"51 PACKAGE_GCC = "preferably version 4.5.1 or newer" 52 52 PACKAGE_CROSS = "use tools/toolchain.sh to build the cross-compiler toolchain" 53 53 … … 66 66 67 67 #define DECLARE_BUILTIN_TYPE(tag, type) \\ 68 AUTOTOOL_DECLARE("builtin_size", "", tag, STRING(type), "", "", sizeof(type)); \\ 69 AUTOTOOL_DECLARE("builtin_sign", "unsigned long long int", tag, STRING(type), "unsigned", "", __builtin_types_compatible_p(type, unsigned long long int)); \\ 70 AUTOTOOL_DECLARE("builtin_sign", "unsigned long int", tag, STRING(type), "unsigned", "", __builtin_types_compatible_p(type, unsigned long int)); \\ 71 AUTOTOOL_DECLARE("builtin_sign", "unsigned int", tag, STRING(type), "unsigned", "", __builtin_types_compatible_p(type, unsigned int)); \\ 72 AUTOTOOL_DECLARE("builtin_sign", "unsigned short int", tag, STRING(type), "unsigned", "", __builtin_types_compatible_p(type, unsigned short int)); \\ 73 AUTOTOOL_DECLARE("builtin_sign", "unsigned char", tag, STRING(type), "unsigned", "", __builtin_types_compatible_p(type, unsigned char)); \\ 74 AUTOTOOL_DECLARE("builtin_sign", "signed long long int", tag, STRING(type), "signed", "", __builtin_types_compatible_p(type, signed long long int)); \\ 75 AUTOTOOL_DECLARE("builtin_sign", "signed long int", tag, STRING(type), "signed", "", __builtin_types_compatible_p(type, signed long int)); \\ 76 AUTOTOOL_DECLARE("builtin_sign", "signed int", tag, STRING(type), "signed", "", __builtin_types_compatible_p(type, signed int)); \\ 77 AUTOTOOL_DECLARE("builtin_sign", "signed short int", tag, STRING(type), "signed", "", __builtin_types_compatible_p(type, signed short int)); \\ 78 AUTOTOOL_DECLARE("builtin_sign", "signed char", tag, STRING(type), "signed", "", __builtin_types_compatible_p(type, signed char)); 68 AUTOTOOL_DECLARE("builtin", "", tag, STRING(type), "", "", sizeof(type)); 79 69 80 70 #define DECLARE_INTSIZE(tag, type, strc, conc) \\ 81 71 AUTOTOOL_DECLARE("intsize", "unsigned", tag, #type, strc, conc, sizeof(unsigned type)); \\ 82 72 AUTOTOOL_DECLARE("intsize", "signed", tag, #type, strc, conc, sizeof(signed type)); 83 84 #define DECLARE_FLOATSIZE(tag, type) \\85 AUTOTOOL_DECLARE("floatsize", "", tag, #type, "", "", sizeof(type));86 73 87 74 int main(int argc, char *argv[]) … … 275 262 return int(value, base) 276 263 277 def probe_compiler(common, intsizes, floatsizes):264 def probe_compiler(common, sizes): 278 265 "Generate, compile and parse probing source" 279 266 … … 283 270 outf.write(PROBE_HEAD) 284 271 285 for typedef in intsizes:272 for typedef in sizes: 286 273 outf.write("\tDECLARE_INTSIZE(\"%s\", %s, %s, %s);\n" % (typedef['tag'], typedef['type'], typedef['strc'], typedef['conc'])) 287 288 for typedef in floatsizes:289 outf.write("\nDECLARE_FLOATSIZE(\"%s\", %s);\n" % (typedef['tag'], typedef['type']))290 274 291 275 outf.write(PROBE_TAIL) … … 331 315 signed_concs = {} 332 316 333 float_tags = {} 334 335 builtin_sizes = {} 336 builtin_signs = {} 317 builtins = {} 337 318 338 319 for j in range(len(lines)): … … 371 352 print_error(["Unexpected keyword \"%s\" in \"%s\" on line %s." % (subcategory, PROBE_OUTPUT, j), COMPILER_FAIL]) 372 353 373 if (category == " floatsize"):354 if (category == "builtin"): 374 355 try: 375 356 value_int = decode_value(value) … … 377 358 print_error(["Integer value expected in \"%s\" on line %s." % (PROBE_OUTPUT, j), COMPILER_FAIL]) 378 359 379 float_tags[tag] = value_int 380 381 if (category == "builtin_size"): 382 try: 383 value_int = decode_value(value) 384 except: 385 print_error(["Integer value expected in \"%s\" on line %s." % (PROBE_OUTPUT, j), COMPILER_FAIL]) 386 387 builtin_sizes[tag] = {'name': name, 'value': value_int} 388 389 if (category == "builtin_sign"): 390 try: 391 value_int = decode_value(value) 392 except: 393 print_error(["Integer value expected in \"%s\" on line %s." % (PROBE_OUTPUT, j), COMPILER_FAIL]) 394 395 if (value_int == 1): 396 if (not tag in builtin_signs): 397 builtin_signs[tag] = strc; 398 elif (builtin_signs[tag] != strc): 399 print_error(["Inconsistent builtin type detection in \"%s\" on line %s." % (PROBE_OUTPUT, j), COMPILER_FAIL]) 400 401 return {'unsigned_sizes': unsigned_sizes, 'signed_sizes': signed_sizes, 'unsigned_tags': unsigned_tags, 'signed_tags': signed_tags, 'unsigned_strcs': unsigned_strcs, 'signed_strcs': signed_strcs, 'unsigned_concs': unsigned_concs, 'signed_concs': signed_concs, 'float_tags': float_tags, 'builtin_sizes': builtin_sizes, 'builtin_signs': builtin_signs} 402 403 def detect_sizes(probe, bytes, inttags, floattags): 404 "Detect correct types for fixed-size types" 360 builtins[tag] = {'name': name, 'value': value_int} 361 362 return {'unsigned_sizes': unsigned_sizes, 'signed_sizes': signed_sizes, 'unsigned_tags': unsigned_tags, 'signed_tags': signed_tags, 'unsigned_strcs': unsigned_strcs, 'signed_strcs': signed_strcs, 'unsigned_concs': unsigned_concs, 'signed_concs': signed_concs, 'builtins': builtins} 363 364 def detect_uints(probe, bytes, tags): 365 "Detect correct types for fixed-size integer types" 405 366 406 367 macros = [] … … 409 370 for b in bytes: 410 371 if (not b in probe['unsigned_sizes']): 411 print_error(['Unable to find appropriate unsigned integer type for %u bytes .' % b,372 print_error(['Unable to find appropriate unsigned integer type for %u bytes' % b, 412 373 COMPILER_FAIL]) 413 374 414 375 if (not b in probe['signed_sizes']): 415 print_error(['Unable to find appropriate signed integer type for %u bytes .' % b,376 print_error(['Unable to find appropriate signed integer type for %u bytes' % b, 416 377 COMPILER_FAIL]) 417 378 418 379 if (not b in probe['unsigned_strcs']): 419 print_error(['Unable to find appropriate unsigned printf formatter for %u bytes .' % b,380 print_error(['Unable to find appropriate unsigned printf formatter for %u bytes' % b, 420 381 COMPILER_FAIL]) 421 382 422 383 if (not b in probe['signed_strcs']): 423 print_error(['Unable to find appropriate signed printf formatter for %u bytes .' % b,384 print_error(['Unable to find appropriate signed printf formatter for %u bytes' % b, 424 385 COMPILER_FAIL]) 425 386 426 387 if (not b in probe['unsigned_concs']): 427 print_error(['Unable to find appropriate unsigned literal macro for %u bytes .' % b,388 print_error(['Unable to find appropriate unsigned literal macro for %u bytes' % b, 428 389 COMPILER_FAIL]) 429 390 430 391 if (not b in probe['signed_concs']): 431 print_error(['Unable to find appropriate signed literal macro for %u bytes .' % b,392 print_error(['Unable to find appropriate signed literal macro for %u bytes' % b, 432 393 COMPILER_FAIL]) 433 394 … … 456 417 macros.append({'oldmacro': "c ## %s" % name, 'newmacro': "INT%u_C(c)" % (b * 8)}) 457 418 458 for tag in inttags:419 for tag in tags: 459 420 newmacro = "U%s" % tag 460 421 if (not tag in probe['unsigned_tags']): 461 print_error(['Unable to find appropriate size macro for %s .' % newmacro,422 print_error(['Unable to find appropriate size macro for %s' % newmacro, 462 423 COMPILER_FAIL]) 463 424 … … 465 426 macros.append({'oldmacro': "%s_MIN" % oldmacro, 'newmacro': "%s_MIN" % newmacro}) 466 427 macros.append({'oldmacro': "%s_MAX" % oldmacro, 'newmacro': "%s_MAX" % newmacro}) 467 macros.append({'oldmacro': "1", 'newmacro': 'U%s_SIZE_%s' % (tag, probe['unsigned_tags'][tag] * 8)})468 428 469 429 newmacro = tag 470 if (not tag in probe[' signed_tags']):430 if (not tag in probe['unsigned_tags']): 471 431 print_error(['Unable to find appropriate size macro for %s' % newmacro, 472 432 COMPILER_FAIL]) … … 475 435 macros.append({'oldmacro': "%s_MIN" % oldmacro, 'newmacro': "%s_MIN" % newmacro}) 476 436 macros.append({'oldmacro': "%s_MAX" % oldmacro, 'newmacro': "%s_MAX" % newmacro}) 477 macros.append({'oldmacro': "1", 'newmacro': '%s_SIZE_%s' % (tag, probe['signed_tags'][tag] * 8)})478 479 for tag in floattags:480 if (not tag in probe['float_tags']):481 print_error(['Unable to find appropriate size macro for %s' % tag,482 COMPILER_FAIL])483 484 macros.append({'oldmacro': "1", 'newmacro': '%s_SIZE_%s' % (tag, probe['float_tags'][tag] * 8)})485 486 if (not 'size' in probe['builtin_signs']):487 print_error(['Unable to determine whether size_t is signed or unsigned.',488 COMPILER_FAIL])489 490 if (probe['builtin_signs']['size'] != 'unsigned'):491 print_error(['The type size_t is not unsigned.',492 COMPILER_FAIL])493 437 494 438 fnd = True 495 439 496 if (not 'wchar' in probe['builtin _sizes']):440 if (not 'wchar' in probe['builtins']): 497 441 print_warning(['The compiler does not provide the macro __WCHAR_TYPE__', 498 442 'for defining the compiler-native type wchar_t. We are', … … 501 445 fnd = False 502 446 503 if (probe['builtin _sizes']['wchar']['value'] != 4):447 if (probe['builtins']['wchar']['value'] != 4): 504 448 print_warning(['The compiler provided macro __WCHAR_TYPE__ for defining', 505 449 'the compiler-native type wchar_t is not compliant with', … … 514 458 macros.append({'oldmacro': "__WCHAR_TYPE__", 'newmacro': "wchar_t"}) 515 459 516 if (not 'wchar' in probe['builtin_signs']):517 print_error(['Unable to determine whether wchar_t is signed or unsigned.',518 COMPILER_FAIL])519 520 if (probe['builtin_signs']['wchar'] == 'unsigned'):521 macros.append({'oldmacro': "1", 'newmacro': 'WCHAR_IS_UNSIGNED'})522 if (probe['builtin_signs']['wchar'] == 'signed'):523 macros.append({'oldmacro': "1", 'newmacro': 'WCHAR_IS_SIGNED'})524 525 460 fnd = True 526 461 527 if (not 'wint' in probe['builtin _sizes']):462 if (not 'wint' in probe['builtins']): 528 463 print_warning(['The compiler does not provide the macro __WINT_TYPE__', 529 464 'for defining the compiler-native type wint_t. We are', … … 532 467 fnd = False 533 468 534 if (probe['builtin _sizes']['wint']['value'] != 4):469 if (probe['builtins']['wint']['value'] != 4): 535 470 print_warning(['The compiler provided macro __WINT_TYPE__ for defining', 536 471 'the compiler-native type wint_t is not compliant with', … … 544 479 else: 545 480 macros.append({'oldmacro': "__WINT_TYPE__", 'newmacro': "wint_t"}) 546 547 if (not 'wint' in probe['builtin_signs']):548 print_error(['Unable to determine whether wint_t is signed or unsigned.',549 COMPILER_FAIL])550 551 if (probe['builtin_signs']['wint'] == 'unsigned'):552 macros.append({'oldmacro': "1", 'newmacro': 'WINT_IS_UNSIGNED'})553 if (probe['builtin_signs']['wint'] == 'signed'):554 macros.append({'oldmacro': "1", 'newmacro': 'WINT_IS_SIGNED'})555 481 556 482 return {'macros': macros, 'typedefs': typedefs} … … 645 571 646 572 if (config['CROSS_TARGET'] == "arm32"): 647 gnu_target = "arm-linux-gnu eabi"573 gnu_target = "arm-linux-gnu" 648 574 649 575 if (config['CROSS_TARGET'] == "ia32"): … … 660 586 if (config['PLATFORM'] == "arm32"): 661 587 target = config['PLATFORM'] 662 gnu_target = "arm-linux-gnu eabi"588 gnu_target = "arm-linux-gnu" 663 589 664 590 if (config['PLATFORM'] == "ia32"): … … 743 669 {'type': 'short int', 'tag': 'SHORT', 'strc': '"h"', 'conc': '"@"'}, 744 670 {'type': 'char', 'tag': 'CHAR', 'strc': '"hh"', 'conc': '"@@"'} 745 ],746 [747 {'type': 'long double', 'tag': 'LONG_DOUBLE'},748 {'type': 'double', 'tag': 'DOUBLE'},749 {'type': 'float', 'tag': 'FLOAT'}750 671 ] 751 672 ) 752 673 753 maps = detect_ sizes(probe, [1, 2, 4, 8], ['CHAR', 'SHORT', 'INT', 'LONG', 'LLONG'], ['LONG_DOUBLE', 'DOUBLE', 'FLOAT'])674 maps = detect_uints(probe, [1, 2, 4, 8], ['CHAR', 'SHORT', 'INT', 'LONG', 'LLONG']) 754 675 755 676 finally:
Note:
See TracChangeset
for help on using the changeset viewer.