Commit Graph

131 Commits

Author SHA1 Message Date
lukem
cc3d03cf30 improve usage 2003-01-04 14:55:44 +00:00
lukem
a04634dbdf Add "-V var=[value]", for setting arbitrary variables which will also
be added to the nbmake-${MACHINE} wrapper.
Useful for setting RELEASEDIR, without -R's habit of building a release.
2003-01-04 12:55:32 +00:00
lukem
3d8ce73f53 some cleanups and tweaks to my preferred "sh KNF" (SNF ? :) 2003-01-02 23:11:07 +00:00
lukem
f9ad379bbd cd dirname $0 so that this runs from the directory that build.sh is in.
Per discussion with Andrew Brown.
2003-01-02 05:11:12 +00:00
lukem
27b32c4276 - Implement "-i installworlddir", which runs
make INSTALLWORLDDIR=installworlddir installworld
  after every other operation has completed.
  If you want to run this target without rebuilding, use -b as well...
- Cache the output of `uname -s` and `uname -m` for future use.
2002-12-25 00:42:50 +00:00
scw
84058abd72 The walnut port has been subsumed by evbppc. 2002-12-09 12:49:55 +00:00
lukem
83978b2301 improve message. suggestion from Scott Reynolds 2002-12-09 03:13:41 +00:00
lukem
239dc05c4f Add -E - "expert mode". If this is not specified, builds to DESTDIR=/ are
not permitted.
By using this flag, you are taking responsibility for any issues that
may occur because of this...
2002-12-08 22:14:00 +00:00
lukem
4f856ef51a - be consistent about option ordering in build.sh usage display
- use Fl and Ar instead of Sy and Em to format options
2002-12-08 08:42:51 +00:00
lukem
32615eac46 Apply fixes & enhancements from Alan Barrett. (Thanks Alan!)
* When building a kernel with the -k option, make obj in $TOP/etc to
    ensure that the correct KERNOBJDIR is created and used.  Previously,
    KERNOBJDIR could sometimes be an objdir outside the source tree
    and sometimes $TOP/sys/arch/$ARCH/compile inside the source tree,
    depending on whether or not a complete build had beed done before
    the kernel build.

  * Renamed KERNCONFNAME to kernconfname, for consistency with what
    seems to be a convention that variables local to build.sh (as
    opposed to make or environment variables) have lowercase names.

  * Renamed the do_buildonlytools and do_buildonlykernel variables to
    do_buildtools and do_buildkernel, because the word "only" is no
    longer appropriate now that more than one of them can be active
    simultaneously.

  * Changed a few '|| exit 1' tests to '|| bomb "message"', and added a
    few more similar tests.

  * Changed all 'echo "===> ..."' to use $runcmd, and added a few more
    similar echos.  Previously, some used $runcmd and some did not.
2002-11-17 12:59:37 +00:00
enami
6709c26d9f In the function usage(),
- The -n and -t option was missing in sample command line.
- Indent the description of -r option correctly.
- Use `basename $0` instead of $0.
2002-11-05 01:53:58 +00:00
lukem
da7aeb45e7 - Add support for ./build.sh -k kern, which configures and builds the named
kernel using the $TOOLDIR toolchain.  If kern doesn't contain `/', it will
  be searched for in ${KERNCONFDIR} (typically, sys/arch/${MACHINE}/conf).
- Improve ./build.sh usage.
- Add some examples to the documentation.

