Clone this repo:
  1. c1e7f2a Recommend building with -disable-job-server by Josh Conner · 6 weeks ago master
  2. 26540d7 s/mx_handle_wait_one/mx_object_wait_one/ by Josh Conner · 3 months ago
  3. a174e2f Inform make which cmds are dash builtins. by Josh Conner · 4 months ago
  4. 9b0e1d5 Migrate to new launchpad API by Josh Conner · 4 months ago
  5. 0cee4c3 Use mx_job_default() to get current job. by Josh Conner · 4 months ago

GNU Make

This is a fork of GNU Make, with support for running on Fuchsia.

Building

To build a native version of GNU Make for fuchsia, configure in a new directory with:

  $ <path-to-make>/configure \
          --host=<arch>-fuchsia \
          --disable-job-server \
          CC=<path-to-compiler>/<arch>-fuchsia-gcc

(where <arch> is one of: x86_64, aarch64, or arm)

And then simply invoke ‘make’:

  $ make

Rebasing GNU Make

When merging upstream changes, there are a number of files that must be regenerated. Here are the steps to follow to regenerate the files from a virgin git repo (all commands shown should be run from within the source directory):

  1. Install the following packages:
  • automake 1.15
  • autoconf 2.69
  • gettext 0.19.8
  • pkg-config 0.29.1

These can mostly be installed into a user-specific directory to avoid updating the default versions of these utilities. However, if pkg-config is installed in a user-specific directory, you will need to set the environment variable ACLOCAL_PATH to reference the local “share” subdirectory to avoid getting undefined m4 macro errors for PKG_PROG_PKG_CONFIG. For example, if pkg-config is installed in /my/usr/local, ACLOCAL_PATH should be set to /my/usr/local/share.

  1. Configure the make source directory.
  $ autoreconf -i
  1. Run configure (we need a Makefile to download the latest versions of some external files):
  $ ./configure
  1. Download the necessary external files:
  $ make scm-update
  1. Clean up our configure artifacts:
  $ make distclean
  $ rm -fr autom4te.cache

After these steps, the source tree should be in a state where it can be configured/built as needed. Some of these steps are derived from (but differ slightly from) those given in README.git.