From patchwork Fri Jul 24 21:07:38 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Fabrice Fontaine X-Patchwork-Id: 1335982 Return-Path: X-Original-To: incoming-buildroot@patchwork.ozlabs.org Delivered-To: patchwork-incoming-buildroot@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=busybox.net (client-ip=140.211.166.136; helo=silver.osuosl.org; envelope-from=buildroot-bounces@busybox.net; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=qHAm0112; dkim-atps=neutral Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4BD1xy59YMz9sRR for ; Sat, 25 Jul 2020 07:08:06 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id 57A6424A5C; Fri, 24 Jul 2020 21:08:00 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ANzu2PgcSCL2; Fri, 24 Jul 2020 21:07:56 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by silver.osuosl.org (Postfix) with ESMTP id 8CE4724E00; Fri, 24 Jul 2020 21:07:56 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by ash.osuosl.org (Postfix) with ESMTP id 2AE2B1BF84C for ; Fri, 24 Jul 2020 21:07:55 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id 180C424E00 for ; Fri, 24 Jul 2020 21:07:55 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id heC1FdSz7qNu for ; Fri, 24 Jul 2020 21:07:51 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.49]) by silver.osuosl.org (Postfix) with ESMTPS id 870BE24A5C for ; Fri, 24 Jul 2020 21:07:51 +0000 (UTC) Received: by mail-wr1-f49.google.com with SMTP id z18so5883335wrm.12 for ; Fri, 24 Jul 2020 14:07:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=pk4Uh/8ko6BjPhb421FDeco7GSZK0ug4CkS8ieI+wjw=; b=qHAm0112xbNFzY5HzkNcxqfa3t14YfYtys139btbdmubHJikn6QcFQBMeTPbdMc/3U HSz/92TUnsURw0tRfL0KIvhX42JZG7UETIpRBKS67RhvcQ+68fTfwjlw5xLVL71hRiqF bmRkAGRTWya8RrrAoOVB3Cc0xM6v98i+QoZHcGz6z2ahgiDagSem7yiZF4ufu+9qjakn /S13loquk5yiwlVZPV8nJQLnzkzNGdKYbwjhFFxUv8Z71+JbOfSLltbnHQTmOevIn1+c 5peU+d3z3oHi7v6ymy0svKKf2Dy/IVlJeJgDy7+9tm4wUo9VL6SjduN8y6Lka+NugWOj XPaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=pk4Uh/8ko6BjPhb421FDeco7GSZK0ug4CkS8ieI+wjw=; b=fQdVNot9J77S8Mkptkqs8psIHcet/wzM720dv0WAOPVL2nM0hsqj0WdAz/FTiUyMNz LgN+JE/VCO9sblGFVAl8sPJ/tg1fiBphmsUqe3j2XN0s8OWfWW9ZcaFKObH8FPs8UAAb PBFQWi5gCp7caLue00rvPE9Pcjw95lyw1J/NkQBQ6ywYhbaIHfB9CqB9eyyDU7uL3B91 OmLh3OBPRmhgrLsxVafC2Gsujznxzp9U3SDErGLi637PS/r+pTgp9v+7fkv4wzR5eCiv tfCFsOn6GkjsmNVAR4hnJTXD4qlaOyWcPv5iwbioUkrtJRO0q9kS+1jYaupgB/kbJGri cUxg== X-Gm-Message-State: AOAM530rM+OrWYyH29c5HSqIHHAeHzpE11ryDY5rd68pZQU2fuos/6yZ cSVxkwlFj1zfpNjSyADOa3kEzkTK X-Google-Smtp-Source: ABdhPJw6Ble0+oXFgyn9YTjZ2neUU2yDn7VqpJqrTAZMOBERu8svvhc+VNKWWpnq2GAqnamjydL74A== X-Received: by 2002:a5d:6646:: with SMTP id f6mr10223052wrw.155.1595624868801; Fri, 24 Jul 2020 14:07:48 -0700 (PDT) Received: from kali.home (lfbn-ren-1-2132-33.w92-167.abo.wanadoo.fr. [92.167.211.33]) by smtp.gmail.com with ESMTPSA id b139sm8873267wmd.19.2020.07.24.14.07.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jul 2020 14:07:47 -0700 (PDT) From: Fabrice Fontaine To: buildroot@buildroot.org Date: Fri, 24 Jul 2020 23:07:38 +0200 Message-Id: <20200724210738.1077246-1-fontaine.fabrice@gmail.com> X-Mailer: git-send-email 2.27.0 MIME-Version: 1.0 Subject: [Buildroot] [PATCH 1/1] package/zbar: bump to version 0.23.1 X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Fabrice Fontaine , Volkov Viacheslav Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" - Add new NLS dependency as well as a patch to fix a build failure without it: https://github.com/mchehab/zbar/issues/90 - Update indentation in hash file (two spaces) Signed-off-by: Fabrice Fontaine --- ...01-zbar-add-some-translation-support.patch | 329 ++++++++++++++++++ package/zbar/zbar.hash | 4 +- package/zbar/zbar.mk | 5 +- 3 files changed, 334 insertions(+), 4 deletions(-) create mode 100644 package/zbar/0001-zbar-add-some-translation-support.patch diff --git a/package/zbar/0001-zbar-add-some-translation-support.patch b/package/zbar/0001-zbar-add-some-translation-support.patch new file mode 100644 index 0000000000..a505887e15 --- /dev/null +++ b/package/zbar/0001-zbar-add-some-translation-support.patch @@ -0,0 +1,329 @@ +From d05911f8d5fb8c1e064bd93ed9ec9f038c5da096 Mon Sep 17 00:00:00 2001 +From: Mauro Carvalho Chehab +Date: Sun, 12 Apr 2020 14:45:40 +0200 +Subject: [PATCH] zbar: add some translation support + +A full zBar translation would take a while, but let's take the +first step and translate the help messages from the two +command line utils. + +This sets a baseline code to be used by other translations. + +Signed-off-by: Mauro Carvalho Chehab +[Retrieved (and updated to keep only gettext.h) from: +https://github.com/mchehab/zbar/commit/d05911f8d5fb8c1e064bd93ed9ec9f038c5da096] +Signed-off-by: Fabrice Fontaine +--- + Makefile.am | 20 ++- + config/config.rpath | 2 +- + configure.ac | 5 +- + po/Makevars | 72 +++++++++++ + po/POTFILES.in | 5 + + zbar/gettext.h | 294 ++++++++++++++++++++++++++++++++++++++++++++ + zbarcam/zbarcam.c | 33 ++++- + zbarimg/zbarimg.c | 106 ++++++++++------ + 8 files changed, 486 insertions(+), 51 deletions(-) + create mode 100644 po/Makevars + create mode 100644 po/POTFILES.in + create mode 100644 zbar/gettext.h + +diff --git a/zbar/gettext.h b/zbar/gettext.h +new file mode 100644 +index 0000000..bd8e87d +--- /dev/null ++++ b/zbar/gettext.h +@@ -0,0 +1,294 @@ ++/* Convenience header for conditional use of GNU . ++ Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009-2018 Free Software ++ Foundation, Inc. ++ ++ This program is free software: you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see . */ ++ ++#ifndef _LIBGETTEXT_H ++#define _LIBGETTEXT_H 1 ++ ++/* NLS can be disabled through the configure --disable-nls option ++ or through "#define ENABLE NLS 0" before including this file. */ ++#if defined ENABLE_NLS && ENABLE_NLS ++ ++/* Get declarations of GNU message catalog functions. */ ++# include ++ ++/* You can set the DEFAULT_TEXT_DOMAIN macro to specify the domain used by ++ the gettext() and ngettext() macros. This is an alternative to calling ++ textdomain(), and is useful for libraries. */ ++# ifdef DEFAULT_TEXT_DOMAIN ++# undef gettext ++# define gettext(Msgid) \ ++ dgettext (DEFAULT_TEXT_DOMAIN, Msgid) ++# undef ngettext ++# define ngettext(Msgid1, Msgid2, N) \ ++ dngettext (DEFAULT_TEXT_DOMAIN, Msgid1, Msgid2, N) ++# endif ++ ++#else ++ ++/* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which ++ chokes if dcgettext is defined as a macro. So include it now, to make ++ later inclusions of a NOP. We don't include ++ as well because people using "gettext.h" will not include , ++ and also including would fail on SunOS 4, whereas ++ is OK. */ ++#if defined(__sun) ++# include ++#endif ++ ++/* Many header files from the libstdc++ coming with g++ 3.3 or newer include ++ , which chokes if dcgettext is defined as a macro. So include ++ it now, to make later inclusions of a NOP. */ ++#if defined(__cplusplus) && defined(__GNUG__) && (__GNUC__ >= 3) ++# include ++# if (__GLIBC__ >= 2 && !defined __UCLIBC__) || _GLIBCXX_HAVE_LIBINTL_H ++# include ++# endif ++#endif ++ ++/* Disabled NLS. ++ The casts to 'const char *' serve the purpose of producing warnings ++ for invalid uses of the value returned from these functions. ++ On pre-ANSI systems without 'const', the config.h file is supposed to ++ contain "#define const". */ ++# undef gettext ++# define gettext(Msgid) ((const char *) (Msgid)) ++# undef dgettext ++# define dgettext(Domainname, Msgid) ((void) (Domainname), gettext (Msgid)) ++# undef dcgettext ++# define dcgettext(Domainname, Msgid, Category) \ ++ ((void) (Category), dgettext (Domainname, Msgid)) ++# undef ngettext ++# define ngettext(Msgid1, Msgid2, N) \ ++ ((N) == 1 \ ++ ? ((void) (Msgid2), (const char *) (Msgid1)) \ ++ : ((void) (Msgid1), (const char *) (Msgid2))) ++# undef dngettext ++# define dngettext(Domainname, Msgid1, Msgid2, N) \ ++ ((void) (Domainname), ngettext (Msgid1, Msgid2, N)) ++# undef dcngettext ++# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \ ++ ((void) (Category), dngettext (Domainname, Msgid1, Msgid2, N)) ++# undef textdomain ++# define textdomain(Domainname) ((const char *) (Domainname)) ++# undef bindtextdomain ++# define bindtextdomain(Domainname, Dirname) \ ++ ((void) (Domainname), (const char *) (Dirname)) ++# undef bind_textdomain_codeset ++# define bind_textdomain_codeset(Domainname, Codeset) \ ++ ((void) (Domainname), (const char *) (Codeset)) ++ ++#endif ++ ++/* Prefer gnulib's setlocale override over libintl's setlocale override. */ ++#ifdef GNULIB_defined_setlocale ++# undef setlocale ++# define setlocale rpl_setlocale ++#endif ++ ++/* A pseudo function call that serves as a marker for the automated ++ extraction of messages, but does not call gettext(). The run-time ++ translation is done at a different place in the code. ++ The argument, String, should be a literal string. Concatenated strings ++ and other string expressions won't work. ++ The macro's expansion is not parenthesized, so that it is suitable as ++ initializer for static 'char[]' or 'const char[]' variables. */ ++#define gettext_noop(String) String ++ ++/* The separator between msgctxt and msgid in a .mo file. */ ++#define GETTEXT_CONTEXT_GLUE "\004" ++ ++/* Pseudo function calls, taking a MSGCTXT and a MSGID instead of just a ++ MSGID. MSGCTXT and MSGID must be string literals. MSGCTXT should be ++ short and rarely need to change. ++ The letter 'p' stands for 'particular' or 'special'. */ ++#ifdef DEFAULT_TEXT_DOMAIN ++# define pgettext(Msgctxt, Msgid) \ ++ pgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES) ++#else ++# define pgettext(Msgctxt, Msgid) \ ++ pgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES) ++#endif ++#define dpgettext(Domainname, Msgctxt, Msgid) \ ++ pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES) ++#define dcpgettext(Domainname, Msgctxt, Msgid, Category) \ ++ pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, Category) ++#ifdef DEFAULT_TEXT_DOMAIN ++# define npgettext(Msgctxt, Msgid, MsgidPlural, N) \ ++ npgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES) ++#else ++# define npgettext(Msgctxt, Msgid, MsgidPlural, N) \ ++ npgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES) ++#endif ++#define dnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N) \ ++ npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES) ++#define dcnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N, Category) \ ++ npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, Category) ++ ++#ifdef __GNUC__ ++__inline ++#else ++#ifdef __cplusplus ++inline ++#endif ++#endif ++static const char * ++pgettext_aux (const char *domain, ++ const char *msg_ctxt_id, const char *msgid, ++ int category) ++{ ++ const char *translation = dcgettext (domain, msg_ctxt_id, category); ++ if (translation == msg_ctxt_id) ++ return msgid; ++ else ++ return translation; ++} ++ ++#ifdef __GNUC__ ++__inline ++#else ++#ifdef __cplusplus ++inline ++#endif ++#endif ++static const char * ++npgettext_aux (const char *domain, ++ const char *msg_ctxt_id, const char *msgid, ++ const char *msgid_plural, unsigned long int n, ++ int category) ++{ ++ const char *translation = ++ dcngettext (domain, msg_ctxt_id, msgid_plural, n, category); ++ if (translation == msg_ctxt_id || translation == msgid_plural) ++ return (n == 1 ? msgid : msgid_plural); ++ else ++ return translation; ++} ++ ++/* The same thing extended for non-constant arguments. Here MSGCTXT and MSGID ++ can be arbitrary expressions. But for string literals these macros are ++ less efficient than those above. */ ++ ++#include ++ ++#if (((__GNUC__ >= 3 || __GNUG__ >= 2) && !defined __STRICT_ANSI__) \ ++ /* || (__STDC_VERSION__ == 199901L && !defined __HP_cc) ++ || (__STDC_VERSION__ >= 201112L && !defined __STDC_NO_VLA__) */ ) ++# define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS 1 ++#else ++# define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS 0 ++#endif ++ ++#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS ++#include ++#endif ++ ++#define pgettext_expr(Msgctxt, Msgid) \ ++ dcpgettext_expr (NULL, Msgctxt, Msgid, LC_MESSAGES) ++#define dpgettext_expr(Domainname, Msgctxt, Msgid) \ ++ dcpgettext_expr (Domainname, Msgctxt, Msgid, LC_MESSAGES) ++ ++#ifdef __GNUC__ ++__inline ++#else ++#ifdef __cplusplus ++inline ++#endif ++#endif ++static const char * ++dcpgettext_expr (const char *domain, ++ const char *msgctxt, const char *msgid, ++ int category) ++{ ++ size_t msgctxt_len = strlen (msgctxt) + 1; ++ size_t msgid_len = strlen (msgid) + 1; ++ const char *translation; ++#if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS ++ char msg_ctxt_id[msgctxt_len + msgid_len]; ++#else ++ char buf[1024]; ++ char *msg_ctxt_id = ++ (msgctxt_len + msgid_len <= sizeof (buf) ++ ? buf ++ : (char *) malloc (msgctxt_len + msgid_len)); ++ if (msg_ctxt_id != NULL) ++#endif ++ { ++ int found_translation; ++ memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1); ++ msg_ctxt_id[msgctxt_len - 1] = '\004'; ++ memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len); ++ translation = dcgettext (domain, msg_ctxt_id, category); ++ found_translation = (translation != msg_ctxt_id); ++#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS ++ if (msg_ctxt_id != buf) ++ free (msg_ctxt_id); ++#endif ++ if (found_translation) ++ return translation; ++ } ++ return msgid; ++} ++ ++#define npgettext_expr(Msgctxt, Msgid, MsgidPlural, N) \ ++ dcnpgettext_expr (NULL, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES) ++#define dnpgettext_expr(Domainname, Msgctxt, Msgid, MsgidPlural, N) \ ++ dcnpgettext_expr (Domainname, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES) ++ ++#ifdef __GNUC__ ++__inline ++#else ++#ifdef __cplusplus ++inline ++#endif ++#endif ++static const char * ++dcnpgettext_expr (const char *domain, ++ const char *msgctxt, const char *msgid, ++ const char *msgid_plural, unsigned long int n, ++ int category) ++{ ++ size_t msgctxt_len = strlen (msgctxt) + 1; ++ size_t msgid_len = strlen (msgid) + 1; ++ const char *translation; ++#if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS ++ char msg_ctxt_id[msgctxt_len + msgid_len]; ++#else ++ char buf[1024]; ++ char *msg_ctxt_id = ++ (msgctxt_len + msgid_len <= sizeof (buf) ++ ? buf ++ : (char *) malloc (msgctxt_len + msgid_len)); ++ if (msg_ctxt_id != NULL) ++#endif ++ { ++ int found_translation; ++ memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1); ++ msg_ctxt_id[msgctxt_len - 1] = '\004'; ++ memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len); ++ translation = dcngettext (domain, msg_ctxt_id, msgid_plural, n, category); ++ found_translation = !(translation == msg_ctxt_id || translation == msgid_plural); ++#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS ++ if (msg_ctxt_id != buf) ++ free (msg_ctxt_id); ++#endif ++ if (found_translation) ++ return translation; ++ } ++ return (n == 1 ? msgid : msgid_plural); ++} ++ ++#endif /* _LIBGETTEXT_H */ diff --git a/package/zbar/zbar.hash b/package/zbar/zbar.hash index eae5b7ebf5..4277091892 100644 --- a/package/zbar/zbar.hash +++ b/package/zbar/zbar.hash @@ -1,3 +1,3 @@ # Locally computed: -sha256 e99fb8f3be85a76fe24784ad67fecb2da3a02b1e432696b05eefe212d448ad2e zbar-0.23.tar.bz2 -sha256 44260f9252c7fe38ba8dfb645330504f4a375e3a5e9dd7d5d6b9f04adb4952f1 LICENSE.md +sha256 dad260b47ef887a639e840a89e5e6e132217b6bba2a8473565d1f459bcb97c1f zbar-0.23.1.tar.bz2 +sha256 44260f9252c7fe38ba8dfb645330504f4a375e3a5e9dd7d5d6b9f04adb4952f1 LICENSE.md diff --git a/package/zbar/zbar.mk b/package/zbar/zbar.mk index 0550f3e23f..019df58ebe 100644 --- a/package/zbar/zbar.mk +++ b/package/zbar/zbar.mk @@ -4,7 +4,7 @@ # ################################################################################ -ZBAR_VERSION = 0.23 +ZBAR_VERSION = 0.23.1 ZBAR_SOURCE = zbar-$(ZBAR_VERSION).tar.bz2 ZBAR_SITE = https://www.linuxtv.org/downloads/zbar ZBAR_LICENSE = LGPL-2.1+ @@ -12,7 +12,8 @@ ZBAR_LICENSE_FILES = LICENSE.md ZBAR_INSTALL_STAGING = YES ZBAR_DEPENDENCIES = libv4l jpeg # add host-gettext for AM_ICONV macro -ZBAR_DEPENDENCIES += host-gettext +ZBAR_DEPENDENCIES += host-gettext $(TARGET_NLS_DEPENDENCIES) +ZBAR_CONF_ENV = LIBS=$(TARGET_NLS_LIBS) # uses C99 features ZBAR_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) -std=gnu99" ZBAR_CONF_OPTS = \