This is heavily based on [toolchain/18739] from Alan Barrett <apb@cequrux.com>,
with improvements by me.
2002-10-20 15:48:01 +00:00
thorpej
cd51665a0d Add sh5 cases. 2002-10-02 16:57:29 +00:00
thorpej
0e750f659f Remove USE_NEW_TOOLCHAIN, replacing it with similar logic using
TOOLCHAIN_MISSING and EXTERNAL_TOOLCHAIN.
2002-09-18 15:20:53 +00:00
thorpej
c26422231a * Use /usr/bin/env to invoke the real interpreter. This allows us to
get the POSIX shell on more systems.
* Deal with a broken "pwd" on Solaris (suggested by Christos).
2002-09-13 23:27:13 +00:00
thorpej
c7acd88451 Back out previous; I'll figure out another way. 2002-09-13 22:17:04 +00:00
thorpej
7db1a04e8c Use /bin/test explicitly in one place, rather than [ or test (which
might be a shell built-in).  This allows this script to work otherwise
unchanged with Solaris 8's /bin/sh.
2002-09-13 18:36:01 +00:00
bjh21
ec793cfe29 Unset PWD so that pwd is guaranteed to return a physical path.
This fixes PR 17313.  Thanks to Ian Dall for providing the fix.
2002-09-03 22:03:48 +00:00
pooka
d1cacc3197 fix pasto in error message
reported by Andrew Freedman in toolchain/17530
2002-07-09 06:36:16 +00:00
fredette
4234bc92d3 Add hppa as a supported MACHINE_ARCH. 2002-06-10 14:08:05 +00:00
augustss
2862ed3546 Remove redundant pattern in case. 2002-06-05 06:27:09 +00:00
thorpej
82d4bf2f9f Allow ns32k. 2002-06-05 02:32:15 +00:00
msaitoh
7c929f204a add armeb as valid MACHINE_ARCH 2002-05-24 14:43:31 +00:00
lukem
7d134e662e add "-M makeobjdirprefix" to build.sh 2002-05-13 01:44:34 +00:00
sommerfeld
965e0acae4 Correct BUGS in BUILDING.mdoc now that most ports are USE_NEW_TOOLCHAIN
Obsolete NBUILDJOBS; build.sh just passes -jN through to make(1),
which inherits it cooperatively through the build tree.  Fix
documentation so that it's shown to be deprecated.

If you use build -jN, please save full build logs so that errors due
to missing dependancies can be analyzed and corrected.
2002-05-02 22:13:30 +00:00
tv
d5a1eec92f Bomb if share/mk/bsd.own.mk is missing. 2002-04-18 01:38:11 +00:00
thorpej
0c3d55ef67 Switch remaining ARM ports (acorn32, cats, shark) to ELF. 2002-04-02 16:34:49 +00:00
bjh21
dc96e428af Rename arm26 -> acorn26. 2002-03-24 22:21:41 +00:00
pk
19c8da4424 Crank up robustness. 2002-03-21 10:54:50 +00:00
thorpej
e4732a956b Add a -B option to set the BUILDID for the build. This also causes
the make(1) wrapper script to be named "nbmake-MACHINE-BUILDID".
2002-03-14 18:33:04 +00:00
simonb
a79fb9541b Add evbmips.
XXX: This is hard-coded to little-endian here, but there's not reason for
     some this.  The MALTA can be used with either-endianness.
2002-03-07 14:59:04 +00:00
simonb
92ae660710 Add sbmips. 2002-03-06 23:32:52 +00:00
tv
8ea025ea42 Nuke my "mkdirp" hack. "mkdir -p" is used so liberally throughout the
tree that the hack is just a maintenance annoyance here.
2002-03-02 03:51:02 +00:00
mjl
416ce5ecbb powerpc is a valid MACHINE_ARCH too. 2002-03-02 02:09:18 +00:00
tv
be05d061b7 Related to PR toolchain/15780, sanity check MACHINE_ARCH. 2002-03-01 21:06:40 +00:00
tv
1e5d325cf1 Related to PR 15781, explain better in a comment why it is not possible
to grovel mk.conf using sed/awk/etc. before nbmake is available.
2002-03-01 20:57:26 +00:00
scw
3c68fd62d5 Add mvmeppc to powerpc case. 2002-02-27 21:19:08 +00:00
lukem
c17ada6ca5 add -U; set UNPRIVED= 2002-02-27 13:55:28 +00:00
thorpej
91adf0a52c Shark is not yet MACHINE_ARCH=arm. 2002-02-10 19:09:13 +00:00
wiz
f7d9c1c5ff s/dnard/shark/ 2002-02-10 18:28:12 +00:00
tv
ff243397df chdir out of $tmpdir before removing it; some vendors' rm(1) programs will
not remove cwd....
2002-01-29 08:46:59 +00:00
tv
d7938946ac Honor HOST_{CC,CFLAGS,CPPFLAGS,LDFLAGS} passed in from the environment
when building nbmake.  Use the correct defaults if not set (HOST_CC=cc,
HOST_CFLAGS=-O).
2002-01-19 16:49:28 +00:00
tv
a4d805e9d2 Make sure buildmake.sh is run with "sh", rather than depending on executable
status.  (XXX we should probably come up with a HOST_SH variable for these
instances....)
2002-01-15 19:19:35 +00:00
tv
442feae097 Make use of new make(1) bootstrap in src/tools/make. 2002-01-15 19:17:23 +00:00
tv
caacefb033 Apply workaround for some Bourne shells not handling IFS in the POSIX way.
Based on the change suggested by <david@l8s.co.uk> on current-users.
2001-12-19 20:59:07 +00:00
wiz
cd1d503ed0 Sort options in usage in default order (AaBb...). 2001-12-17 13:16:10 +00:00
jmc
eb0d4b304f Change check for USE_NEW_TOOLCHAIN to just looking for it being defined. 2001-12-12 23:50:27 +00:00
lukem
90d4be2b55 as -m mach is optional, indicate this in the usage 2001-12-11 23:57:49 +00:00
tv
b7c526a551 Honor HOST_LDFLAGS in environment.
Add bash to the suggestions of alternative shells if /bin/sh isn't enough.
2001-12-11 21:13:35 +00:00
tv
906700c90b Revert part of rev. 1.28. DO NOT set MAKE_MACHINE, since "nbmake" is a
platform-independent binary.  It should have no default.  Setting MACHINE
is the purpose of the wrapper script.
2001-12-11 20:45:31 +00:00
jmc
a0062bb4ae Make -t and -u behave together so a -t doesn't always force a cleandir in the
tools directory.
2001-12-09 06:07:16 +00:00
jmc
b1561d46b2 Check if this platform is supported for USE_NEW_TOOLCHAIN and exit with a
complaint if it's not. Point out to run a traditional make and also how to
force a new toolchain build if one wants to test
2001-12-04 04:28:23 +00:00
jmc
b24c81ca0c Make sure the makes running before the make build rule include
-m <top dir>/share/mk
2001-12-03 08:18:00 +00:00
thorpej
a3c473186e - Define MAKE_MACHINE reasonably for the bootstrap make.
- Don't unset IFS; some shells don't like that.  Instead save, and
  restore IFS.
2001-11-30 02:18:13 +00:00
jmc
df406df953 If using objdirs make sure the objdir root is made before starting the build.
Otherwise problems with bsd.own.mk and _SRC_TOP_OBJ can result.
2001-11-26 05:57:33 +00:00
thorpej
9b19c5d978 Add a "-d" option that uses the "distribution" target, rather than
the "build" target.
2001-11-25 18:35:06 +00:00
thorpej
9f11f1b5b4 If using -t, do a "cleandir" before building/installing the
tools.  This is something the old "build" hack used to do.
2001-11-15 00:14:35 +00:00
tv
8db91a3669 Revert part of rev. 1.20 -- $DESTDIR and $TOOLDIR are deliberately shown
symbolically with "-n", as these may come from mk.conf after building the
bootstrap make.  Add a comment to that effect.
2001-11-13 19:03:08 +00:00
tv
b5cd2489b2 Major overhaul of src/tools and host toolchain. Summary of changes:
* Rewrite src/tools Make logic to work like the rest of the tree wrt
  "dependall" and "install".  The old "make build" hack is gone.

* Remove the MKTOOLS logic.  This was linked to the "make build" hack,
  and was only needed because TOOLDIR originally had no writable default.

* Redo the GNU configure/make logic to make it fit reasonably in a
  BSD make wrapper.  Use new ${.ALLTARGETS} variable to scan for
  targets in $(srcdir), and mark them with .MADE: to prevent rebuilding.

* Only build cross tools in src/tools; remove some messy logic in
  src/usr.* and src/gnu/usr.* that would do target filename rewriting
  (improves consistency and readability).

* Add the ability to build cross gdb at tool build time by setting
  MKCROSSGDB (default no) to "yes" in mk.conf.

* Add src/tools/groff and set up paths to work with this cross groff.
2001-11-12 23:16:17 +00:00
msaitoh
7e478326bd change MACHINE_ARCH of evbsh3 from sh3el to sh3eb because all config files
for evbsh3 defaults to big endian.
2001-11-12 08:54:58 +00:00
jmc
a1ae34bc72 Always rebuild the nbmake wrapper script. Otherwise the options passed to
build.sh just get lost if they differ from a previous invocation (i.e. letting
MKOBJDIRS get set the first time, -o will get ignored after this unless a
rebuild of the script happens). It's low overhead so this adds little burden
to getting it right.
2001-11-11 01:34:30 +00:00
thorpej
3b569c7be3 * Fix a quoting error so that when using -n, we actually see
$TOOLDIR and $DESTDIR in their expanded form.
* Set USETOOLS=yes in the make wrapper script; it's pretty pointless
  using the make wrapper unless you're using the host tools.
* In the -t case, make sure to only echo the "make obj" command if -n.
2001-11-09 04:14:17 +00:00
dillo
c5b59dd31e export DESTDIR when set via -D. 2001-11-05 02:17:47 +00:00
tv
472dcba2fb * Always use the makewrapper when starting a build phase.
* Set stuff mostly in the environment, not on make(1)'s command line.
  This is needed for MACHINE and MACHINE_ARCH (noted by bjh21), and keeps
  the mk.conf-overriding-env behavior (suggested by several people).

* Use MAKEFLAGS to make the wrapper script more readable.

* When prepping objdir in tools for the default TOOLDIR value, just make
  that objdir; leave the recursive "make obj" for later.
2001-11-02 05:07:22 +00:00
thorpej
a4a68fe775 When doing an only-tools build, don't use the makewrapper. 2001-11-01 01:49:44 +00:00
thorpej
f55ffb9482 Add a -t option that builds and installs the toolchain only
(and thus implies -b).  To make this work, we also check do_buildsystem
when doing the DESTDIR sanity check.
2001-11-01 00:14:17 +00:00
tv
dadd6e7370 Major cleanup and overhaul:
* Allow MACHINE to be set automatically on NetBSD native builds.
  Require -m only if the host is not NetBSD.

* Fail if DESTDIR is set to root (/) and the build is not NetBSD native,
  or the build is attempting a "make release" (option -R).

* Warn the user if DESTDIR is set to root (/) that the kernel must be up
  to date, or else the build might hose the system.  Also, do not remove
  DESTDIR on -r if it is set to root.

* Fail if TOOLDIR is set to / or empty after checking with nbmake.

* Allow DESTDIR and TOOLDIR to be set in mk.conf and/or by the new default
  from <bsd.own.mk>.  Note that if -T is not used to set TOOLDIR, and
  TOOLDIR is not set in the environment, then nbmake will always be
  bootstrapped (rather than looking at nbmake's timestamp).  This is
  because /bin/sh doesn't know how to get TOOLDIR from mk.conf without
  first having nbmake (...which lives in TOOLDIR).

* Do a pass of "make obj" through src/tools before installing nbmake (so
  long as -o/MKOBJDIRS=no is not specified).  This ensures that objdirs
  exist if they are desired, and paves the way for using build.sh to
  build all the src/tools without building everything else.

* Add "-w" option, which allows the builder to specify where the nbmake
  wrapper shell script should be created.  If not specified,
  $TOOLDIR/bin/nbmake-$MACHINE is still created as a default.

* Print the values of DESTDIR and TOOLDIR after bootstrapping nbmake,
  for informational purposes.

It should now be possible to type just "./build.sh" on a NetBSD-current
host and get a new build in / for the appropriate architecture.
However, building in-place like this has *not* been extensively tested
yet, so be careful.
2001-10-31 19:59:43 +00:00
jmc
a6ddeb5145 Add a sanity check. Don't rm -rf / if TOOLDIR or DESTDIR got set to / and -r
was an option
2001-10-31 18:23:55 +00:00
reinoud
a7b1e2f4a6 Rollback 2001-10-31 13:12:35 +00:00
tv
7636e93f41 * Fix brokenness created by the -n option additions ("eval" still kept
quoting, so the commands were thought to be one big word with embedded
  whitespace)

* New options:
  -O obj    Set root of an obj tree; sets MAKEOBJDIR to an appropriate
            substitution pattern.
  -o        Sets MKOBJDIRS=no (otherwise sets MKOBJDIRS=yes)
  -u        Sets UPDATE
2001-10-31 01:56:10 +00:00
reinoud
3d76fbc53f Acorn's MACHINE_ARFCH is now arm, not arm32 ... moving it effectively to
ELF (Yay!)
2001-10-31 00:08:03 +00:00
tv
732cb3a230 * Clean up a bit; always use [] for comparison tests.
* Don't require DESTDIR when -b is set.

* Add -n option, which prints the commands that would be run by build.sh,
  but doesn't run them (much like make's -n option).

* Auto-resolve relative paths for -D, -R, and -T (but not for the
  corresponding environment variables).

* Explicitly declare defaults of all shell variables used where feasible,
  rather than sprinkling ${varname-value} expansions.

* Prefix shell true/false variables with "do_" to indicate their use as
  actual values in shell expressions (like "$do_buildsystem && echo foo").
2001-10-30 22:33:00 +00:00
jmc
ac3e0f6b6c Add -b option. Bootstrap only. i.e. build and install nbmake and then exit 2001-10-30 21:04:05 +00:00
tv
3ae57da833 Set TOOLDIR in the nbmake-MACHINE wrapper script. 2001-10-29 19:47:51 +00:00
matt
0c7ce20cc8 Netwinder's MACHINE_ARCH is arm, not arm32 2001-10-26 23:25:03 +00:00
bjh21
5b191935e3 Re-instate MACHINE -> MACHINE_ARCH entry for arm26, which I left out of the
last change.
2001-10-24 14:55:09 +00:00
bjh21
ad870d54a0 Sync the MACHINE -> MACHINE_ARCH mapping for ARM platforms with
sys/arch/*/param.h.  While not necessarily correct, param.h is at least
definitively incorrect.
2001-10-24 14:00:24 +00:00
tv
e7f296218e - Supply full list of MACHINEs for implicit MACHINE_ARCH evaluation.
If a machine is not known, abort.

- Emulate "mkdir -p" for Old "mkdir" programs on some host OS's.

- Add "-a" option to provide MACHINE_ARCH explicitly (for MACHINEs
  that are capable of having more than one MACHINE_ARCH, such as sh3
  and sparc64)

- Where "getopts" is not available in the shell, try using "getopt".
  It's not whitespace compatible, but works in most cases.

- Rename "bmake" to "nbmake" per suggestions.

- When building nbmake, create a temporary directory for the purpose
  of holding host compiler objects that might be created in the cwd.
  Delete this directory if aborted via sh's "trap".

- Create a wrapper script in $TOOLDIR/bin called "nbmake-$MACHINE",
  which can be run by hand for building parts of a cross tree easily.
  Use this script when finally starting the build.
2001-10-24 02:39:56 +00:00
tv
2c014f233f Move mkdir of TOOLDIR/bin to after removing TOOLDIR as specified by -r.
Add -R option to specify RELEASEDIR directory and flag using "make release"
instead of "make build" (inverted logic from removed -n option).
2001-10-19 16:43:47 +00:00
tv
79069d719a Add error handling to bmake build, and add "-j" option to set NBUILDJOBS. 2001-10-19 02:25:48 +00:00
tv
41334a362b Script to automate bootstrapping a build on any host platform. Creates
a bmake (rebuilds, if necessary) and invokes that to start the build.
2001-10-19 02:21:03 +00:00