Convert build process to autotools
Replaced the use of a manual Makefile with the use of autotools to
automatically verify and generate the necessary build files. Follow the
steps outlined within the README.md file to build the package.
Change-Id: I60389df5a9926d4756c51ac7aab7eeca9ae8aff8
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
diff --git a/Makefile b/Makefile
deleted file mode 100644
index 7ffbc01..0000000
--- a/Makefile
+++ /dev/null
@@ -1,13 +0,0 @@
-CFLAGS = $(shell pkg-config --cflags libsystemd) -Wall -O2 -g
-LDLIBS = $(shell pkg-config --libs libsystemd)
-
-ifdef KERNEL_HEADERS
- CFLAGS += -I$(KERNEL_HEADERS)
-endif
-
-EXE = btbridged
-
-all: $(EXE)
-
-clean:
- rm -rf *.o $(EXE)
diff --git a/Makefile.am b/Makefile.am
new file mode 100644
index 0000000..737a693
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1,5 @@
+sbin_PROGRAMS = btbridged
+
+btbridged_SOURCES = btbridged.c
+btbridged_LDFLAGS = $(SYSTEMD_LIBS)
+btbridged_CFLAGS = $(SYSTEMD_CFLAGS)
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..5318177
--- /dev/null
+++ b/README.md
@@ -0,0 +1,10 @@
+## To Build
+```
+To build this package, do the following steps:
+
+ 1. ./bootstrap.sh
+ 2. ./configure ${CONFIGURE_FLAGS}
+ 3. make
+
+To full clean the repository again run `./bootstrap.sh clean`.
+```
diff --git a/bootstrap.sh b/bootstrap.sh
new file mode 100755
index 0000000..bb06e73
--- /dev/null
+++ b/bootstrap.sh
@@ -0,0 +1,20 @@
+#!/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
+ test -f linux/bt-bmc.h && rm -rf linux/bt-bmc.h
+ test -d linux && find linux -type d -empty | xargs -r rm -rf
+ 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..869d1ac
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,55 @@
+# Initialization
+AC_PREREQ([2.69])
+AC_INIT([btbridge], [1.0], [https://github.com/openbmc/btbridge/issues])
+AC_CONFIG_HEADERS([config.h])
+AM_INIT_AUTOMAKE([subdir-objects -Wall -Werror foreign dist-xz])
+AM_SILENT_RULES([yes])
+
+# Checks for programs.
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_INSTALL
+AC_PROG_MAKE_SET
+
+# Checks for libraries.
+PKG_CHECK_MODULES([SYSTEMD], [libsystemd >= 221])
+
+# Checks for header files.
+AC_CHECK_HEADER(systemd/sd-bus.h, ,[AC_MSG_ERROR([Could not find systemd/sd-bus.h...systemd developement package required])])
+AC_CHECK_HEADER(linux/bt-bmc.h,[HAVE_LINUX_BT_BMC_H=""],[HAVE_LINUX_BT_BMC_H="-I linux/bt-bmc.h"])
+AS_IF([test "$HAVE_LINUX_BT_BMC_H" != ""],
+ AC_MSG_WARN([Could not find linux/bt-bmc.h: Attempting to download locally for building from https://raw.githubusercontent.com/torvalds/linux/master/include/uapi/linux/bt-bmc.h])
+ AC_SUBST([BT_BMC_DL],[`mkdir -p linux;wget https://raw.githubusercontent.com/torvalds/linux/master/include/uapi/linux/bt-bmc.h -O linux/bt-bmc.h`])
+)
+
+# Checks for typedefs, structures, and compiler characteristics.
+AX_APPEND_COMPILE_FLAGS([-fpic -Wall -Werror], [CFLAGS])
+
+# Checks for library functions.
+LT_INIT # Removes 'unrecognized options: --with-libtool-sysroot'
+
+# Check/set gtest specific functions.
+AX_PTHREAD([GTEST_CPPFLAGS="-DGTEST_HAS_PTHREAD=1"],[GTEST_CPPFLAGS="-DGTEST_HAS_PTHREAD=0"])
+AC_SUBST(GTEST_CPPFLAGS)
+
+AC_ARG_ENABLE([oe-sdk],
+ AS_HELP_STRING([--enable-oe-sdk], [Link testcases absolutely against OE SDK so they can be ran within it.])
+)
+AC_ARG_VAR(OECORE_TARGET_SYSROOT,
+ [Path to the OE SDK SYSROOT])
+AS_IF([test "x$enable_oe_sdk" == "xyes"],
+ AS_IF([test "x$OECORE_TARGET_SYSROOT" == "x"],
+ AC_MSG_ERROR([OECORE_TARGET_SYSROOT must be set with --enable-oe-sdk])
+ )
+ AC_MSG_NOTICE([Enabling OE-SDK at $OECORE_TARGET_SYSROOT])
+ [
+ testcase_flags="-Wl,-rpath,\${OECORE_TARGET_SYSROOT}/lib"
+ testcase_flags="${testcase_flags} -Wl,-rpath,\${OECORE_TARGET_SYSROOT}/usr/lib"
+ testcase_flags="${testcase_flags} -Wl,-dynamic-linker,`find \${OECORE_TARGET_SYSROOT}/lib/ld-*.so | sort -r -n | head -n1`"
+ ]
+ AC_SUBST([OESDK_TESTCASE_FLAGS], [$testcase_flags])
+)
+
+# Create configured output
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT