summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
authorTed Ross <tross@apache.org>2008-09-05 14:11:23 +0000
committerTed Ross <tross@apache.org>2008-09-05 14:11:23 +0000
commit3fab8e0750ab1fe0a6b68545594033559133ca6a (patch)
treecfe000496fe2e5d90a2793bf52d2978d6a9c1212 /cpp
parent8589a44b4c85c423d73c371f1dcdceca0d14f927 (diff)
downloadqpid-python-3fab8e0750ab1fe0a6b68545594033559133ca6a.tar.gz
QPID-1274 - Improved packaging for management agent and code generation tool
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@692450 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp')
-rw-r--r--cpp/configure.ac2
-rw-r--r--cpp/examples/qmf-agent/Makefile8
-rw-r--r--cpp/m4/python.m4168
-rw-r--r--cpp/managementgen/Makefile.am29
-rw-r--r--cpp/managementgen/management-types.xml56
-rwxr-xr-xcpp/managementgen/qmf-gen (renamed from cpp/managementgen/main.py)24
-rw-r--r--cpp/managementgen/qmf/__init__.py (renamed from cpp/managementgen/managementgen)7
-rwxr-xr-xcpp/managementgen/qmf/generate.py (renamed from cpp/managementgen/generate.py)8
-rwxr-xr-xcpp/managementgen/qmf/schema.py (renamed from cpp/managementgen/schema.py)0
-rw-r--r--cpp/src/Makefile.am8
-rw-r--r--cpp/src/qmf.mk31
11 files changed, 293 insertions, 48 deletions
diff --git a/cpp/configure.ac b/cpp/configure.ac
index 9c977d05d6..2b94430e29 100644
--- a/cpp/configure.ac
+++ b/cpp/configure.ac
@@ -318,6 +318,8 @@ if test $poller = xno; then
AC_MSG_ERROR([Polling mechanism not implemented for $host])
fi
+AM_PATH_PYTHON()
+
# Files to generate
AC_CONFIG_FILES([
Makefile
diff --git a/cpp/examples/qmf-agent/Makefile b/cpp/examples/qmf-agent/Makefile
index 0b37f1a295..6c4d9a867e 100644
--- a/cpp/examples/qmf-agent/Makefile
+++ b/cpp/examples/qmf-agent/Makefile
@@ -27,12 +27,10 @@ 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 = -lqpidclient -lqpidcommon -L$(LIB_DIR)
+LD_FLAGS = -lqmfagent -L$(LIB_DIR)
SPEC_DIR = $(QPID_DIR)/specs
-TYPE_FILE = $(SPEC_DIR)/management-types.xml
MGEN_DIR = $(QPID_DIR)/cpp/managementgen
-TEMPLATE_DIR = $(MGEN_DIR)/templates
-MGEN = $(MGEN_DIR)/main.py
+MGEN = $(MGEN_DIR)/qmf-gen
vpath %.cpp $(SRC_DIR):$(GEN_DIR)
vpath %.d $(OBJ_DIR)
@@ -53,7 +51,7 @@ all: gen
@$(MAKE)
gen:
- $(MGEN) $(SCHEMA_FILE) $(TYPE_FILE) $(TEMPLATE_DIR) $(GEN_DIR)
+ $(MGEN) $(SCHEMA_FILE) $(GEN_DIR)
clean:
rm -rf $(GEN_DIR) $(OUT_FILE) *.d *.o
diff --git a/cpp/m4/python.m4 b/cpp/m4/python.m4
new file mode 100644
index 0000000000..229fd5547b
--- /dev/null
+++ b/cpp/m4/python.m4
@@ -0,0 +1,168 @@
+## ------------------------ -*- Autoconf -*-
+## Python file handling
+## From Andrew Dalke
+## Updated by James Henstridge
+## ------------------------
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+# ---------------------------------------------------------------------------
+# Adds support for distributing Python modules and packages. To
+# install modules, copy them to $(pythondir), using the python_PYTHON
+# automake variable. To install a package with the same name as the
+# automake package, install to $(pkgpythondir), or use the
+# pkgpython_PYTHON automake variable.
+#
+# The variables $(pyexecdir) and $(pkgpyexecdir) are provided as
+# locations to install python extension modules (shared libraries).
+# Another macro is required to find the appropriate flags to compile
+# extension modules.
+#
+# If your package is configured with a different prefix to python,
+# users will have to add the install directory to the PYTHONPATH
+# environment variable, or create a .pth file (see the python
+# documentation for details).
+#
+# If the MINIMUM-VERSION argument is passed, AM_PATH_PYTHON will
+# cause an error if the version of python installed on the system
+# doesn't meet the requirement. MINIMUM-VERSION should consist of
+# numbers and dots only.
+AC_DEFUN([AM_PATH_PYTHON],
+ [
+ dnl Find a Python interpreter. Python versions prior to 1.5 are not
+ dnl supported because the default installation locations changed from
+ dnl $prefix/lib/site-python in 1.4 to $prefix/lib/python1.5/site-packages
+ dnl in 1.5.
+ m4_define_default([_AM_PYTHON_INTERPRETER_LIST],
+ [python python2 python2.5 python2.4 python2.3 python2.2 dnl
+python2.1 python2.0 python1.6 python1.5])
+
+ m4_if([$1],[],[
+ dnl No version check is needed.
+ # Find any Python interpreter.
+ if test -z "$PYTHON"; then
+ AC_PATH_PROGS([PYTHON], _AM_PYTHON_INTERPRETER_LIST, :)
+ fi
+ am_display_PYTHON=python
+ ], [
+ dnl A version check is needed.
+ if test -n "$PYTHON"; then
+ # If the user set $PYTHON, use it and don't search something else.
+ AC_MSG_CHECKING([whether $PYTHON version >= $1])
+ AM_PYTHON_CHECK_VERSION([$PYTHON], [$1],
+ [AC_MSG_RESULT(yes)],
+ [AC_MSG_ERROR(too old)])
+ am_display_PYTHON=$PYTHON
+ else
+ # Otherwise, try each interpreter until we find one that satisfies
+ # VERSION.
+ AC_CACHE_CHECK([for a Python interpreter with version >= $1],
+ [am_cv_pathless_PYTHON],[
+ for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST none; do
+ test "$am_cv_pathless_PYTHON" = none && break
+ AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break])
+ done])
+ # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
+ if test "$am_cv_pathless_PYTHON" = none; then
+ PYTHON=:
+ else
+ AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON])
+ fi
+ am_display_PYTHON=$am_cv_pathless_PYTHON
+ fi
+ ])
+
+ if test "$PYTHON" = :; then
+ dnl Run any user-specified action, or abort.
+ m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])])
+ else
+
+ dnl Query Python for its version number. Getting [:3] seems to be
+ dnl the best way to do this; it's what "site.py" does in the standard
+ dnl library.
+
+ AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version],
+ [am_cv_python_version=`$PYTHON -c "import sys; print sys.version[[:3]]"`])
+ AC_SUBST([PYTHON_VERSION], [$am_cv_python_version])
+
+ dnl Use the values of $prefix and $exec_prefix for the corresponding
+ dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX. These are made
+ dnl distinct variables so they can be overridden if need be. However,
+ dnl general consensus is that you shouldn't need this ability.
+
+ AC_SUBST([PYTHON_PREFIX], ['${prefix}'])
+ AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}'])
+
+ dnl At times (like when building shared libraries) you may want
+ dnl to know which OS platform Python thinks this is.
+
+ AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform],
+ [am_cv_python_platform=`$PYTHON -c "import sys; print sys.platform"`])
+ AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform])
+
+
+ dnl Set up 4 directories:
+
+ dnl pythondir -- where to install python scripts. This is the
+ dnl site-packages directory, not the python standard library
+ dnl directory like in previous automake betas. This behavior
+ dnl is more consistent with lispdir.m4 for example.
+ dnl Query distutils for this directory. distutils does not exist in
+ dnl Python 1.5, so we fall back to the hardcoded directory if it
+ dnl doesn't work.
+ AC_CACHE_CHECK([for $am_display_PYTHON script directory],
+ [am_cv_python_pythondir],
+ [am_cv_python_pythondir=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib(0,0,prefix='$PYTHON_PREFIX')" 2>/dev/null ||
+ echo "$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages"`])
+ AC_SUBST([pythondir], [$am_cv_python_pythondir])
+
+ dnl pkgpythondir -- $PACKAGE directory under pythondir. Was
+ dnl PYTHON_SITE_PACKAGE in previous betas, but this naming is
+ dnl more consistent with the rest of automake.
+
+ AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE])
+
+ dnl pyexecdir -- directory for installing python extension modules
+ dnl (shared libraries)
+ dnl Query distutils for this directory. distutils does not exist in
+ dnl Python 1.5, so we fall back to the hardcoded directory if it
+ dnl doesn't work.
+ AC_CACHE_CHECK([for $am_display_PYTHON extension module directory],
+ [am_cv_python_pyexecdir],
+ [am_cv_python_pyexecdir=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib(1,0,prefix='$PYTHON_EXEC_PREFIX')" 2>/dev/null ||
+ echo "${PYTHON_EXEC_PREFIX}/lib/python${PYTHON_VERSION}/site-packages"`])
+ AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir])
+
+ dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE)
+
+ AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE])
+
+ dnl Run any user-specified action.
+ $2
+ fi
+
+])
+
+
+# AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
+# ---------------------------------------------------------------------------
+# Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION.
+# Run ACTION-IF-FALSE otherwise.
+# This test uses sys.hexversion instead of the string equivalent (first
+# word of sys.version), in order to cope with versions such as 2.2c1.
+# hexversion has been introduced in Python 1.5.2; it's probably not
+# worth to support older versions (1.5.1 was released on October 31, 1998).
+AC_DEFUN([AM_PYTHON_CHECK_VERSION],
+ [prog="import sys, string
+# split strings by '.' and convert to numeric. Append some zeros
+# because we need at least 4 digits for the hex conversion.
+minver = map(int, string.split('$2', '.')) + [[0, 0, 0]]
+minverhex = 0
+for i in xrange(0, 4): minverhex = (minverhex << 8) + minver[[i]]
+sys.exit(sys.hexversion < minverhex)"
+ AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])
diff --git a/cpp/managementgen/Makefile.am b/cpp/managementgen/Makefile.am
index 993eeb1d20..7a415b4be6 100644
--- a/cpp/managementgen/Makefile.am
+++ b/cpp/managementgen/Makefile.am
@@ -1,8 +1,8 @@
-managementgendir = $(datadir)/managementgen
-dist_managementgen_SCRIPTS = \
- main.py
-nobase_managementgen_DATA = \
- schema.py generate.py \
+qmfdatadir = $(datadir)/qmf
+qmfpythondir = $(pythondir)
+dist_bin_SCRIPTS = \
+ qmf-gen
+nobase_qmfdata_DATA = \
templates/Args.h \
templates/Class.cpp \
templates/Class.h \
@@ -10,18 +10,9 @@ nobase_managementgen_DATA = \
templates/Package.cpp \
templates/Package.h \
management-types.xml
+nobase_qmfpython_DATA = \
+ qmf/__init__.py \
+ qmf/generate.py \
+ qmf/schema.py
-dist_bin_SCRIPTS = managementgen
-
-EXTRA_DIST = $(nobase_managementgen_DATA)
-
-# This should depend on ../../specs/management-types.xml, but can't
-# because it won't exist in a dist. This rule means that dist-gzip
-# (and rpmbuild) cannot be run purely on the cpp/ directory, the
-# cpp/../specs/ directory must exist, which is not a new dependency
-# but this is an additional instance of the dependency.
-#
-# WARNING: Because this target does not have a proper dependency
-# changes to the specs/management-types.xml will not be picked up!
-management-types.xml:
- cp $(top_srcdir)/../specs/management-types.xml .
+EXTRA_DIST = $(nobase_qmfdata_DATA) $(nobase_qmfpython_DATA)
diff --git a/cpp/managementgen/management-types.xml b/cpp/managementgen/management-types.xml
new file mode 100644
index 0000000000..31337b23bc
--- /dev/null
+++ b/cpp/managementgen/management-types.xml
@@ -0,0 +1,56 @@
+<schema-types>
+
+<!--
+ 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.
+-->
+
+<type name="objId" base="REF" cpp="ObjectId" encode="#.encode(@)" decode="#.decode(@)" accessor="direct" init="0"/>
+<type name="uint8" base="U8" cpp="uint8_t" encode="@.putOctet(#)" decode="# = @.getOctet()" accessor="direct" init="0"/>
+<type name="uint16" base="U16" cpp="uint16_t" encode="@.putShort(#)" decode="# = @.getShort()" accessor="direct" init="0"/>
+<type name="uint32" base="U32" cpp="uint32_t" encode="@.putLong(#)" decode="# = @.getLong()" accessor="direct" init="0"/>
+<type name="uint64" base="U64" cpp="uint64_t" encode="@.putLongLong(#)" decode="# = @.getLongLong()" accessor="direct" init="0"/>
+<type name="int8" base="S8" cpp="int8_t" encode="@.putInt8(#)" decode="# = @.getInt8()" accessor="direct" init="0"/>
+<type name="int16" base="S16" cpp="int16_t" encode="@.putInt16(#)" decode="# = @.getInt16()" accessor="direct" init="0"/>
+<type name="int32" base="S32" cpp="int32_t" encode="@.putInt32(#)" decode="# = @.getInt32()" accessor="direct" init="0"/>
+<type name="int64" base="S64" cpp="int64_t" encode="@.putInt64(#)" decode="# = @.getInt64()" accessor="direct" init="0"/>
+<type name="bool" base="BOOL" cpp="uint8_t" encode="@.putOctet(#?1:0)" decode="# = @.getOctet()==1" accessor="direct" init="0"/>
+<type name="sstr" base="SSTR" cpp="std::string" encode="@.putShortString(#)" decode="@.getShortString(#)" accessor="direct" init='""'/>
+<type name="lstr" base="LSTR" cpp="std::string" encode="@.putLongString(#)" decode="@.getLongString(#)" accessor="direct" init='""'/>
+<type name="absTime" base="ABSTIME" cpp="uint64_t" encode="@.putLongLong(#)" decode="# = @.getLongLong()" accessor="direct" init="0"/>
+<type name="deltaTime" base="DELTATIME" cpp="uint64_t" encode="@.putLongLong(#)" decode="# = @.getLongLong()" accessor="direct" init="0"/>
+<type name="float" base="FLOAT" cpp="float" encode="@.putFloat(#)" decode="# = @.getFloat()" accessor="direct" init="0."/>
+<type name="double" base="DOUBLE" cpp="double" encode="@.putDouble(#)" decode="# = @.getDouble()" accessor="direct" init="0."/>
+<type name="uuid" base="UUID" cpp="framing::Uuid" encode="#.encode(@)" decode="#.decode(@)" accessor="direct"/>
+<type name="map" base="FTABLE" cpp="framing::FieldTable" encode="#.encode(@)" decode="#.decode(@)" accessor="direct"/>
+
+<type name="hilo8" base="U8" cpp="uint8_t" encode="@.putOctet(#)" decode="# = @.getOctet()" style="wm" accessor="counter" init="0"/>
+<type name="hilo16" base="U16" cpp="uint16_t" encode="@.putShort(#)" decode="# = @.getShort()" style="wm" accessor="counter" init="0"/>
+<type name="hilo32" base="U32" cpp="uint32_t" encode="@.putLong(#)" decode="# = @.getLong()" style="wm" accessor="counter" init="0"/>
+<type name="hilo64" base="U64" cpp="uint64_t" encode="@.putLongLong(#)" decode="# = @.getLongLong()" style="wm" accessor="counter" init="0"/>
+
+<type name="count8" base="U8" cpp="uint8_t" encode="@.putOctet(#)" decode="# = @.getOctet()" accessor="counter" init="0" perThread="y"/>
+<type name="count16" base="U16" cpp="uint16_t" encode="@.putShort(#)" decode="# = @.getShort()" accessor="counter" init="0" perThread="y"/>
+<type name="count32" base="U32" cpp="uint32_t" encode="@.putLong(#)" decode="# = @.getLong()" accessor="counter" init="0" perThread="y"/>
+<type name="count64" base="U64" cpp="uint64_t" encode="@.putLongLong(#)" decode="# = @.getLongLong()" accessor="counter" init="0" perThread="y"/>
+
+<!-- Min/Max/Average statistics -->
+<type name="mma32" base="U32" cpp="uint32_t" encode="@.putLong(#)" decode="# = @.getLong()" style="mma" accessor="direct" init="0" perThread="y"/>
+<type name="mma64" base="U64" cpp="uint64_t" encode="@.putLongLong(#)" decode="# = @.getLongLong()" style="mma" accessor="direct" init="0" perThread="y"/>
+<type name="mmaTime" base="DELTATIME" cpp="uint64_t" encode="@.putLongLong(#)" decode="# = @.getLongLong()" style="mma" accessor="direct" init="0" perThread="y"/>
+
+</schema-types>
diff --git a/cpp/managementgen/main.py b/cpp/managementgen/qmf-gen
index 4459177a53..a29a4074fd 100755
--- a/cpp/managementgen/main.py
+++ b/cpp/managementgen/qmf-gen
@@ -18,26 +18,34 @@
# specific language governing permissions and limitations
# under the License.
#
+import sys
+import os
+from qmf.schema import PackageSchema, SchemaClass
+from qmf.generate import Generator
+from optparse import OptionParser
-from schema import PackageSchema, SchemaClass
-from generate import Generator
-from optparse import OptionParser
+dataPath = os.path.dirname(sys.argv[0])
# Set command line options
-usage = "usage: %prog [options] schema-document type-document template-directory out-directory"
+usage = "usage: %prog [options] schema-document out-directory"
parser = OptionParser (usage=usage)
parser.add_option ("-m", "--makefile", dest="makefile", metavar="FILE",
help="Makefile fragment")
+parser.add_option ("-t", "--typefile", dest="typefile", metavar="FILE", default=dataPath + "/management-types.xml",
+ help="Type descriptor file")
+parser.add_option ("-d", "--templatedir", dest="templatedir", metavar="DIR", default=dataPath + "/templates",
+ help="Template directory")
(opts, args) = parser.parse_args ()
-if len (args) < 4:
+if len (args) < 2:
parser.error ("Too few arguments")
+typefile = opts.typefile
+templatedir = opts.templatedir
+
schemafile = args[0]
-typefile = args[1]
-templatedir = args[2]
-outdir = args[3]
+outdir = args[1]
gen = Generator (outdir, templatedir)
schema = PackageSchema (typefile, schemafile, opts)
diff --git a/cpp/managementgen/managementgen b/cpp/managementgen/qmf/__init__.py
index 55ea846270..caef6cc58b 100644
--- a/cpp/managementgen/managementgen
+++ b/cpp/managementgen/qmf/__init__.py
@@ -1,5 +1,3 @@
-#!/usr/bin/env python
-
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
@@ -19,8 +17,3 @@
# under the License.
#
-import sys
-
-sys.path.append("/usr/share/managementgen")
-
-import main
diff --git a/cpp/managementgen/generate.py b/cpp/managementgen/qmf/generate.py
index 6024173f67..c1edf0b8e2 100755
--- a/cpp/managementgen/generate.py
+++ b/cpp/managementgen/qmf/generate.py
@@ -107,10 +107,10 @@ class Makefile:
def genGenSources (self, stream, variables):
mdir = variables["mgenDir"]
sdir = variables["specDir"]
- stream.write (mdir + "/main.py \\\n")
- stream.write (" " + mdir + "/generate.py \\\n")
- stream.write (" " + mdir + "/schema.py \\\n")
- stream.write (" " + sdir + "/management-types.xml \\\n")
+ stream.write (mdir + "/qmf-gen \\\n")
+ stream.write (" " + mdir + "/qmf/generate.py \\\n")
+ stream.write (" " + mdir + "/qmf/schema.py \\\n")
+ stream.write (" " + mdir + "/management-types.xml \\\n")
stream.write (" " + sdir + "/management-schema.xml \\\n")
first = True
for template in self.templateFiles:
diff --git a/cpp/managementgen/schema.py b/cpp/managementgen/qmf/schema.py
index e666bdbb39..e666bdbb39 100755
--- a/cpp/managementgen/schema.py
+++ b/cpp/managementgen/qmf/schema.py
diff --git a/cpp/src/Makefile.am b/cpp/src/Makefile.am
index 3f46874b20..25c27549c3 100644
--- a/cpp/src/Makefile.am
+++ b/cpp/src/Makefile.am
@@ -28,10 +28,8 @@ $(rgen_generator):
# Management generator.
mgen_dir=$(top_srcdir)/managementgen
-mgen_cmd=$(mgen_dir)/main.py -m $(srcdir)/managementgen.mk \
- $(top_srcdir)/../specs/management-schema.xml \
- $(top_srcdir)/../specs/management-types.xml \
- $(mgen_dir)/templates gen/qpid/management
+mgen_cmd=$(mgen_dir)/qmf-gen -m $(srcdir)/managementgen.mk \
+ $(top_srcdir)/../specs/management-schema.xml gen/qpid/management
$(srcdir)/managementgen.mk $(mgen_broker_cpp) $(dist_qpid_management_HEADERS): mgen.timestamp
mgen.timestamp: $(mgen_generator)
@@ -100,6 +98,7 @@ lib_LTLIBRARIES = libqpidcommon.la libqpidbroker.la libqpidclient.la
include cluster.mk
include acl.mk
+include qmf.mk
# The logger library uses boost::date_time to format time.
# We have to disable the unused parameters warning to get around
@@ -325,7 +324,6 @@ libqpidclient_la_LIBADD = libqpidcommon.la -luuid
libqpidclient_la_SOURCES = \
$(rgen_client_srcs) \
- qpid/agent/ManagementAgentImpl.cpp \
qpid/client/AckPolicy.cpp \
qpid/client/Bounds.cpp \
qpid/client/ConnectionImpl.cpp \
diff --git a/cpp/src/qmf.mk b/cpp/src/qmf.mk
new file mode 100644
index 0000000000..3b60be1b96
--- /dev/null
+++ b/cpp/src/qmf.mk
@@ -0,0 +1,31 @@
+#
+# 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.
+#
+
+#
+# qmf agent library makefile fragment, to be included in Makefile.am
+#
+lib_LTLIBRARIES += libqmfagent.la
+
+libqmfagent_la_SOURCES = \
+ qpid/agent/ManagementAgent.h \
+ qpid/agent/ManagementAgentImpl.cpp \
+ qpid/agent/ManagementAgentImpl.h
+
+libqmfagent_la_LIBADD = libqpidclient.la
+