# # 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. # # Use APR by default till Posix is complete. USE_APR := 1 # Local options. -include options-local.mk ## Release vs. debug build. ifdef RELEASE BUILD := release CXXFLAGS := $(CXXFLAGS) -O3 -DNDEBUG else BUILD := debug CXXFLAGS := $(CXXFLAGS) -ggdb3 endif ## Platform specific options ifdef USE_APR PLATFORM := apr IGNORE := posix APR_LDFLAGS := $(shell apr-1-config --link-ld --libs) APR_CFLAGS := -DUSE_APR -I$(shell apr-1-config --includedir) CXXFLAGS := $(CXXFLAGS) $(APR_CFLAGS) LDFLAGS := $(LDFLAGS) $(APR_LDFLAGS) else PLATFORM := posix IGNORE := apr LDFLAGS := $(LDFLAGS) -lpthread -lrt -ldl endif ## Build directories. BUILD :=$(PLATFORM)-$(BUILD) BINDIR:=build/$(BUILD)/bin LIBDIR:=build/$(BUILD)/lib OBJDIR:=build/$(BUILD)/obj TESTDIR:=build/$(BUILD)/test GENDIR:=build/gen GENTOOLS_DIR:= ../gentools SPEC_DIR:=../specs BUILDDIRS := $(BINDIR) $(LIBDIR) $(OBJDIR) $(TESTDIR) $(GENDIR) SRCDIRS := src $(GENDIR) ## External dependencies: # Add location for headers and libraries of any external dependencies here EXTRA_INCLUDES := EXTRA_LIBDIRS := ## Compile flags # Warnings: Enable as many as possible, keep the code clean. Please # do not disable warnings or remove -Werror without discussing on # qpid-dev list. # # The following warnings deliberately omitted, they warn on valid code. # -Wunreachable-code -Wpadded -Winline # -Wshadow - warns about boost headers. # ifndef WARN WARN := -Werror -pedantic -Wall -Wextra -Wno-shadow -Wpointer-arith -Wcast-qual -Wcast-align -Wno-long-long -Wvolatile-register-var -Winvalid-pch -Wno-system-headers endif INCLUDES := $(SRCDIRS:%=-I%) $(EXTRA_INCLUDES) LDFLAGS := $(LDFLAGS) -L$(LIBDIR) CXXFLAGS := $(CXXFLAGS) $(WARN) -MMD -fpic $(INCLUDES) ## Macros for linking, must be late evaluated # Collect object files from a collection of src subdirs # $(call OBJ_FROM,srcdir,subdir) OBJECTS_1 = $(patsubst $1/$2/%.cpp,$(OBJDIR)/$2/%.o,$(wildcard $1/$2/*.cpp)) OBJECTS = $(foreach src,$(SRCDIRS),$(foreach sub,$1,$(call OBJECTS_1,$(src),$(sub)))) # $(call LIBFILE,name,version) LIBFILE =$(CURDIR)/$(LIBDIR)/libqpid_$1.so.$2 LIB_COMMAND = mkdir -p $(dir $@) && $(CXX) -shared -o $@ $(LDFLAGS) $(CXXFLAGS) $^ -include options-local-override.mk