summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick Williams <patrick@stwcx.xyz>2016-12-09 14:30:45 -0600
committerPatrick Williams <patrick@stwcx.xyz>2017-01-18 09:40:31 -0600
commit0be05ee21426bdb5e77337560e99324d0a2f3301 (patch)
tree147eb69babc84fcb8d6ea322d9c4038a8f6e4aea
parent6d51435b5239d970d8265256c4b1a66b838f3b58 (diff)
downloadphosphor-dbus-interfaces-0be05ee21426bdb5e77337560e99324d0a2f3301.tar.gz
phosphor-dbus-interfaces-0be05ee21426bdb5e77337560e99324d0a2f3301.zip
build: autotools files for libphosphor_dbus.so
Use the interface YAML files present to generate the server.cpp and server.hpp files, build them into a shared library, and install. Change-Id: Ib08704c399975f42aa77f911a7bc7dc33bacba99 Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
-rw-r--r--Makefile.am16
-rw-r--r--Makefile.interfaces.in1
-rwxr-xr-xbootstrap.sh18
-rw-r--r--configure.ac39
-rwxr-xr-xgenerate_makefile.sh53
5 files changed, 127 insertions, 0 deletions
diff --git a/Makefile.am b/Makefile.am
new file mode 100644
index 0000000..7ac8318
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1,16 @@
+AM_DEFAULT_SOURCE_EXT = .cpp
+
+nobase_include_HEADERS = ## These get filled in by Makefile.interfaces
+
+libphosphor_dbusdir = ${libdir}
+libphosphor_dbus_LTLIBRARIES = libphosphor_dbus.la
+libphosphor_dbus_la_LDFLAGS = $(SYSTEMD_LIBS) -version-info 0:0:0 -shared
+libphosphor_dbus_la_CXXFLAGS = $(SYSTEMD_CFLAGS)
+
+BUILT_SOURCES = libphosphor_dbus.cpp
+CLEANFILES = libphosphor_dbus.cpp
+
+clean-local: clean-dbus
+
+-include Makefile.interfaces
+
diff --git a/Makefile.interfaces.in b/Makefile.interfaces.in
new file mode 100644
index 0000000..714e6d0
--- /dev/null
+++ b/Makefile.interfaces.in
@@ -0,0 +1 @@
+# Empty file so that 'configure' attempts to generate Makefile.interfaces.
diff --git a/bootstrap.sh b/bootstrap.sh
new file mode 100755
index 0000000..50b75b7
--- /dev/null
+++ b/bootstrap.sh
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+AUTOCONF_FILES="Makefile.in aclocal.m4 ar-lib autom4te.cache compile \
+ config.guess config.h.in config.sub configure depcomp install-sh \
+ ltmain.sh missing *libtool test-driver"
+
+case $1 in
+ clean)
+ test -f Makefile && make maintainer-clean
+ for file in ${AUTOCONF_FILES}; do
+ find -name "$file" | xargs -r rm -rf
+ done
+ exit 0
+ ;;
+esac
+
+autoreconf -i
+echo 'Run "./configure ${CONFIGURE_FLAGS} && make"'
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 0000000..bba445b
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,39 @@
+# Initialization
+AC_PREREQ([2.69])
+AC_INIT([phosphor-dbus-interfaces], [1.0], [https://github.com/openbmc/phosphor-dbus-interfaces])
+AC_CONFIG_HEADERS([config.h])
+AM_INIT_AUTOMAKE([subdir-objects -Wall -Werror foreign dist-xz])
+AM_SILENT_RULES([yes])
+
+# Checks for programs.
+AC_PROG_CXX
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_INSTALL
+AC_PROG_MAKE_SET
+AC_PROG_SED
+AC_CHECK_PROG([FIND], find, find)
+AC_CHECK_PROG([BASENAME], basename, basename)
+AC_CHECK_PROG([DIRNAME], dirname, dirname)
+
+# Checks for libraries.
+PKG_CHECK_MODULES([SYSTEMD], [libsystemd >= 221],,
+ [AC_MSG_ERROR(["systemd required and not found."])])
+# TODO: Add sdbusplus.
+
+# Checks for header files.
+
+# Checks for typedefs, structures, and compiler characteristics.
+AX_CXX_COMPILE_STDCXX_14([noext])
+AX_APPEND_COMPILE_FLAGS([-Wall -Werror], [CFLAGS])
+AX_APPEND_COMPILE_FLAGS([-Wall -Werror], [CXXFLAGS])
+
+# Checks for library functions.
+LT_INIT([dlopen disable-static shared])
+LT_LIB_DLLOAD
+
+# Create configured output
+AC_CONFIG_FILES([Makefile.interfaces],
+ [./generate_makefile.sh > Makefile.interfaces])
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
diff --git a/generate_makefile.sh b/generate_makefile.sh
new file mode 100755
index 0000000..e0f0511
--- /dev/null
+++ b/generate_makefile.sh
@@ -0,0 +1,53 @@
+#!/bin/sh
+
+toplevel_dirs=xyz
+interfaces=`find $toplevel_dirs -name "*.interface.yaml"`
+
+for i in ${interfaces};
+do
+ iface_path=`dirname $i`/`basename $i .interface.yaml`
+ iface=`echo $iface_path | sed 's/\//./g'`
+ cat <<MAKEFILE
+
+${i%.interface.yaml}/server.cpp: ${i} ${i%.interface.yaml}/server.hpp
+ @mkdir -p \`dirname \$@\`
+ sdbus++ -r \$(srcdir) interface server-cpp ${iface} > \$@
+
+${i%.interface.yaml}/server.hpp: ${i}
+ @mkdir -p \`dirname \$@\`
+ sdbus++ -r \$(srcdir) interface server-header ${iface} > \$@
+
+MAKEFILE
+
+done
+
+echo "libphosphor_dbus_cpp_SOURCES = \\"
+for i in ${interfaces};
+do
+ echo " ${i%.interface.yaml}/server.cpp \\"
+done
+echo
+
+echo "libphosphor_dbus_hpp_SOURCES = \\"
+for i in ${interfaces};
+do
+ echo " ${i%.interface.yaml}/server.hpp \\"
+done
+echo
+
+cat << MAKEFILE
+libphosphor_dbus.cpp: \$(libphosphor_dbus_cpp_SOURCES)
+ cat \$^ > \$@
+
+nobase_include_HEADERS = \$(libphosphor_dbus_hpp_SOURCES)
+
+.PHONY: clean-dbus
+clean-dbus:
+ for i in \$(libphosphor_dbus_cpp_SOURCES) \\
+ \$(libphosphor_dbus_hpp_SOURCES); \\
+ do \\
+ test -e \$\$i && rm \$\$i ; \\
+ test -d \`dirname \$\$i\` && rmdir -p \`dirname \$\$i\` ; \\
+ true; \\
+ done
+MAKEFILE
OpenPOWER on IntegriCloud