Skip to content
Snippets Groups Projects
Select Git revision
  • 9e35429150221948a7c11b7a7dfd906f15ebb204
  • master default protected
2 results

Makefile

Blame
  • Makefile 12.66 KiB
    # We borrow heavily from the kernel build setup, though we are simpler since
    # we don't have Kconfig tweaking settings on us.
    
    # The implicit make rules have it looking for RCS files, among other things.
    # We instead explicitly write all the rules we care about.
    # It's even quicker (saves ~200ms) to pass -r on the command line.
    MAKEFLAGS=-r
    
    # The source directory tree.
    srcdir := ..
    abs_srcdir := $(abspath $(srcdir))
    
    # The name of the builddir.
    builddir_name ?= .
    
    # The V=1 flag on command line makes us verbosely print command lines.
    ifdef V
      quiet=
    else
      quiet=quiet_
    endif
    
    # Specify BUILDTYPE=Release on the command line for a release build.
    BUILDTYPE ?= Release
    
    # Directory all our build output goes into.
    # Note that this must be two directories beneath src/ for unit tests to pass,
    # as they reach into the src/ directory for data with relative paths.
    builddir ?= $(builddir_name)/$(BUILDTYPE)
    abs_builddir := $(abspath $(builddir))
    depsdir := $(builddir)/.deps
    
    # Object output directory.
    obj := $(builddir)/obj
    abs_obj := $(abspath $(obj))
    
    # We build up a list of every single one of the targets so we can slurp in the
    # generated dependency rule Makefiles in one pass.
    all_deps :=
    
    
    
    CC.target ?= $(CC)
    CFLAGS.target ?= $(CPPFLAGS) $(CFLAGS)
    CXX.target ?= $(CXX)
    CXXFLAGS.target ?= $(CPPFLAGS) $(CXXFLAGS)
    LINK.target ?= $(LINK)
    LDFLAGS.target ?= $(LDFLAGS)
    AR.target ?= $(AR)
    
    # C++ apps need to be linked with g++.
    LINK ?= $(CXX.target)
    
    # TODO(evan): move all cross-compilation logic to gyp-time so we don't need
    # to replicate this environment fallback in make as well.
    CC.host ?= gcc
    CFLAGS.host ?= $(CPPFLAGS_host) $(CFLAGS_host)
    CXX.host ?= g++
    CXXFLAGS.host ?= $(CPPFLAGS_host) $(CXXFLAGS_host)
    LINK.host ?= $(CXX.host)
    LDFLAGS.host ?=
    AR.host ?= ar
    
    # Define a dir function that can handle spaces.
    # http://www.gnu.org/software/make/manual/make.html#Syntax-of-Functions
    # "leading spaces cannot appear in the text of the first argument as written.
    # These characters can be put into the argument value by variable substitution."
    empty :=
    space := $(empty) $(empty)