-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
60 lines (45 loc) · 1.99 KB
/
Makefile
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
include ../Makefile.$(TARGET)
OUTPUT := libPocoJSON
VERSION := 1.10
INCLUDE = $(STD_INCLUDE) -Iinclude -I$(TOP)/build/$(TARGET)/poco/include
CFLAGS = $(STD_CFLAGS) $(INCLUDE)
SHARED_FLAGS := -fPIC -shared -Wl,-soname,$(OUTPUT).so.$(VERSION)
OBJROOT = ../build/$(TARGET)/poco/obj
INCLOUT = $(TOP)/build/$(TARGET)/poco
CSOURCES := $(wildcard src/*.c)
SOURCES := $(wildcard src/*.cpp)
HEADERS := $(addprefix $(INCLOUT)/,$(wildcard include/Poco/JSON/*.h))
LD_FLAGS := $(STD_LDFLAGS)
LIBS := -L$(TOP)/build/$(TARGET)/poco/lib -lPocoFoundation $(STD_LIBS)
COBJECTS := $(addprefix $(OBJROOT)/json/static/,$(notdir $(CSOURCES:.c=.o)))
SHARED_COBJECTS := $(addprefix $(OBJROOT)/json/shared/,$(notdir $(CSOURCES:.c=.o)))
OBJECTS := $(addprefix $(OBJROOT)/json/static/,$(notdir $(SOURCES:.cpp=.o)))
SHARED_OBJECTS := $(addprefix $(OBJROOT)/json/shared/,$(notdir $(SOURCES:.cpp=.o)))
all: makedir $(TOP)/build/$(TARGET)/poco/lib/$(OUTPUT).a \
$(TOP)/build/$(TARGET)/poco/lib/$(OUTPUT).so.$(VERSION) $(HEADERS)
$(OBJROOT)/json/static/%.o: src/%.cpp
$(CXX) -c -o $@ $< $(CFLAGS)
$(OBJROOT)/json/static/%.o: src/%.c
$(CC) -c -o $@ $< $(CFLAGS)
$(OBJROOT)/json/shared/%.o: src/%.cpp
$(CXX) -c -o $@ $< $(CFLAGS) $(SHARED_FLAGS)
$(OBJROOT)/json/shared/%.o: src/%.c
$(CC) -c -o $@ $< $(CFLAGS) $(SHARED_FLAGS)
makedir:
$(MKDIR) $(TOP)/build/$(TARGET)/poco/obj/json/static
$(MKDIR) $(TOP)/build/$(TARGET)/poco/obj/json/shared
$(MKDIR) $(TOP)/build/$(TARGET)/poco/lib
$(MKDIR) $(TOP)/build/$(TARGET)/poco/include/Poco/JSON
$(INCLOUT)/%.h: %.h
$(CP) $< $(INCLOUT)/$<
$(TOP)/build/$(TARGET)/poco/lib/$(OUTPUT).a: $(OBJECTS) $(COBJECTS)
-rm -f $@
$(AR) rcs $@ $^
cp $@ $@.debug
$(STRIP) -S --strip-unneeded $@
$(TOP)/build/$(TARGET)/poco/lib/$(OUTPUT).so.$(VERSION): $(SHARED_OBJECTS) $(SHARED_COBJECTS)
$(CXX) -o $@ $(LD_FLAGS) $(SHARED_FLAGS) $(SHARED_OBJECTS) $(SHARED_COBJECTS) $(LIBS)
cp $@ $@.debug
$(STRIP) -S --strip-unneeded $@
clean:
$(RM) $(OBJECTS)