summaryrefslogtreecommitdiff
path: root/repo/system/binutils.xibuild
blob: d57d5389196c97837116c0cd172e541a79a8832e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#!/bin/sh

MAKEDEPS="make dejagnu bzip2 xz zlib zstd patch"
DEPS="musl zlib libelf"

PKG_VER=2.37
SOURCE=https://ftp.gnu.org/gnu/binutils/binutils-$PKG_VER.tar.xz

PATCH_SOURCE="https://raw.githubusercontent.com/dslm4515/Musl-LFS/master/patches/binutils-alpine"
ADDITIONAL="
    $PATCH_SOURCE/0001-Revert-PR25882-.gnu.attributes-are-not-checked-for-s.patch
    $PATCH_SOURCE/bfd-close-file-desriptor-if-there-is-no-archive-fd.patch
    $PATCH_SOURCE/binutils-ld-fix-static-linking.patch
    $PATCH_SOURCE/defang-no-split.patch
    "

DESC="Tools for handling object files"

prepare () {
    for p in *.patch; do
        patch -Np1 -i $p || true
    done

    find . -name '[a-z]*\.[0-9]*' -empty -exec rm -f {} \; 
}

build () {
    mkdir    build
    cd       build
    case $(uname -m) in
      x86_64)  export EXTRA_CONFIG=" --enable-targets=x86_64-pep " 
               ;;
      i686)    export EXTRA_CONFIG=" --disable-separate-code --enable-targets=x86_64-linux-gnu,x86_64-pep"
               ;;
    esac

    ../configure --prefix=/usr       \
             --enable-gold       \
             --enable-ld=default \
             --enable-plugins    \
             --enable-shared     \
             --disable-werror    \
             --with-system-zlib  \
             --enable-relro \
             --enable-lto \
             --disable-nls \
             --enable-deterministic-archives \
             --enable-default-hash-style=gnu \
             --enable-threads \
             --disable-multilib \
             --with-mmap \
             --with-pic  \
             --enable-64-bit-bfd \
             --with-pic $EXTRA_CONFIG

    make tooldir=/usr
}

#check () {
    #make -k check || true
#}

package() {
    make -j1 tooldir=/usr DESTDIR=$PKG_DEST install
    cd .. 

    # how about we use binutils ld?
    #rm -f   $PKG_DEST/usr/bin/ld
    #ln -sf /usr/bin/ld.bfd $PKG_DEST/usr/bin/ld

    install -m 644 include/libiberty.h $PKG_DEST/usr/include
    install -m 644 include/demangle.h  $PKG_DEST/usr/include

    for f in dlltool nlmconv windres windmc; do
        rm -f $PKG_DEST/usr/share/man/man1/${f}.1
    done
}