summaryrefslogtreecommitdiff
path: root/sys-libs/libcxx/files/Makefile
blob: 029e7295b88989fcd32c2a4f9b4dbe24df2dde41 (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
CXXFLAGS+=-std=c++11 -fstrict-aliasing -Wall -Wextra -Wshadow -Wconversion \
	  -Wpadded -Wstrict-aliasing=2 -Wstrict-overflow=4

SRCDIR=..
LIB=libc++
STATIC=libc++.a
MAJOR=1
MINOR=0
SHEXT?=.so
SHLIB=$(LIB)$(SHEXT).$(MAJOR).$(MINOR)
SONAME=$(LIB)$(SHEXT).$(MAJOR)

SRC=$(wildcard $(SRCDIR)/src/*.cpp)
OBJ=$(SRC:$(SRCDIR)/src/%.cpp=%.o)
SOBJ=$(SRC:$(SRCDIR)/src/%.cpp=%.So)


%.So: $(SRCDIR)/src/%.cpp
	$(CXX) -I$(SRCDIR)/include $(CPPFLAGS) $(CXXFLAGS) -fPIC -nostdinc++ -c $< -o $@

%.o: $(SRCDIR)/src/%.cpp
	$(CXX) -I$(SRCDIR)/include $(CPPFLAGS) $(CXXFLAGS) -nostdinc++ -c $< -o $@

$(STATIC): $(OBJ)
	$(AR) cr $@ $^

static: $(STATIC)

$(SHLIB): $(SOBJ)
	$(CXX) -fPIC -nodefaultlibs $(CXXFLAGS) $(LDFLAGS) -shared -Wl,-soname,$(SONAME) -o $@ $^ $(LIBS)

$(SONAME): $(SHLIB)
	ln -s $< $@

$(LIB)$(SHEXT): $(SONAME)
	ln -s $< $@

shared: $(SHLIB) $(SONAME) $(LIB)$(SHEXT)