blob: 4c5daa688863423c1295a10913957591cb0b5474 [file] [log] [blame]
#
# 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