public inbox for [email protected]  
help / color / mirror / Atom feed
From: Dave Cramer <[email protected]>
To: Moazzum Ali <[email protected]>
Cc: Michael Paquier <[email protected]>
Cc: [email protected]
Subject: Re: Psqlodbc build fails on linux
Date: Mon, 4 Sep 2023 16:01:35 -0400
Message-ID: <CADK3HHKk-ADXc3G6rt38ahpgbDaTpZs+yMrDk_zC0uec2HqmDg@mail.gmail.com> (raw)
In-Reply-To: <CAG16KLW7b_=+JRh4FjDAAq1UPPcHgbG_wJDpDUh5m75mVR9jcg@mail.gmail.com>
References: <[email protected]>
	<ZPUatGNtOSe/[email protected]>
	<CADK3HHLovT+PAnGc3SgoFSY7R+qQsJ6iTX=MOML+otnZzMZ5Yw@mail.gmail.com>
	<CADK3HHL5kLg77AAes0G16K9Ueuhao+5wd=4=Bjv2sfOaoOWYjg@mail.gmail.com>
	<CAG16KLWVS67i+-n6zzs9TtFer8uWM-Ch4JzXeRGqEJuJTg8WPA@mail.gmail.com>
	<CADK3HHK0afa72Y-1QJ2bKE3GVB4vALM21aRERGjO_rrNU5rcRQ@mail.gmail.com>
	<CAG16KLW7b_=+JRh4FjDAAq1UPPcHgbG_wJDpDUh5m75mVR9jcg@mail.gmail.com>

Please see attached patch to use autoconf to detect and use stdbool.h

I have to admit to having no idea if this is correct or if the style is
correct, much was copied from postgresql.

I have tested it on ubuntu, and it compiles.

Dave Cramer
www.postgres.rocks


On Mon, 4 Sept 2023 at 13:56, Moazzum Ali <[email protected]>
wrote:

> Thanks Dave and Michael.
>
> On Mon, Sep 4, 2023, 10:54 PM Dave Cramer <[email protected]>
> wrote:
>
>> Seems like the better solution is to use Michael's suggestion as that is
>> what PG does.
>>
>> Dave Cramer
>> www.postgres.rocks
>>
>>
>> On Mon, 4 Sept 2023 at 12:28, Moazzum Ali <[email protected]>
>> wrote:
>>
>>> Dave,
>>>
>>> Is it something that can be fixed on PG or psqlodbc side or you would
>>> also suggest what Michael suggested? I have tried that environment rule
>>> though and it works.
>>>
>>> Thanks,
>>> Moazzum
>>>
>>> On Mon, Sep 4, 2023, 9:07 PM Dave Cramer <[email protected]>
>>> wrote:
>>>
>>>>
>>>>
>>>> On Mon, 4 Sept 2023 at 10:23, Dave Cramer <[email protected]>
>>>> wrote:
>>>>
>>>>>
>>>>>
>>>>> On Sun, 3 Sept 2023 at 19:46, Michael Paquier <[email protected]>
>>>>> wrote:
>>>>>
>>>>>> On Thu, Aug 31, 2023 at 06:28:06AM +0500, Moazzum Ali wrote:
>>>>>> > One way to fix the error is to include the following line before
>>>>>> > #include "pqexpbuffer.h" in connection.h and statement.h
>>>>>> > #include <stdbool.h>
>>>>>>
>>>>>> Wouldn't it be better to enforce an environment rule in psqlodbc.h
>>>>>> instead?  PostgreSQL enforces PG_USE_STDBOOL already on Windows, and
>>>>>> I am pretty sure that it would be OK to do the same in other *nix
>>>>>> places where anybody cares about ODBC.
>>>>>>
>>>>>
>>>>> I'm guessing this is a debian thing as I just built this successfully
>>>>> on a redhat (ish) system
>>>>>
>>>>
>>>> It pays to read all of the above before trying to replicate. I was
>>>> building against 15, not 16
>>>> I see the failure now
>>>>
>>>>>
>>>>> Dave
>>>>>
>>>>


Attachments:

  [application/octet-stream] 0001-Use-autoconf-to-check-for-stdbool.h.patch (1.9K, 3-0001-Use-autoconf-to-check-for-stdbool.h.patch)
  download | inline diff:
From 13da6d288e94a2331f2efde2bd850202ee9286c0 Mon Sep 17 00:00:00 2001
From: Ubuntu <[email protected]>
Date: Mon, 4 Sep 2023 19:57:41 +0000
Subject: [PATCH] Use autoconf to check for stdbool.h Committer: Dave Cramer
 <[email protected]>

---
 configure.ac | 14 ++++++++++++++
 psqlodbc.h   | 22 ++++++++++++++++++++++
 2 files changed, 36 insertions(+)

diff --git a/configure.ac b/configure.ac
index 6fd91cc..c20ffc4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,6 +22,19 @@ AC_CHECK_SIZEOF(void *)
 AC_CHECK_TYPES([long long])
 AC_CHECK_TYPES([signed char])
 AC_CHECK_TYPES([ssize_t])
+
+AC_CHECK_SIZEOF([bool], [],
+[#ifdef HAVE_STDBOOL_H
+#include <stdbool.h>
+#endif])
+
+dnl We use <stdbool.h> if we have it and it declares type bool as having
+dnl size 1.  Otherwise, c.h will fall back to declaring bool as unsigned char.
+if test "$ac_cv_header_stdbool_h" = yes -a "$ac_cv_sizeof_bool" = 1; then
+  AC_DEFINE([PG_USE_STDBOOL], 1,
+            [Define to 1 to use <stdbool.h> to define type bool.])
+fi
+
 AC_TYPE_SIZE_T
 
 # Check if "-Wall" is valid
@@ -240,6 +253,7 @@ AC_CHECK_LIB(pq, PQsetSingleRowMode, [],
 AC_CHECK_HEADERS(locale.h sys/time.h uchar.h)
 AC_CHECK_HEADER(libpq-fe.h,,[AC_MSG_ERROR([libpq header not found])])
 AC_HEADER_TIME
+AC_HEADER_STDBOOL
 
 
 # 4. Types(all members were moved to 0.)
diff --git a/psqlodbc.h b/psqlodbc.h
index ca8bab5..1677d0a 100644
--- a/psqlodbc.h
+++ b/psqlodbc.h
@@ -253,6 +253,28 @@ typedef double SDOUBLE;
 #endif /* CALLBACK */
 #endif /* WIN32 */
 
+#ifndef __cplusplus
+
+#ifdef PG_USE_STDBOOL
+#include <stdbool.h>
+#else
+
+#ifndef bool
+typedef unsigned char bool;
+#endif
+
+#ifndef true
+#define true	((bool) 1)
+#endif
+
+#ifndef false
+#define false	((bool) 0)
+#endif
+
+#endif							/* not PG_USE_STDBOOL */
+#endif							/* not C++ */
+
+
 #ifndef WIN32
 #define stricmp strcasecmp
 #define strnicmp strncasecmp
-- 
2.34.1



view thread (9+ messages)  latest in thread

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected], [email protected]
  Subject: Re: Psqlodbc build fails on linux
  In-Reply-To: <CADK3HHKk-ADXc3G6rt38ahpgbDaTpZs+yMrDk_zC0uec2HqmDg@mail.gmail.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox