| Patrick Venture | c7ca291 | 2018-11-02 11:38:33 -0700 | [diff] [blame] | 1 | # Initialization | 
|  | 2 | AC_PREREQ([2.69]) | 
|  | 3 | AC_INIT([phosphor-ipmi-flash], [0.1], [https://github.com/openbmc/phosphor-ipmi-flash/issues]) | 
|  | 4 | AC_LANG([C++]) | 
|  | 5 | AC_CONFIG_HEADERS([config.h]) | 
| Patrick Venture | 30993b3 | 2018-11-28 14:52:00 -0800 | [diff] [blame] | 6 | AC_CONFIG_MACRO_DIRS([m4]) | 
| Patrick Venture | c7ca291 | 2018-11-02 11:38:33 -0700 | [diff] [blame] | 7 | AM_INIT_AUTOMAKE([subdir-objects -Wall -Werror foreign dist-xz]) | 
|  | 8 | AM_SILENT_RULES([yes]) | 
|  | 9 |  | 
|  | 10 | # Checks for programs. | 
|  | 11 | AC_PROG_CXX | 
|  | 12 | AM_PROG_AR | 
|  | 13 | AC_PROG_INSTALL | 
|  | 14 | AC_PROG_MAKE_SET | 
|  | 15 |  | 
|  | 16 | # Checks for typedefs, structures, and compiler characteristics. | 
|  | 17 | AX_CXX_COMPILE_STDCXX_17([noext]) | 
|  | 18 | AX_APPEND_COMPILE_FLAGS([-Wall -Werror], [CXXFLAGS]) | 
|  | 19 |  | 
|  | 20 | # Checks for library functions. | 
|  | 21 | LT_INIT # Required for systemd linking | 
|  | 22 |  | 
|  | 23 | # Checks for libraries. | 
| Patrick Venture | 4b4ea21 | 2018-11-21 21:23:53 -0800 | [diff] [blame] | 24 | PKG_CHECK_MODULES( | 
|  | 25 | [SDBUSPLUS], | 
|  | 26 | [sdbusplus], | 
|  | 27 | [], | 
|  | 28 | [AC_MSG_ERROR([The openbmc/sdbusplus package is required])] | 
|  | 29 | ) | 
|  | 30 | PKG_CHECK_MODULES( | 
|  | 31 | [PHOSPHOR_LOGGING], | 
|  | 32 | [phosphor-logging], | 
|  | 33 | [], | 
|  | 34 | [AC_MSG_ERROR([Could not find phosphor-logging...openbmc/phosphor-logging package required])] | 
|  | 35 | ) | 
|  | 36 | AC_CHECK_HEADER( | 
|  | 37 | [blobs-ipmid], | 
|  | 38 | [AC_MSG_ERROR(["phosphor-ipmi-blobs required and not found."])] | 
|  | 39 | ) | 
| Patrick Venture | c7ca291 | 2018-11-02 11:38:33 -0700 | [diff] [blame] | 40 | AX_PTHREAD([], [AC_MSG_ERROR(["pthread required and not found"])]) | 
|  | 41 |  | 
| Patrick Venture | fa6c4d9 | 2018-11-02 18:34:53 -0700 | [diff] [blame] | 42 | # Configurability | 
|  | 43 | # Enable static layout for firmware image staging. | 
|  | 44 | AC_ARG_ENABLE([static-layout], | 
|  | 45 | AS_HELP_STRING([--enable-static-layout], | 
|  | 46 | [Enable static layout firmware update via Blobs])) | 
|  | 47 | AS_IF([test "x$enable_static_layout" = "xyes"], [ | 
|  | 48 | AX_APPEND_COMPILE_FLAGS([-DENABLE_STATIC_LAYOUT], [CXXFLAGS]) | 
|  | 49 | ]) | 
| Patrick Venture | d46b811 | 2018-11-15 13:38:55 -0800 | [diff] [blame] | 50 | # Enable tarball for firmware image staging. | 
|  | 51 | AC_ARG_ENABLE([tarball-ubi], | 
|  | 52 | AS_HELP_STRING([--enable-tarball-ubi], | 
|  | 53 | [Enable tarball firmware update via Blobs])) | 
|  | 54 | AS_IF([test "x$enanble_tarball_ubi" = "xyes"], [ | 
|  | 55 | AX_APPEND_COMPILE_FLAGS([-DENABLE_TARBALL_UBI], [CXXFLAGS]) | 
|  | 56 | ]) | 
| Patrick Venture | 002916a | 2018-11-15 10:38:07 -0800 | [diff] [blame] | 57 |  | 
| Patrick Venture | 4306f68 | 2018-11-06 11:06:02 -0800 | [diff] [blame] | 58 | # Enable P2A, and or LPC (block-transfer is always enabled). | 
| Patrick Venture | 192d60f | 2018-11-06 11:11:59 -0800 | [diff] [blame] | 59 | AC_ARG_ENABLE([pci-bridge], | 
|  | 60 | AS_HELP_STRING([--enable-pci-bridge], | 
|  | 61 | [Enable pci-bridge transport mechanism])) | 
|  | 62 | AS_IF([test "x$enable_pci_bridge" = "xyes"], [ | 
|  | 63 | AX_APPEND_COMPILE_FLAGS([-DENABLE_PCI_BRIDGE], [CXXFLAGS]) | 
|  | 64 | ]) | 
|  | 65 | AC_ARG_ENABLE([lpc-bridge], | 
|  | 66 | AS_HELP_STRING([--enable-lpc-bridge], | 
|  | 67 | [Enable lpc-bridge transport mechanism])) | 
|  | 68 | AS_IF([test "x$enable_lpc_bridge" = "xyes"], [ | 
|  | 69 | AX_APPEND_COMPILE_FLAGS([-DENABLE_LPC_BRIDGE], [CXXFLAGS]) | 
|  | 70 | ]) | 
| Patrick Venture | fa6c4d9 | 2018-11-02 18:34:53 -0700 | [diff] [blame] | 71 |  | 
| Patrick Venture | 002916a | 2018-11-15 10:38:07 -0800 | [diff] [blame] | 72 | # The address used for mapping P2A or LPC into the BMC's memory-space: | 
|  | 73 | # e.g. https://github.com/openbmc/linux/blob/1da2ce51886a3b2f5db2087f26c661e13ee13b84/arch/arm/boot/dts/aspeed-bmc-quanta-q71l.dts#L26 | 
|  | 74 | # or https://github.com/openbmc/linux/blob/1da2ce51886a3b2f5db2087f26c661e13ee13b84/arch/arm/boot/dts/aspeed-bmc-opp-zaius.dts#L166 | 
|  | 75 | # for PCI, this address is passed back to the host and is used directly. | 
|  | 76 | AC_ARG_VAR(MAPPED_ADDRESS, [The base address of the memory region reserved for mapping.]) | 
|  | 77 | AS_IF([test "x$MAPPED_ADDRESS" == "x"], | 
|  | 78 | [AC_DEFINE(MAPPED_ADDRESS, [0], [Default address to 0.])], | 
|  | 79 | [AC_DEFINE(MAPPED_ADDRESS, [$MAPPED_ADDRESS], [Value for memory region mapping.])] | 
|  | 80 | ) | 
|  | 81 |  | 
| Patrick Venture | e772842 | 2018-11-14 20:16:33 -0800 | [diff] [blame] | 82 | AC_ARG_ENABLE([aspeed-lpc], | 
|  | 83 | AS_HELP_STRING([--enable-aspeed-lpc], | 
|  | 84 | [Enable external transfers using Aspeed LPC])) | 
|  | 85 | AS_IF([test "x$enable_aspeed_lpc" = "xyes"], [ | 
|  | 86 | AC_CHECK_HEADER(linux/aspeed-lpc-ctrl.h, | 
|  | 87 | [HAVE_UAPI_LINUX_LPC_CTRL_H=""], | 
|  | 88 | [HAVE_UAPI_LINUX_LPC_CTRL_H="-I linux/aspeed-lpc-ctrl.h"]) | 
|  | 89 | AS_IF([test "$HAVE_UAPI_LINUX_LPC_CTRL_H" != ""], | 
| Patrick Venture | e9ad2ec | 2018-12-13 19:11:39 -0800 | [diff] [blame] | 90 | AC_MSG_WARN([Could not find linux/aspeed-lpc-ctrl.h: Attempting to download locally for building from openbmc/linux/+/dev-4.18]) | 
| Patrick Venture | e772842 | 2018-11-14 20:16:33 -0800 | [diff] [blame] | 91 | AC_SUBST([BT_BMC_DL], | 
|  | 92 | [`mkdir -p linux;wget https://raw.githubusercontent.com/openbmc/linux/dev-4.18/include/uapi/linux/aspeed-lpc-ctrl.h -O linux/aspeed-lpc-ctrl.h`]) | 
|  | 93 | ) | 
|  | 94 | AX_APPEND_COMPILE_FLAGS([-DASPEED_LPC], [CXXFLAGS]) | 
|  | 95 | ]) | 
|  | 96 | AC_ARG_ENABLE([nuvoton-lpc], | 
|  | 97 | AS_HELP_STRING([--enable-nuvoton-lpc], | 
|  | 98 | [Enable external transfers using Nuvoton LPC SHM])) | 
|  | 99 | AS_IF([test "x$enable_nuvoton_lpc" = "xyes"], [ | 
|  | 100 | AX_APPEND_COMPILE_FLAGS([-DNUVOTON_LPC], [CXXFLAGS]) | 
|  | 101 | ]) | 
|  | 102 |  | 
| Patrick Venture | 35a82f3 | 2018-11-15 13:34:22 -0800 | [diff] [blame] | 103 | AC_ARG_VAR(STATIC_HANDLER_STAGED_NAME, [The file to use for staging the firmware update.]) | 
|  | 104 | AS_IF([test "x$STATIC_HANDLER_STAGED_NAME" == "x"], [STATIC_HANDLER_STAGED_NAME="/run/initramfs/bmc-image"]) | 
|  | 105 | AC_DEFINE_UNQUOTED([STATIC_HANDLER_STAGED_NAME], ["$STATIC_HANDLER_STAGED_NAME"], [The file to use for staging the firmware update.]) | 
|  | 106 |  | 
| Patrick Venture | d46b811 | 2018-11-15 13:38:55 -0800 | [diff] [blame] | 107 | AC_ARG_VAR(TARBALL_STAGED_NAME, [The file to use for staging the firmware update.]) | 
|  | 108 | AS_IF([test "x$TARBALL_STAGED_NAME" == "x"], [TARBALL_STAGED_NAME="/tmp/image-update.tar"]) | 
|  | 109 | AC_DEFINE_UNQUOTED([TARBALL_STAGED_NAME], ["$TARBALL_STAGED_NAME"], [The file to use for staging the firmware update.]) | 
|  | 110 |  | 
| Patrick Venture | 35a82f3 | 2018-11-15 13:34:22 -0800 | [diff] [blame] | 111 | AC_ARG_VAR(HASH_FILENAME, [The file to use for the hash provided.]) | 
|  | 112 | AS_IF([test "x$HASH_FILENAME" == "x"], [HASH_FILENAME="/tmp/bmc.sig"]) | 
|  | 113 | AC_DEFINE_UNQUOTED([HASH_FILENAME], ["$HASH_FILENAME"], [The file to use for the hash provided.]) | 
|  | 114 |  | 
| Patrick Venture | 440bc38 | 2018-12-13 19:10:55 -0800 | [diff] [blame^] | 115 | AC_CHECK_HEADER(linux/ipmi.h, [HAVE_LINUX_IPMI_H=""], [HAVE_LINUX_IPMI_H="-I linux/ipmi.h"]) | 
|  | 116 | AS_IF([test "$HAVE_LINUX_IPMI_H" != ""], | 
|  | 117 | AC_MSG_WARN([Could not find linux/ipmi.h: Attempting to download locally for building from openbmc/linux/+/dev-4.18]) | 
|  | 118 | AC_SUBST([IPMI_BMC_DL], | 
|  | 119 | [`mkdir -p linux;wget https://raw.githubusercontent.com/openbmc/linux/dev-4.18/include/uapi/linux/ipmi.h -O linux/ipmi.h`]) | 
|  | 120 | ) | 
|  | 121 |  | 
|  | 122 | AC_CHECK_HEADER(linux/ipmi_msgdefs.h, [HAVE_LINUX_IPMIMSGDEFS_H=""], [HAVE_LINUX_IPMIMSGDEFS_H="-I linux/ipmi_msgdefs.h"]) | 
|  | 123 | AS_IF([test "$HAVE_LINUX_IPMIMSGDEFS_H" != ""], | 
|  | 124 | AC_MSG_WARN([Could not find linux/ipmi_msgdefs.h: Attempting to download locally for building from openbmc/linux/+/dev-4.18]) | 
|  | 125 | AC_SUBST([IPMIMSG_BMC_DL], | 
|  | 126 | [`mkdir -p linux;wget https://raw.githubusercontent.com/openbmc/linux/dev-4.18/include/uapi/linux/ipmi_msgdefs.h -O linux/ipmi_msgdefs.h`]) | 
|  | 127 | ) | 
|  | 128 |  | 
| Patrick Venture | c7ca291 | 2018-11-02 11:38:33 -0700 | [diff] [blame] | 129 | # Check/set gtest specific functions. | 
|  | 130 | PKG_CHECK_MODULES([GTEST], [gtest], [], [AC_MSG_NOTICE([gtest not found, tests will not build])]) | 
|  | 131 | PKG_CHECK_MODULES([GMOCK], [gmock], [], [AC_MSG_NOTICE([gmock not found, tests will not build])]) | 
|  | 132 | PKG_CHECK_MODULES([GTEST_MAIN], [gtest_main], [], [AC_MSG_NOTICE([gtest_main not found, tests will not build])]) | 
|  | 133 |  | 
|  | 134 | # Add --enable-oe-sdk flag to configure script | 
|  | 135 | AC_ARG_ENABLE([oe-sdk], | 
|  | 136 | AS_HELP_STRING([--enable-oe-sdk], [Link testcases absolutely against OE SDK so they can be ran within it.]) | 
|  | 137 | ) | 
|  | 138 |  | 
|  | 139 | # Check for OECORE_TARGET_SYSROOT in the environment. | 
|  | 140 | AC_ARG_VAR(OECORE_TARGET_SYSROOT, | 
|  | 141 | [Path to the OE SDK SYSROOT]) | 
|  | 142 |  | 
|  | 143 | # Configure OESDK_TESTCASE_FLAGS environment variable, which will be later | 
|  | 144 | # used in test/Makefile.am | 
|  | 145 | AS_IF([test "x$enable_oe_sdk" == "xyes"], | 
|  | 146 | AS_IF([test "x$OECORE_TARGET_SYSROOT" == "x"], | 
|  | 147 | AC_MSG_ERROR([OECORE_TARGET_SYSROOT must be set with --enable-oe-sdk]) | 
|  | 148 | ) | 
|  | 149 | AC_MSG_NOTICE([Enabling OE-SDK at $OECORE_TARGET_SYSROOT]) | 
|  | 150 | [ | 
|  | 151 | testcase_flags="-Wl,-rpath,\${OECORE_TARGET_SYSROOT}/lib" | 
|  | 152 | testcase_flags="${testcase_flags} -Wl,-rpath,\${OECORE_TARGET_SYSROOT}/usr/lib" | 
|  | 153 | testcase_flags="${testcase_flags} -Wl,-dynamic-linker,`find \${OECORE_TARGET_SYSROOT}/lib/ld-*.so | sort -r -n | head -n1`" | 
|  | 154 | ] | 
|  | 155 | AC_SUBST([OESDK_TESTCASE_FLAGS], [$testcase_flags]) | 
|  | 156 | ) | 
|  | 157 |  | 
|  | 158 | # Create configured output | 
| Patrick Venture | bf58cd6 | 2018-12-11 09:05:46 -0800 | [diff] [blame] | 159 | AC_CONFIG_FILES([Makefile test/Makefile tools/Makefile]) | 
| Patrick Venture | c7ca291 | 2018-11-02 11:38:33 -0700 | [diff] [blame] | 160 | AC_OUTPUT |