summaryrefslogtreecommitdiff
path: root/runtime/GCCLibraries/crtend/Makefile
blob: 04e414fad67731841a541d3daf073e72ded47d17 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
##===- runtime/GCCLibraries/crtend/Makefile ----------------*- Makefile -*-===##
# 
#                     The LLVM Compiler Infrastructure
#
# This file was developed by the LLVM research group and is distributed under
# the University of Illinois Open Source License. See LICENSE.TXT for details.
# 
##===----------------------------------------------------------------------===##
#
# This directory contains the C and C++ runtime libraries for the LLVM GCC
# front-ends.  See the README.txt file for more details.
#
# Since this archive has strange requirements, we use some custom rules for 
# building it.
#
##===----------------------------------------------------------------------===##

LEVEL = ../../..
DONT_BUILD_RELINKED = 1
LIBRARYNAME = crtend
BYTECODE_DESTINATION = $(CFERuntimeLibDir)

MainSrc      := crtend.c
GenericEHSrc := Exception.cpp
SJLJEHSrc    := SJLJ-Exception.cpp

EXTRA_DIST   := $(MainSrc) $(GenericEHSrc) $(SJLJEHSrc) \
                comp_main.lst comp_genericeh.lst comp_sjljeh.lst

include $(LEVEL)/Makefile.common

MainObj      := $(ObjDir)/crtend.bc
GenericEHObj := $(ObjDir)/Exception.bc
SJLJEHObj    := $(ObjDir)/SJLJ-Exception.bc

# __main and ctor/dtor support component
$(ObjDir)/comp_main.bc: $(MainObj)
	$(Echo) Linking $(notdir $@) component...
	$(Verb) $(GCCLD) -link-as-library \
	-internalize-public-api-file=$(PROJ_SRC_DIR)/comp_main.lst \
	$(MainObj) -o $@

# Generic exception handling support runtime.
$(ObjDir)/comp_genericeh.bc: $(GenericEHObj)
	$(Echo) Linking $(notdir $@) component...
	$(Verb) $(GCCLD) -link-as-library \
	-internalize-public-api-file=$(PROJ_SRC_DIR)/comp_genericeh.lst \
	$(GenericEHObj) -o $@ 

# setjmp/longjmp exception handling support runtime.
$(ObjDir)/comp_sjljeh.bc: $(SJLJEHObj)
	$(Echo) Linking $(notdir $@) component...
	$(Verb) $(GCCLD) -link-as-library \
	-internalize-public-api-file=$(PROJ_SRC_DIR)/comp_sjljeh.lst \
	$(SJLJEHObj) -o $@

SYMBOLHACKEDOBJS := $(ObjDir)/comp_main.bc $(ObjDir)/comp_genericeh.bc \
                    $(ObjDir)/comp_sjljeh.bc

all-local:: $(LibName.BCA)

ifdef BYTECODE_DESTINATION
BytecodeDestDir := $(BYTECODE_DESTINATION)
else
BytecodeDestDir := $(PROJ_libdir)
endif

DestBytecodeLib = $(BytecodeDestDir)/lib$(LIBRARYNAME).a
install-bytecode-local:: $(DestBytecodeLib)
install-local:: $(DestBytecodeLib)

$(LibName.BCA): $(SYMBOLHACKEDOBJS) $(LibDir)/.dir $(LLVMToolDir)/llvm-ar
	$(Echo) Building $(BuildMode) Bytecode Archive $(notdir $@)
	$(Verb) $(RM) -f $@
	$(Verb) $(LArchive) $@ $(SYMBOLHACKEDOBJS)

$(DestBytecodeLib): $(BytecodeDestDir) $(LibName.BCA) 
	$(Echo) Installing $(BuildMode) Bytecode Archive $(DestBytecodeLib)
	$(Verb) $(DataInstall) $(LibName.BCA) $(DestBytecodeLib)

uninstall-local::
	$(Echo) Uninstalling $(BuildMode) Bytecode Archive $(DestBytecodeLib)
	-$(Verb) $(RM) -f $(DestBytecodeLib)