Error running configure on Mac

Started by samay sharmaalmost 4 years ago6 messages
#1samay sharma
smilingsamay@gmail.com

Hi,

I was trying to build Postgres from source on my Mac (MacOS Monterey 12.1)
and ran into an error when running configure.

./configure

...

checking for gcc option to accept ISO C99... unsupported

configure: error: C compiler "gcc" does not support C99

When I do gcc --version I see:

Configured with: --prefix=/Library/Developer/CommandLineTools/usr
--with-gxx-include-dir=/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/usr/include/c++/4.2.1

Apple clang version 13.0.0 (clang-1300.0.27.3)

Target: x86_64-apple-darwin21.2.0

Thread model: posix

InstalledDir: /Library/Developer/CommandLineTools/usr/bin

So, it looks like it is using clang to compile and not gcc.

configure runs successfully if I do: ./configure CC=gcc-11 or soft link gcc
to gcc-11 and then run configure. However, I didn't find these tips in
Platform specific notes in docs:
https://www.postgresql.org/docs/9.6/installation-platform-notes.html#INSTALLATION-NOTES-MACOS
.

So, I wanted to ask if this behavior is expected and if so, should we
update docs to make a note of this?

Regards,

Samay

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: samay sharma (#1)
Re: Error running configure on Mac

samay sharma <smilingsamay@gmail.com> writes:

I was trying to build Postgres from source on my Mac (MacOS Monterey 12.1)
and ran into an error when running configure.

Works for me, and for other developers, and for assorted buildfarm
animals.

checking for gcc option to accept ISO C99... unsupported
configure: error: C compiler "gcc" does not support C99

That is bizarre. Can you show the segment of config.log
that corresponds to this? The exact error message that
the compiler is reporting would be useful.

Also, I wonder if you are using Apple's gcc (yeah, that's
really clang), or a gcc from MacPorts or Brew or the like.

regards, tom lane

#3samay sharma
smilingsamay@gmail.com
In reply to: Tom Lane (#2)
1 attachment(s)
Re: Error running configure on Mac

On Sun, Jan 23, 2022 at 11:14 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:

samay sharma <smilingsamay@gmail.com> writes:

I was trying to build Postgres from source on my Mac (MacOS Monterey

12.1)

and ran into an error when running configure.

Works for me, and for other developers, and for assorted buildfarm
animals.

checking for gcc option to accept ISO C99... unsupported
configure: error: C compiler "gcc" does not support C99

That is bizarre. Can you show the segment of config.log
that corresponds to this? The exact error message that
the compiler is reporting would be useful.

The line above the error message in config.log is:

configure:4607: result: unsupported

configure:4623: error: C compiler "gcc" does not support C99

Slightly above that, I see this error message too:

configure:4591: gcc -qlanglvl=extc99 -c -g -O2 conftest.c >&5

clang: error: unknown argument: '-qlanglvl=extc99'

configure:4591: $? = 1

configure: failed program was:

....

I also see many more error messages in config.log when I grep for error.
So, I've attached the entire file in case any other output is useful.

Also, I wonder if you are using Apple's gcc (yeah, that's
really clang), or a gcc from MacPorts or Brew or the like.

I've pasted the output of gcc --version in the previous email which reports
it to be Apple clang version 13.0.0 (clang-1300.0.27.3). Is there any other
command which I can run to give more info about this?

Regards,
Samay

Show quoted text

regards, tom lane

Attachments:

