fixing Makefile.shlib for solaris/gcc with -m64 flag

Started by Jignesh K. Shahabout 19 years ago9 messageshackers
Jump to latest
#1Jignesh K. Shah
J.K.Shah@Sun.COM

Hello All,

When I compile with gcc on Solaris with -m64 flags, all shared lbiraries fail.

Can someone fix the following in Makefile.shlib

ifeq ($(PORTNAME), solaris)
ifeq ($(GCC), yes)
LINK.shared = $(CC) -shared
else
LINK.shared = $(CC) -G $(CFLAGS) # CFLAGS added for X86_64
endif

It should be

ifeq ($(PORTNAME), solaris)
ifeq ($(GCC), yes)
LINK.shared = $(COMPILER) -shared
else
LINK.shared = $(CC) -G $(CFLAGS) # CFLAGS added for X86_64
endif

Thanks.
Regards,
Jignesh

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Jignesh K. Shah (#1)
Re: fixing Makefile.shlib for solaris/gcc with -m64 flag

"Jignesh K. Shah" <J.K.Shah@Sun.COM> writes:

It should be
LINK.shared = $(COMPILER) -shared

Why? What's the difference, and why is it appropriate to fix it that
way instead of by changing CFLAGS?

regards, tom lane

#3Jignesh K. Shah
J.K.Shah@Sun.COM
In reply to: Tom Lane (#2)
Re: fixing Makefile.shlib for solaris/gcc with -m64 flag

simple if I use -m64 for 64 bit then all end binaries are generated 64-bit and the shared libraries
are generated 32-bit and the compilation fails (ONLY ON SOLARIS) since that particular line is only
for the condition Solaris AND gcc.

If I use the COMPILER which is CC + CFLAGS it passes -m64 properly to it and generates shared
libraries 64-bit and the compile continues..

I just tested it out.

-Jignesh

Tom Lane wrote:

Show quoted text

"Jignesh K. Shah" <J.K.Shah@Sun.COM> writes:

It should be
LINK.shared = $(COMPILER) -shared

Why? What's the difference, and why is it appropriate to fix it that
way instead of by changing CFLAGS?

regards, tom lane

#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: Jignesh K. Shah (#3)
Re: fixing Makefile.shlib for solaris/gcc with -m64 flag

"Jignesh K. Shah" <J.K.Shah@Sun.COM> writes:

simple if I use -m64 for 64 bit then all end binaries are generated 64-bit and the shared libraries
are generated 32-bit and the compilation fails (ONLY ON SOLARIS) since that particular line is only
for the condition Solaris AND gcc.

If I use the COMPILER which is CC + CFLAGS it passes -m64 properly to it and generates shared
libraries 64-bit and the compile continues..

Hmm ... I see we're doing it that way already for some other platforms,
but I can't help thinking it's a kluge. Wouldn't the correct answer be
that -m64 needs to be in LDFLAGS?

regards, tom lane

#5Peter Eisentraut
peter_e@gmx.net
In reply to: Tom Lane (#4)
Re: fixing Makefile.shlib for solaris/gcc with -m64 flag

Am Mittwoch, 17. Januar 2007 17:12 schrieb Tom Lane:

"Jignesh K. Shah" <J.K.Shah@Sun.COM> writes:

simple if I use -m64 for 64 bit then all end binaries are generated
64-bit and the shared libraries are generated 32-bit and the compilation
fails (ONLY ON SOLARIS) since that particular line is only for the
condition Solaris AND gcc.

If I use the COMPILER which is CC + CFLAGS it passes -m64 properly to it
and generates shared libraries 64-bit and the compile continues..

Hmm ... I see we're doing it that way already for some other platforms,
but I can't help thinking it's a kluge. Wouldn't the correct answer be
that -m64 needs to be in LDFLAGS?

The correct answer may be to put -m64 into CC.

--
Peter Eisentraut
http://developer.postgresql.org/~petere/

#6Jignesh K. Shah
J.K.Shah@Sun.COM
In reply to: Tom Lane (#4)
Re: fixing Makefile.shlib for solaris/gcc with -m64 flag

I tried that but it didn't work.

Also on Solaris it typically uses the ld in /usr/ccs/bin/ld which uses "-64" as its flag for 64 bit
and if you put LDFLAGS out there it will fail as unrecognized unless gcc parses -64 to -m64.

Putting -m64 in CC will do the workaround but then I guess that's what CFLAGS is for..

Regards,
Jignesh

Tom Lane wrote:

Show quoted text

"Jignesh K. Shah" <J.K.Shah@Sun.COM> writes:

simple if I use -m64 for 64 bit then all end binaries are generated 64-bit and the shared libraries
are generated 32-bit and the compilation fails (ONLY ON SOLARIS) since that particular line is only
for the condition Solaris AND gcc.

If I use the COMPILER which is CC + CFLAGS it passes -m64 properly to it and generates shared
libraries 64-bit and the compile continues..

Hmm ... I see we're doing it that way already for some other platforms,
but I can't help thinking it's a kluge. Wouldn't the correct answer be
that -m64 needs to be in LDFLAGS?

regards, tom lane

#7Tom Lane
tgl@sss.pgh.pa.us
In reply to: Peter Eisentraut (#5)
Re: fixing Makefile.shlib for solaris/gcc with -m64 flag

Peter Eisentraut <peter_e@gmx.net> writes:

Am Mittwoch, 17. Januar 2007 17:12 schrieb Tom Lane:

"Jignesh K. Shah" <J.K.Shah@Sun.COM> writes:

simple if I use -m64 for 64 bit then all end binaries are generated
64-bit and the shared libraries are generated 32-bit and the compilation
fails (ONLY ON SOLARIS) since that particular line is only for the
condition Solaris AND gcc.

If I use the COMPILER which is CC + CFLAGS it passes -m64 properly to it
and generates shared libraries 64-bit and the compile continues..

Hmm ... I see we're doing it that way already for some other platforms,
but I can't help thinking it's a kluge. Wouldn't the correct answer be
that -m64 needs to be in LDFLAGS?

The correct answer may be to put -m64 into CC.

Did we conclude that that was a satisfactory solution, or is this still
a live patch proposal?

If -m64 in CC is the right solution, it should probably be mentioned in
FAQ_Solaris.

regards, tom lane

#8Jignesh K. Shah
J.K.Shah@Sun.COM
In reply to: Tom Lane (#7)
Re: fixing Makefile.shlib for solaris/gcc with -m64 flag

I dont think we solved this.. But I think the way to put -m64 should be same as in Linux and Solaris
and not different.

Thanks.
Regards,
Jignesh

Tom Lane wrote:

Show quoted text

Peter Eisentraut <peter_e@gmx.net> writes:

Am Mittwoch, 17. Januar 2007 17:12 schrieb Tom Lane:

"Jignesh K. Shah" <J.K.Shah@Sun.COM> writes:

simple if I use -m64 for 64 bit then all end binaries are generated
64-bit and the shared libraries are generated 32-bit and the compilation
fails (ONLY ON SOLARIS) since that particular line is only for the
condition Solaris AND gcc.

If I use the COMPILER which is CC + CFLAGS it passes -m64 properly to it
and generates shared libraries 64-bit and the compile continues..

Hmm ... I see we're doing it that way already for some other platforms,
but I can't help thinking it's a kluge. Wouldn't the correct answer be
that -m64 needs to be in LDFLAGS?

The correct answer may be to put -m64 into CC.

Did we conclude that that was a satisfactory solution, or is this still
a live patch proposal?

If -m64 in CC is the right solution, it should probably be mentioned in
FAQ_Solaris.

regards, tom lane

#9Bruce Momjian
bruce@momjian.us
In reply to: Jignesh K. Shah (#8)
Re: fixing Makefile.shlib for solaris/gcc with -m64 flag

OK, I have made Solaris gcc the same as Linux in Makefile.shlib, patch
attached.

I am not backpatching this. We will get this tested for 8.3.

---------------------------------------------------------------------------

Jignesh K. Shah wrote:

I dont think we solved this.. But I think the way to put -m64 should be same as in Linux and Solaris
and not different.

Thanks.
Regards,
Jignesh

Tom Lane wrote:

Peter Eisentraut <peter_e@gmx.net> writes:

Am Mittwoch, 17. Januar 2007 17:12 schrieb Tom Lane:

"Jignesh K. Shah" <J.K.Shah@Sun.COM> writes:

simple if I use -m64 for 64 bit then all end binaries are generated
64-bit and the shared libraries are generated 32-bit and the compilation
fails (ONLY ON SOLARIS) since that particular line is only for the
condition Solaris AND gcc.

If I use the COMPILER which is CC + CFLAGS it passes -m64 properly to it
and generates shared libraries 64-bit and the compile continues..

Hmm ... I see we're doing it that way already for some other platforms,
but I can't help thinking it's a kluge. Wouldn't the correct answer be
that -m64 needs to be in LDFLAGS?

The correct answer may be to put -m64 into CC.

Did we conclude that that was a satisfactory solution, or is this still
a live patch proposal?

If -m64 in CC is the right solution, it should probably be mentioned in
FAQ_Solaris.

regards, tom lane

---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?

http://www.postgresql.org/docs/faq

--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://www.enterprisedb.com

+ If your life is a hard drive, Christ can be your backup. +

Attachments:

/rtmp/difftext/x-diffDownload+2-2