diff options
-rw-r--r-- | Makefile.am | 16 | ||||
-rw-r--r-- | Makefile.interfaces.in | 1 | ||||
-rwxr-xr-x | bootstrap.sh | 18 | ||||
-rw-r--r-- | configure.ac | 39 | ||||
-rwxr-xr-x | generate_makefile.sh | 53 |
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 |