pkgsrc-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: pkg/31985 ([lang/perl5] cannot build 64-bit binaries on Solaris 10 (amd64) with Sun Studio 10)



Fri, Nov 20, 2009 at 10:49:04AM +0100, Filip Hajny:
> On 20.11.2009, at 9:45, OBATA Akio wrote:
>
>> But it is unclear on i386 and sparc, so maybe, should not to  
>> 64bitnone, but 64bitauto in "else" part. (at least, it seems that  
>> recent bulk build on SunOS 5.10/i386 and SunOS 5.9/sparc have no  
>> problem)
>
> Confirming that lang/perl5 builds fine with ABI=64 and Sun Studio 12, on 
> a clean just-boostrapped system.
>
> [root@pkgsrc-studio64 ~]# uname -a
> SunOS pkgsrc-studio64 5.11 snv_89 i86pc i386 i86pc
>
> [root@pkgsrc-studio64 ~]# file `which perl`
> /opt/local/bin/perl: ELF 64-bit LSB executable AMD64 Version 1 [SSE FXSR 
> FPU], dynamically linked, not stripped
>
> [root@pkgsrc-studio64 ~]# perl -v
> This is perl, v5.10.0 built for i386-solaris-thread-multi-64
> ...
>
> [root@pkgsrc-studio64 ~]# cat /opt/local/etc/mk-compiler.conf
> # pkgsrc include file for compiler specific options
> # for Sun Studio 12
> ABI=                                    64
> PKGSRC_COMPILER=                        sunpro
> SUNWSPROBASE=                           /opt/SUNWspro
> CC=                                     cc

you want -m64 or whatever the option is, esp for x86 on which gcc sucks
rocks.  except for the bugs that the packages themselves have, its worked
well for me.

> CXX=                                    CC
> CPP=                                    ${CC} -E
> CXXCPP=                                 ${CXX} -E
>
> --
> Filip Hajny
> Joyent Inc.

my mk.conf has morfed over time and probbably has worts, but looks like:

ABI=64

