Avoid an infinite cycle with private linkage and -f{data|function}-sections.
[oota-llvm.git] / Makefile.common
1 #===-- Makefile.common - Common make rules for LLVM --------*- Makefile -*--===#
2 #
3 #                     The LLVM Compiler Infrastructure
4 #
5 # This file is distributed under the University of Illinois Open Source
6 # License. See LICENSE.TXT for details.
7 #
8 #===------------------------------------------------------------------------===#
9 #
10 # This file is included by all of the LLVM makefiles.  This file defines common
11 # rules to do things like compile a .cpp file or generate dependency info.
12 # These are platform dependent, so this is the file used to specify these
13 # system dependent operations.
14 #
15 # The following functionality can be set by setting incoming variables.
16 # The variable $(LEVEL) *must* be set:
17 #
18 # 1. LEVEL - The level of the current subdirectory from the top of the
19 #    source directory.  This level should be expressed as a path, for
20 #    example, ../.. for two levels deep.
21 #
22 # 2. DIRS - A list of subdirectories to be built.  Fake targets are set up
23 #    so that each of the targets "all", "install", and "clean" each build
24 #    the subdirectories before the local target.  DIRS are guaranteed to be
25 #    built in order.
26 #
27 # 3. PARALLEL_DIRS - A list of subdirectories to be built, but that may be
28 #    built in any order.  All DIRS are built in order before PARALLEL_DIRS are
29 #    built, which are then built in any order.
30 #
31 # 4. SOURCES - If specified, this sets the source code filenames.  If this
32 #    is not set, it defaults to be all of the .cpp, .c, .y, and .l files
33 #    in the current directory.
34 #
35 # 5. SourceDir - If specified, this specifies a directory that the source files
36 #    are in, if they are not in the current directory.  This should include a
37 #    trailing / character.
38 #
39 # 6. LLVM_SRC_ROOT - If specified, points to the top of the LLVM source tree.
40 #
41 # 8. PROJ_SRC_DIR - The directory which contains the current set of Makefiles
42 #    and usually the source code too (unless SourceDir is set).
43 #
44 # 9. PROJ_SRC_ROOT - The root directory of the source code being compiled.
45 #
46 # 10. PROJ_OBJ_DIR - The directory where object code should be placed.
47 #
48 # 11. PROJ_OBJ_ROOT - The root directory for where object code should be
49 #     placed.
50 #
51 # For building,
52 #       LLVM, LLVM_SRC_ROOT = PROJ_SRC_ROOT
53 #
54 #===-----------------------------------------------------------------------====
55
56 #
57 # Configuration file to set paths specific to local installation of LLVM
58 #
59 ifndef LLVM_OBJ_ROOT
60 include $(LEVEL)/Makefile.config
61 else
62 include $(LLVM_OBJ_ROOT)/Makefile.config
63 endif
64
65 #
66 # Include all of the build rules used for making LLVM
67 #
68 include $(LLVM_SRC_ROOT)/Makefile.rules
69