1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
#
# 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
|