################################################## # Makefile for building lib and main test routine# ################################################## LOCATION=debian7 #LOCATION=debian6 #LOCATION=osx10.8 SYSTEM = $(shell uname -s) CXX = g++ CC = gcc #PRODORDEV += -O2 PRODORDEV += -ggdb3 CXXFLAGS = $(PRODORDEV) -Wall -Wpointer-arith -Wcast-qual -D_REENTRANT -fPIC CPPFLAGS = -fPIC -D_GNU_SOURCE CXXFLAGS += -D_GNU_SOURCE -O0 ifeq ($(LOCATION),debian7) XALAN_LIB_DIR = /usr/local/lib/ XALAN_LIB = xalan-c XALAN_INC_DIR = /usr/local/include/xalanc XERCES_LIB_DIR = /usr/local/lib/ XERCES_LIB = xerces-c XERCES_INC_DIR = /usr/local/include/xercesc endif ifeq ($(LOCATION),debian6) XALAN_LIB_DIR = /usr/lib/ XALAN_LIB = xalan-c XALAN_INC_DIR = /usr/include/xalanc XERCES_LIB_DIR = /usr/lib/ XERCES_LIB = xerces-c XERCES_INC_DIR = /usr/include/xercesc endif ifeq ($(LOCATION),osx10.8) XALAN_LIB_DIR = /opt/local/lib/ XALAN_LIB = xalan-c XALAN_INC_DIR = /opt/local/include/ XERCES_LIB_DIR = /opt/local/lib/ XERCES_LIB = xerces-c XERCES_INC_DIR = /opt/local/include/ endif include xml-deps.mk ##### Set this to the location of the library to be produced BUILD_LIB_DIR = lib BUILD_OBJ_DIR = build ###### Include Paths INCLUDE_DIR = -I . -I $(XERCES_INC_DIR) -I $(XALAN_INC_DIR) build_obj_dir = $(BUILD_OBJ_DIR) src_dirs_cpp = se se/secDNS common session xml src_dirs_c = config srcs_all = $(foreach dir,$(src_dirs_cpp),$(wildcard $(dir)/*.cpp)) srcs_all += $(foreach dir,$(src_dirs_c),$(wildcard $(dir)/*.c)) srcs = $(filter-out %Test.cpp,$(srcs_all)) objs = $(foreach file,$(srcs),$(build_obj_dir)/$(basename $(notdir $(file))).o) test_srcs = $(filter %Test.cpp,$(srcs_all)) test_objs = $(foreach file,$(test_srcs),$(build_obj_dir)/$(basename $(notdir $(file))).o) test_execs = $(subst .o,,$(test_objs)) calc_deps = \ $(CC) -MT '$(build_obj_dir)/$(basename $(notdir $@)).o $@' -MF $@ -MM $(CPPFLAGS) $(INCLUDE_DIR) $< all: dirs $(objs) $(BUILD_LIB_DIR)/libACTK1_0.so %.d: %.c $(calc_deps) %.d: %.cpp $(calc_deps) include $(foreach name,$(srcs_all),$(basename $(name)).d) vpath %.cpp ./ \ ./se\ ./se/secDNS\ ./xml\ ./common\ ./session\ vpath %.c ./config vpath %.o ../build ####### Implicit rules .SUFFIXES: .cpp .c $(BUILD_OBJ_DIR)/%.o: %.cpp $(CXX) $(CXXFLAGS) -c -o $@ $(INCLUDE_DIR) $< $(BUILD_OBJ_DIR)/%.o: %.c $(CC) $(CPPFLAGS) -c -o $@ $(INCLUDE_DIR) $< LDFLAGS_TESTS = -L$(BUILD_LIB_DIR) -lACTK1_0 \ -L$(XALAN_LIB_DIR) -lxalan-c -lxalanMsg \ -L$(XERCES_LIB_DIR) -lxerces-c \ -lssl \ -lrt $(BUILD_OBJ_DIR)/%: $(BUILD_OBJ_DIR)/%.o $(CXX) $(LDFLAGS_TESTS) -o $@ $< .PHONY: doc clean dclean ####### Build rules #libAusreg_EPP_toolkit.a: $(OBJECTS) # $(LIB_ARCHIVER) $(LIB_FLAGS) $(BUILD_LIB_DIR)/$@ $^ .PHONY: tests tests: all $(test_execs) .PHONY: dirs dirs: -mkdir -p $(BUILD_LIB_DIR) -mkdir -p $(BUILD_OBJ_DIR) libACTK1_0.so: $(BUILD_LIB_DIR)/libACTK1_0.so: $(objs) $(CXX) $(LDFLAGS) $(PRODORDEV) -shared $^ -o $@ doc: doxygen etc/Doxyfile clean: $(RM) $(objs) $(BUILD_LIB_DIR)/libACTK1_0.so *~ $(RM) -r $(BUILD_OBJ_DIR) $(RM) -r $(BUILD_LIB_DIR) dclean: $(MAKE) clean $(RM) */*.d