From fe621d8ae21039b22735227fabe5a0ee2b461256 Mon Sep 17 00:00:00 2001 From: Joseph Morrow Date: Fri, 8 Aug 2014 16:43:33 -0400 Subject: [PATCH] Updated C++ stack makefiles to build in DEBUG or RELEASE modes. --- Makefile | 67 ++++++++++++++++++++++++++++++++++--------------------- README | 4 +++- examples/Makefile | 64 ++++++++++++++++++++++++++++++++++++++++------------ 3 files changed, 94 insertions(+), 41 deletions(-) diff --git a/Makefile b/Makefile index 4e20df1..b15a504 100644 --- a/Makefile +++ b/Makefile @@ -1,51 +1,66 @@ +# override with `make BUILD=release` +# default to release build +BUILD := release +CXX := g++ +#CXX := clang +OUT_DIR := $(PWD)/$(BUILD) +OBJ_DIR := $(OUT_DIR)/obj +SAMPLES_OUT_DIR := $(OUT_DIR)/samples -CXX=g++ -#CXX=clang -CXX_FLAGS=-std=c++11 -Wall -pthread -CXX_INC=-I./include/ -I./csdk/stack/include -I./csdk/ocsocket/include -I./csdk/ocrandom/include -I./csdk/logger/include +CXX_FLAGS.debug := -g3 -std=c++11 -Wall -pthread + +CXX_FLAGS.release := -std=c++11 -Wall -pthread + +CXX_INC := -I./include/ +CXX_INC += -I./csdk/stack/include +CXX_INC += -I./csdk/ocsocket/include +CXX_INC += -I./csdk/ocrandom/include +CXX_INC += -I./csdk/logger/include # Force metatargets to build: -.PHONY: c_sdk simpleserver simpleclient +.PHONY: prep_dirs c_sdk simpleserver simpleclient + +all: .PHONY -all: .PHONY +prep_dirs: + -mkdir $(OUT_DIR) + -mkdir $(OBJ_DIR) + -mkdir $(SAMPLES_OUT_DIR) c_sdk: - cd csdk && $(MAKE) + cd csdk && $(MAKE) "BUILD=$(BUILD)" examples: - cd examples && $(MAKE) + cd examples && $(MAKE) "BUILD=$(BUILD)" -simpleserver: OCLib.a simpleserver.o - $(CXX) $(CXX_FLAGS) -o simpleserver simpleserver.o OCLib.a csdk/liboctbstack.a +simpleserver: OCLib.a + $(CXX) $(CXX_FLAGS.$(BUILD)) -o $(SAMPLES_OUT_DIR)/$@ examples/simpleserver.cpp $(CXX_INC) $(OBJ_DIR)/OCLib.a csdk/liboctbstack.a -simpleclient: OCLib.a simpleclient.o - $(CXX) $(CXX_FLAGS) -o simpleclient simpleclient.o OCLib.a csdk/liboctbstack.a +simpleclient: OCLib.a + $(CXX) $(CXX_FLAGS.$(BUILD)) -o $(SAMPLES_OUT_DIR)/$@ examples/simpleclient.cpp $(CXX_INC) $(OBJ_DIR)/OCLib.a csdk/liboctbstack.a OCLib.a: OCPlatform.o OCResource.o OCReflect.o InProcServerWrapper.o InProcClientWrapper.o - ar -cvq OCLib.a OCPlatform.o OCResource.o OCReflect.o InProcServerWrapper.o InProcClientWrapper.o + ar -cvq $(OBJ_DIR)/OCLib.a $(OBJ_DIR)/OCPlatform.o $(OBJ_DIR)/OCResource.o $(OBJ_DIR)/OCReflect.o $(OBJ_DIR)/InProcServerWrapper.o $(OBJ_DIR)/InProcClientWrapper.o OCReflect.o: OCLib/OCReflect.cpp - $(CXX) $(CXX_FLAGS) -c OCLib/OCReflect.cpp $(CXX_INC) + $(CXX) $(CXX_FLAGS.$(BUILD)) -o $(OBJ_DIR)/$@ -c OCLib/OCReflect.cpp $(CXX_INC) OCPlatform.o: OCLib/OCPlatform.cpp - $(CXX) $(CXX_FLAGS) -c OCLib/OCPlatform.cpp $(CXX_INC) + $(CXX) $(CXX_FLAGS.$(BUILD)) -o $(OBJ_DIR)/$@ -c OCLib/OCPlatform.cpp $(CXX_INC) OCResource.o: OCLib/OCResource.cpp - $(CXX) $(CXX_FLAGS) -c OCLib/OCResource.cpp $(CXX_INC) + $(CXX) $(CXX_FLAGS.$(BUILD)) -o $(OBJ_DIR)/$@ -c OCLib/OCResource.cpp $(CXX_INC) InProcServerWrapper.o: OCLib/InProcServerWrapper.cpp - $(CXX) $(CXX_FLAGS) -c OCLib/InProcServerWrapper.cpp $(CXX_INC) + $(CXX) $(CXX_FLAGS.$(BUILD)) -o $(OBJ_DIR)/$@ -c OCLib/InProcServerWrapper.cpp $(CXX_INC) InProcClientWrapper.o: OCLib/InProcClientWrapper.cpp - $(CXX) $(CXX_FLAGS) -c OCLib/InProcClientWrapper.cpp $(CXX_INC) - -simpleserver.o : examples/simpleserver.cpp - $(CXX) $(CXX_FLAGS) -c examples/simpleserver.cpp $(CXX_INC) - -simpleclient.o : examples/simpleclient.cpp - $(CXX) $(CXX_FLAGS) -c examples/simpleclient.cpp $(CXX_INC) + $(CXX) $(CXX_FLAGS.$(BUILD)) -o $(OBJ_DIR)/$@ -c OCLib/InProcClientWrapper.cpp $(CXX_INC) -clean: - rm -f -v OCLib.a *.o simpleserver simpleclient +clean: clean_legacy + -rm -rf release + -rm -rf debug cd csdk && $(MAKE) clean cd csdk && $(MAKE) deepclean +clean_legacy: + -rm -f -v OCLib.a *.o simpleserver simpleclient diff --git a/README b/README index 5e8e9b8..2f789a5 100644 --- a/README +++ b/README @@ -2,7 +2,9 @@ Builds with g++ 4.6, 4.8, 4.9. -Run "make" to build OCLib.a and the examples. +Run "make" to build OCLib.a, the examples, and TBStack in RELEASE mode. + +Run "make BUILD=debug" to build OCLib.a, the examples, and TBStack in DEBUG mode. OCProject/ ├── csdk diff --git a/examples/Makefile b/examples/Makefile index 15b585e..a1cf459 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -1,33 +1,69 @@ -CXX=g++ -g -O0 +# override with `make BUILD=release` +# default to release build +BUILD := release +CXX := g++ #CXX=clang -lstdc++ -g -O0 +OUT_DIR := $(PWD)/$(BUILD) +OBJ_DIR := $(OUT_DIR)/obj -CXX_FLAGS=-std=c++11 -Wall -pthread +CXX_FLAGS.debug := -g3 -std=c++11 -Wall -pthread -CXX_INC=-I../include/ -I./client/ -I../csdk/stack/include -I../csdk/ocsocket/include -I../csdk/ocrandom/include -I../csdk/logger/include +CXX_FLAGS.release := -std=c++11 -Wall -pthread -# LIB_SRC0=../OCLib/OCReflect.cpp ../OCLib/OCProperties.cpp ../OCLib/OCObserver.cpp ../OCLib/OCResource.cpp ./client/MyObserverHandler.cpp ../OCLib/OCServer.cpp -LIB_SRC0=../OCLib/OCReflect.cpp ../OCLib/OCProperties.cpp ../OCLib/OCObserver.cpp ../OCLib/OCResource.cpp ../OCLib/OCServer.cpp +CXX_INC := -I../include/ +CXX_INC += -I./client/ +CXX_INC += -I../csdk/stack/include +CXX_INC += -I../csdk/ocsocket/include +CXX_INC += -I../csdk/ocrandom/include +CXX_INC += -I../csdk/logger/include -LIB_SRC1=../OCLib/OCReflect.cpp ../OCLib/OCObserver.cpp ./client/MyObserverHandler.cpp ../OCLib/OCResource.cpp ../OCLib/OCSecurityModel.cpp ../OCLib/InProcClientWrapper.cpp ../OCLib/OCPlatform.cpp ../OCLib/InProcServerWrapper.cpp ../csdk/liboctbstack.a ../OCLib/OCServer.cpp +LIB_SRC0 := ../OCLib/OCReflect.cpp +LIB_SRC0 += ../OCLib/OCProperties.cpp +LIB_SRC0 += ../OCLib/OCObserver.cpp +LIB_SRC0 += ../OCLib/OCResource.cpp +LIB_SRC0 += ../OCLib/OCServer.cpp -CXX_LIBS=-lboost_regex +LIB_SRC1 := ../OCLib/OCReflect.cpp +LIB_SRC1 += ../OCLib/OCObserver.cpp +LIB_SRC1 += ./client/MyObserverHandler.cpp +LIB_SRC1 += ../OCLib/OCResource.cpp +LIB_SRC1 += ../OCLib/OCSecurityModel.cpp +LIB_SRC1 += ../OCLib/InProcClientWrapper.cpp +LIB_SRC1 += ../OCLib/OCPlatform.cpp +LIB_SRC1 += ../OCLib/InProcServerWrapper.cpp +LIB_SRC1 += ../csdk/liboctbstack.a +LIB_SRC1 += ../OCLib/OCServer.cpp -.PHONY: ocreflect test_OCReflect test_OCClient test_properties +CXX_LIBS := -Lboost_regex + +.PHONY: prep_dirs ocreflect test_OCReflect test_OCClient test_properties all: .PHONY +prep_dirs: + -mkdir $(OUT_DIR) + -mkdir $(OBJ_DIR) + ocreflect: test_properties test_OCClient test_properties: - - $(CXX) $(CXX_FLAGS) -o test_properties reflect/test_properties.cpp $(LIB_SRC0) $(CXX_INC) $(CXX_LIBS) + $(CXX) $(CXX_FLAGS.$(BUILD)) -o $(OUT_DIR)/$@ reflect/test_properties.cpp $(LIB_SRC0) $(CXX_INC) $(CXX_LIBS) test_OCReflect: - $(CXX) $(CXX_FLAGS) -o test_OCReflect reflect/test_OCReflect.cpp ../OCLib/OCReflect.cpp ../OCLib/OCProperties.cpp ../OCLib/OCServer.cpp $(CXX_INC) $(CXX_LIBS) + $(CXX) $(CXX_FLAGS.$(BUILD)) -o $(OUT_DIR)/$@ reflect/test_OCReflect.cpp ../OCLib/OCReflect.cpp ../OCLib/OCProperties.cpp ../OCLib/OCServer.cpp $(CXX_INC) $(CXX_LIBS) test_OCClient: - $(CXX) $(CXX_FLAGS) -o test_OCClient reflect/test_OCClient.cpp $(LIB_SRC0) $(CXX_INC) $(CXX_LIBS) + $(CXX) $(CXX_FLAGS.$(BUILD)) -o $(OUT_DIR)/$@ reflect/test_OCClient.cpp $(LIB_SRC0) $(CXX_INC) $(CXX_LIBS) -clean: - rm -f -v test_properties test_OCReflect test_OCClient +clean: clean_legacy + -rm -rf release/* + -rm -rf release/obj/*.o + -rm -rf release/obj/*.a + -rmdir release + -rm -rf debug/* + -rm -rf debug/obj/*.o + -rm -rf debug/obj/*.a + -rmdir debug +clean_legacy: + -rm -f -v test_properties test_OCReflect test_OCClient -- 2.7.4