Fix CXX_BUILD for Apple

This commit is contained in:
Twinaphex 2017-12-27 22:33:32 +01:00
parent 56b4d4917c
commit b1c0fe7d0d
3 changed files with 125 additions and 116 deletions

View File

@ -116,7 +116,7 @@ struct FLAC__BitReader {
static INLINE void crc16_update_word_(FLAC__BitReader *br, brword word) static INLINE void crc16_update_word_(FLAC__BitReader *br, brword word)
{ {
register unsigned crc = br->read_crc16; unsigned crc = br->read_crc16;
#if FLAC__BYTES_PER_WORD == 4 #if FLAC__BYTES_PER_WORD == 4
switch(br->crc16_align) { switch(br->crc16_align) {
case 0: crc = FLAC__CRC16_UPDATE((unsigned)(word >> 24), crc); /* fallthrough */ case 0: crc = FLAC__CRC16_UPDATE((unsigned)(word >> 24), crc); /* fallthrough */

199
deps/libFLAC/md5.c vendored
View File

@ -53,118 +53,121 @@
*/ */
static void FLAC__MD5Transform(FLAC__uint32 buf[4], FLAC__uint32 const in[16]) static void FLAC__MD5Transform(FLAC__uint32 buf[4], FLAC__uint32 const in[16])
{ {
register FLAC__uint32 a, b, c, d; FLAC__uint32 a = buf[0];
FLAC__uint32 b = buf[1];
FLAC__uint32 c = buf[2];
FLAC__uint32 d = buf[3];
a = buf[0]; MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7);
b = buf[1]; MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12);
c = buf[2]; MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17);
d = buf[3]; MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22);
MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7);
MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12);
MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17);
MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22);
MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7);
MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12);
MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17);
MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22);
MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7);
MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12);
MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17);
MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22);
MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7); MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5);
MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12); MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9);
MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17); MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14);
MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22); MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20);
MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7); MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5);
MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12); MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9);
MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17); MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14);
MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22); MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20);
MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7); MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5);
MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12); MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9);
MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17); MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14);
MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22); MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20);
MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7); MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5);
MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12); MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9);
MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17); MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14);
MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22); MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20);
MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5); MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4);
MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9); MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11);
MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14); MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16);
MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20); MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23);
MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5); MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4);
MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9); MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11);
MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14); MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16);
MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20); MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23);
MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5); MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4);
MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9); MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11);
MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14); MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16);
MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20); MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23);
MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5); MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4);
MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9); MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11);
MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14); MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16);
MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20); MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23);
MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4); MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6);
MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11); MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10);
MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16); MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15);
MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23); MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21);
MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4); MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6);
MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11); MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10);
MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16); MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15);
MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23); MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21);
MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4); MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6);
MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11); MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10);
MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16); MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15);
MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23); MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21);
MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4); MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6);
MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11); MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10);
MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16); MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15);
MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23); MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21);
MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6); buf[0] += a;
MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10); buf[1] += b;
MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15); buf[2] += c;
MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21); buf[3] += d;
MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6);
MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10);
MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15);
MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21);
MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6);
MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10);
MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15);
MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21);
MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6);
MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10);
MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15);
MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21);
buf[0] += a;
buf[1] += b;
buf[2] += c;
buf[3] += d;
} }
#if WORDS_BIGENDIAN #if WORDS_BIGENDIAN
//@@@@@@ OPT: use bswap/intrinsics //@@@@@@ OPT: use bswap/intrinsics
static void byteSwap(FLAC__uint32 *buf, unsigned words) static void byteSwap(FLAC__uint32 *buf, unsigned words)
{ {
register FLAC__uint32 x; FLAC__uint32 x;
do { do {
x = *buf; x = *buf;
x = ((x << 8) & 0xff00ff00) | ((x >> 8) & 0x00ff00ff); x = ((x << 8) & 0xff00ff00) | ((x >> 8) & 0x00ff00ff);
*buf++ = (x >> 16) | (x << 16); *buf++ = (x >> 16) | (x << 16);
} while (--words); } while (--words);
} }
static void byteSwapX16(FLAC__uint32 *buf) static void byteSwapX16(FLAC__uint32 *buf)
{ {
register FLAC__uint32 x; FALC__uint32 x = *buf;
x = ((x << 8) & 0xff00ff00) | ((x >> 8) & 0x00ff00ff); *buf++ = (x >> 16) | (x << 16);
x = *buf; x = ((x << 8) & 0xff00ff00) | ((x >> 8) & 0x00ff00ff); *buf++ = (x >> 16) | (x << 16); x = *buf;
x = *buf; x = ((x << 8) & 0xff00ff00) | ((x >> 8) & 0x00ff00ff); *buf++ = (x >> 16) | (x << 16); x = ((x << 8) & 0xff00ff00) | ((x >> 8) & 0x00ff00ff);
x = *buf; x = ((x << 8) & 0xff00ff00) | ((x >> 8) & 0x00ff00ff); *buf++ = (x >> 16) | (x << 16); *buf++ = (x >> 16) | (x << 16);
x = *buf; x = ((x << 8) & 0xff00ff00) | ((x >> 8) & 0x00ff00ff); *buf++ = (x >> 16) | (x << 16); x = *buf;
x = *buf; x = ((x << 8) & 0xff00ff00) | ((x >> 8) & 0x00ff00ff); *buf++ = (x >> 16) | (x << 16); x = ((x << 8) & 0xff00ff00) | ((x >> 8) & 0x00ff00ff);
x = *buf; x = ((x << 8) & 0xff00ff00) | ((x >> 8) & 0x00ff00ff); *buf++ = (x >> 16) | (x << 16); *buf++ = (x >> 16) | (x << 16);
x = *buf; x = ((x << 8) & 0xff00ff00) | ((x >> 8) & 0x00ff00ff); *buf++ = (x >> 16) | (x << 16); x = *buf;
x = *buf; x = ((x << 8) & 0xff00ff00) | ((x >> 8) & 0x00ff00ff); *buf++ = (x >> 16) | (x << 16); x = ((x << 8) & 0xff00ff00) | ((x >> 8) & 0x00ff00ff);
x = *buf; x = ((x << 8) & 0xff00ff00) | ((x >> 8) & 0x00ff00ff); *buf++ = (x >> 16) | (x << 16); *buf++ = (x >> 16) | (x << 16);
x = *buf; x = ((x << 8) & 0xff00ff00) | ((x >> 8) & 0x00ff00ff); *buf++ = (x >> 16) | (x << 16); x = *buf; x = ((x << 8) & 0xff00ff00) | ((x >> 8) & 0x00ff00ff); *buf++ = (x >> 16) | (x << 16);
x = *buf; x = ((x << 8) & 0xff00ff00) | ((x >> 8) & 0x00ff00ff); *buf++ = (x >> 16) | (x << 16); x = *buf; x = ((x << 8) & 0xff00ff00) | ((x >> 8) & 0x00ff00ff); *buf++ = (x >> 16) | (x << 16);
x = *buf; x = ((x << 8) & 0xff00ff00) | ((x >> 8) & 0x00ff00ff); *buf++ = (x >> 16) | (x << 16); x = *buf; x = ((x << 8) & 0xff00ff00) | ((x >> 8) & 0x00ff00ff); *buf++ = (x >> 16) | (x << 16);
x = *buf; x = ((x << 8) & 0xff00ff00) | ((x >> 8) & 0x00ff00ff); *buf++ = (x >> 16) | (x << 16); x = *buf; x = ((x << 8) & 0xff00ff00) | ((x >> 8) & 0x00ff00ff); *buf++ = (x >> 16) | (x << 16);
x = *buf; x = ((x << 8) & 0xff00ff00) | ((x >> 8) & 0x00ff00ff); *buf++ = (x >> 16) | (x << 16); x = *buf; x = ((x << 8) & 0xff00ff00) | ((x >> 8) & 0x00ff00ff); *buf++ = (x >> 16) | (x << 16);
x = *buf; x = ((x << 8) & 0xff00ff00) | ((x >> 8) & 0x00ff00ff); *buf++ = (x >> 16) | (x << 16); x = *buf; x = ((x << 8) & 0xff00ff00) | ((x >> 8) & 0x00ff00ff); *buf++ = (x >> 16) | (x << 16);
x = *buf; x = ((x << 8) & 0xff00ff00) | ((x >> 8) & 0x00ff00ff); *buf = (x >> 16) | (x << 16); x = *buf; x = ((x << 8) & 0xff00ff00) | ((x >> 8) & 0x00ff00ff); *buf++ = (x >> 16) | (x << 16);
x = *buf; x = ((x << 8) & 0xff00ff00) | ((x >> 8) & 0x00ff00ff); *buf++ = (x >> 16) | (x << 16);
x = *buf; x = ((x << 8) & 0xff00ff00) | ((x >> 8) & 0x00ff00ff); *buf++ = (x >> 16) | (x << 16);
x = *buf; x = ((x << 8) & 0xff00ff00) | ((x >> 8) & 0x00ff00ff); *buf++ = (x >> 16) | (x << 16);
x = *buf; x = ((x << 8) & 0xff00ff00) | ((x >> 8) & 0x00ff00ff); *buf++ = (x >> 16) | (x << 16);
x = *buf; x = ((x << 8) & 0xff00ff00) | ((x >> 8) & 0x00ff00ff); *buf = (x >> 16) | (x << 16);
} }
#else #else
#define byteSwap(buf, words) #define byteSwap(buf, words)

