summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Barth <msbarth@us.ibm.com>2016-10-18 14:25:10 -0500
committerMatthew Barth <msbarth@us.ibm.com>2016-10-19 17:02:30 -0500
commitce3490e71f9f91bd20dbb9ac037079de4a3580a8 (patch)
tree780ce3cc71df419a5788000d3b1344101fe69496
parent155c34fbb61071f5b51240c4a50b49391e0877c1 (diff)
downloadipmi-fru-parser-ce3490e71f9f91bd20dbb9ac037079de4a3580a8.tar.gz
ipmi-fru-parser-ce3490e71f9f91bd20dbb9ac037079de4a3580a8.zip
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: Iaef09f17006ee51ac45f84c6c59826dcc567e279 Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
-rw-r--r--Makefile82
-rw-r--r--Makefile.am20
-rw-r--r--README.md10
-rwxr-xr-xbootstrap.sh18
-rw-r--r--configure.ac56
5 files changed, 104 insertions, 82 deletions
diff --git a/Makefile b/Makefile
deleted file mode 100644
index df6e8bf..0000000
--- a/Makefile
+++ /dev/null
@@ -1,82 +0,0 @@
-LIBS += libwritefrudata.so
-HOST_LIBS += libstrgfnhandler.so
-libwritefrudata.so_OBJS += frup.o writefrudata.o
-libwritefrudata.so_VERSION = 1
-libstrgfnhandler.so_OBJS += strgfnhandler.o
-libstrgfnhandler.so_VERSION = 1
-
-EXES += phosphor-read-eeprom
-
-phosphor-read-eeprom_OBJS += readeeprom.o argument.o
-phosphor-read-eeprom_LDLIBS += mapper
-phosphor-read-eeprom_EXTRA_LIBS += writefrudata
-libstrgfnhandler.so_EXTRA_LIBS += writefrudata
-libwritefrudata.so_LDLIBS += mapper
-libwritefrudata.so_NEEDED += libsystemd
-phosphor-read-eeprom_NEEDED += libsystemd
-
-#### -----------------------------------------------------------------------####
-# #
-## Compilare Regulas Sequi ##
-# #
-#### -----------------------------------------------------------------------####
-OPTFLAGS ?= -O3 -g -pipe -G -K
-CFLAGS ?= $(OPTFLAGS)
-CXXFLAGS ?= $(OPTFLAGS)
-CFLAGS += -Wall -Werror -flto -fPIC
-CXXFLAGS += --std=gnu++14 -Wall -Werror -flto -fPIC
-
-__PKG_CONFIG = $(if $1,$(shell pkg-config $2 $1))
-__EXTRA_LIB_RESOLV = $(if $1,$1)
-
-define __BUILD_EXE
-$1 : $$($1_OBJS) | $$(LIBS) $$(HOST_LIBS)
- $$(LINK.cpp) -o $$@ $$^ $(call __EXTRA_LIB_RESOLV,$(addprefix -l,$($1_EXTRA_LIBS))) -L. $(addprefix -l,$($1_LDLIBS)) $(call __PKG_CONFIG,$($1_NEEDED),--libs)
-
-$(eval CXXFLAGS += $(call __PKG_CONFIG,$($1_NEEDED),--cflags))
-
-#include $$($1_OBJS:.o=.d)
-endef
-
-$(foreach exe,$(EXES),$(eval $(call __BUILD_EXE,$(exe))))
-
-define __BUILD_LIB
-$1 : $$($1_OBJS) | $$(addsuffix .so,$$(addprefix lib,$$($1_EXTRA_LIBS)))
- $$(LINK.cpp) -fPIC -shared -Wl,-soname,$$@ -o $$(addsuffix .$($1_VERSION), $$@) $$^ $(call __EXTRA_LIB_RESOLV,$(addprefix -l,$($1_EXTRA_LIBS))) -L. $(addprefix -l,$($1_LDLIBS)) $(call __PKG_CONFIG,$($1_NEEDED),--libs)
- ln -sf $$(addsuffix .$($1_VERSION), $$@) $1
-
-$(eval CXXFLAGS += $(call __PKG_CONFIG,$($1_NEEDED),--cflags))
-
-#include $$($1_OBJS:.o=.d)
-endef
-
-$(foreach lib,$(LIBS),$(eval $(call __BUILD_LIB,$(lib))))
-$(foreach lib,$(HOST_LIBS),$(eval $(call __BUILD_LIB,$(lib))))
-
-.PHONY: clean
-clean:
- $(RM) $(foreach exe,$(EXES),$(exe) $($(exe)_OBJS)) \
- $(foreach lib,$(LIBS),$(addsuffix .$($(lib)_VERSION), $(lib)) $(lib) $($(lib)_OBJS)) \
- $(foreach lib,$(HOST_LIBS),$(addsuffix .$($(lib)_VERSION), $(lib)) $(lib) $($(lib)_OBJS))
-
-DESTDIR ?= /
-BINDIR ?= /usr/bin
-LIBDIR ?= /usr/lib
-
-.PHONY: install
-install:
- $(if $(EXES),\
- install -m 0755 -d $(DESTDIR)$(BINDIR) && \
- install -m 0755 $(EXES) $(DESTDIR)$(BINDIR) \
- )
- $(if $(LIBS),\
- install -m 0755 -d $(DESTDIR)$(LIBDIR)/host-ipmid && \
- install -m 0755 $(foreach lib,$(HOST_LIBS),$(addsuffix .$($(lib)_VERSION), $(lib))) $(DESTDIR)$(LIBDIR)/host-ipmid && \
- install -m 0755 $(foreach lib,$(LIBS),$(addsuffix .$($(lib)_VERSION), $(lib))) $(DESTDIR)$(LIBDIR) \
- $(foreach lib,$(HOST_LIBS), && ln -sf $(addsuffix .$($(lib)_VERSION), $(lib)) $(DESTDIR)$(LIBDIR)/host-ipmid/$(lib)) \
- $(foreach lib,$(LIBS), && ln -sf $(addsuffix .$($(lib)_VERSION), $(lib)) $(DESTDIR)$(LIBDIR)/$(lib)) \
- )
-
-.DEFAULT_GOAL: all
-.PHONY: all
-all: $(EXES) $(LIBS)
diff --git a/Makefile.am b/Makefile.am
new file mode 100644
index 0000000..71a3593
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1,20 @@
+AM_DEFAULT_SOURCE_EXT = .cpp
+
+sbin_PROGRAMS = phosphor-read-eeprom
+
+phosphor_read_eeprom_SOURCES = readeeprom.cpp argument.cpp
+phosphor_read_eeprom_LDFLAGS = $(SYSTEMD_LIBS) $(libmapper_LIBS)
+phosphor_read_eeprom_CXXFLAGS = $(SYSTEMD_CFLAGS) $(libmapper_CFLAGS)
+phosphor_read_eeprom_LDADD = libwritefrudata.la
+
+libwritefrudatadir = ${libdir}
+libwritefrudata_LTLIBRARIES = libwritefrudata.la
+libwritefrudata_la_SOURCES = frup.c writefrudata.cpp
+libwritefrudata_la_LDFLAGS = $(SYSTEMD_LIBS) $(libmapper_LIBS) -version-info 1:0:0 -shared
+libwritefrudata_la_CXXFLAGS = $(SYSTEMD_CFLAGS) $(libmapper_CFLAGS)
+
+libstrgfnhandlerdir = ${libdir}/host-ipmid
+libstrgfnhandler_LTLIBRARIES = libstrgfnhandler.la
+libstrgfnhandler_la_SOURCES = strgfnhandler.cpp
+libstrgfnhandler_la_LDFLAGS = -version-info 1:0:0 -shared
+libstrgfnhandler_la_LIBADD = libwritefrudata.la
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..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..ae03a47
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,56 @@
+# Initialization
+AC_PREREQ([2.69])
+AC_INIT([ipmi-fru-parser], [1.0], [https://github.com/openbmc/ipmi-fru-parser/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_CXX
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_INSTALL
+AC_PROG_MAKE_SET
+AC_PROG_LN_S
+
+# Checks for libraries.
+AC_CHECK_LIB([mapper], [mapper_get_service])
+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 development package required])])
+AC_CHECK_HEADER(host-ipmid/ipmid-api.h, ,[AC_MSG_ERROR([Could not find host-ipmid/ipmid-api.h...host-ipmid package required])])
+
+# Checks for typedefs, structures, and compiler characteristics.
+AX_CXX_COMPILE_STDCXX_14([noext])
+AX_APPEND_COMPILE_FLAGS([-flto -fPIC -Wall -Werror], [CXXFLAGS])
+AX_APPEND_COMPILE_FLAGS([-flto -fPIC -Wall -Werror], [CFLAGS])
+
+# Checks for library functions.
+LT_INIT([shared])
+
+# 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
OpenPOWER on IntegriCloud