2016-04-06 4 views
0

Мы проваливать сборки под Debian's testing/build infrastructure для m68k:Препроцессор определяет и макросы для m68k?

config.h:29:3: error: #error "IS_LITTLE_ENDIAN is set, but __BYTE_ORDER__ does not equal __ORDER_LITTLE_ENDIAN__" 
# error "IS_LITTLE_ENDIAN is set, but __BYTE_ORDER__ does not equal __ORDER_LITTLE_ENDIAN__" 

Исправления легко, но мне нужно знать, препроцессор определяет для платформы. У меня нет машины с архитектурой, поэтому я не могу сбросить их с gcc -dM -E - </dev/null | sort.

Может ли кто-нибудь предоставить выходной препроцессор для m68k?

ответ

0

Если вы хотите убить время, вы можете построить кросс-компилятор для этой платформы. Если вы только забота о том один флажок, попробуйте добавить этот тест на свой configure.ac:

#include <stdint.h> 

enum { 
    ENDIAN_UNKNOWN, 
    ENDIAN_BIG, 
    ENDIAN_LITTLE, 
    ENDIAN_BIG_WORD, /* Middle-endian, Honeywell 316 style */ 
    ENDIAN_LITTLE_WORD /* Middle-endian, PDP-11 style */ 
}; 

int endianness(void) 
{ 
    union 
    { 
    uint32_t value; 
    uint8_t data[sizeof(uint32_t)]; 
    } number; 

    number.data[0] = 0x00; 
    number.data[1] = 0x01; 
    number.data[2] = 0x02; 
    number.data[3] = 0x03; 

    switch (number.value) 
    { 
    case UINT32_C(0x00010203): return ENDIAN_BIG; 
    case UINT32_C(0x03020100): return ENDIAN_LITTLE; 
    case UINT32_C(0x02030001): return ENDIAN_BIG_WORD; 
    case UINT32_C(0x01000302): return ENDIAN_LITTLE_WORD; 
    default:     return ENDIAN_UNKNOWN; 
    } 
} 
Смежные вопросы