1 1.1 mrg #!/bin/sh 2 1.126 mrg # $NetBSD: mknative-gcc,v 1.126 2026/02/09 06:12:38 mrg Exp $ 3 1.1 mrg # 4 1.1 mrg # Shell script for generating all the constants needed for a native 5 1.68 skrll # platform build of gcc. 6 1.1 mrg # 7 1.119 mrg # This version is for GCC 14.3 8 1.1 mrg 9 1.9 mrg # initialise 10 1.9 mrg 11 1.9 mrg _TMPDIR=$2 12 1.9 mrg _TOP=$3 13 1.71 mrg _SRC=$4 14 1.71 mrg _PLATFORM=$5 15 1.109 mrg _MACHINE_ARCH=$6 16 1.109 mrg _DESTDIR=$7 17 1.109 mrg _TOOLDIR=$8 18 1.15 mrg _VPATH=`grep VPATH ${_TMPDIR}/Makefile | sed 's,^.*=[ ]*,,'` 19 1.9 mrg _GNU_DIST=`cd ${_VPATH}; pwd` 20 1.9 mrg 21 1.61 mrg if [ -z "$_DESTDIR" ]; then 22 1.61 mrg echo "\$_DESTDIR is empty" 2>&1 23 1.61 mrg exit 1 24 1.61 mrg fi 25 1.61 mrg 26 1.9 mrg . $_TOP/tools/gcc/mknative.common 27 1.1 mrg 28 1.105 mrg case $0 in 29 1.105 mrg *mknative-gcc.old) 30 1.105 mrg _OUTDIRBASE="external/gpl3/gcc.old" 31 1.105 mrg ;; 32 1.105 mrg *) 33 1.105 mrg _OUTDIRBASE="external/gpl3/gcc" 34 1.105 mrg ;; 35 1.105 mrg esac 36 1.105 mrg _OUTDIR="$_TOP/$_OUTDIRBASE" 37 1.46 mrg 38 1.70 skrll sanitise_includes () { 39 1.70 skrll sed \ 40 1.70 skrll -e "s,-I$_DESTDIR/usr/include,,g" \ 41 1.75 skrll -e "s,-I$_SRC/external/lgpl3/mpfr/dist/src,,g" \ 42 1.74 mrg -e "s,-I$_SRC/external/lgpl3/mpc/dist/src,,g" \ 43 1.76 mrg -e "s,-I$_SRC/external/lgpl3/gmp/lib/libgmp/arch/[a-z_0-9-]*,,g" \ 44 1.76 mrg -e "s,-I$_TOOLDIR/include,,g" \ 45 1.71 mrg -e "s,-I/usr/include/[^ ]*,," 46 1.70 skrll } 47 1.70 skrll 48 1.76 mrg ##### lib/libgcc ##### 49 1.26 uebayasi 50 1.1 mrg get_libgcc () { 51 1.16 mrg _subdir="$1" 52 1.46 mrg mkdir -p $_OUTDIR/lib/lib$_subdir/arch 53 1.16 mrg 54 1.1 mrg # DPBIT, FPBIT only used on mn10[23]00, we don't need them. 55 1.4 mrg # XXX we should probably grab everything Just In Case for 56 1.4 mrg # the future. 57 1.76 mrg 58 1.109 mrg mkdir -p $_OUTDIR/lib/lib$_subdir/arch/$_MACHINE_ARCH 59 1.76 mrg cd $_TMPDIR/$_PLATFORM/libgcc 60 1.16 mrg { 61 1.76 mrg getvars $_PLATFORM/libgcc/Makefile \ 62 1.94 mrg INCLUDES \ 63 1.94 mrg INTERNAL_CFLAGS \ 64 1.94 mrg LIB2ADD LIB2ADDEH LIB2ADD_ST \ 65 1.16 mrg LIB1ASMFUNCS LIB1ASMSRC \ 66 1.16 mrg LIB2_DIVMOD_FUNCS LIB2FUNCS_ST \ 67 1.42 uebayasi LIB2FUNCS_EXTRA \ 68 1.16 mrg LIBGCC2_CFLAGS \ 69 1.16 mrg SHLIB_MKMAP SHLIB_MKMAP_OPTS \ 70 1.76 mrg SHLIB_MAPFILES SHLIB_NM_FLAGS 71 1.76 mrg getvars gcc/Makefile \ 72 1.76 mrg NOEXCEPTION_FLAGS EXTRA_HEADERS 73 1.96 mrg } | sanitise_includes \ 74 1.109 mrg | write_mk $_OUTDIRBASE/lib/lib$_subdir/arch/$_MACHINE_ARCH/defs.mk 75 1.96 mrg 76 1.96 mrg cd $_TMPDIR/$_PLATFORM/libgcc 77 1.96 mrg { 78 1.96 mrg getvars $_PLATFORM/libgcc/Makefile \ 79 1.95 mrg enable_execute_stack \ 80 1.95 mrg unwind_header md_unwind_header \ 81 1.95 mrg sfp_machine_header thread_header 82 1.70 skrll } | sanitise_includes \ 83 1.109 mrg | write_mk $_OUTDIRBASE/lib/lib$_subdir/arch/$_MACHINE_ARCH/gthr-defs.mk 84 1.26 uebayasi 85 1.109 mrg if [ "${_MACHINE_ARCH}" = "m68000" ] 86 1.81 mrg then 87 1.109 mrg ex <<__EOF__ $_OUTDIR/lib/lib$_subdir/arch/$_MACHINE_ARCH/defs.mk 88 1.81 mrg /G_LIBGCC2_CFLAGS/ s/-fPIC// 89 1.81 mrg wq 90 1.81 mrg __EOF__ 91 1.81 mrg fi 92 1.81 mrg 93 1.76 mrg for f in auto-target.h; do 94 1.109 mrg write_c $_OUTDIRBASE/lib/lib$_subdir/arch/$_MACHINE_ARCH/$f \ 95 1.76 mrg <$_TMPDIR/$_PLATFORM/libgcc/$f 96 1.76 mrg done 97 1.1 mrg } 98 1.1 mrg 99 1.76 mrg ##### lib/libgcov ##### 100 1.24 skrll 101 1.24 skrll get_libgcov () { 102 1.24 skrll _subdir="$1" 103 1.76 mrg _mf="$2" 104 1.24 skrll 105 1.109 mrg mkdir -p $_OUTDIR/lib/lib$_subdir/libgcov/arch/$_MACHINE_ARCH 106 1.24 skrll 107 1.24 skrll { 108 1.76 mrg getvars $_mf \ 109 1.84 mrg LIBGCOV_MERGE \ 110 1.84 mrg LIBGCOV_PROFILER \ 111 1.84 mrg LIBGCOV_INTERFACE \ 112 1.84 mrg LIBGCOV_DRIVER 113 1.109 mrg } | write_mk $_OUTDIRBASE/lib/lib$_subdir/libgcov/arch/$_MACHINE_ARCH/defs.mk 114 1.24 skrll 115 1.24 skrll } 116 1.24 skrll 117 1.76 mrg ##### lib/libiberty ##### 118 1.1 mrg 119 1.16 mrg get_gcc_libiberty () { 120 1.16 mrg _subdir="$1" 121 1.76 mrg _libibertydir="lib/libiberty" 122 1.109 mrg mkdir -p $_OUTDIR/$_libibertydir/arch/$_MACHINE_ARCH 123 1.1 mrg 124 1.1 mrg getvars libiberty/Makefile \ 125 1.1 mrg ALLOCA EXTRA_OFILES LIBOBJS REQUIRED_OFILES \ 126 1.46 mrg | write_mk $_OUTDIRBASE/$_libibertydir/defs.mk 127 1.1 mrg 128 1.109 mrg write_c $_OUTDIRBASE/$_libibertydir/arch/$_MACHINE_ARCH/config.h \ 129 1.1 mrg <$_TMPDIR/libiberty/config.h 130 1.1 mrg } 131 1.1 mrg 132 1.51 mrg ##### lib/libdecnumber ##### 133 1.51 mrg 134 1.51 mrg get_libdecnumber () { 135 1.51 mrg _subdir="$1" 136 1.51 mrg 137 1.109 mrg mkdir -p $_OUTDIR/usr.bin/$_subdir/arch/$_MACHINE_ARCH 138 1.109 mrg write_c $_OUTDIRBASE/usr.bin/$_subdir/arch/$_MACHINE_ARCH/config.h \ 139 1.51 mrg <$_TMPDIR/libdecnumber/config.h 140 1.51 mrg } 141 1.51 mrg 142 1.63 mrg ##### lib/libgomp ##### 143 1.63 mrg 144 1.63 mrg get_libgomp () { 145 1.63 mrg _subdir="$1" 146 1.63 mrg 147 1.109 mrg mkdir -p $_OUTDIR/lib/$_subdir/arch/$_MACHINE_ARCH 148 1.98 mrg 149 1.98 mrg getvars $_PLATFORM/libgomp/Makefile \ 150 1.98 mrg libgomp_la_SOURCES \ 151 1.123 mrg nodist_libsubinclude_HEADERS \ 152 1.123 mrg nodist_finclude_HEADERS \ 153 1.98 mrg | write_mk $_OUTDIRBASE/lib/$_subdir/defs.mk 154 1.98 mrg 155 1.109 mrg write_c $_OUTDIRBASE/lib/$_subdir/arch/$_MACHINE_ARCH/config.h \ 156 1.63 mrg <$_TMPDIR/$_PLATFORM/libgomp/config.h 157 1.109 mrg write_c $_OUTDIRBASE/lib/$_subdir/arch/$_MACHINE_ARCH/libgomp_f.h \ 158 1.63 mrg <$_TMPDIR/$_PLATFORM/libgomp/libgomp_f.h 159 1.109 mrg write_mk $_OUTDIRBASE/lib/$_subdir/arch/$_MACHINE_ARCH/libgomp.spec \ 160 1.63 mrg <$_TMPDIR/$_PLATFORM/libgomp/libgomp.spec 161 1.109 mrg write_c $_OUTDIRBASE/lib/$_subdir/arch/$_MACHINE_ARCH/omp.h \ 162 1.64 mrg <$_TMPDIR/$_PLATFORM/libgomp/omp.h 163 1.63 mrg } 164 1.63 mrg 165 1.76 mrg ##### lib/libbacktrace ##### 166 1.76 mrg 167 1.76 mrg get_libbacktrace () { 168 1.76 mrg _subdir="$1" 169 1.76 mrg 170 1.109 mrg mkdir -p $_OUTDIR/lib/$_subdir/arch/$_MACHINE_ARCH 171 1.109 mrg write_c $_OUTDIRBASE/lib/$_subdir/arch/$_MACHINE_ARCH/config.h \ 172 1.97 mrg <$_TMPDIR/$_PLATFORM/$_subdir/config.h 173 1.109 mrg write_c $_OUTDIRBASE/lib/$_subdir/arch/$_MACHINE_ARCH/backtrace-supported.h \ 174 1.97 mrg <$_TMPDIR/$_PLATFORM/$_subdir/backtrace-supported.h 175 1.76 mrg } 176 1.76 mrg 177 1.123 mrg ##### lib/libquadmath ##### 178 1.123 mrg 179 1.123 mrg get_libquadmath () { 180 1.124 mrg # Don't fetch where not supported; it may leave empty files 181 1.124 mrg case $_MACHINE_ARCH in 182 1.124 mrg (x86_64|i386|ia64) 183 1.124 mrg break ;; 184 1.124 mrg (*) 185 1.124 mrg return ;; 186 1.124 mrg esac 187 1.123 mrg _subdir="$1" 188 1.123 mrg 189 1.123 mrg mkdir -p $_OUTDIR/lib/$_subdir 190 1.123 mrg # libquadmath config.h appears to be netbsd-cpu agnostic 191 1.123 mrg write_c $_OUTDIRBASE/lib/$_subdir/config.h \ 192 1.123 mrg <$_TMPDIR/$_PLATFORM/$_subdir/config.h 193 1.123 mrg 194 1.123 mrg getvars $_PLATFORM/$_subdir/Makefile \ 195 1.123 mrg libquadmath_la_SOURCES \ 196 1.126 mrg nodist_libsubinclude_HEADERS \ 197 1.123 mrg | write_mk $_OUTDIRBASE/lib/$_subdir/defs.mk 198 1.123 mrg } 199 1.123 mrg 200 1.123 mrg ##### lib/libgfortran ##### 201 1.123 mrg 202 1.123 mrg get_libgfortran () { 203 1.123 mrg _subdir="$1" 204 1.123 mrg 205 1.123 mrg mkdir -p $_OUTDIR/lib/$_subdir/arch/$_MACHINE_ARCH 206 1.123 mrg write_c $_OUTDIRBASE/lib/$_subdir/arch/$_MACHINE_ARCH/config.h \ 207 1.123 mrg <$_TMPDIR/$_PLATFORM/$_subdir/config.h 208 1.123 mrg 209 1.123 mrg getvars $_PLATFORM/$_subdir/Makefile \ 210 1.123 mrg libgfortran_la_SOURCES \ 211 1.123 mrg FPU_HOST_HEADER \ 212 1.123 mrg nodist_finclude_HEADERS \ 213 1.123 mrg gfor_c_HEADERS \ 214 1.123 mrg i_matmul_c i_matmulavx128_c i_matmull_c \ 215 1.123 mrg gfor_specific_src gfor_ieee_src gfor_ieee_helper_src \ 216 1.123 mrg | write_mk $_OUTDIRBASE/lib/$_subdir/arch/$_MACHINE_ARCH/defs.mk 217 1.123 mrg 218 1.125 mrg write_mk $_OUTDIRBASE/lib/$_subdir/arch/$_MACHINE_ARCH/libgfortran.spec \ 219 1.125 mrg <$_TMPDIR/$_PLATFORM/$_subdir/libgfortran.spec 220 1.123 mrg } 221 1.123 mrg 222 1.76 mrg ##### lib/libobjc ##### 223 1.1 mrg 224 1.1 mrg get_libobjc () { 225 1.109 mrg _subdir="$1/arch/$_MACHINE_ARCH" 226 1.121 mrg _options="ALL_OPT_FILES ALL_OPT_URL_FILES" 227 1.18 mrg 228 1.46 mrg mkdir -p $_OUTDIR/lib/$_subdir 229 1.1 mrg 230 1.16 mrg { 231 1.18 mrg if [ -n "$_options" ]; then 232 1.18 mrg getvars gcc/Makefile $_options 233 1.18 mrg fi 234 1.16 mrg getvars $_PLATFORM/libobjc/Makefile \ 235 1.76 mrg ALL_CFLAGS INCLUDES OBJC_SOURCE_FILES C_SOURCE_FILES OBJC_H \ 236 1.16 mrg | sed "s,$_GNU_DIST,\${GNUHOSTDIST},g" 237 1.76 mrg } | sanitise_includes \ 238 1.76 mrg | write_mk $_OUTDIRBASE/lib/$_subdir/defs.mk 239 1.23 skrll 240 1.46 mrg write_c $_OUTDIRBASE/lib/$_subdir/config.h \ 241 1.23 skrll <$_TMPDIR/$_PLATFORM/libobjc/config.h 242 1.1 mrg } 243 1.1 mrg 244 1.76 mrg ##### lib/libstdc++-v3 ##### 245 1.1 mrg 246 1.1 mrg get_libstdcxx_v3 () { 247 1.16 mrg _subdir="$1" 248 1.76 mrg _ver="$2" 249 1.76 mrg 250 1.109 mrg mkdir -p $_OUTDIR/lib/$_subdir/arch/$_MACHINE_ARCH 251 1.1 mrg 252 1.119 mrg _build_headers="c++config.h" 253 1.112 mrg _headers1="backward_headers c_base_headers_extra" 254 1.112 mrg _headers1="$_headers1 c_base_headers_extra_install" 255 1.112 mrg _headers1="$_headers1 tr1_headers tr2_headers" 256 1.112 mrg _headers1="$_headers1 decimal_headers c_compatibility_headers_install" 257 1.111 mrg _headers1="$_headers1 debug_headers parallel_headers" 258 1.111 mrg _headers1="$_headers1 pb_headers1 pb_headers2 pb_headers3 pb_headers4" 259 1.111 mrg _headers1="$_headers1 pb_headers5 pb_headers6 pb_headers7" 260 1.112 mrg _headers1="$_headers1 bits_headers ext_headers host_headers" 261 1.115 mrg _headers1="$_headers1 pstl_headers" 262 1.112 mrg _headers1="$_headers1 profile_headers profile_impl_headers" 263 1.115 mrg _headers1="$_headers1 experimental_headers experimental_bits_headers" 264 1.115 mrg _headers1="$_headers1 ext_host_headers" 265 1.16 mrg 266 1.19 mrg # build files 267 1.19 mrg for h in $_build_headers; do 268 1.109 mrg write_c $_OUTDIRBASE/lib/$_subdir/arch/$_MACHINE_ARCH/$h \ 269 1.19 mrg <$_TMPDIR/$_PLATFORM/libstdc++-v3/include/$_PLATFORM/bits/$h 270 1.19 mrg done 271 1.19 mrg 272 1.109 mrg write_c $_OUTDIRBASE/lib/$_subdir/arch/$_MACHINE_ARCH/symver-config.h \ 273 1.101 mrg <$_TMPDIR/$_PLATFORM/libstdc++-v3/config.h 274 1.6 mrg 275 1.1 mrg { 276 1.91 mrg getvars $_PLATFORM/libstdc++-v3/Makefile \ 277 1.91 mrg port_specific_symbol_files 278 1.101 mrg getvars $_PLATFORM/libstdc++-v3/src/Makefile \ 279 1.118 mrg cxx11_sources \ 280 1.106 mrg cxx17_sources \ 281 1.118 mrg cxx20_sources \ 282 1.120 mrg cxx23_sources \ 283 1.120 mrg cxx26_sources \ 284 1.101 mrg cxx98_sources 285 1.91 mrg 286 1.1 mrg # libsupc++ 287 1.1 mrg getvars $_PLATFORM/libstdc++-v3/libsupc++/Makefile \ 288 1.1 mrg sources | sed 's/^G_sources=/G_LIBSUPCXX_SOURCES=/' 289 1.1 mrg getvars $_PLATFORM/libstdc++-v3/libsupc++/Makefile \ 290 1.1 mrg c_sources | sed 's/^G_c_sources=/G_LIBSUPCXX_C_SOURCES=/' 291 1.1 mrg 292 1.76 mrg # includes 293 1.76 mrg getvars $_PLATFORM/libstdc++-v3/include/Makefile \ 294 1.76 mrg c_base_headers std_headers | sed -e 's#/[^ ][^ ]*/##g' -e 's/\${GNUHOSTDIST}//g' 295 1.76 mrg 296 1.1 mrg # src 297 1.1 mrg getvars $_PLATFORM/libstdc++-v3/src/Makefile \ 298 1.76 mrg libstdc___la_SOURCES | sed 's/^G_libstdc___la_SOURCES=/G_SRC_SOURCES=/' 299 1.122 mrg getvars $_PLATFORM/libstdc++-v3/src/libbacktrace/Makefile \ 300 1.122 mrg libstdc___libbacktrace_la_OBJECTS libstdc___libbacktrace_la_DEPENDENCIES | \ 301 1.122 mrg sed -e 's/^G_libstdc___libbacktrace_la_OBJECTS=/G_LIBBACKTRACE_SOURCES=/' \ 302 1.122 mrg -e 's/^G_libstdc___libbacktrace_la_DEPENDENCIES=/G_LIBBACKTRACE_DEPS=/' \ 303 1.122 mrg -e 's/std_stacktrace-//g' -e 's/\.lo/.c/g' 304 1.106 mrg getvars $_PLATFORM/libstdc++-v3/src/c++17/Makefile \ 305 1.106 mrg libc__17convenience_la_SOURCES | \ 306 1.106 mrg sed -e 's/^G_libc__17convenience_la_SOURCES=/G_CPP17_SOURCES=/' 307 1.118 mrg getvars $_PLATFORM/libstdc++-v3/src/c++20/Makefile \ 308 1.118 mrg libc__20convenience_la_SOURCES | \ 309 1.118 mrg sed -e 's/^G_libc__20convenience_la_SOURCES=/G_CPP20_SOURCES=/' 310 1.120 mrg getvars $_PLATFORM/libstdc++-v3/src/c++23/Makefile \ 311 1.120 mrg libc__23convenience_la_SOURCES | \ 312 1.120 mrg sed -e 's/^G_libc__23convenience_la_SOURCES=/G_CPP23_SOURCES=/' 313 1.120 mrg getvars $_PLATFORM/libstdc++-v3/src/c++26/Makefile \ 314 1.120 mrg libc__26convenience_la_SOURCES | \ 315 1.120 mrg sed -e 's/^G_libc__26convenience_la_SOURCES=/G_CPP26_SOURCES=/' 316 1.76 mrg getvars $_PLATFORM/libstdc++-v3/src/c++11/Makefile \ 317 1.85 mrg libc__11convenience_la_SOURCES | \ 318 1.116 mrg sed -e 's/^G_libc__11convenience_la_SOURCES=/G_CPP11_SOURCES=/' 319 1.76 mrg getvars $_PLATFORM/libstdc++-v3/src/c++98/Makefile \ 320 1.84 mrg GLIBCXX_ABI_FLAGS libc__98convenience_la_SOURCES | \ 321 1.116 mrg sed -e 's/^G_libc__98convenience_la_SOURCES=/G_CPP98_SOURCES=/' 322 1.97 mrg getvars $_PLATFORM/libstdc++-v3/src/filesystem/Makefile \ 323 1.97 mrg libstdc__fs_la_SOURCES | \ 324 1.97 mrg sed -e 's/^G_libstdc__fs_la_SOURCES=/G_FILESYSTEM_SOURCES=/' 325 1.76 mrg getvars $_PLATFORM/libstdc++-v3/Makefile ATOMICITY_SRCDIR \ 326 1.76 mrg BASIC_FILE_CC CLOCALE_CC CCODECVT_CC CCOLLATE_CC \ 327 1.76 mrg CCTYPE_CC CMESSAGES_CC CMONEY_CC CNUMERIC_CC CTIME_CC \ 328 1.76 mrg CPU_OPT_BITS_RANDOM 329 1.1 mrg 330 1.76 mrg # includes 331 1.76 mrg getvars $_PLATFORM/libstdc++-v3/include/Makefile \ 332 1.111 mrg $_headers1 | \ 333 1.112 mrg sed -e 's#\${GNUHOSTDIST}/libstdc++-v3/include/##g' \ 334 1.112 mrg -e 's#\${GNUHOSTDIST}/libstdc++-v3/config/##g' 335 1.1 mrg getvars $_PLATFORM/libstdc++-v3/include/Makefile \ 336 1.76 mrg BASIC_FILE_H ALLOCATOR_H CSTDIO_H CLOCALE_H CMESSAGES_H CTIME_H 337 1.76 mrg } | sanitise_includes \ 338 1.109 mrg | write_mk $_OUTDIRBASE/lib/$_subdir/arch/$_MACHINE_ARCH/defs.mk 339 1.1 mrg } 340 1.1 mrg 341 1.106 mrg ##### lib/libsanitizer ##### 342 1.106 mrg 343 1.106 mrg get_libsanitizer () { 344 1.106 mrg _subdir="$1" 345 1.106 mrg 346 1.109 mrg mkdir -p $_OUTDIR/lib/$_subdir/arch/$_MACHINE_ARCH 347 1.106 mrg 348 1.106 mrg { 349 1.106 mrg getvars $_PLATFORM/libsanitizer/asan/Makefile \ 350 1.106 mrg asan_files 351 1.106 mrg getvars $_PLATFORM/libsanitizer/lsan/Makefile \ 352 1.106 mrg lsan_files 353 1.106 mrg getvars $_PLATFORM/libsanitizer/tsan/Makefile \ 354 1.113 mrg tsan_files 355 1.106 mrg getvars $_PLATFORM/libsanitizer/ubsan/Makefile \ 356 1.113 mrg ubsan_files 357 1.113 mrg getvars $_PLATFORM/libsanitizer/interception/Makefile \ 358 1.113 mrg interception_files 359 1.106 mrg 360 1.106 mrg } | sanitise_includes \ 361 1.109 mrg | write_mk $_OUTDIRBASE/lib/$_subdir/arch/$_MACHINE_ARCH/defs.mk 362 1.106 mrg } 363 1.106 mrg 364 1.76 mrg ##### usr.bin/gcc* ##### 365 1.1 mrg 366 1.68 skrll get_gcc_bootstrap () { 367 1.68 skrll _subdir="$1" 368 1.109 mrg mkdir -p $_OUTDIR/usr.bin/$_subdir/arch/$_MACHINE_ARCH 369 1.85 mrg for f in auto-host tm config; do 370 1.109 mrg write_c $_OUTDIRBASE/usr.bin/$_subdir/arch/$_MACHINE_ARCH/$f.h <$_TMPDIR/gcc/$f.h 371 1.68 skrll done 372 1.86 mrg # XXXGCC5 don't really want to copy insn-modes as we build 373 1.86 mrg # it but libgcc needs to too early yet 374 1.86 mrg for f in insn-modes; do 375 1.109 mrg write_c $_OUTDIRBASE/usr.bin/$_subdir/arch/$_MACHINE_ARCH/$f.h <$_TMPDIR/gcc/$f.h 376 1.86 mrg done 377 1.68 skrll } 378 1.68 skrll 379 1.1 mrg get_gcc () { 380 1.16 mrg _subdir="$1" 381 1.109 mrg mkdir -p $_OUTDIR/usr.bin/$_subdir/arch/$_MACHINE_ARCH 382 1.109 mrg mkdir -p $_OUTDIR/usr.bin/libcpp/arch/$_MACHINE_ARCH 383 1.76 mrg mkdir -p $_OUTDIR/usr.bin/include/arch 384 1.99 mrg mkdir -p $_OUTDIR/usr.bin/common-target/arch 385 1.76 mrg _buildname="BUILD_" 386 1.76 mrg _libcppsubdir="" 387 1.121 mrg _extravars="TM_H ALL_OPT_FILES ALL_OPT_URL_FILES" 388 1.76 mrg _hconfig_h="" 389 1.76 mrg _extravars2="tm_file_list build_xm_include_list" 390 1.76 mrg _extravars3="tm_p_include_list" 391 1.1 mrg 392 1.1 mrg { 393 1.1 mrg getvars gcc/Makefile \ 394 1.19 mrg ${_buildname}EARLY_SUPPORT ${_buildname}ERRORS ${_buildname}PRINT \ 395 1.76 mrg ${_buildname}RTL ${_buildname}SUPPORT ${_buildname}VARRAY \ 396 1.76 mrg ${_buildname}MD | \ 397 1.16 mrg sed -e 's#build/errors.o#build-errors.o#g' \ 398 1.16 mrg -e 's#build/print-rtl.o#build-print-rtl.o#g' \ 399 1.16 mrg -e 's#build/rtl.o#build-rtl.o#g' \ 400 1.16 mrg -e 's#build/varray.o#build-varray.o#g' \ 401 1.22 mrg -e 's#build/ggc-none.o#build-ggc-none.o#g' \ 402 1.16 mrg -e 's#build/##g' 403 1.16 mrg getvars gcc/Makefile \ 404 1.1 mrg ALL_CFLAGS ALL_CPPFLAGS C_AND_OBJC_OBJS C_OBJS CCCP_OBJS \ 405 1.92 mrg GCC_OBJS GCOV_OBJS GCOV_DUMP_OBJS GXX_OBJS GTM_H PROTO_OBJS ${_extravars1} \ 406 1.123 mrg ALL_HOST_FRONTEND_OBJS \ 407 1.1 mrg INCLUDES md_file OBJC_OBJS OBJS out_file version \ 408 1.76 mrg BUILD_PREFIX RTL_H RTL_BASE_H TREE_H ${_hconfig_h} BASIC_BLOCK_H GCC_H \ 409 1.107 mrg D_TARGET_DEF \ 410 1.1 mrg GTFILES_SRCDIR GTFILES_FILES_FILES GTFILES_FILES_LANGS \ 411 1.107 mrg GTFILES GTFILES_LANG_DIR_NAMES HASH_TABLE_H \ 412 1.107 mrg NOEXCEPTION_FLAGS NATIVE_SYSTEM_HEADER_DIR \ 413 1.1 mrg tm_defines host_xm_file host_xm_defines tm_p_file \ 414 1.21 mrg target_cpu_default ${_extravars} ${_extravars2} \ 415 1.60 mrg lang_specs_files ${_extravars3} \ 416 1.76 mrg common_out_file \ 417 1.70 skrll | sanitise_includes 418 1.1 mrg getvars gcc/Makefile \ 419 1.1 mrg LIB2ADDEHDEP | sed 's/unwind.inc//' 420 1.1 mrg getvars gcc/Makefile \ 421 1.1 mrg CXX_OBJS CXX_C_OBJS | sed 's/cp\///g' 422 1.1 mrg getvars gcc/Makefile \ 423 1.123 mrg F95_OBJS GFORTRAN_D_OBJS | sed 's/fortran\///g' 424 1.76 mrg getvars libcpp/Makefile \ 425 1.76 mrg libcpp_a_OBJS 426 1.12 skrll getvars gcc/Makefile \ 427 1.16 mrg ENABLE_SHARED 428 1.76 mrg echo G_SHLIB_LINK="$CC -shared" 429 1.76 mrg echo G_SHLIB_MULTILIB=. 430 1.109 mrg } | write_mk $_OUTDIRBASE/usr.bin/$_subdir/arch/$_MACHINE_ARCH/defs.mk 431 1.16 mrg 432 1.76 mrg getvars gcc/Makefile \ 433 1.76 mrg EXTRA_HEADERS \ 434 1.109 mrg | write_mk $_OUTDIRBASE/usr.bin/include/arch/$_MACHINE_ARCH.mk 435 1.76 mrg 436 1.98 mrg getvars gcc/Makefile \ 437 1.98 mrg OBJS-libcommon \ 438 1.98 mrg | write_mk $_OUTDIRBASE/usr.bin/common/defs.mk 439 1.98 mrg getvars gcc/Makefile \ 440 1.98 mrg OBJS-libcommon-target \ 441 1.109 mrg | write_mk $_OUTDIRBASE/usr.bin/common-target/arch/$_MACHINE_ARCH.mk 442 1.98 mrg 443 1.109 mrg write_c $_OUTDIRBASE/usr.bin/libcpp/arch/$_MACHINE_ARCH/config.h <$_TMPDIR/libcpp/config.h 444 1.114 mrg hfiles='auto-host configargs config bconfig bversion plugin-version multilib tm omp-device-properties' 445 1.16 mrg for f in $hfiles; do 446 1.109 mrg write_c $_OUTDIRBASE/usr.bin/$_subdir/arch/$_MACHINE_ARCH/$f.h <$_TMPDIR/gcc/$f.h 447 1.109 mrg if [ "${_MACHINE_ARCH}" = "powerpc" -a "${f}" = "configargs" ] 448 1.62 matt then 449 1.109 mrg ex <<__EOF__ $_OUTDIR/usr.bin/$_subdir/arch/$_MACHINE_ARCH/$f.h 450 1.62 matt /configuration_arguments/ s/$// 451 1.62 matt ya 452 1.62 matt i 453 1.65 matt #ifdef _SOFT_FLOAT 454 1.62 matt . 455 1.62 matt pu 456 1.62 matt s/";$/ -with-float=soft";/ 457 1.62 matt a 458 1.62 matt #else 459 1.62 matt #endif 460 1.62 matt . 461 1.62 matt . m +1 462 1.62 matt /configure_default_options/ s/{ NULL.*$// 463 1.62 matt a 464 1.65 matt #ifdef _SOFT_FLOAT 465 1.62 matt { "float", "soft" }, 466 1.62 matt #endif 467 1.62 matt { NULL, NULL } 468 1.62 matt }; 469 1.62 matt . 470 1.62 matt wq 471 1.62 matt __EOF__ 472 1.62 matt fi 473 1.80 mrg if [ "${f}" = "configargs" ] 474 1.80 mrg then 475 1.80 mrg _srcquoted=$(echo "$_SRC" | sed 's/\//\\\//g') 476 1.93 mrg sed -i -E -e "s,$_srcquoted,/usr/src,g" \ 477 1.93 mrg -e 's/--build=[^ ]+ --host=([^ ]+)/--build=\1 --host=\1/' \ 478 1.109 mrg $_OUTDIR/usr.bin/$_subdir/arch/$_MACHINE_ARCH/$f.h 479 1.80 mrg fi 480 1.1 mrg done 481 1.50 mrg 482 1.56 mrg # keep identical 483 1.56 mrg for f in all-tree.def; do 484 1.109 mrg cp $_TMPDIR/gcc/$f $_OUTDIR/usr.bin/$_subdir/arch/$_MACHINE_ARCH/$f 485 1.51 mrg done 486 1.56 mrg 487 1.56 mrg # special transforms 488 1.56 mrg for f in gtyp-input.list; do 489 1.109 mrg sed -e "s@^.*$_OUTDIRBASE/dist@SRCDIR@" < $_TMPDIR/gcc/$f > $_OUTDIR/usr.bin/$_subdir/arch/$_MACHINE_ARCH/$f 490 1.56 mrg done 491 1.59 mrg 492 1.59 mrg # special platforms 493 1.109 mrg if [ "${_MACHINE_ARCH}" = "sh3el" -o "${_MACHINE_ARCH}" = "sh3eb" ]; then 494 1.109 mrg write_c $_OUTDIRBASE/usr.bin/$_subdir/arch/$_MACHINE_ARCH/sysroot-suffix.h <$_TMPDIR/gcc/sysroot-suffix.h 495 1.59 mrg fi 496 1.85 mrg 497 1.109 mrg if [ "${_MACHINE_ARCH}" = "i386" -o "${_MACHINE_ARCH}" = "x86_64" ]; then 498 1.109 mrg write_c $_OUTDIRBASE/usr.bin/$_subdir/arch/$_MACHINE_ARCH/i386-builtin-types.inc <$_TMPDIR/gcc/i386-builtin-types.inc 499 1.85 mrg fi 500 1.102 mrg 501 1.109 mrg case "${_MACHINE_ARCH}" in 502 1.102 mrg (*arm*) 503 1.109 mrg d=$_OUTDIRBASE/usr.bin/$_subdir/arch/${_MACHINE_ARCH} 504 1.103 christos for f in arm-cpu.h arm-cpu-cdata.h arm-cpu-data.h arm-isa.h; do 505 1.103 christos write_c $d/$f <$_TMPDIR/gcc/$f 506 1.103 christos done 507 1.102 mrg ;; 508 1.102 mrg esac 509 1.1 mrg } 510 1.1 mrg 511 1.1 mrg ##### main ##### 512 1.1 mrg 513 1.16 mrg case "$1" in 514 1.16 mrg # .mk and .h files for libgcc bootstrap (from host build) 515 1.16 mrg 516 1.76 mrg libgcc*-bootstrap) 517 1.66 skrll get_libgcc gcc 518 1.76 mrg get_libgcov gcc $_PLATFORM/libgcc/Makefile 519 1.68 skrll get_gcc_bootstrap gcc 520 1.66 skrll exit 0 521 1.66 skrll ;; 522 1.66 skrll 523 1.76 mrg libstdc++-bootstrap) 524 1.76 mrg get_libstdcxx_v3 libstdc++-v3 gcc 525 1.1 mrg exit 0 526 1.1 mrg ;; 527 1.1 mrg 528 1.76 mrg gcc*) 529 1.46 mrg get_gcc gcc 530 1.46 mrg get_libgcc gcc 531 1.76 mrg get_libgcov gcc $_PLATFORM/libgcc/Makefile 532 1.86 mrg get_gcc_bootstrap gcc 533 1.46 mrg get_gcc_libiberty gcc 534 1.46 mrg get_libobjc libobjc 535 1.76 mrg get_libstdcxx_v3 libstdc++-v3 gcc 536 1.114 mrg # wants libstdc++-v3 built 537 1.114 mrg # get_libsanitizer libsanitizer 538 1.51 mrg get_libdecnumber libdecnumber 539 1.63 mrg get_libgomp libgomp 540 1.76 mrg get_libbacktrace libbacktrace 541 1.123 mrg get_libquadmath libquadmath 542 1.123 mrg get_libgfortran libgfortran 543 1.1 mrg exit 0 544 1.1 mrg ;; 545 1.1 mrg 546 1.46 mrg 547 1.76 mrg *) 548 1.76 mrg echo invalid arguments; 549 1.76 mrg exit 1 550 1.76 mrg ;; 551 1.1 mrg esac 552