Thread: Location to specify C compiler option in C extension

Location to specify C compiler option in C extension

From
Demitri Muna
Date:
Hi,

I’m writing a C extension and have successfully based my Makefile on existing templates. This conveniently hides the
detailsof the full Makefile provided by "pg_config --pgxs”. Which variable would be the appropriate one to specify the
‘-std=c99’compiler flag? I’ve tried many and still get warnings that this flag should suppress (specifically, "ISO C90
forbidsmixed declarations and code”). These are the variables I currently define: 

EXTENSION
DATA
PGFILEDESC
MODULE_big
PG_CPPFLAGS (this one seemed like the right place)
SHLIB_LINK
OBJS
PG_CONFIG
PGXS

A workaround has been:

OBJS = file1.o file2.o CPPFLAGS+=-Wdeclaration-after-statement

but it’s not exactly the same thing.

Thanks,
Demitri



Re: Location to specify C compiler option in C extension

From
Tom Lane
Date:
Demitri Muna <postgresql@demitri.com> writes:
> I’m writing a C extension and have successfully based my Makefile on existing templates. This conveniently hides the
detailsof the full Makefile provided by "pg_config --pgxs”. Which variable would be the appropriate one to specify the
‘-std=c99’compiler flag? I’ve tried many and still get warnings that this flag should suppress (specifically, "ISO C90
forbidsmixed declarations and code”). These are the variables I currently define: 

PG_CPPFLAGS ought to work.  One point is that you need to set that before
including pgxs.mk; maybe it's an ordering problem?

            regards, tom lane


Re: Location to specify C compiler option in C extension

From
Demitri Muna
Date:
Hi Tom,

PG_CPPFLAGS ought to work.  One point is that you need to set that before
including pgxs.mk; maybe it's an ordering problem?

On closer inspection, it was working, but the pg Makefile was specifically including “-Wdeclaration-after-statement” which I think was overriding the ‘-std=c99’ part. The line below fixed the problem.

PG_CPPFLAGS += -std=c99 -Wno-declaration-after-statement

Thanks, sorry for the noise.

Demitri