.ifndef OPSYS
OPSYS:= ${:!${UNAME} -s!:S/-//g:S/\///g}
.endif

.if (${OPSYS} == "SunOS")
# Solaris Sparc options
.if (${MACHINE_ARCH} == "sparc")
PKGSRC_COMPILER=sunpro

# For sparc64, compile 64-bit & w/ large file support.
.if (${PKGSRC_COMPILER} == "gcc")
# For gcc: These are all set by the gcc wrapper, but these variables make sure
# that thinks like libtool see them.
CC=/usr/local/bin/gcc -static-libgcc -D_LARGEFILE64_SOURCE -mcpu=v9 
-mtune=ultrasparc -m64 -D__sparc_v9__
GCC=/usr/local/bin/gcc -static-libgcc -D_LARGEFILE64_SOURCE -mcpu=v9 
-mtune=ultrasparc -m64 -D__sparc_v9__
CXX=/usr/local/bin/g++ -D_LARGEFILE64_SOURCE -mcpu=v9 -mtune=ultrasparc -m64 
-D__sparc_v9__
CFLAGS+= -static-libgcc -static-libgcc -D_LARGEFILE64_SOURCE -mcpu=v9 
-mtune=ultrasparc -m64 -D__sparc_v9__
LDLAGS+= -static-libgcc -D_LARGEFILE64_SOURCE -mcpu=v9 -mtune=ultrasparc -m64
CPPFLAGS+= -D_LARGEFILE64_SOURCE -mcpu=v9 -mtune=ultrasparc -m64 -D__sparc_v9__

.elif (${PKGSRC_COMPILER} == "sunpro")

CC=     /opt/SUNWspro/bin/cc -D_LARGEFILE64_SOURCE -m64 -g
CPP=    /opt/SUNWspro/bin/cc -D_LARGEFILE64_SOURCE -m64 -E
CFLAGS= -D_LARGEFILE64_SOURCE -D_LARGEFILE64_SOURCE -m64 -g -L/opt/pkg/lib 
-L/lib/64 -L/usr/lib/64 -L/usr/ucblib/sparcv9
CXX=    /opt/SUNWspro/bin/CC -D_LARGEFILE64_SOURCE -m64
CXXFLAGS=-D_LARGEFILE64_SOURCE -m64
LDFLAGS=-Wl,-64 -R/opt/pkg/lib -L/opt/pkg/lib -R/lib/64 -L/lib/64 -R/usr/lib/64 
-L/usr/lib/64 -R/usr/ucblib/sparcv9 -L/usr/ucblib/sparcv9
CPPFLAGS+= -D_LARGEFILE64_SOURCE -m64
AR=     /usr/ccs/bin/ar

.else
error
.endif

SPARC_TARGET_ARCH= sparcv9

.if (${PKGSRC_COMPILER} == "gcc")
# speed-up gcc
COPTS+=-pipe
CFLAGS+=-pipe
DBG= -static-libgcc -g
.else
DBG= -g
.endif

# pkgsrc tries to figure out where ldd (which it uses to ensure that libraries
# are found properly after linking) is located with /usr/bin/type, which
# creates a nice circular exec spin-out...so, just hard-code it.
LDD=/usr/bin/ldd

# solaris versions dont cut it...
FETCH_CMD=/opt/pkg/bin/ftp
TOOLS_PLATFORM.awk?=/opt/pkg/bin/nawk
TOOLS_PLATFORM.sed?=/opt/pkg/bin/nbsed
TOOLS_PLATFORM.pax?=/opt/pkg/bin/pax
TOOLS_PLATFORM.tar?=/opt/pkg/bin/tar

.else
# Solaris AMD64/x86 options
#
PKGSRC_COMPILER=sunpro

# For Solaris amd64, we are much better off using the sunpro compiler.  So,
# options for sunpro are
CC=     /opt/SUNWspro/bin/cc -m64 -g
CPP=    /opt/SUNWspro/bin/cc -m64 -E
CFLAGS= -D_LARGEFILE64_SOURCE -m64 -g -L/opt/pkg/lib -L/lib/64 -L/usr/lib/64 
-L/usr/ucblib/amd64
CXX=    /opt/SUNWspro/bin/CC -m64
CXXFLAGS= -D_LARGEFILE64_SOURCE -m64
LDFLAGS= -Wl,-64 -Wl,-R/opt/pkg/lib -Wl,-L/opt/pkg/lib -Wl,-R/lib/64 
-Wl,-L/lib/64 -Wl,-R/usr/lib/64 -Wl,-L/usr/lib/64 -Wl,-R/usr/ucblib/64 
-Wl,-L/usr/ucblib/64
AR=/usr/ccs/bin/ar

.if (${PKGSRC_COMPILER} == "gcc")
# speed-up gcc
COPTS+=-pipe
CFLAGS+=-pipe
DBG= -static-libgcc -g
.else
DBG= -g
.endif

# pkgsrc tries to figure out where ldd (which it uses to ensure that libraries
# are found properly after linking) is located with /usr/bin/type, which
# creates a nice circular exec spin-out...so, just hard-code it.
LDD=/usr/bin/ldd

# solaris versions dont cut it...
TOOLS_PLATFORM.awk?=/opt/pkg/bin/nawk
TOOLS_PLATFORM.sed?=/opt/pkg/bin/nbsed
TOOLS_PLATFORM.pax?=/opt/pkg/bin/pax
TOOLS_PLATFORM.tar?=/opt/pkg/bin/tar

.endif  # MACHINE_ARCH sparc
.endif  # OSSYS SunOS

YACC=bison -y

.ifdef BSD_PKG_MK       # begin pkgsrc settings

# The level of debugging output which is displayed whilst making and installing
# the package.  The default value for this is 0, which will not display the
# commands as they are executed (normal, default, quiet operation); the value 1
# will display all shell commands before their invocation, and the value 2 will
# display both the shell commands before their invocation, and their actual
# execution progress with set -x will be displayed.
PKG_DEBUG_LEVEL=0

CONFIGURE_ENV+=        CPPFLAGS=${CPPFLAGS:M*:Q}
CONFIGURE_ENV+=        CFLAGS=${CFLAGS:M*:Q}

YACC=bison -y

# if we have to build gcc, dont bother with the crap
BUILD_JAVA=NO
BUILD_OBJC=NO
#
PERL5_USE_THREADS=no

GNU_PROGRAM_PREFIX=

# When binary packages are made, save them in an OS_VERSION and
# MACHINE_ARCH specific subdirectory.
PACKAGES=${_PKGSRCDIR}/packages/${OS_VERSION}/${MACHINE_ARCH}

# Automatically build and save binary packages on dependencies.
DEPENDS_TARGET=package

.endif                  # end pkgsrc settings


Home | Main Index | Thread Index | Old Index