config.logapplication/octet-stream; name=config.logDownload
#4Andres Freund
andres@anarazel.de
In reply to: samay sharma (#3)
Re: Error running configure on Mac

Hi,

On 2022-01-23 23:44:11 -0800, samay sharma wrote:

I also see many more error messages in config.log when I grep for error.
So, I've attached the entire file in case any other output is useful.

The important lines seem to be:

configure:4591: gcc -c -g -O2 conftest.c >&5
In file included from conftest.c:21:
In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/usr/include/stdlib.h:66:
In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/usr/include/sys/wait.h:110:
/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/usr/include/sys/resource.h:202:2: error: unknown type name 'uint8_t'
uint8_t ri_uuid[16];

I.e. that for some reason on your system stdlib.h is not standalone. Which is
quite bizarre.

Grepping through headers on an m1 mini running monterey, I see

sys/resource.h:
#include <sys/cdefs.h>
...
#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
#include <stdint.h>
#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */

sys/cdefs.h:
#if defined(_ANSI_SOURCE)
#define __DARWIN_C_LEVEL __DARWIN_C_ANSI
#elif defined(_POSIX_C_SOURCE) && !defined(_DARWIN_C_SOURCE) && !defined(_NONSTD_SOURCE)
#define __DARWIN_C_LEVEL _POSIX_C_SOURCE
#else
#define __DARWIN_C_LEVEL __DARWIN_C_FULL
#endif

So it seems that the problem is that for some reason your environment ends up
with __DARWIN_C_LEVEL being set to something too low?

It's interesting that all the _POSIX_C_SOURCE values are smaller than
__DARWIN_C_LEVEL, which seems to indicate that the above include of stdint.h
won't be made if _POSIX_C_SOURCE is set?

Could you create a test.c file like:
#include <stdarg.h>
#include <stdbool.h>
#include <stdlib.h>
#include <wchar.h>
#include <stdio.h>

and then run

gcc -v -E -dD test.c -o test.i

and then share both the output of that and test.i?

Greetings,

Andres Freund

#5samay sharma
smilingsamay@gmail.com
In reply to: Andres Freund (#4)
1 attachment(s)
Re: Error running configure on Mac

Hey,

On Mon, Jan 24, 2022 at 12:09 AM Andres Freund <andres@anarazel.de> wrote:

Hi,

On 2022-01-23 23:44:11 -0800, samay sharma wrote:

I also see many more error messages in config.log when I grep for error.
So, I've attached the entire file in case any other output is useful.

The important lines seem to be:

configure:4591: gcc -c -g -O2 conftest.c >&5
In file included from conftest.c:21:
In file included from
/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/usr/include/stdlib.h:66:
In file included from
/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/usr/include/sys/wait.h:110:
/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/usr/include/sys/resource.h:202:2:
error: unknown type name 'uint8_t'
uint8_t ri_uuid[16];

I.e. that for some reason on your system stdlib.h is not standalone. Which
is
quite bizarre.

Grepping through headers on an m1 mini running monterey, I see

sys/resource.h:
#include <sys/cdefs.h>
...
#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
#include <stdint.h>
#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */

sys/cdefs.h:
#if defined(_ANSI_SOURCE)
#define __DARWIN_C_LEVEL __DARWIN_C_ANSI
#elif defined(_POSIX_C_SOURCE) && !defined(_DARWIN_C_SOURCE) &&
!defined(_NONSTD_SOURCE)
#define __DARWIN_C_LEVEL _POSIX_C_SOURCE
#else
#define __DARWIN_C_LEVEL __DARWIN_C_FULL
#endif

So it seems that the problem is that for some reason your environment ends
up
with __DARWIN_C_LEVEL being set to something too low?

It's interesting that all the _POSIX_C_SOURCE values are smaller than
__DARWIN_C_LEVEL, which seems to indicate that the above include of
stdint.h
won't be made if _POSIX_C_SOURCE is set?

Could you create a test.c file like:
#include <stdarg.h>
#include <stdbool.h>
#include <stdlib.h>
#include <wchar.h>
#include <stdio.h>

and then run

gcc -v -E -dD test.c -o test.i

and then share both the output of that and test.i?

Here's the output of running gcc -v -E -dD test.c -o test.i for that
program.

Apple clang version 13.0.0 (clang-1300.0.27.3)

Target: x86_64-apple-darwin21.2.0

Thread model: posix

InstalledDir: /Library/Developer/CommandLineTools/usr/bin

"/Library/Developer/CommandLineTools/usr/bin/clang" -cc1 -triple
x86_64-apple-macosx12.0.0 -Wundef-prefix=TARGET_OS_
-Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage
-Werror=implicit-function-declaration -E -disable-free
-disable-llvm-verifier -discard-value-names -main-file-name test.c
-mrelocation-model pic -pic-level 2 -mframe-pointer=all -fno-strict-return
-fno-rounding-math -munwind-tables -target-sdk-version=12.1
-fvisibility-inlines-hidden-static-local-var -target-cpu penryn -tune-cpu
generic -debugger-tuning=lldb -target-linker-version 710.1 -v -resource-dir
/Library/Developer/CommandLineTools/usr/lib/clang/13.0.0 -isysroot
/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk
-I/usr/local/include -internal-isystem
/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/usr/local/include
-internal-isystem
/Library/Developer/CommandLineTools/usr/lib/clang/13.0.0/include
-internal-externc-isystem
/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/usr/include
-internal-externc-isystem /Library/Developer/CommandLineTools/usr/include
-Wno-reorder-init-list -Wno-implicit-int-float-conversion
-Wno-c99-designator -Wno-final-dtor-non-final-class -Wno-extra-semi-stmt
-Wno-misleading-indentation -Wno-quoted-include-in-framework-header
-Wno-implicit-fallthrough -Wno-enum-enum-conversion
-Wno-enum-float-conversion -Wno-elaborated-enum-base
-fdebug-compilation-dir /Users/sash/PostgreSQL_Dev -ferror-limit 19
-stack-protector 1 -fstack-check -mdarwin-stkchk-strong-link -fblocks
-fencode-extended-block-signature -fregister-global-dtors-with-atexit
-fgnuc-version=4.2.1 -fmax-type-align=16 -fcommon -fcolor-diagnostics -dD
-clang-vendor-feature=+nullptrToBoolConversion
-clang-vendor-feature=+messageToSelfInClassMethodIdReturnType
-clang-vendor-feature=+disableInferNewAvailabilityFromInit
-clang-vendor-feature=+disableNeonImmediateRangeCheck
-clang-vendor-feature=+disableNonDependentMemberExprInCurrentInstantiation
-fno-odr-hash-protocols -clang-vendor-feature=+revert09abecef7bbf -mllvm
-disable-aligned-alloc-awareness=1 -mllvm -enable-dse-memoryssa=0 -o test.i
-x c test.c

clang -cc1 version 13.0.0 (clang-1300.0.27.3) default target
x86_64-apple-darwin21.2.0

ignoring nonexistent directory
"/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/usr/local/include"

ignoring nonexistent directory
"/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/Library/Frameworks"

#include "..." search starts here:

#include <...> search starts here:

/usr/local/include

/Library/Developer/CommandLineTools/usr/lib/clang/13.0.0/include

/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/usr/include

/Library/Developer/CommandLineTools/usr/include

/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/System/Library/Frameworks
(framework directory)

End of search list.

I've also attached the test.i file.

Regards,
Samay

Show quoted text

Greetings,

Andres Freund

Attachments:

test.iapplication/octet-stream; name=test.iDownload
#6Andres Freund
andres@anarazel.de
In reply to: samay sharma (#5)
Re: Error running configure on Mac

Hi,

On 2022-01-24 08:41:39 -0800, samay sharma wrote:

I've also attached the test.i file.

The problem is that you got a stdint.h in /usr/local/include/. And that
stdint.h doesn't match the system one. Which explains why there's a
compilation failure and also explains why others don't see this problem.

from test.i

# 1 "/usr/local/include/stdint.h" 1 3 4

#define _ISL_INCLUDE_ISL_STDINT_H 1

#define _GENERATED_STDINT_H "isl 0.14.1"

#define _STDINT_HAVE_STDINT_H 1

# 1 "/usr/local/include/stdint.h" 1 3 4
# 8 "/usr/local/include/stdint.h" 2 3 4
# 73 "/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/usr/include/sys/resource.h" 2 3 4

Greetings,

Andres Freund