Home | History | Annotate | Line # | Download | only in binutils
mknative-binutils revision 1.12
      1 #!/bin/sh
      2 #	$NetBSD: mknative-binutils,v 1.12 2020/04/04 00:47:52 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 
     19 get_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 
     39 get_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 
     52 get_libctf () {
     53 	mkdir -p $_TOP/external/gpl3/binutils/lib/libctf/arch/$MACHINE_ARCH
     54 
     55 	{
     56 		getvars libctf/Makefile libctf_la_SOURCES
     57 	} | write_mk external/gpl3/binutils/lib/libctf/arch/$MACHINE_ARCH/defs.mk
     58 
     59 	{
     60 		cat $_TMPDIR/libctf/config.h
     61 	} | write_c external/gpl3/binutils/lib/libctf/arch/$MACHINE_ARCH/config.h
     62 }
     63 
     64 ##### external/gpl3/binutils/lib/libiberty #####
     65 
     66 get_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 
     79 get_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 
    149 case $1 in
    150 all|binutils)	# everything (uses "canadian cross" temp environment)
    151 	get_binutils
    152 	get_libbfd
    153 	get_libctf
    154 	get_libopcodes
    155 	get_libiberty
    156 	exit 0
    157 	;;
    158 
    159 *)	echo invalid arguments; exit 1;;
    160 esac
    161