##===- tools/Makefile --------------------------------------*- Makefile -*-===##
#
#                     The LLVM Compiler Infrastructure
#
# This file is distributed under the University of Illinois Open Source
# License. See LICENSE.TXT for details.
#
##===----------------------------------------------------------------------===##

LEVEL := ..

include $(LEVEL)/Makefile.config

# Build clang if present.

ifneq ($(CLANG_SRC_ROOT),)
  OPTIONAL_PARALLEL_DIRS := $(CLANG_SRC_ROOT)
else
  OPTIONAL_PARALLEL_DIRS := clang
endif

# Build LLD and LLDB if present. Note LLDB must be built last as it depends on
# the wider LLVM infrastructure (including Clang).
OPTIONAL_DIRS := lld lldb

# NOTE: The tools are organized into five groups of four consisting of one
# large and three small executables. This is done to minimize memory load
# in parallel builds.  Please retain this ordering.
DIRS := llvm-config
PARALLEL_DIRS := opt llvm-as llvm-dis llc llvm-ar llvm-nm llvm-link \
                 lli llvm-extract llvm-mc bugpoint llvm-bcanalyzer llvm-diff \
                 macho-dump llvm-objdump llvm-readobj llvm-rtdyld \
                 llvm-dwarfdump llvm-cov llvm-size llvm-stress llvm-mcmarkup \
                 llvm-profdata llvm-symbolizer obj2yaml yaml2obj llvm-c-test

# If Intel JIT Events support is configured, build an extra tool to test it.
ifeq ($(USE_INTEL_JITEVENTS), 1)
  PARALLEL_DIRS += llvm-jitlistener
endif

# Let users override the set of tools to build from the command line.
ifdef ONLY_TOOLS
  OPTIONAL_PARALLEL_DIRS :=
  OPTIONAL_DIRS := $(findstring lldb,$(ONLY_TOOLS))
  PARALLEL_DIRS := $(filter-out lldb,$(ONLY_TOOLS))
endif

# These libraries build as dynamic libraries (.dylib /.so), they can only be
# built if ENABLE_PIC is set.
ifndef ONLY_TOOLS
ifeq ($(ENABLE_PIC),1)
  # gold only builds if binutils is around.  It requires "lto" to build before
  # it so it is added to DIRS. llvm-lto also requires lto
  DIRS += lto llvm-lto
  ifdef BINUTILS_INCDIR
    DIRS += gold
  endif

  PARALLEL_DIRS += bugpoint-passes
endif

ifdef LLVM_HAS_POLLY
  PARALLEL_DIRS += polly
endif
endif

# On Win32, loadable modules can be built with ENABLE_SHARED.
ifneq ($(ENABLE_SHARED),1)
  ifneq (,$(filter $(HOST_OS), Cygwin MingW))
    PARALLEL_DIRS := $(filter-out bugpoint-passes, \
                        $(PARALLEL_DIRS))
  endif
endif

include $(LEVEL)/Makefile.common
