Changes in npl/system/gcc/gcc.SlackBuild [1a19ecd:c5c522c]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
npl/system/gcc/gcc.SlackBuild
r1a19ecd rc5c522c 1 #!/bin/bash 1 #!/bin/sh 2 #DEP:gmp 3 #DEP:mpc 4 #DEP:mpfr 5 6 # GCC package build script (written by volkerdi@slackware.com) 2 7 # 3 # Automaticly created by importpackage v1.0 4 # Imported from: http://mirrors.slackware.com/slackware/slackware-current/source/d/gcc/ 5 # Created at Tue Jan 31 00:22:45 CET 2017 6 7 #NEED:gawk 8 #NEED:binutils 9 10 #DEP:zlib 11 #DEP:gmp 12 #DEP:mpfr 13 #DEP:mpc 14 #DEP:gtk2 15 #DEP:glib2 16 #DEP:pango 17 #DEP:cairo 18 #DEP:pixman 19 #DEP:fontconfig 20 #DEP:freetype2 21 #DEP:expat 22 #DEP:libpng 23 #DEP:gdk_pixbuf 24 #DEP:xorg_lib 25 #DEP:pthread_stubs 26 #DEP:atk 27 #DEP:harfbuzz 28 #DEP:libart_lgpl 29 #DEP:libffi 30 31 #for testing 32 #NEED:tcl 33 34 ########### source original slackbuild (hopefully we dont need to modify it) 35 CWD=`pwd` 36 set -e 37 38 #export GCCCHECK=1 39 source ./gcc.SlackBuild.orig 40 8 # Copyright 2003, 2004 Slackware Linux, Inc., Concord, California, USA 9 # Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 Patrick J. Volkerding, Sebeka, MN, USA 10 # All rights reserved. 11 # 12 # Redistribution and use of this script, with or without modification, is 13 # permitted provided that the following conditions are met: 14 # 15 # 1. Redistributions of this script must retain the above copyright 16 # notice, this list of conditions and the following disclaimer. 17 # 18 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED 19 # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 20 # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO 21 # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 23 # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 24 # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 25 # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 26 # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 27 # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 # 29 30 # Modified 2011 by Eric Hameleers <alien at slackware.com> for OpenJDK. 31 32 # Some notes, Fri May 16 12:31:32 PDT 2003: 33 # 34 # Why i486 and not i386? Because the shared C++ libraries in gcc-3.2.x will 35 # require 486 opcodes even when a 386 target is used (so we already weren't 36 # compatible with the i386 for Slackware 9.0, didn't notice, and nobody 37 # complained :-). gcc-3.3 fixes this issue and allows you to build a 386 38 # compiler, but the fix is done in a way that produces binaries that are not 39 # compatible with gcc-3.2.x compiled binaries. To retain compatibility with 40 # Slackware 9.0, we'll have to use i486 (or better) as the compiler target 41 # for gcc-3.3. 42 # 43 # It's time to say goodbye to i386 support in Slackware. I've surveyed 386 44 # usage online, and the most common thing I see people say when someone asks 45 # about running Linux on a 386 is to "run Slackware", but then they also 46 # usually go on to say "be sure to get an OLD version, like 4.0, before glibc, 47 # because it'll be more efficient." Now, if that's the general advice, then 48 # I see no reason to continue 386 support in the latest Slackware (and indeed 49 # it's no longer easily possible). 50 51 PKGNAM=gcc 52 VERSION=${VERSION:-$(echo $PKGNAM-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} 53 BUILD=${BUILD:-1} 54 55 # How many jobs to run in parallel: 56 NUMJOBS=" -j 7 " 57 58 # Automatically determine the architecture we're building on: 59 if [ -z "$ARCH" ]; then 60 case "$(uname -m)" in 61 i?86) ARCH=i486 ;; 62 arm*) readelf /usr/bin/file -A | egrep -q "Tag_CPU.*[4,5]" && ARCH=arm || ARCH=armv7lh ;; 63 # Unless $ARCH is already set, use uname -m for all other archs: 64 *) ARCH=$(uname -m) ;; 65 esac 66 export ARCH 67 fi 68 69 if [ "$ARCH" = "i386" ]; then 70 SLKCFLAGS="-O2 -march=i386 -mcpu=i686" 71 LIBDIRSUFFIX="" 72 LIB_ARCH=i386 73 elif [ "$ARCH" = "i486" ]; then 74 SLKCFLAGS="-O2 -march=i486 -mtune=i686" 75 LIBDIRSUFFIX="" 76 LIB_ARCH=i386 77 elif [ "$ARCH" = "i586" ]; then 78 SLKCFLAGS="-O2 -march=i586 -mtune=i686" 79 LIBDIRSUFFIX="" 80 LIB_ARCH=i386 81 elif [ "$ARCH" = "i686" ]; then 82 SLKCFLAGS="-O2 -march=i686" 83 LIBDIRSUFFIX="" 84 LIB_ARCH=i386 85 elif [ "$ARCH" = "s390" ]; then 86 SLKCFLAGS="-O2" 87 LIBDIRSUFFIX="" 88 LIB_ARCH=s390 89 elif [ "$ARCH" = "x86_64" ]; then 90 SLKCFLAGS="-O2 -fPIC" 91 LIBDIRSUFFIX="64" 92 LIB_ARCH=amd64 93 elif [ "$ARCH" = "armv7hl" ]; then 94 SLKCFLAGS="-O3 -march=armv7-a -mfpu=vfpv3-d16" 95 LIBDIRSUFFIX="" 96 LIB_ARCH=armv7hl 97 else 98 SLKCFLAGS="-O2" 99 LIBDIRSUFFIX="" 100 LIB_ARCH=$ARCH 101 fi 102 103 case "$ARCH" in 104 arm*) TARGET=$ARCH-slackware-linux-gnueabi ;; 105 *) TARGET=$ARCH-slackware-linux ;; 106 esac 107 108 CWD=$(pwd) 109 # Temporary build location. This should *NOT* be a directory 110 # path a non-root user could create later... 111 TMP=${TMP:-"/gcc-$(mcookie)"} 112 113 # This is the main DESTDIR target: 114 PKG1=$TMP/package-gcc 115 # These are the directories to build other packages in: 116 PKG2=$TMP/package-gcc-g++ 117 PKG3=$TMP/package-gcc-gfortran 118 PKG4=$TMP/package-gcc-gnat 119 PKG5=$TMP/package-gcc-java 120 PKG6=$TMP/package-gcc-objc 121 PKG7=$TMP/package-gcc-g++-gch 122 PKG8=$TMP/package-gcc-go 123 124 # Clear the build locations: 125 if [ -d $TMP ]; then 126 rm -rf $TMP 127 fi 128 mkdir -p $PKG{1,2,3,4,5,6,7,8}/usr/doc/gcc-$VERSION 129 130 # Insert package descriptions: 131 mkdir -p $PKG{1,2,3,4,5,6,7,8}/install 132 cat $CWD/slack-desc.gcc > $PKG1/install/slack-desc 133 cat $CWD/slack-desc.gcc-g++ > $PKG2/install/slack-desc 134 cat $CWD/slack-desc.gcc-gfortran > $PKG3/install/slack-desc 135 cat $CWD/slack-desc.gcc-gnat > $PKG4/install/slack-desc 136 cat $CWD/slack-desc.gcc-java > $PKG5/install/slack-desc 137 cat $CWD/slack-desc.gcc-objc > $PKG6/install/slack-desc 138 # cat $CWD/slack-desc.gcc-g++-gch > $PKG7/install/slack-desc 139 cat $CWD/slack-desc.gcc-go > $PKG8/install/slack-desc 140 141 cd $TMP 142 tar xvf $CWD/gcc-$VERSION.tar.?z* 143 144 #( cd gcc-$VERSION 145 # If we had any patches, we would apply them here, but we're .diff free now. 146 #) || exit 1 147 148 # Copy ecj.jar into the TLD of the source. Needed for java compiler. 149 # This can be retrieved from ftp://sourceware.org/pub/java 150 cp $CWD/ecj-4.5.jar gcc-$VERSION/ecj.jar 151 152 # Use an antlr runtime to compile javadoc. 153 # The runtime can be obtained from: 154 #https://oss.sonatype.org/content/repositories/releases/org/antlr/antlr-runtime/ 155 ANTLJAR=$(echo $CWD/antlr-*.jar | tail -1) 156 157 # install docs 158 ( cd gcc-$VERSION 159 # Smite the fixincludes: 160 zcat $CWD/gcc-no_fixincludes.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1 161 # Fix perms/owners 162 chown -R root:root . 163 find . -perm 777 -exec chmod 755 {} \; 164 find . -perm 775 -exec chmod 755 {} \; 165 find . -perm 754 -exec chmod 755 {} \; 166 find . -perm 664 -exec chmod 644 {} \; 167 mkdir -p $PKG1/usr/doc/gcc-$VERSION 168 cp -a \ 169 COPYING* ChangeLog* FAQ INSTALL \ 170 LAST_UPDATED MAINTAINERS NEWS \ 171 README* *.html \ 172 $PKG1/usr/doc/gcc-$VERSION 173 174 # We will keep part of these, but they are really big... 175 if [ -r ChangeLog ]; then 176 DOCSDIR=$(echo $PKG1/usr/doc/gcc-$VERSION) 177 cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog 178 touch -r ChangeLog $DOCSDIR/ChangeLog 179 fi 180 if [ -r NEWS ]; then 181 DOCSDIR=$(echo $PKG1/usr/doc/gcc-$VERSION) 182 cat NEWS | head -n 1000 > $DOCSDIR/NEWS 183 touch -r NEWS $DOCSDIR/NEWS 184 fi 185 186 mkdir -p $PKG1/usr/doc/gcc-${VERSION}/gcc 187 ( cd gcc 188 cp -a \ 189 ABOUT* COPYING* DATESTAMP DEV-PHASE LANG* ONEWS README* SERVICE \ 190 $PKG1/usr/doc/gcc-$VERSION/gcc 191 192 mkdir -p $PKG3/usr/doc/gcc-${VERSION}/gcc/fortran 193 ( cd fortran 194 if [ -r ChangeLog ]; then 195 cat ChangeLog | head -n 1000 > $PKG3/usr/doc/gcc-$VERSION/gcc/fortran/ChangeLog 196 touch -r ChangeLog $PKG3/usr/doc/gcc-$VERSION/gcc/fortran/ChangeLog 197 fi 198 ) 199 200 mkdir -p $PKG4/usr/doc/gcc-${VERSION}/gcc/ada 201 ( cd ada 202 cp -a \ 203 ChangeLog.tree-ssa \ 204 $PKG4/usr/doc/gcc-$VERSION/gcc/ada 205 if [ -r ChangeLog ]; then 206 cat ChangeLog | head -n 1000 > $PKG4/usr/doc/gcc-$VERSION/gcc/ada/ChangeLog 207 touch -r ChangeLog $PKG4/usr/doc/gcc-$VERSION/gcc/ada/ChangeLog 208 fi 209 ) 210 211 mkdir -p $PKG5/usr/doc/gcc-${VERSION}/gcc/java 212 ( cd java 213 cp -a \ 214 ChangeLog.tree-ssa \ 215 $PKG5/usr/doc/gcc-${VERSION}/gcc/java 216 if [ -r ChangeLog ]; then 217 cat ChangeLog | head -n 1000 > $PKG5/usr/doc/gcc-${VERSION}/gcc/java/ChangeLog 218 touch -r ChangeLog $PKG5/usr/doc/gcc-${VERSION}/gcc/java/ChangeLog 219 fi 220 ) 221 222 mkdir -p $PKG6/usr/doc/gcc-${VERSION}/gcc/objc 223 ( cd objc 224 cp -a \ 225 README* \ 226 $PKG6/usr/doc/gcc-${VERSION}/gcc/objc 227 if [ -r ChangeLog ]; then 228 cat ChangeLog | head -n 1000 > $PKG6/usr/doc/gcc-${VERSION}/gcc/objc/ChangeLog 229 touch -r ChangeLog $PKG6/usr/doc/gcc-${VERSION}/gcc/objc/ChangeLog 230 fi 231 ) 232 233 mkdir -p $PKG8/usr/doc/gcc-${VERSION}/gcc/go 234 ( cd go 235 if [ -r ChangeLog ]; then 236 cat ChangeLog | head -n 1000 > $PKG8/usr/doc/gcc-${VERSION}/gcc/go/ChangeLog 237 touch -r ChangeLog $PKG8/usr/doc/gcc-${VERSION}/gcc/go/ChangeLog 238 fi 239 cp -a \ 240 README* THREADS* \ 241 gofrontend/{LICENSE,PATENTS,README} \ 242 $PKG8/usr/doc/gcc-${VERSION}/gcc/go 243 ) 244 245 ) || exit 1 246 247 mkdir -p $PKG3/usr/doc/gcc-${VERSION}/libgfortran 248 ( cd libgfortran 249 if [ -r ChangeLog ]; then 250 cat ChangeLog | head -n 1000 > $PKG3/usr/doc/gcc-${VERSION}/libgfortran/ChangeLog 251 touch -r ChangeLog $PKG3/usr/doc/gcc-${VERSION}/libgfortran/ChangeLog 252 fi 253 ) 254 255 mkdir -p $PKG4/usr/doc/gcc-${VERSION}/libada 256 ( cd libada 257 if [ -r ChangeLog ]; then 258 cat ChangeLog | head -n 1000 > $PKG4/usr/doc/gcc-${VERSION}/libada/ChangeLog 259 touch -r ChangeLog $PKG4/usr/doc/gcc-${VERSION}/libada/ChangeLog 260 fi 261 ) 262 263 mkdir -p $PKG5/usr/doc/gcc-${VERSION}/libffi 264 ( cd libffi 265 cp -a \ 266 ChangeLog.libgcj ChangeLog.v1 \ 267 LICENSE* README* \ 268 $PKG5/usr/doc/gcc-${VERSION}/libffi 269 if [ -r ChangeLog ]; then 270 cat ChangeLog | head -n 1000 > $PKG5/usr/doc/gcc-${VERSION}/libffi/ChangeLog 271 touch -r ChangeLog $PKG5/usr/doc/gcc-${VERSION}/libffi/ChangeLog 272 fi 273 ) 274 275 mkdir -p $PKG5/usr/doc/gcc-${VERSION}/libjava 276 ( cd libjava 277 cp -a \ 278 COPYING* HACKING LIBGCJ_LICENSE \ 279 NEWS README* THANKS \ 280 $PKG5/usr/doc/gcc-${VERSION}/libjava 281 if [ -r ChangeLog ]; then 282 cat ChangeLog | head -n 1000 > $PKG5/usr/doc/gcc-${VERSION}/libjava/ChangeLog 283 touch -r ChangeLog $PKG5/usr/doc/gcc-${VERSION}/libjava/ChangeLog 284 fi 285 ) 286 287 mkdir -p $PKG1/usr/doc/gcc-${VERSION}/libmudflap 288 ( cd libmudflap 289 if [ -r ChangeLog ]; then 290 cat ChangeLog | head -n 1000 > $PKG1/usr/doc/gcc-${VERSION}/libmudflap/ChangeLog 291 touch -r ChangeLog $PKG1/usr/doc/gcc-${VERSION}/libmudflap/ChangeLog 292 fi 293 ) 294 295 mkdir -p $PKG1/usr/doc/gcc-${VERSION}/libgomp 296 ( cd libgomp 297 if [ -r ChangeLog ]; then 298 cat ChangeLog | head -n 1000 > $PKG1/usr/doc/gcc-${VERSION}/libgomp/ChangeLog 299 touch -r ChangeLog $PKG1/usr/doc/gcc-${VERSION}/libgomp/ChangeLog 300 fi 301 ) 302 303 mkdir -p $PKG6/usr/doc/gcc-${VERSION}/libobjc 304 ( cd libobjc 305 if [ -r ChangeLog ]; then 306 cat ChangeLog | head -n 1000 > $PKG6/usr/doc/gcc-${VERSION}/libobjc/ChangeLog 307 touch -r ChangeLog $PKG6/usr/doc/gcc-${VERSION}/libobjc/ChangeLog 308 fi 309 cp -a \ 310 README* THREADS* \ 311 $PKG6/usr/doc/gcc-${VERSION}/libobjc 312 ) 313 314 mkdir -p $PKG2/usr/doc/gcc-${VERSION}/libstdc++-v3 315 ( cd libstdc++-v3 316 cp -a \ 317 README* \ 318 doc/html/faq.html \ 319 $PKG2/usr/doc/gcc-${VERSION}/libstdc++-v3 320 if [ -r ChangeLog ]; then 321 cat ChangeLog | head -n 1000 > $PKG2/usr/doc/gcc-${VERSION}/libstdc++-v3/ChangeLog 322 touch -r ChangeLog $PKG2/usr/doc/gcc-${VERSION}/libstdc++-v3/ChangeLog 323 fi 324 ) 325 326 ) 327 328 # Add fastjar to the gcc-java package: 329 ( cd $TMP 330 FASTJARVER=$(echo $CWD/fastjar-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev) 331 echo 332 echo "Building fastjar-$FASTJARVER first" 333 echo 334 rm -rf fastjar-$FASTJARVER 335 tar xvf $CWD/fastjar-$FASTJARVER.tar.xz || exit 1 336 cd fastjar-$FASTJARVER || exit 1 337 chown -R root:root . 338 find . \ 339 \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ 340 -exec chmod 755 {} \; -o \ 341 \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ 342 -exec chmod 644 {} \; 343 for patch in $CWD/fastjar-patches/*.gz ; do 344 zcat $patch | patch -p1 --verbose || exit 1 345 done 346 CFLAGS="$SLKCFLAGS" \ 347 CXXFLAGS="$SLKCFLAGS" \ 348 ./configure \ 349 --prefix=/usr \ 350 --libdir=/usr/lib$LIBDIRSUFFIX \ 351 --mandir=/usr/man \ 352 --infodir=/usr/info \ 353 --build=$TARGET 354 make $NUMJOBS || exit 1 355 make install DESTDIR=$PKG5 || exit 1 356 mkdir -p $PKG5/usr/doc/fastjar-$FASTJARVER 357 cp -a \ 358 AUTHORS CHANGES COPYING* INSTALL NEWS README* TODO \ 359 $PKG5/usr/doc/fastjar-$FASTJARVER 360 # If there's a ChangeLog, installing at least part of the recent history 361 # is useful, but don't let it get totally out of control: 362 if [ -r ChangeLog ]; then 363 DOCSDIR=$(echo $PKG5/usr/doc/fastjar-$FASTJARVER) 364 cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog 365 touch -r ChangeLog $DOCSDIR/ChangeLog 366 fi 367 find $PKG5 | xargs file | grep -e "executable" -e "shared object" | grep ELF \ 368 | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null 369 # Compress and if needed symlink the man pages: 370 if [ -d $PKG5/usr/man ]; then 371 ( cd $PKG5/usr/man 372 for manpagedir in $(find . -type d -name "man*") ; do 373 ( cd $manpagedir 374 for eachpage in $( find . -type l -maxdepth 1) ; do 375 ln -s $( readlink $eachpage ).gz $eachpage.gz 376 rm $eachpage 377 done 378 gzip -9 *.? 379 ) 380 done 381 ) 382 fi 383 # Compress info files, if any: 384 if [ -d $PKG5/usr/info ]; then 385 ( cd $PKG5/usr/info 386 rm -f dir 387 gzip -9 * 388 ) 389 fi 390 echo 391 ) || exit 1 392 393 # build gcc 394 ( mkdir gcc.build.lnx; 395 cd gcc.build.lnx; 396 397 # If enough people need "treelang" support for it may be considered. 398 # --enable-languages=ada,c,c++,fortran,java,objc,treelang 399 # I think it's incorrect to include this option (as it'll end up set 400 # to i486 on x86 platforms), and we want to tune the binary structure 401 # for i686, as that's where almost all of the optimization speedups 402 # are to be found. 403 # Correct me if my take on this is wrong. 404 # --with-cpu=$ARCH 405 406 if [ "$ARCH" != "x86_64" ]; then 407 GCC_ARCHOPTS="--with-arch=$ARCH" 408 else 409 GCC_ARCHOPTS="--disable-multilib" 410 fi 411 412 CFLAGS="$SLKCFLAGS" \ 413 CXXFLAGS="$SLKCFLAGS" \ 414 ../gcc-$VERSION/configure --prefix=/usr \ 415 --libdir=/usr/lib$LIBDIRSUFFIX \ 416 --mandir=/usr/man \ 417 --infodir=/usr/info \ 418 --enable-shared \ 419 --enable-bootstrap \ 420 --enable-languages=c,c++,fortran,go,java,lto,objc \ 421 --enable-threads=posix \ 422 --enable-checking=release \ 423 --enable-objc-gc \ 424 --with-system-zlib \ 425 --with-python-dir=/lib$LIBDIRSUFFIX/python2.7/site-packages \ 426 --disable-libunwind-exceptions \ 427 --enable-__cxa_atexit \ 428 --enable-libssp \ 429 --enable-lto \ 430 --with-gnu-ld \ 431 --verbose \ 432 --enable-java-home \ 433 --with-java-home=/usr/lib$LIBDIRSUFFIX/jvm/jre \ 434 --with-jvm-root-dir=/usr/lib$LIBDIRSUFFIX/jvm \ 435 --with-jvm-jar-dir=/usr/lib$LIBDIRSUFFIX/jvm/jvm-exports \ 436 --with-arch-directory=$LIB_ARCH \ 437 --with-antlr-jar=$ANTLJAR \ 438 --enable-java-awt=gtk \ 439 --disable-gtktest \ 440 $GCC_ARCHOPTS \ 441 --target=${TARGET} \ 442 --build=${TARGET} \ 443 --host=${TARGET} || exit 1 444 445 # Start the build: 446 447 # Include all debugging info (for now): 448 make $NUMJOBS bootstrap; 449 450 ( cd gcc 451 make $NUMJOBS gnatlib GNATLIBCFLAGS="$SLKCFLAGS" 452 # This wants a shared -ladd2line? 453 #make gnatlib-shared 454 455 CFLAGS="$SLKCFLAGS" \ 456 CXXFLAGS="$SLKCFLAGS" \ 457 make $NUMJOBS gnattools 458 ) 459 make info 460 461 # Set GCCCHECK=something to run the tests 462 if [ ! -z $GCCCHECK ]; then 463 make $NUMJOBS check 464 fi 465 466 make install DESTDIR=$PKG1 467 468 # KLUDGE ALERT 469 # These *gdb.py files are causing ldconfig to complain, so they are going 470 # to be REMOVED for now... at some point, they might be moved somewhere 471 # else, in which case things should Just Work(tm). Keep an eye on it. 472 rm -f $PKG1/usr/lib${LIBDIRSUFFIX}/*gdb.py 473 474 # Be sure the "specs" file is installed. 475 if [ ! -r $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/${TARGET}/${VERSION}/specs ]; then 476 cat stage1-gcc/specs > $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/${TARGET}/${VERSION}/specs 477 fi 478 479 # Make our 64bit gcc look for 32bit gcc binaries in ./32 subdirectory: 480 if [ "$ARCH" = "x86_64" ]; then 481 sed -i 's#;.\(:../lib !m64 m32;\)$#;32\1#' \ 482 $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/${TARGET}/${VERSION}/specs 483 fi 484 485 # make ada.install-common DESTDIR=$PKG1 486 # make install-gnatlib DESTDIR=$PKG1 487 make -i install-info DESTDIR=$PKG1 488 489 chmod 755 $PKG1/usr/lib${LIBDIRSUFFIX}/libgcc_s.so.1 490 491 # The (huge) static GNU java libraries are not packaged. In nearly all 492 # cases one or more dependencies will not be available as static anyway. 493 rm -f $PKG1/usr/lib${LIBDIRSUFFIX}/libgcj.a 494 rm -f $PKG1/usr/lib${LIBDIRSUFFIX}/libgcj-tools.a 495 496 # Fix stuff up: 497 ( cd $PKG1/usr/info ; rm dir ; gzip -9 * ) 498 ( cd $PKG1 499 # *not* ${LIBDIRSUFFIX} 500 mkdir -p lib 501 cd lib 502 ln -sf /usr/bin/cpp . 503 ) 504 505 ( cd $PKG1/usr/bin 506 mv g++ g++-gcc-$VERSION 507 mv gcc gcc-$VERSION 508 mv ${TARGET}-gfortran gfortran-gcc-$VERSION 509 ln -sf g++-gcc-$VERSION g++ 510 ln -sf gcc-$VERSION gcc 511 ln -sf g++ c++ 512 ln -sf gcc cc 513 ln -sf gcc-$VERSION ${TARGET}-gcc 514 ln -sf gcc-$VERSION ${TARGET}-gcc-$VERSION 515 ln -sf gcc-ar ${TARGET}-gcc-ar 516 ln -sf gcc-nm ${TARGET}-gcc-nm 517 ln -sf gcc-ranlib ${TARGET}-gcc-ranlib 518 ln -sf gcj ${TARGET}-gcj 519 ln -sf gcjh ${TARGET}-gcjh 520 ln -sf g++-gcc-$VERSION ${TARGET}-c++ 521 ln -sf g++-gcc-$VERSION ${TARGET}-g++ 522 ln -sf gfortran-gcc-$VERSION gfortran 523 ln -sf gfortran-gcc-$VERSION ${TARGET}-gfortran 524 ln -sf gfortran-gcc-$VERSION ${TARGET}-gfortran-$VERSION 525 ln -sf gfortran-gcc-$VERSION ${TARGET}-g95 526 ln -sf gfortran g95 527 ln -sf gfortran f95 528 ln -sf gfortran-gcc-$VERSION ${TARGET}-g77 529 ln -sf gfortran g77 530 ln -sf gfortran f77 531 ) 532 533 ( cd $PKG1/usr/man 534 gzip -9 */* 535 cd man1 536 ln -sf g++.1.gz c++.1.gz 537 ln -sf gcc.1.gz cc.1.gz 538 ) 539 540 ## build the txz package 541 #( 542 # cd $PKG1; 543 # makepkg -l y -c n $TMP/gcc-$VERSION-$ARCH-$BUILD.txz 544 #) 545 # keep a log 546 ) 2>&1 | tee $TMP/gcc.build.log 547 548 # OK, time to split the big package where needed: 549 550 # gcc-g++: 551 ( cd $PKG2 552 mkdir -p usr/bin 553 mv $PKG1/usr/bin/*++* usr/bin 554 mkdir -p usr/include 555 mv $PKG1/usr/include/c++ usr/include 556 mkdir -p usr/lib${LIBDIRSUFFIX} 557 mv $PKG1/usr/lib${LIBDIRSUFFIX}/*++* usr/lib${LIBDIRSUFFIX} 558 mkdir -p usr/libexec/gcc/$TARGET/$VERSION 559 mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/cc1plus usr/libexec/gcc/$TARGET/$VERSION/cc1plus 560 mkdir -p usr/man/man1 561 mv $PKG1/usr/man/man1/*++* usr/man/man1 562 ) 563 564 # gcc-gfortran: 565 ( cd $PKG3 566 mkdir -p usr/bin 567 mv $PKG1/usr/bin/*gfortran* usr/bin 568 mv $PKG1/usr/bin/*95* usr/bin 569 mv $PKG1/usr/bin/*77* usr/bin 570 # Doesn't this seem like a logical idea? 571 ( cd usr/bin ; ln -sf gfortran-gcc-${VERSION} fortran ) 572 mkdir -p usr/info 573 mv $PKG1/usr/info/gfortran* usr/info 574 mkdir -p usr/lib${LIBDIRSUFFIX} 575 mv $PKG1/usr/lib${LIBDIRSUFFIX}/libgfortran* usr/lib${LIBDIRSUFFIX} 576 mkdir -p usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION 577 mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/finclude usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION 578 mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/libgfortran* usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION 579 mkdir -p usr/libexec/gcc/$TARGET/$VERSION 580 mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/f951 usr/libexec/gcc/$TARGET/$VERSION/f951 581 mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/libgfortran* usr/libexec/gcc/$TARGET/$VERSION 582 mkdir -p usr/man/man1 583 mv $PKG1/usr/man/man1/gfortran* usr/man/man1 584 ) 585 586 # gcc-gnat: 587 # First, relocate usr/bin/gnative2ascii to the gcc-java package so it 588 # isn't matched and accidentally put in gcc-gnat: 589 mkdir -p $PKG5/usr/bin 590 mv $PKG1/usr/bin/gnative2ascii $PKG5/usr/bin 591 # Now make the gcc-gnat package tree: 592 ( cd $PKG4 593 mkdir -p usr/bin 594 mv $PKG1/usr/bin/gnat* usr/bin 595 mv $PKG1/usr/bin/gpr* usr/bin 596 mkdir -p usr/info 597 mv $PKG1/usr/info/gnat* usr/info 598 mkdir -p usr/libexec/gcc/$TARGET/$VERSION 599 mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/gnat1 usr/libexec/gcc/$TARGET/$VERSION 600 mkdir -p usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION 601 mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/adainclude usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION 602 mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/adalib usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION 603 ) 604 605 # gcc-java: 606 ( cd $PKG5 607 mkdir -p usr/bin 608 mv $PKG1/usr/bin/aot-compile usr/bin 609 mv $PKG1/usr/bin/addr2name.awk usr/bin 610 # mv $PKG1/usr/bin/fastjar usr/bin 611 mv $PKG1/usr/bin/gappletviewer usr/bin 612 mv $PKG1/usr/bin/gc-analyze usr/bin 613 mv $PKG1/usr/bin/*gcj* usr/bin 614 mv $PKG1/usr/bin/gij usr/bin 615 mv $PKG1/usr/bin/gjar usr/bin 616 mv $PKG1/usr/bin/gjarsigner usr/bin 617 mv $PKG1/usr/bin/gjdoc usr/bin 618 mv $PKG1/usr/bin/gkeytool usr/bin 619 mv $PKG1/usr/bin/grepjar usr/bin 620 mv $PKG1/usr/bin/grmid usr/bin 621 mv $PKG1/usr/bin/grmic usr/bin 622 mv $PKG1/usr/bin/grmiregistry usr/bin 623 mv $PKG1/usr/bin/gserialver usr/bin 624 mv $PKG1/usr/bin/gtnameserv usr/bin 625 mv $PKG1/usr/bin/gjavah usr/bin 626 mv $PKG1/usr/bin/gorbd usr/bin 627 mv $PKG1/usr/bin/jar usr/bin 628 mv $PKG1/usr/bin/jcf-dump usr/bin 629 mv $PKG1/usr/bin/jv-* usr/bin 630 mv $PKG1/usr/bin/rmi* usr/bin 631 mkdir -p usr/include/c++/$VERSION 632 # Move some Java only C++ headers from the C++ package: 633 mv $PKG2/usr/include/c++/$VERSION/{gcj,gnu,java,javax,org,sun} usr/include/c++/$VERSION 634 mv $PKG1/usr/include/ffi.h usr/include 635 mkdir -p usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include 636 mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/jawt.h usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include 637 mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/ffi.h usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include 638 mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/ffitarget.h usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include 639 mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/jawt_md.h usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include 640 mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/jni.h usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include 641 mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/jni_md.h usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include 642 mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/jvmpi.h usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include 643 mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/libffi usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include 644 # aot-compile Python plugins: 645 if [ ! -d $PKG1/usr/lib${LIBDIRSUFFIX}/python2.7 ]; then 646 echo "NO $PKG1/usr/lib${LIBDIRSUFFIX}/python2.7 !" 647 exit 1 648 fi 649 mv $PKG1/usr/lib${LIBDIRSUFFIX}/python2.7 usr/lib${LIBDIRSUFFIX} 650 mkdir -p usr/info 651 mv $PKG1/usr/info/gcj.* usr/info 652 # mv $PKG1/usr/info/fastjar.* usr/info 653 mkdir -p usr/lib${LIBDIRSUFFIX} 654 mv $PKG1/usr/lib${LIBDIRSUFFIX}/libffi* usr/lib${LIBDIRSUFFIX} 655 mv $PKG1/usr/lib${LIBDIRSUFFIX}/logging.properties usr/lib${LIBDIRSUFFIX} 656 mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcj* usr/lib${LIBDIRSUFFIX} 657 mv $PKG1/usr/lib${LIBDIRSUFFIX}/libgcj* usr/lib${LIBDIRSUFFIX} 658 mv $PKG1/usr/lib${LIBDIRSUFFIX}/libgij* usr/lib${LIBDIRSUFFIX} 659 mv $PKG1/usr/lib${LIBDIRSUFFIX}/lib-org* usr/lib${LIBDIRSUFFIX} 660 mv $PKG1/usr/lib${LIBDIRSUFFIX}/security usr/lib${LIBDIRSUFFIX} 661 mkdir -p usr/lib${LIBDIRSUFFIX}/pkgconfig 662 mv $PKG1/usr/lib${LIBDIRSUFFIX}/pkgconfig/libgcj*.pc usr/lib${LIBDIRSUFFIX}/pkgconfig 663 rmdir $PKG1/usr/lib${LIBDIRSUFFIX}/pkgconfig 2> /dev/null 664 mkdir -p usr/libexec/gcc/$TARGET/$VERSION 665 mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/jc1 usr/libexec/gcc/$TARGET/$VERSION 666 mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/ecj1 usr/libexec/gcc/$TARGET/$VERSION 667 mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/jvgenmain usr/libexec/gcc/$TARGET/$VERSION 668 mkdir -p usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include 669 mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/gcj usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include 670 mkdir -p usr/man/man1 671 mv $PKG1/usr/man/man1/aot-compile.1.gz usr/man/man1 672 mv $PKG1/usr/man/man1/gappletviewer.1.gz usr/man/man1 673 mv $PKG1/usr/man/man1/gc-analyze.1.gz usr/man/man1 674 mv $PKG1/usr/man/man1/gcj.1.gz usr/man/man1 675 mv $PKG1/usr/man/man1/gcjh.1.gz usr/man/man1 676 mv $PKG1/usr/man/man1/gcj-dbtool.1.gz usr/man/man1 677 mv $PKG1/usr/man/man1/gij.1.gz usr/man/man1 678 mv $PKG1/usr/man/man1/gjar.1.gz usr/man/man1 679 mv $PKG1/usr/man/man1/gjarsigner.1.gz usr/man/man1 680 mv $PKG1/usr/man/man1/gjavah.1.gz usr/man/man1 681 mv $PKG1/usr/man/man1/gjdoc.1.gz usr/man/man1 682 mv $PKG1/usr/man/man1/gjnih.1.gz usr/man/man1 683 mv $PKG1/usr/man/man1/gkeytool.1.gz usr/man/man1 684 mv $PKG1/usr/man/man1/gnative2ascii.1.gz usr/man/man1 685 mv $PKG1/usr/man/man1/gorbd.1.gz usr/man/man1 686 mv $PKG1/usr/man/man1/grmic.1.gz usr/man/man1 687 mv $PKG1/usr/man/man1/grmid.1.gz usr/man/man1 688 mv $PKG1/usr/man/man1/grmiregistry.1.gz usr/man/man1 689 mv $PKG1/usr/man/man1/gserialver.1.gz usr/man/man1 690 mv $PKG1/usr/man/man1/gtnameserv.1.gz usr/man/man1 691 mv $PKG1/usr/man/man1/jcf-dump.1.gz usr/man/man1 692 mv $PKG1/usr/man/man1/jv-convert.1.gz usr/man/man1 693 mv $PKG1/usr/man/man1/jv-scan.1.gz usr/man/man1 694 mv $PKG1/usr/man/man1/rebuild-gcj-db.1.gz usr/man/man1 695 mkdir -p usr/man/man3 696 mv $PKG1/usr/man/man3/ffi* usr/man/man3 697 mkdir -p usr/share 698 mv $PKG1/usr/share/java usr/share 699 # The ecj wrapper script: 700 cat $CWD/ecj.sh | sed -e "s,@JAVADIR@,/usr/share/java," > usr/bin/ecj 701 chmod 755 usr/bin/ecj 702 # The JAVA_HOME compatibility links. 703 # Caution: non-multilib arch-independent stuff! No lib64 here. 704 mkdir -p usr/lib$LIBDIRSUFFIX 705 mv $PKG1/usr/lib$LIBDIRSUFFIX/jvm* usr/lib$LIBDIRSUFFIX 706 # And add the missing javac symlink: 707 ln -s ../../../bin/ecj usr/lib$LIBDIRSUFFIX/jvm/bin/javac 708 # Don't package libffi stuff anymore. GCC will link the internal version 709 # statically, and we'll need a newer one elsewhere. 710 find . -name "ffi*.h" | xargs rm 711 find . -name "libffi*" | xargs rm 712 rm -f usr/man/man3/ffi* 713 rm -f usr/info/libffi* 714 ) 715 716 # gcc-objc: 717 ( cd $PKG6 718 mkdir -p usr/lib${LIBDIRSUFFIX} 719 mv $PKG1/usr/lib${LIBDIRSUFFIX}/libobjc* usr/lib${LIBDIRSUFFIX} 720 mkdir -p usr/libexec/gcc/$TARGET/$VERSION 721 mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/cc1obj usr/libexec/gcc/$TARGET/$VERSION 722 mkdir -p usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include 723 mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/objc usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include 724 ) 725 726 ## NOTE: Thought about this, because the precompiled headers are so large. 727 ## Probably easier to keep everything together, though. 728 ## gcc-g++-gch (precompiled c++ headers) 729 #( cd $PKG7 730 # mkdir -p usr/include/c++/$VERSION/$TARGET/bits 731 # mv $PKG2/usr/include/c++/$VERSION/$TARGET/bits/stdc++.h.gch usr/include/c++/$VERSION/$TARGET/bits 732 #) 733 734 # gcc-go: 735 ( cd $PKG8 736 mkdir -p usr/bin 737 mv $PKG1/usr/bin/*gccgo* usr/bin 738 mkdir -p usr/libexec/gcc/$TARGET/$VERSION 739 mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/go1 usr/libexec/gcc/$TARGET/$VERSION/go1 740 mkdir -p usr/info 741 mv $PKG1/usr/info/gccgo.info.gz usr/info 742 mkdir -p usr/lib${LIBDIRSUFFIX} 743 mv $PKG1/usr/lib${LIBDIRSUFFIX}/go usr/lib${LIBDIRSUFFIX} 744 mv $PKG1/usr/lib${LIBDIRSUFFIX}/{libgo.la,libgo.so*,libgobegin.a} usr/lib${LIBDIRSUFFIX} || exit 1 745 # Ordinarily Slackware doesn't package static libraries, but in this case 746 # it is useful for deploying compiled binaries on machines that do not yet 747 # have libgo.so.0.0.0. 748 mv $PKG1/usr/lib${LIBDIRSUFFIX}/libgo.a usr/lib${LIBDIRSUFFIX} 749 mkdir -p usr/man/man1 750 mv $PKG1/usr/man/man1/gccgo.1.gz usr/man/man1 751 ) || exit 1 752 753 # Filter all .la files (thanks much to Mark Post for the sed script): 754 ( cd $TMP 755 for file in $(find . -type f -name "*.la") ; do 756 cat $file | sed -e 's%-L/gcc-[[:graph:]]* % %g' > $TMP/tmp-la-file 757 cat $TMP/tmp-la-file > $file 758 done 759 rm $TMP/tmp-la-file 760 ) 761 762 ## Strip bloated binaries and libraries: 763 for dir in $PKG{1,2,3,4,5,6,8}; do 764 ( cd $dir 765 find . -name "lib*so*" -exec strip --strip-unneeded "{}" \; 766 find . -name "lib*a" -exec strip -g "{}" \; 767 strip --strip-unneeded usr/bin/* 2> /dev/null 768 find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null 769 find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null 770 ) 771 done 772 773 ( cd $PKG1 774 makepkg -l y -c n $TMP/gcc-$VERSION-$ARCH-$BUILD.txz ) 775 ( cd $PKG2 776 makepkg -l y -c n $TMP/gcc-g++-$VERSION-$ARCH-$BUILD.txz ) 777 ( cd $PKG3 778 makepkg -l y -c n $TMP/gcc-gfortran-$VERSION-$ARCH-$BUILD.txz ) 779 ( cd $PKG4 780 makepkg -l y -c n $TMP/gcc-gnat-$VERSION-$ARCH-$BUILD.txz ) 781 ( cd $PKG5 782 makepkg -l y -c n $TMP/gcc-java-$VERSION-$ARCH-$BUILD.txz ) 783 ( cd $PKG6 784 makepkg -l y -c n $TMP/gcc-objc-$VERSION-$ARCH-$BUILD.txz ) 785 #( cd $PKG7 786 # makepkg -l y -c n $TMP/gcc-g++-gch-$VERSION-$ARCH-$BUILD.txz ) 787 ( cd $PKG8 788 makepkg -l y -c n $TMP/gcc-go-$VERSION-$ARCH-$BUILD.txz ) 789 790 echo 791 echo "Slackware GCC package build complete!" 792 echo 793 794 795 ############ syn3 patches 796 797 #backwards compatibility 798 #NO: not allowed, just recompile the stuff.. 799 #P=`echo /gcc-*""/package-gcc-g++/usr/lib/` 800 #ln -s libstdc++.so $P/libstdc++.so.5 || exit 1 41 801 42 802 ############ make syn3 packages
Note: See TracChangeset
for help on using the changeset viewer.