1#!/bin/sh 2# $NetBSD: mknative-binutils,v 1.13 2020/04/04 01:34:53 christos Exp $ 3# 4# Shell script for generating all the constants needed for a native 5# platform build of src/external/gpl3/binutils 6# 7 8# initialise 9 10_TMPDIR=$2 11_TOP=$3 12_PLATFORM=$4 13_VPATH=`grep VPATH ${_TMPDIR}/Makefile | sed 's,^.*=[ ]*,,'` 14 15. $_TOP/tools/gcc/mknative.common 16 17##### external/gpl3/binutils/lib/libbfd ##### 18 19get_libbfd () { 20 mkdir -p $_TOP/external/gpl3/binutils/lib/libbfd/arch/$MACHINE_ARCH 21 22 { 23 getvars bfd/Makefile \ 24 libbfd_la_DEPENDENCIES libbfd_la_OBJECTS DEFS \ 25 INCLUDES TDEFAULTS HAVEVECS 26 } | write_mk external/gpl3/binutils/lib/libbfd/arch/$MACHINE_ARCH/defs.mk 27 28 write_c external/gpl3/binutils/lib/libbfd/arch/$MACHINE_ARCH/bfd.h <$_TMPDIR/bfd/bfd.h 29 write_c external/gpl3/binutils/lib/libbfd/arch/$MACHINE_ARCH/bfdver.h <$_TMPDIR/bfd/bfdver.h 30 write_c external/gpl3/binutils/lib/libbfd/arch/$MACHINE_ARCH/bfd_stdint.h <$_TMPDIR/bfd/bfd_stdint.h 31 32 { 33 cat $_TMPDIR/bfd/config.h 34 } | write_c external/gpl3/binutils/lib/libbfd/arch/$MACHINE_ARCH/config.h 35} 36 37##### external/gpl3/binutils/lib/libopcodes ##### 38 39get_libopcodes () { 40 mkdir -p $_TOP/external/gpl3/binutils/lib/libopcodes/arch/$MACHINE_ARCH 41 42 { 43 getvars opcodes/Makefile \ 44 archdefs BFD_MACHINES libopcodes_la_SOURCES 45 } | write_mk external/gpl3/binutils/lib/libopcodes/arch/$MACHINE_ARCH/defs.mk 46 47 { 48 cat $_TMPDIR/opcodes/config.h 49 } | write_c external/gpl3/binutils/lib/libopcodes/arch/$MACHINE_ARCH/config.h 50} 51 52get_libgnuctf () { 53 mkdir -p $_TOP/external/gpl3/binutils/lib/libgnuctf/arch/$MACHINE_ARCH 54 55 { 56 getvars libctf/Makefile libctf_la_SOURCES 57 } | write_mk external/gpl3/binutils/lib/libgnuctf/arch/$MACHINE_ARCH/defs.mk 58 59 { 60 cat $_TMPDIR/libctf/config.h 61 } | write_c external/gpl3/binutils/lib/libgnuctf/arch/$MACHINE_ARCH/config.h 62} 63 64##### external/gpl3/binutils/lib/libiberty ##### 65 66get_libiberty () { 67 mkdir -p $_TOP/external/gpl3/binutils/lib/libiberty/arch/$MACHINE_ARCH 68 69 getvars libiberty/Makefile \ 70 ALLOCA EXTRA_OFILES LIBOBJS REQUIRED_OFILES \ 71 | write_mk external/gpl3/binutils/lib/libiberty/arch/$MACHINE_ARCH/defs.mk 72 73 write_c external/gpl3/binutils/lib/libiberty/arch/$MACHINE_ARCH/config.h \ 74 <$_TMPDIR/libiberty/config.h 75} 76 77##### external/gpl3/binutils/usr.bin ##### 78 79get_binutils () { 80 ### common 81 82 mkdir -p $_TOP/external/gpl3/binutils/usr.bin/common/arch/$MACHINE_ARCH 83 84 { 85 getvars binutils/Makefile \ 86 VERSION DEFS INCLUDES PROGRAMS 87 getvars binutils/doc/Makefile \ 88 man_MANS TEXINFOS 89 getvars bfd/doc/Makefile \ 90 PKGVERSION | sed 's,\\\(.\),\1,' 91 getvars bfd/doc/Makefile \ 92 REPORT_BUGS_TEXI 93 94 for f in `getvars binutils/Makefile PROGRAMS | sed 'y,-,_,;s,^[^=]*=,,'`; do 95 getvars binutils/Makefile ${f}_OBJECTS ${f}_DEPENDENCIES 96 done 97 } | write_mk external/gpl3/binutils/usr.bin/common/arch/$MACHINE_ARCH/defs.mk 98 99 write_c external/gpl3/binutils/usr.bin/common/arch/$MACHINE_ARCH/config.h \ 100 <$_TMPDIR/binutils/config.h 101 102 ### gas 103 104 mkdir -p $_TOP/external/gpl3/binutils/usr.bin/gas/arch/$MACHINE_ARCH 105 106 grep -v DEPDIR "$_TMPDIR/gas/Makefile" > "$_TMPDIR/gas/Makefile.nodeps" 107 getvars gas/Makefile.nodeps \ 108 DEFS INCLUDES as_new_OBJECTS as_new_LDADD | 109 sed -e s/G_as_new_OBJECTS/G_OBJS/ \ 110 -e s/G_as_new_LDADD=/G_OBJS+=/ \ 111 -e s@config/@@g \ 112 -e 's/\.\..*a//' | 113 write_mk external/gpl3/binutils/usr.bin/gas/arch/$MACHINE_ARCH/defs.mk 114 115 for f in config itbl-cpu obj-format targ-cpu targ-env; do 116 write_c external/gpl3/binutils/usr.bin/gas/arch/$MACHINE_ARCH/$f.h <$_TMPDIR/gas/$f.h 117 done 118 119 ### gprof 120 121 mkdir -p $_TOP/external/gpl3/binutils/usr.bin/gprof/arch/$MACHINE_ARCH 122 123 getvars gprof/Makefile \ 124 DEFS gprof_OBJECTS INCLUDES TEXINFOS \ 125 | write_mk external/gpl3/binutils/usr.bin/gprof/arch/$MACHINE_ARCH/defs.mk 126 127 write_c external/gpl3/binutils/usr.bin/gprof/arch/$MACHINE_ARCH/gconfig.h <$_TMPDIR/gprof/gconfig.h 128 129 ### ld 130 131 mkdir -p $_TOP/external/gpl3/binutils/usr.bin/ld/arch/$MACHINE_ARCH 132 133 { 134 getvars ld/Makefile \ 135 DEFS EMUL EMULATION_OFILES INCLUDES OFILES STRINGIFY TEXINFOS 136 getvars ld/Makefile \ 137 target_alias | sed 's,[\._0-9A-Z]*$,,' 138 getvars ld/Makefile \ 139 enable_initfini_array 140 } | write_mk external/gpl3/binutils/usr.bin/ld/arch/$MACHINE_ARCH/defs.mk 141 142 for f in config ldemul-list; do 143 write_c external/gpl3/binutils/usr.bin/ld/arch/$MACHINE_ARCH/$f.h <$_TMPDIR/ld/$f.h 144 done 145} 146 147##### main ##### 148 149case $1 in 150all|binutils) # everything (uses "canadian cross" temp environment) 151 get_binutils 152 get_libbfd 153 get_libgnuctf 154 get_libopcodes 155 get_libiberty 156 exit 0 157 ;; 158 159*) echo invalid arguments; exit 1;; 160esac 161