| # |
| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you 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. |
| # |
| |
| SRC_DIR = . |
| QPID_DIR = ../../.. |
| SCHEMA_FILE = $(SRC_DIR)/schema.xml |
| GEN_DIR = $(SRC_DIR)/gen |
| OUT_FILE = $(SRC_DIR)/qmf-agent |
| |
| CC = gcc |
| LIB_DIR = $(QPID_DIR)/cpp/src/.libs |
| CC_INCLUDES = -I$(SRC_DIR) -I$(QPID_DIR)/cpp/src -I$(QPID_DIR)/cpp/src/gen -I$(GEN_DIR) |
| CC_FLAGS = -g -O3 |
| LD_FLAGS = -lqmfagent -L$(LIB_DIR) |
| SPEC_DIR = $(QPID_DIR)/specs |
| MGEN_DIR = $(QPID_DIR)/cpp/managementgen |
| MGEN = $(MGEN_DIR)/qmf-gen |
| |
| vpath %.cpp $(SRC_DIR):$(GEN_DIR) |
| vpath %.d $(OBJ_DIR) |
| vpath %.o $(OBJ_DIR) |
| |
| cpps = $(wildcard $(SRC_DIR)/*.cpp) |
| cpps += $(wildcard $(GEN_DIR)/qmf/org/apache/qpid/agent/example/*.cpp) |
| deps = $(addsuffix .d, $(basename $(cpps))) |
| objects = $(addsuffix .o, $(basename $(cpps))) |
| |
| .PHONY: all clean gen |
| |
| #========================================================== |
| # Pass 0: generate source files from schema |
| ifeq ($(MAKELEVEL), 0) |
| |
| all: gen |
| @$(MAKE) |
| |
| gen: |
| $(MGEN) -o $(GEN_DIR)/qmf $(SCHEMA_FILE) |
| |
| clean: |
| rm -rf $(GEN_DIR) $(OUT_FILE) *.d *.o |
| |
| |
| #========================================================== |
| # Pass 1: generate dependencies |
| else ifeq ($(MAKELEVEL), 1) |
| |
| all: $(deps) |
| @$(MAKE) |
| |
| %.d : %.cpp |
| $(CC) -M $(CC_FLAGS) $(CC_INCLUDES) $< > $@ |
| |
| |
| #========================================================== |
| # Pass 2: build project |
| else ifeq ($(MAKELEVEL), 2) |
| |
| $(OUT_FILE) : $(objects) |
| $(CC) -o $(OUT_FILE) $(CC_FLAGS) $(LD_FLAGS) $(objects) |
| |
| include $(deps) |
| |
| %.o : %.cpp |
| $(CC) -c $(CC_FLAGS) $(CC_INCLUDES) -o $@ $< |
| |
| endif |
| |
| |