View File

@ -67,12 +67,12 @@ CFComparisonResult iohidmanager_sort_elements(const void *val1, const void *val2
uint32_t cookie2 = (uint32_t)IOHIDElementGetCookie((IOHIDElementRef)val2); uint32_t cookie2 = (uint32_t)IOHIDElementGetCookie((IOHIDElementRef)val2);
if (page1 != page2) if (page1 != page2)
return page1 > page2; return (enum CFComparisonResult)(page1 > page2);
if(use1 != use2) if(use1 != use2)
return use1 > use2; return (enum CFComparisonResult)(use1 > use2);
return cookie1 > cookie2; return (enum CFComparisonResult)(cookie1 > cookie2);
} }
static bool iohidmanager_check_for_id(apple_input_rec_t *rec, uint32_t id) static bool iohidmanager_check_for_id(apple_input_rec_t *rec, uint32_t id)
@ -86,12 +86,12 @@ static bool iohidmanager_check_for_id(apple_input_rec_t *rec, uint32_t id)
return false; return false;
} }
static void iohidmanager_append_record(apple_input_rec_t *rec, apple_input_rec_t *new) static void iohidmanager_append_record(apple_input_rec_t *rec, apple_input_rec_t *b)
{ {
apple_input_rec_t *tmp = rec; apple_input_rec_t *tmp = rec;
while(tmp->next) while(tmp->next)
tmp = tmp->next; tmp = tmp->next;
tmp->next = new; tmp->next = b;
} }
static bool iohidmanager_hid_joypad_query(void *data, unsigned pad) static bool iohidmanager_hid_joypad_query(void *data, unsigned pad)
@ -468,8 +468,13 @@ static void iohidmanager_hid_device_add(void *data, IOReturn result,
int i; int i;
IOReturn ret; IOReturn ret;
uint16_t dev_vid, dev_pid; uint16_t dev_vid, dev_pid;
CFArrayRef elements_raw;
int count;
CFMutableArrayRef elements;
CFRange range;
bool found_axis[6] = bool found_axis[6] =
{ false, false, false, false, false, false }; { false, false, false, false, false, false };
apple_input_rec_t *tmp = NULL;
apple_input_rec_t *tmpButtons = NULL; apple_input_rec_t *tmpButtons = NULL;
apple_input_rec_t *tmpAxes = NULL; apple_input_rec_t *tmpAxes = NULL;
iohidmanager_hid_t *hid = (iohidmanager_hid_t*) iohidmanager_hid_t *hid = (iohidmanager_hid_t*)
@ -522,11 +527,14 @@ static void iohidmanager_hid_device_add(void *data, IOReturn result,
goto error; goto error;
/* scan for buttons, axis, hats */ /* scan for buttons, axis, hats */
CFArrayRef elements_raw = IOHIDDeviceCopyMatchingElements(device, NULL, kIOHIDOptionsTypeNone); elements_raw = IOHIDDeviceCopyMatchingElements(device, NULL, kIOHIDOptionsTypeNone);
int count = (int)CFArrayGetCount(elements_raw); count = (int)CFArrayGetCount(elements_raw);
CFMutableArrayRef elements = CFArrayCreateMutableCopy(kCFAllocatorDefault,(CFIndex)count,elements_raw); elements = CFArrayCreateMutableCopy(
CFRange range = CFRangeMake(0,count); kCFAllocatorDefault,(CFIndex)count,elements_raw);
CFArraySortValues(elements,range,iohidmanager_sort_elements,NULL); range = CFRangeMake(0,count);
CFArraySortValues(elements,
range, iohidmanager_sort_elements, NULL);
for(i=0; i<count; i++) for(i=0; i<count; i++)
{ {
@ -587,7 +595,7 @@ static void iohidmanager_hid_device_add(void *data, IOReturn result,
{ {
/* axis ID already exists, save to tmp for appending later */ /* axis ID already exists, save to tmp for appending later */
if(tmpAxes) if(tmpAxes)
iohidmanager_append_record(tmpAxes,axis); iohidmanager_append_record(tmpAxes, axis);
else else
tmpAxes = axis; tmpAxes = axis;
} }
@ -595,7 +603,7 @@ static void iohidmanager_hid_device_add(void *data, IOReturn result,
{ {
found_axis[axis->id] = true; found_axis[axis->id] = true;
if(adapter->axes) if(adapter->axes)
iohidmanager_append_record(adapter->axes,axis); iohidmanager_append_record(adapter->axes, axis);
else else
adapter->axes = axis; adapter->axes = axis;
} }
@ -627,14 +635,14 @@ static void iohidmanager_hid_device_add(void *data, IOReturn result,
if(iohidmanager_check_for_id(adapter->buttons,btn->id)) if(iohidmanager_check_for_id(adapter->buttons,btn->id))
{ {
if(tmpButtons) if(tmpButtons)
iohidmanager_append_record(tmpButtons,btn); iohidmanager_append_record(tmpButtons, btn);
else else
tmpButtons = btn; tmpButtons = btn;
} }
else else
{ {
if(adapter->buttons) if(adapter->buttons)
iohidmanager_append_record(adapter->buttons,btn); iohidmanager_append_record(adapter->buttons, btn);
else else
adapter->buttons = btn; adapter->buttons = btn;
} }
@ -658,11 +666,9 @@ static void iohidmanager_hid_device_add(void *data, IOReturn result,
} }
} }
apple_input_rec_t *tmp = adapter->buttons; tmp = adapter->buttons;
while(tmp->next) while(tmp->next)
{
tmp = tmp->next; tmp = tmp->next;
}
while(tmpButtons) while(tmpButtons)
{ {