summaryrefslogtreecommitdiff
path: root/resource/makefile
blob: d878cf638b65724d8df12a6736b19e598f8a5d1f (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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# //******************************************************************
# //
# // Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved.
# //
# //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# //
# // Licensed under the Apache License, Version 2.0 (the "License");
# // you may not use this file except in compliance with the License.
# // You may obtain a copy of the License at
# //
# //      http://www.apache.org/licenses/LICENSE-2.0
# //
# // Unless required by applicable law or agreed to in writing, software
# // distributed under the License is distributed on an "AS IS" BASIS,
# // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# // See the License for the specific language governing permissions and
# // limitations under the License.
# //
# //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
#
# override with `make BUILD=debug`
# default to release build
BUILD     := release
CXX       := g++
#CXX	  := clang

ifeq ($(ROOT_DIR), )
	ROOT_DIR := $(PWD)
endif
ifeq ($(PLATFORM), )
	PLATFORM := "linux"
endif

DEPEND_DIR:= $(ROOT_DIR)/dependencies
CEREAL_DIR:= $(DEPEND_DIR)/cereal

OUT_DIR	  := $(ROOT_DIR)/$(BUILD)
OBJ_DIR	  := $(OUT_DIR)/obj

#TODO-CA Need to remove flag later
CXX_FLAGS.debug     := -g3 -std=c++0x -Wall -pthread -O0
CXX_FLAGS.release   := -std=c++0x -Wall -pthread -O3

CXX_INC	  := -I./include/
CXX_INC	  += -I./oc_logger/include

CXX_INC	  += -I./csdk/stack/include
CXX_INC	  += -I./csdk/ocrandom/include
CXX_INC	  += -I./csdk/logger/include
CXX_INC   += -I./csdk/connectivity/lib/libcoap-4.1.1

# Force metatargets to build:
all.PHONY: applyDepPatches prep_dirs c_sdk oc_logger_target liboc.a examples

buildScript_all.PHONY: applyDepPatches prep_dirs oc_logger_target liboc.a

all:	all.PHONY

buildScript_all:  buildScript_all.PHONY

prep_dirs: deps
	-mkdir -p $(OUT_DIR)
	-mkdir -p $(OBJ_DIR)

# used to fetch all dependencies
deps:
	-mkdir -p $(DEPEND_DIR)
#cereal fetch
	if [ ! -d "$(CEREAL_DIR)" ]; then\
		cd $(DEPEND_DIR) && git clone https://github.com/USCiLab/cereal.git;\
		cd $(CEREAL_DIR) && git checkout 7121e91e6ab8c3e6a6516d9d9c3e6804e6f65245;\
	fi

applyDepPatches: deps
#reset git to the 'base version', so we can apply our patch without issues
	cd $(CEREAL_DIR) && git reset --hard 7121e91e6ab8c3e6a6516d9d9c3e6804e6f65245;
	cd $(CEREAL_DIR) && git apply $(ROOT_DIR)/patches/cereal_gcc46.patch

c_sdk:
	cd csdk && $(MAKE) "BUILD=$(BUILD)" "PLATFORM=$(PLATFORM)"

oc_logger_target:
	cd oc_logger && $(MAKE) "BUILD=$(BUILD)"

cpp_sdk: prep_dirs c_sdk liboc.a

examples: liboc.a
	cd examples && $(MAKE) apps "BUILD=$(BUILD)"

liboc.a: OCPlatform_impl.o OCPlatform.o OCResource.o OCException.o OCUtilities.o InProcServerWrapper.o InProcClientWrapper.o OCRepresentation.o OCResourceRequest.o
	ar -cvq $(OBJ_DIR)/liboc.a $(OBJ_DIR)/OCPlatform_impl.o $(OBJ_DIR)/OCPlatform.o $(OBJ_DIR)/OCResource.o $(OBJ_DIR)/OCException.o $(OBJ_DIR)/OCUtilities.o $(OBJ_DIR)/InProcServerWrapper.o $(OBJ_DIR)/InProcClientWrapper.o $(OBJ_DIR)/OCRepresentation.o $(OBJ_DIR)/OCResourceRequest.o

OCPlatform_impl.o: src/OCPlatform_impl.cpp
	$(CXX) $(CXX_FLAGS.$(BUILD)) -o $(OBJ_DIR)/$@ -c src/OCPlatform_impl.cpp $(CXX_INC)

OCPlatform.o: src/OCPlatform.cpp
	$(CXX) $(CXX_FLAGS.$(BUILD)) -o $(OBJ_DIR)/$@ -c src/OCPlatform.cpp $(CXX_INC)

OCRepresentation.o: src/OCRepresentation.cpp
	$(CXX) $(CXX_FLAGS.$(BUILD)) -o $(OBJ_DIR)/$@ -c src/OCRepresentation.cpp $(CXX_INC) -I$(CEREAL_DIR)/include

OCResource.o: src/OCResource.cpp
	$(CXX) $(CXX_FLAGS.$(BUILD)) -o $(OBJ_DIR)/$@ -c src/OCResource.cpp $(CXX_INC)

OCException.o: src/OCException.cpp
	$(CXX) $(CXX_FLAGS.$(BUILD)) -o $(OBJ_DIR)/$@ -c src/OCException.cpp $(CXX_INC)

OCUtilities.o: src/OCUtilities.cpp
	$(CXX) $(CXX_FLAGS.$(BUILD)) -o $(OBJ_DIR)/$@ -c src/OCUtilities.cpp $(CXX_INC)

InProcServerWrapper.o: src/InProcServerWrapper.cpp
	$(CXX) $(CXX_FLAGS.$(BUILD)) -o $(OBJ_DIR)/$@ -c src/InProcServerWrapper.cpp $(CXX_INC)

InProcClientWrapper.o: src/InProcClientWrapper.cpp
	$(CXX) $(CXX_FLAGS.$(BUILD)) -o $(OBJ_DIR)/$@ -c src/InProcClientWrapper.cpp $(CXX_INC) -I$(CEREAL_DIR)/include

OCResourceRequest.o: src/OCResourceRequest.cpp
	$(CXX) $(CXX_FLAGS.$(BUILD)) -o $(OBJ_DIR)/$@ -c src/OCResourceRequest.cpp $(CXX_INC) -I$(CEREAL_DIR)/include

OCResourceRequest.o: src/OCResourceRequest.cpp
	$(CXX) $(CXX_FLAGS.$(BUILD)) -o $(OBJ_DIR)/$@ -c src/OCResourceRequest.cpp $(CXX_INC)

clean: clean_legacy
	-rm -rf release
	-rm -rf debug
	cd oc_logger && $(MAKE) clean

clean_cpp_sdk: clean_legacy
	-rm -rf release
	-rm -rf debug

clean_legacy:
	-rm -f -v $(OBJ_DIR)/liboc.a $(OBJ_DIR)/*.o
	cd csdk && $(MAKE) clean
	cd csdk && $(MAKE) deepclean