123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490 |
- From bdb8e1579896b8787115b759d34d1a000649b126 Mon Sep 17 00:00:00 2001
- From: =?UTF-8?q?Felix=20Paul=20K=C3=BChne?= <fkuehne@videolan.org>
- Date: Thu, 8 Aug 2013 21:41:46 +0200
- Subject: [PATCH 2/2] contrib/zvbi: fix compilation with clang
- ---
- contrib/src/zvbi/rules.mak | 3 +
- contrib/src/zvbi/zvbi-fix-clang-support.patch | 455 ++++++++++++++++++++++++++
- 2 files changed, 458 insertions(+)
- create mode 100644 contrib/src/zvbi/zvbi-fix-clang-support.patch
- diff --git a/contrib/src/zvbi/rules.mak b/contrib/src/zvbi/rules.mak
- index a34c2ca..7584eed 100644
- --- a/contrib/src/zvbi/rules.mak
- +++ b/contrib/src/zvbi/rules.mak
- @@ -20,6 +20,9 @@ zvbi: zvbi-$(ZVBI_VERSION).tar.bz2 .sum-zvbi
- ifdef HAVE_WIN32
- $(APPLY) $(SRC)/zvbi/zvbi-win32.patch
- endif
- +ifdef HAVE_DARWIN_OS
- + $(APPLY) $(SRC)/zvbi/zvbi-fix-clang-support.patch
- +endif
- $(MOVE)
-
- DEPS_zvbi = pthreads iconv $(DEPS_iconv)
- diff --git a/contrib/src/zvbi/zvbi-fix-clang-support.patch b/contrib/src/zvbi/zvbi-fix-clang-support.patch
- new file mode 100644
- index 0000000..5226a3c
- --- /dev/null
- +++ b/contrib/src/zvbi/zvbi-fix-clang-support.patch
- @@ -0,0 +1,455 @@
- +diff -ru zvbi/src/misc.h zvbi-fixed/src/misc.h
- +--- zvbi/src/misc.h 2013-07-02 04:32:31.000000000 +0200
- ++++ zvbi-fixed/src/misc.h 2013-08-08 21:37:22.000000000 +0200
- +@@ -52,17 +52,6 @@
- + # define unlikely(expr) __builtin_expect(expr, 0)
- + #endif
- +
- +-#undef __i386__
- +-#undef __i686__
- +-/* FIXME #cpu is deprecated
- +-#if #cpu (i386)
- +-# define __i386__ 1
- +-#endif
- +-#if #cpu (i686)
- +-# define __i686__ 1
- +-#endif
- +-*/
- +-
- + /* &x == PARENT (&x.tm_min, struct tm, tm_min),
- + safer than &x == (struct tm *) &x.tm_min. A NULL _ptr is safe and
- + will return NULL, not -offsetof(_member). */
- +@@ -156,8 +145,6 @@
- +
- + #define likely(expr) (expr)
- + #define unlikely(expr) (expr)
- +-#undef __i386__
- +-#undef __i686__
- +
- + static char *
- + PARENT_HELPER (char *p, unsigned int offset)
- +diff -ru zvbi/src/packet.c zvbi-fixed/src/packet.c
- +--- zvbi/src/packet.c 2013-07-10 13:37:28.000000000 +0200
- ++++ zvbi-fixed/src/packet.c 2013-08-08 21:36:48.000000000 +0200
- +@@ -1859,24 +1859,22 @@
- + int i, j, err = 0;
- +
- + /* XXX nested function not portable, to be removed */
- +- int
- +- bits(int count)
- +- {
- +- int r, n;
- +-
- +- r = buf;
- +-
- +- if ((n = count - left) > 0) {
- +- r |= (buf = *triplet++) << left;
- +- left = 18;
- +- } else
- +- n = count;
- +-
- +- buf >>= n;
- +- left -= n;
- +-
- +- return r & ((1UL << count) - 1);
- +- }
- ++#define bits(count) ({ \
- ++ int r, n; \
- ++ \
- ++ r = buf; \
- ++ \
- ++ if ((n = count - left) > 0) { \
- ++ r |= (buf = *triplet++) << left; \
- ++ left = 18; \
- ++ } else \
- ++ n = count; \
- ++ \
- ++ buf >>= n; \
- ++ left -= n; \
- ++ \
- ++ (r & ((1UL << count) - 1)); \
- ++ })
- +
- + if ((designation = vbi_unham8 (*p)) < 0)
- + return FALSE;
- +Only in zvbi-fixed/src: packet.c.orig
- +diff -ru zvbi/src/teletext.c zvbi-fixed/src/teletext.c
- +--- zvbi/src/teletext.c 2013-07-02 06:03:54.000000000 +0200
- ++++ zvbi-fixed/src/teletext.c 2013-08-08 21:37:06.000000000 +0200
- +@@ -1258,180 +1258,177 @@
- + int pdc_hr;
- +
- + /* XXX nested function not portable, to be removed */
- +- void
- +- flush(int column)
- +- {
- +- int row = inv_row + active_row;
- +- int i;
- +-
- +- if (row >= ROWS)
- +- return;
- +-
- +- if (type == OBJECT_TYPE_PASSIVE && !mac.unicode) {
- +- active_column = column;
- +- return;
- +- }
- +-
- +- printv("flush [%04x%c,F%d%c,B%d%c,S%d%c,O%d%c,H%d%c] %d ... %d\n",
- +- ac.unicode, mac.unicode ? '*' : ' ',
- +- ac.foreground, mac.foreground ? '*' : ' ',
- +- ac.background, mac.background ? '*' : ' ',
- +- ac.size, mac.size ? '*' : ' ',
- +- ac.opacity, mac.opacity ? '*' : ' ',
- +- ac.flash, mac.flash ? '*' : ' ',
- +- active_column, column - 1);
- +-
- +- for (i = inv_column + active_column; i < inv_column + column;) {
- +- vbi_char c;
- +-
- +- if (i > 39)
- +- break;
- +-
- +- c = acp[i];
- +-
- +- if (mac.underline) {
- +- int u = ac.underline;
- +-
- +- if (!mac.unicode)
- +- ac.unicode = c.unicode;
- +-
- +- if (vbi_is_gfx(ac.unicode)) {
- +- if (u)
- +- ac.unicode &= ~0x20; /* separated */
- +- else
- +- ac.unicode |= 0x20; /* contiguous */
- +- mac.unicode = ~0;
- +- u = 0;
- +- }
- +-
- +- c.underline = u;
- +- }
- +- if (mac.foreground)
- +- c.foreground = (ac.foreground != VBI_TRANSPARENT_BLACK) ?
- +- ac.foreground : (row_color_transparent) ?
- +- VBI_TRANSPARENT_BLACK : row_color;
- +- if (mac.background)
- +- c.background = (ac.background != VBI_TRANSPARENT_BLACK) ?
- +- ac.background : (row_color_transparent) ?
- +- VBI_TRANSPARENT_BLACK : row_color;
- +- if (invert) {
- +- int t = c.foreground;
- +-
- +- c.foreground = c.background;
- +- c.background = t;
- +- }
- +- if (mac.opacity)
- +- c.opacity = ac.opacity;
- +- if (mac.flash)
- +- c.flash = ac.flash;
- +- if (mac.conceal)
- +- c.conceal = ac.conceal;
- +- if (mac.unicode) {
- +- c.unicode = ac.unicode;
- +- mac.unicode = 0;
- +-
- +- if (mac.size)
- +- c.size = ac.size;
- +- else if (c.size > VBI_DOUBLE_SIZE)
- +- c.size = VBI_NORMAL_SIZE;
- +- }
- +-
- +- acp[i] = c;
- +-
- +- if (type == OBJECT_TYPE_PASSIVE)
- +- break;
- +-
- +- i++;
- +-
- +- if (type != OBJECT_TYPE_PASSIVE
- +- && type != OBJECT_TYPE_ADAPTIVE) {
- +- int raw;
- +-
- +- raw = (row == 0 && i < 9) ?
- +- 0x20 : vbi_unpar8 (vtp->data.lop.raw[row][i - 1]);
- +-
- +- /* set-after spacing attributes cancelling non-spacing */
- +-
- +- switch (raw) {
- +- case 0x00 ... 0x07: /* alpha + foreground color */
- +- case 0x10 ... 0x17: /* mosaic + foreground color */
- +- printv("... fg term %d %02x\n", i, raw);
- +- mac.foreground = 0;
- +- mac.conceal = 0;
- +- break;
- +-
- +- case 0x08: /* flash */
- +- mac.flash = 0;
- +- break;
- +-
- +- case 0x0A: /* end box */
- +- case 0x0B: /* start box */
- +- if (i < COLUMNS && vbi_unpar8 (vtp->data.lop.raw[row][i]) == raw) {
- +- printv("... boxed term %d %02x\n", i, raw);
- +- mac.opacity = 0;
- +- }
- +-
- +- break;
- +-
- +- case 0x0D: /* double height */
- +- case 0x0E: /* double width */
- +- case 0x0F: /* double size */
- +- printv("... size term %d %02x\n", i, raw);
- +- mac.size = 0;
- +- break;
- +- }
- +-
- +- if (i > 39)
- +- break;
- +-
- +- raw = (row == 0 && i < 8) ?
- +- 0x20 : vbi_unpar8 (vtp->data.lop.raw[row][i]);
- +-
- +- /* set-at spacing attributes cancelling non-spacing */
- +-
- +- switch (raw) {
- +- case 0x09: /* steady */
- +- mac.flash = 0;
- +- break;
- +-
- +- case 0x0C: /* normal size */
- +- printv("... size term %d %02x\n", i, raw);
- +- mac.size = 0;
- +- break;
- +-
- +- case 0x18: /* conceal */
- +- mac.conceal = 0;
- +- break;
- +-
- +- /*
- +- * Non-spacing underlined/separated display attribute
- +- * cannot be cancelled by a subsequent spacing attribute.
- +- */
- +-
- +- case 0x1C: /* black background */
- +- case 0x1D: /* new background */
- +- printv("... bg term %d %02x\n", i, raw);
- +- mac.background = 0;
- +- break;
- +- }
- +- }
- +- }
- +-
- +- active_column = column;
- +- }
- ++#define flush(column) \
- ++ ({ \
- ++ int row = inv_row + active_row; \
- ++ int i; \
- ++ \
- ++ if (row >= ROWS) \
- ++ break; \
- ++ \
- ++ if (type == OBJECT_TYPE_PASSIVE && !mac.unicode) { \
- ++ active_column = column; \
- ++ break; \
- ++ } \
- ++ \
- ++ printv("flush [%04x%c,F%d%c,B%d%c,S%d%c,O%d%c,H%d%c] %d ... %d\n", \
- ++ ac.unicode, mac.unicode ? '*' : ' ', \
- ++ ac.foreground, mac.foreground ? '*' : ' ', \
- ++ ac.background, mac.background ? '*' : ' ', \
- ++ ac.size, mac.size ? '*' : ' ', \
- ++ ac.opacity, mac.opacity ? '*' : ' ', \
- ++ ac.flash, mac.flash ? '*' : ' ', \
- ++ active_column, column - 1); \
- ++ \
- ++ for (i = inv_column + active_column; i < inv_column + column;) { \
- ++ vbi_char c; \
- ++ \
- ++ if (i > 39) \
- ++ break; \
- ++ \
- ++ c = acp[i]; \
- ++ \
- ++ if (mac.underline) { \
- ++ int u = ac.underline; \
- ++ \
- ++ if (!mac.unicode) \
- ++ ac.unicode = c.unicode; \
- ++ \
- ++ if (vbi_is_gfx(ac.unicode)) { \
- ++ if (u) \
- ++ ac.unicode &= ~0x20; /* separated */ \
- ++ else \
- ++ ac.unicode |= 0x20; /* contiguous */ \
- ++ mac.unicode = ~0; \
- ++ u = 0; \
- ++ } \
- ++ \
- ++ c.underline = u; \
- ++ } \
- ++ if (mac.foreground) \
- ++ c.foreground = (ac.foreground != VBI_TRANSPARENT_BLACK) ? \
- ++ ac.foreground : (row_color_transparent) ? \
- ++ VBI_TRANSPARENT_BLACK : row_color; \
- ++ if (mac.background) \
- ++ c.background = (ac.background != VBI_TRANSPARENT_BLACK) ? \
- ++ ac.background : (row_color_transparent) ? \
- ++ VBI_TRANSPARENT_BLACK : row_color; \
- ++ if (invert) { \
- ++ int t = c.foreground; \
- ++ \
- ++ c.foreground = c.background; \
- ++ c.background = t; \
- ++ } \
- ++ if (mac.opacity) \
- ++ c.opacity = ac.opacity; \
- ++ if (mac.flash) \
- ++ c.flash = ac.flash; \
- ++ if (mac.conceal) \
- ++ c.conceal = ac.conceal; \
- ++ if (mac.unicode) { \
- ++ c.unicode = ac.unicode; \
- ++ mac.unicode = 0; \
- ++ \
- ++ if (mac.size) \
- ++ c.size = ac.size; \
- ++ else if (c.size > VBI_DOUBLE_SIZE) \
- ++ c.size = VBI_NORMAL_SIZE; \
- ++ } \
- ++ \
- ++ acp[i] = c; \
- ++ \
- ++ if (type == OBJECT_TYPE_PASSIVE) \
- ++ break; \
- ++ \
- ++ i++; \
- ++ \
- ++ if (type != OBJECT_TYPE_PASSIVE \
- ++ && type != OBJECT_TYPE_ADAPTIVE) { \
- ++ int raw; \
- ++ \
- ++ raw = (row == 0 && i < 9) ? \
- ++ 0x20 : vbi_unpar8 (vtp->data.lop.raw[row][i - 1]); \
- ++ \
- ++ /* set-after spacing attributes cancelling non-spacing */ \
- ++ \
- ++ switch (raw) { \
- ++ case 0x00 ... 0x07: /* alpha + foreground color */ \
- ++ case 0x10 ... 0x17: /* mosaic + foreground color */ \
- ++ printv("... fg term %d %02x\n", i, raw); \
- ++ mac.foreground = 0; \
- ++ mac.conceal = 0; \
- ++ break; \
- ++ \
- ++ case 0x08: /* flash */ \
- ++ mac.flash = 0; \
- ++ break; \
- ++ \
- ++ case 0x0A: /* end box */ \
- ++ case 0x0B: /* start box */ \
- ++ if (i < COLUMNS && vbi_unpar8 (vtp->data.lop.raw[row][i]) == raw) { \
- ++ printv("... boxed term %d %02x\n", i, raw); \
- ++ mac.opacity = 0; \
- ++ } \
- ++ \
- ++ break; \
- ++ \
- ++ case 0x0D: /* double height */ \
- ++ case 0x0E: /* double width */ \
- ++ case 0x0F: /* double size */ \
- ++ printv("... size term %d %02x\n", i, raw); \
- ++ mac.size = 0; \
- ++ break; \
- ++ } \
- ++ \
- ++ if (i > 39) \
- ++ break; \
- ++ \
- ++ raw = (row == 0 && i < 8) ? \
- ++ 0x20 : vbi_unpar8 (vtp->data.lop.raw[row][i]); \
- ++ \
- ++ /* set-at spacing attributes cancelling non-spacing */ \
- ++ \
- ++ switch (raw) { \
- ++ case 0x09: /* steady */ \
- ++ mac.flash = 0; \
- ++ break; \
- ++ \
- ++ case 0x0C: /* normal size */ \
- ++ printv("... size term %d %02x\n", i, raw); \
- ++ mac.size = 0; \
- ++ break; \
- ++ \
- ++ case 0x18: /* conceal */ \
- ++ mac.conceal = 0; \
- ++ break; \
- ++ \
- ++ /* \
- ++ * Non-spacing underlined/separated display attribute \
- ++ * cannot be cancelled by a subsequent spacing attribute. \
- ++ */ \
- ++ \
- ++ case 0x1C: /* black background */ \
- ++ case 0x1D: /* new background */ \
- ++ printv("... bg term %d %02x\n", i, raw); \
- ++ mac.background = 0; \
- ++ break; \
- ++ } \
- ++ } \
- ++ } \
- ++ \
- ++ active_column = column; \
- ++ })
- +
- + /* XXX nested function not portable, to be removed */
- +- void
- +- flush_row(void)
- +- {
- +- if (type == OBJECT_TYPE_PASSIVE || type == OBJECT_TYPE_ADAPTIVE)
- +- flush(active_column + 1);
- +- else
- +- flush(COLUMNS);
- +-
- +- if (type != OBJECT_TYPE_PASSIVE)
- +- memset(&mac, 0, sizeof(mac));
- +- }
- ++#define flush_row do {\
- ++ if (type == OBJECT_TYPE_PASSIVE || type == OBJECT_TYPE_ADAPTIVE) \
- ++ flush(active_column + 1); \
- ++ else \
- ++ flush(COLUMNS); \
- ++\
- ++ if (type != OBJECT_TYPE_PASSIVE) \
- ++ memset(&mac, 0, sizeof(mac)); \
- ++ } while (0)
- +
- + active_column = 0;
- + active_row = 0;
- +@@ -1554,7 +1551,7 @@
- + printv("enh set_active row %d col %d\n", row, column);
- +
- + if (row > active_row)
- +- flush_row();
- ++ flush_row;
- + else
- + flush(active_column + 1);
- +
- +@@ -1752,7 +1749,7 @@
- + break;
- +
- + case 0x15 ... 0x17: /* object definition */
- +- flush_row();
- ++ flush_row;
- + printv("enh obj definition 0x%02x 0x%02x\n", p->mode, p->data);
- + printv("enh terminated\n");
- + goto swedish;
- +@@ -1768,7 +1765,7 @@
- + case 0x1F: /* termination marker */
- + default:
- + terminate:
- +- flush_row();
- ++ flush_row;
- + printv("enh terminated %02x\n", p->mode);
- + goto swedish;
- + }
- --
- 1.8.3.1 (Apple Git-46)
|