Annotation of pkgsrc/lang/gcc-aux/Makefile, Revision 1.18
1.18 ! marino 1: # $NetBSD: Makefile,v 1.17 2014/05/02 15:54:16 marino Exp $
1.1 marino 2: #
3:
4: PKGNAME= gcc-aux-${SNAPSHOT}
5: DISTNAME= gcc-${GCC_VERSION}
1.18 ! marino 6: PKGREVISION= 1
1.1 marino 7: CATEGORIES= lang
8: MASTER_SITES= ${MASTER_SITE_GNU:=gcc/gcc-${GCC_VERSION}/}
9: DISTFILES= ${DISTNAME}.tar.bz2
10:
11: MAINTAINER= draco@marino.st
12: HOMEPAGE= http://www.dragonlace.net/
13: COMMENT= GNAT Ada compiler based on GCC ${GCC_BRANCH}
14: LICENSE= gnu-gpl-v3 AND gnu-lgpl-v3
15:
1.16 marino 16: .include "Makefile.version"
17: .include "Makefile.testsuite"
1.1 marino 18: .include "../../mk/bsd.prefs.mk"
19: .include "options.mk"
20:
1.16 marino 21: LANGS= c ada c++
22: USE_TOOLS+= gmake sed:run perl makeinfo bzip2 patch pod2man tar
23: APPLY_DIFFS= core ada cxx
24:
25: # Requires bootstrap compiler, which is only available for on selected systems
26: # Disable SunOS for now until multilib version can be built and tested.
1.1 marino 27:
28: ONLY_FOR_PLATFORM= DragonFly-*-* \
1.16 marino 29: FreeBSD-*-i386 \
30: FreeBSD-*-x86_64 \
1.1 marino 31: NetBSD-[5-9]*-i386 \
1.18 ! marino 32: NetBSD-[5-9]*-x86_64 \
! 33: SunOS-5.1[1-9]*-i386 \
! 34: SunOS-5.1[1-9]*-x86_64
! 35: # OpenBSD-*-amd64
! 36: # OpenBSD-*-i386
! 37: # MirBSD-*-amd64
! 38: # MirBSD-*-i386
1.1 marino 39:
1.16 marino 40: GARCH= ${MACHINE_ARCH:S/amd64/x86_64/}
1.17 marino 41: BLD_TARGET= ${GARCH}-aux-${LOWER_OPSYS}${OS_VERSION}
1.16 marino 42: OS_LABEL4VERS= [${OPSYS}${GARCH:M*64:S/amd_//:S/x86_//}]
1.1 marino 43: FULL_GNATGCC= NOT SET
1.2 marino 44: FULL_PATH= /sbin:/bin:/usr/sbin:/usr/bin:${PREFIX}/gcc-aux/bin:${PREFIX}/sbin:${PREFIX}/bin
1.16 marino 45:
46: .if ${OPSYS} == DragonFly
47: BOOTSTRAP_COMPILER= ada-bootstrap.${GARCH}.dragonfly.36A.tar.bz2
1.1 marino 48: .endif
1.16 marino 49:
50: .if ${OPSYS} == FreeBSD
51: MODERN_BINUTILS= yes
52: . if !empty(OS_VERSION:M[678].*)
53: BOOTSTRAP_COMPILER= ada-bootstrap.${GARCH}.freebsd.84.tar.bz2
54: . else
55: BOOTSTRAP_COMPILER= ada-bootstrap.${GARCH}.freebsd.100B.tar.bz2
56: . endif
1.1 marino 57: .endif
58:
1.18 ! marino 59: .if ${OPSYS} == NetBSD
1.12 marino 60: .if !empty(OS_VERSION:M6.99.*)
1.1 marino 61: NSUFF= 7.0_DEV
62: .else
63: NSUFF= ${OS_VERSION}
64: .endif
1.16 marino 65: .if ${GARCH} == i386
66: NELF= elf
1.1 marino 67: .endif
1.18 ! marino 68: XLDF= -lm
1.16 marino 69: BOOTSTRAP_COMPILER= ada-bootstrap.${GARCH}.netbsd.614.tar.bz2
70: BLD_TARGET= ${MACHINE_ARCH}-aux-netbsd${NELF}${NSUFF}
1.1 marino 71: .endif
72:
1.18 ! marino 73: .if ${OPSYS} == SunOS
! 74: SOL_OSV!= expr substr ${OS_VERSION} 3 2
1.1 marino 75: BLD_TARGET= ${MACHINE_ARCH}-aux-${LOWER_OPSYS}2.${SOL_OSV}
1.18 ! marino 76: BOOTSTRAP_COMPILER= ada-bootstrap.x86_64.solaris.511.tar.bz2
! 77: . if ${ABI} == 64
! 78: EXTRA_CONFARGS+= --enable-multilib
! 79: . else
! 80: COMPILER_ABI_SWITCH= -m32
! 81: . endif
! 82: MY_CONFIGURE_ENV+= OBJDUMP=${PREFIX}/bin/gobjdump
! 83: MODERN_BINUTILS=x yes
! 84: NATIVE_LINKER!= which ld
! 85: .endif
! 86:
! 87: .if ${OPSYS} == OpenBSD || ${OPSYS} == MirBSD
1.16 marino 88: MODERN_BINUTILS= yes
89: .endif
90:
91: .if defined(MODERN_BINUTILS)
92: BUILDLINK_DEPMETHOD.binutils= full
93: .include "../../devel/binutils/buildlink3.mk"
94: EXTRA_CONFARGS+= --with-gnu-as --with-as=${PREFIX}/bin/gas
95: MY_CONFIGURE_ENV+= AR=${PREFIX}/bin/gar
96: MY_CONFIGURE_ENV+= AS=${PREFIX}/bin/gas
97: MY_CONFIGURE_ENV+= NM=${PREFIX}/bin/gnm
98: MY_CONFIGURE_ENV+= RANLIB=${PREFIX}/bin/granlib
1.18 ! marino 99: . if defined(NATIVE_LINKER)
! 100: EXTRA_CONFARGS+= --without-gnu-ld --with-ld=${NATIVE_LINKER}
! 101: . else
! 102: EXTRA_CONFARGS+= --with-gnu-ld --with-ld=${PREFIX}/bin/gld
! 103: MY_CONFIGURE_ENV+= LD=${PREFIX}/bin/gld
! 104: . endif
1.16 marino 105: .else
106: EXTRA_CONFARGS+= --with-gnu-ld --with-ld=/usr/bin/ld
107: EXTRA_CONFARGS+= --with-gnu-as --with-as=/usr/bin/as
1.1 marino 108: .endif
109:
110:
111: # define some important directories and files
1.16 marino 112: WRKSRC= ${WRKDIR}/gcc-${GCC_VERSION}
1.1 marino 113: BUILDDIR= ${WRKDIR}/build
1.16 marino 114: NEWBSDIR= ${WRKDIR}/newbs/bootstrap
1.1 marino 115: CFG_SCRIPT= ${WRKSRC}/configure
1.16 marino 116: REVFILE= ${WRKSRC}/gcc/REVISION
1.1 marino 117: BOOTSTRAP_PREFIX= ${WRKDIR}/bootstrap
1.16 marino 118: PKG_PREFIX= ${PREFIX}/gcc-aux
119: BSFILENAME= ada-bootstrap.${GARCH}.${LOWER_OPSYS}.${OS_VERSION:C/[A-Z_.-]//g}.tar
1.1 marino 120:
121:
1.3 marino 122: # testing if gcc-aux is already installed - if so, use this compiler along with
123: # its gnatlink, gnatbind, and gnatmake rather than the older bootstrap versions
124: .if exists(${LOCALBASE}/gcc-aux/bin/ada)
125: FULL_GNATGCC=${LOCALBASE}/gcc-aux/bin/ada
1.18 ! marino 126: FULL_GNATGXX=${LOCALBASE}/gcc-aux/bin/g++
1.3 marino 127: .endif
1.1 marino 128:
129:
130: .if ${FULL_GNATGCC} == "NOT SET"
131: # here we know we need to install the bootstrap compiler
1.16 marino 132: . if defined(BOOTSTRAP_TRIPLET)
1.1 marino 133: FULL_GNATGCC=${BOOTSTRAP_PREFIX}/bin/gnatgcc
1.16 marino 134: . else
1.18 ! marino 135: FULL_GNATGCC=${BOOTSTRAP_PREFIX}/bin/gcc ${COMPILER_ABI_SWITCH}
! 136: FULL_GNATGXX=${BOOTSTRAP_PREFIX}/bin/g++ ${COMPILER_ABI_SWITCH}
1.16 marino 137: . endif
1.1 marino 138: DISTFILES+= ${BOOTSTRAP_COMPILER}
1.12 marino 139: SITES.${BOOTSTRAP_COMPILER}= http://downloads.dragonlace.net/src/
1.1 marino 140: FULL_PATH=${BOOTSTRAP_PREFIX}/bin:/sbin:/bin:/usr/sbin:/usr/bin:${PREFIX}/sbin:${PREFIX}/bin
141: .endif
142:
143:
1.16 marino 144: # for port maintenance, invoke "make mdi PLUS_BOOTSTRAPS=1"
145: .if defined(PLUS_BOOTSTRAPS)
146: MASTER_SITES= http://downloads.dragonlace.net/src/ \
147: ${MASTER_SITE_GNU:=gcc/gcc-${GCC_VERSION}/}
148: DISTFILES= \
149: ${DISTNAME}.tar.bz2 \
150: ada-bootstrap.i386.dragonfly.36A.tar.bz2 \
151: ada-bootstrap.i386.freebsd.84.tar.bz2 \
152: ada-bootstrap.i386.freebsd.100B.tar.bz2 \
153: ada-bootstrap.i386.netbsd.614.tar.bz2 \
154: ada-bootstrap.x86_64.dragonfly.36A.tar.bz2 \
155: ada-bootstrap.x86_64.freebsd.84.tar.bz2 \
156: ada-bootstrap.x86_64.freebsd.100B.tar.bz2 \
1.18 ! marino 157: ada-bootstrap.x86_64.netbsd.614.tar.bz2 \
! 158: ada-bootstrap.x86_64.openbsd.55.tar.bz2 \
! 159: ada-bootstrap.x86_64.solaris.511.tar.bz2
1.16 marino 160: .endif
1.1 marino 161:
162: # establish ada-aware compiler for use
1.18 ! marino 163: MY_CONFIGURE_ENV+= CC=${FULL_GNATGCC:Q}
! 164: MY_CONFIGURE_ENV+= CXX=${FULL_GNATGXX:Q}
1.1 marino 165: MY_CONFIGURE_ENV+= PATH=${FULL_PATH}
1.18 ! marino 166: MY_CONFIGURE_ENV+= LDFLAGS="${XLDF} ${COMPILER_RPATH_FLAG}${PREFIX}/lib"
1.16 marino 167: MY_MAKE_ENV+= PATH=${FULL_PATH}
1.12 marino 168: MY_MAKE_ENV+= LD_LIBRARY_PATH=${BUILDDIR}/gcc${EXTRA_LLP}
1.1 marino 169: # ${WRKSRC}/fixincludes/ looks for sed and compiles the path to sed into
170: # a binary so we need to make sure we give it the installed sed and not
171: # the tool wrapped one.
172: MY_MAKE_ENV+= ac_cv_path_SED=${TOOLS_SED}
173: MY_MAKE_ENV+= lt_cv_path_SED=${TOOLS_SED}
174:
175:
176: # The standard configuration options
177: CONFIGURE_ARGS= --enable-languages=${LANGS:Q}
178: CONFIGURE_ARGS+= --build=${BLD_TARGET}
179: CONFIGURE_ARGS+= --prefix=${PKG_PREFIX:Q}
1.16 marino 180: CONFIGURE_ARGS+= --enable-threads=posix
1.1 marino 181: CONFIGURE_ARGS+= --disable-libmudflap
182: CONFIGURE_ARGS+= --disable-libgomp
183: CONFIGURE_ARGS+= --disable-libssp
184: CONFIGURE_ARGS+= ${EXTRA_CONFARGS}
185:
186: # Automatic package list generation
187: GENERATE_PLIST= cd ${DESTDIR}${PREFIX};
188: GENERATE_PLIST+= ${FIND} * \( -type f -or -type l \) | ${SORT} -dr;
189:
190:
191: post-extract:
192: # Personalize GNAT for each different machine
193: @${ECHO} "-=> GCC AUX ${OS_LABEL4VERS}" > ${REVFILE}
194: # Create new directories in preparation of applying diff files
195: ${MKDIR} ${WRKSRC}/libstdc++-v3/config/locale/dragonfly
196: ${MKDIR} ${WRKSRC}/libstdc++-v3/config/os/bsd/dragonfly
197: # Apply required composite diff files
198: .for suffix in ${APPLY_DIFFS}
199: @${ECHO} "Applying composite patch diff-${suffix}"
1.16 marino 200: ${PATCH} -d ${WRKSRC} -s -E < ${FILESDIR}/diff-${suffix}
1.1 marino 201: .endfor
1.16 marino 202: (cd ${WRKSRC}/libstdc++-v3/testsuite && ${PERL5} -i \
203: -pe 's|\*-\*-freebsd\*|*-*-dragonfly* *-*-freebsd*|' ${CXXTS4DF})
204: (cd ${WRKSRC}/libstdc++-v3/testsuite/22_locale && ${PERL5} -i \
205: -pe 's|ISO-8859|ISO8859|g;' \
206: -pe 's|ja_JP.eucjp|ja_JP.eucJP|g;' \
207: -pe 's|en_HK|zh_HK|g;' \
208: -pe 's|en_PH|en_NZ|g;' \
209: -pe 's|se_NO|no_NO|g;' \
210: -pe 's|es_MX|es_ES|g;' \
211: -pe 's|ru_RU.UTF8|ru_RU.UTF-8|g' ${LOCALE22FIX})
212: .if !empty(PKG_OPTIONS:Mstatic) || !empty(PKG_OPTIONS:Mbootstrap)
1.18 ! marino 213: . if ${OPSYS} != SunOS
1.16 marino 214: # Ensure GNAT tools are built statically
215: ${PERL5} -pi -e 's/^GCC_LINK_FLAGS=.*/GCC_LINK_FLAGS=-static/' \
216: ${WRKSRC}/gcc/ada/gcc-interface/Makefile.in
1.18 ! marino 217: . endif
1.16 marino 218: .endif
1.18 ! marino 219: .if !exists(${LOCALBASE}/gcc-aux/bin/ada) && ${OPSYS} == SunOS
! 220: # In case /usr/pkg/bin/gas doesn't exist, establish fallback
! 221: ${LN} -s ${PREFIX}/bin/gas ${BOOTSTRAP_PREFIX}/bin/as
! 222: .endif
! 223: # Illumos /usr/ccs binaries are symlinked to /usr/bin
! 224: # elfdump was present on OmniOS but not in Joyent dev area
! 225: ${PERL5} -i -pe 's|/usr/ccs/bin|/usr/bin|g;' \
! 226: -pe 's|readelf -s|greadelf -s|' ${WRKSRC}/contrib/make_sunver.pl
1.3 marino 227: # Update LINK_SPEC to add gcc-aux lib runpath in every binary
228: @${ECHO} "Configuring LINK_SPEC runpath"
1.16 marino 229: ${PERL5} -pi -e 's;\@PREFIX\@;${PREFIX};' \
1.3 marino 230: ${WRKSRC}/gcc/config/dragonfly.h \
231: ${WRKSRC}/gcc/config/i386/freebsd.h \
232: ${WRKSRC}/gcc/config/i386/netbsd-elf.h
233:
1.16 marino 234: .if defined(BOOTSTRAP_TRIPLET)
1.1 marino 235: # Bootstrap compiler has statically linked z, gmp, mpc, mpfr and iconv
236: # The only shared lib is libc.so.7, so it should work for a long time.
1.16 marino 237: # No longer used, only here to support future SunOS bootstrap generation
1.1 marino 238:
239: ${MKDIR} ${BOOTSTRAP_PREFIX}
1.16 marino 240: ${MV} ${BOOTSTRAP_PREFIX}/../bin ${BOOTSTRAP_PREFIX}
241: ${MV} ${BOOTSTRAP_PREFIX}/../lib ${BOOTSTRAP_PREFIX}
242: ${MV} ${BOOTSTRAP_PREFIX}/../libexec ${BOOTSTRAP_PREFIX}
1.1 marino 243: ${RM} -rf ${BOOTSTRAP_PREFIX}/lib/gcc/${BOOTSTRAP_TRIPLET}/include-fixed
244: .endif
245:
246:
247: do-configure:
248: ${MKDIR} ${BUILDDIR}
249: cd ${BUILDDIR} && ${SETENV} ${MY_CONFIGURE_ENV} \
1.16 marino 250: ${CFG_SCRIPT} ${CONFIGURE_ARGS}
1.1 marino 251:
252:
253: do-build:
254: # The unlimited stacksize is for NetBSD64
255: cd ${BUILDDIR} && \
1.16 marino 256: ${ULIMIT_CMD_stacksize} && \
257: ${SETENV} ${MY_MAKE_ENV} ${GMAKE} -j${MAKE_JOBS:U1:Q} all
1.1 marino 258:
259:
1.16 marino 260: .if !empty(PKG_OPTIONS:Mtestsuite) && empty(PKG_OPTIONS:Mbootstrap)
1.1 marino 261: do-test: build test-ada test-fortran test-objc test-cxx test-c
262:
263: test-ada:
1.18 ! marino 264: .if (${OPSYS} == NetBSD) && (${MACHINE_ARCH} == x86_64)
1.1 marino 265: # NetBSD has an extremely small default stacksize of 2MB, which is
266: # insufficient for the gnat.dg testsuite.
267: # specifically: entry_queues test on AMD64
268: # Unlimiting stack resources on i386-netbsdelf* will result in
269: # failure of gnat.dg/task_stack_align.adb execution test.
270: cd ${BUILDDIR} && \
271: ${ULIMIT_CMD_stacksize} && \
272: ${SETENV} ${MY_MAKE_ENV} ${GMAKE} -sk check-ada
273: .else
274: cd ${BUILDDIR} && ${SETENV} ${MY_MAKE_ENV} ${GMAKE} -sk check-ada
275: .endif
276:
277: test-fortran:
1.16 marino 278: .if !empty(PKG_OPTIONS:Mfortran)
1.1 marino 279: cd ${BUILDDIR} && ${SETENV} ${MY_MAKE_ENV} ${GMAKE} -sk check-fortran
280: .endif
281:
282: test-objc:
1.16 marino 283: .if !empty(PKG_OPTIONS:Mobjc)
1.1 marino 284: cd ${BUILDDIR} && ${SETENV} ${MY_MAKE_ENV} ${GMAKE} -sk check-objc
285: .endif
286:
287: test-cxx:
288: # libstdc++ always ends with error status, so ignore it
289: cd ${BUILDDIR} && ${SETENV} ${MY_MAKE_ENV} ${GMAKE} -sk \
290: check-c++ || ${TRUE}
291:
292: test-c:
293: cd ${BUILDDIR} && ${SETENV} ${MY_MAKE_ENV} ${GMAKE} -sk check-c
294: .endif
295:
296: do-install:
1.12 marino 297: cd ${BUILDDIR} && ${SETENV} ${MY_MAKE_ENV} ${GMAKE} install-strip \
1.16 marino 298: DESTDIR=${DESTDIR}
299: ${MV} ${DESTDIR}${PKG_PREFIX}/share ${WRKDIR}/moved_share
1.18 ! marino 300:
1.16 marino 301: .if !empty(PKG_OPTIONS:Mbootstrap)
1.18 ! marino 302: create-bootstrap: stage-install
1.16 marino 303: ${MKDIR} ${NEWBSDIR}
1.18 ! marino 304: ${CP} -RpP ${DESTDIR}${PKG_PREFIX}/bin ${NEWBSDIR}/
! 305: ${CP} -RpP ${DESTDIR}${PKG_PREFIX}/lib ${NEWBSDIR}/
! 306: ${CP} -RpP ${DESTDIR}${PKG_PREFIX}/include ${NEWBSDIR}/
! 307: ${CP} -RpP ${DESTDIR}${PKG_PREFIX}/libexec ${NEWBSDIR}/
1.16 marino 308: ${RM} ${NEWBSDIR}/bin/${GARCH}*
309: ${RM} -rf ${NEWBSDIR}/lib/gcc/${BLD_TARGET}/${GCC_VERSION}/include-fixed
310: (cd ${NEWBSDIR}/.. ; \
311: ${TAR} -cf ${BSFILENAME} bootstrap; ${BZIP2} ${BSFILENAME})
312: .endif
1.1 marino 313:
314: .include "../../mk/bsd.pkg.mk"
CVSweb <webmaster@jp.NetBSD.org>