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