diff options
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 75 |
1 files changed, 42 insertions, 33 deletions
@@ -233,6 +233,14 @@ LDFLAGS += -static PKG_CONFIG += --static endif +# Optional Libraries +LIBZIP_VERSION := $(shell ${PKG_CONFIG} --modversion libzip 2>/dev/null) +HAVE_LIBZIP := $(if ${LIBZIP_VERSION},1) +ifneq (${HAVE_LIBZIP},) + CFLAGS += -DHAVE_LIBZIP $(shell ${PKG_CONFIG} --cflags libzip) + LIBZIP_LIBS := $(shell ${PKG_CONFIG} --libs libzip) +endif + # Determine QEMU architecture needed, if any ifeq (${ARCH},${HOST_ARCH}) # Same architecture; no need for QEMU @@ -592,11 +600,12 @@ UTIL_SCRIPTS += \ utility/vbutil_what_keys endif -# These utilities should be linked statically. +# These utilities should also provide static linked version (*_s). UTIL_NAMES_STATIC = \ utility/crossystem -UTIL_NAMES = ${UTIL_NAMES_STATIC} \ +UTIL_NAMES = \ + ${UTIL_NAMES_STATIC} \ utility/dumpRSAPublicKey \ utility/tpmc @@ -621,9 +630,9 @@ LZMA_LIBS := $(shell ${PKG_CONFIG} --libs liblzma) YAML_LIBS := $(shell ${PKG_CONFIG} --libs yaml-0.1) endif -UTIL_BINS_STATIC := $(addprefix ${BUILD}/,${UTIL_NAMES_STATIC}) -UTIL_BINS = $(addprefix ${BUILD}/,${UTIL_NAMES}) -ALL_OBJS += $(addsuffix .o,${UTIL_BINS} ${UTIL_BINS_STATIC}) +UTIL_BINS_STATIC := $(addsuffix _s,$(addprefix ${BUILD}/,${UTIL_NAMES_STATIC})) +UTIL_BINS = $(addprefix ${BUILD}/,${UTIL_NAMES}) ${UTIL_BINS_STATIC} +ALL_OBJS += $(addsuffix .o,${UTIL_BINS}) # Scripts for signing stuff. @@ -644,8 +653,6 @@ SIGNING_COMMON = scripts/image_signing/common_minimal.sh # The unified firmware utility will eventually replace all the others FUTIL_BIN = ${BUILD}/futility/futility -# But we still need both static (tiny) and dynamic (with openssl) versions. -FUTIL_STATIC_BIN = ${FUTIL_BIN}_s # These are the executables that are now built in to futility. We'll create # symlinks for these so the old names will still work. @@ -658,41 +665,41 @@ FUTIL_SYMLINKS = \ vbutil_key \ vbutil_keyblock -FUTIL_STATIC_SRCS = \ - futility/futility.c \ - futility/cmd_dump_fmap.c \ - futility/cmd_gbb_utility.c \ - futility/misc.c \ - futility/ryu_root_header.c - FUTIL_SRCS = \ - ${FUTIL_STATIC_SRCS} \ + futility/futility.c \ + futility/bdb_helper.c \ futility/cmd_bdb.c \ futility/cmd_create.c \ + futility/cmd_dump_fmap.c \ futility/cmd_dump_kernel_config.c \ + futility/cmd_gbb_utility.c \ futility/cmd_load_fmap.c \ futility/cmd_pcr.c \ futility/cmd_show.c \ futility/cmd_sign.c \ + futility/cmd_update.c \ futility/cmd_validate_rec_mrc.c \ futility/cmd_vbutil_firmware.c \ + futility/cmd_vbutil_firmware.c \ futility/cmd_vbutil_kernel.c \ - futility/cmd_vbutil_key.c \ futility/cmd_vbutil_keyblock.c \ - futility/file_type.c \ + futility/cmd_vbutil_key.c \ + futility/cmd_vbutil_key.c \ futility/file_type_bios.c \ + futility/file_type.c \ futility/file_type_rwsig.c \ futility/file_type_usbpd1.c \ + futility/misc.c \ + futility/ryu_root_header.c \ + futility/updater.c \ + futility/updater_archive.c \ + futility/updater_quirks.c \ futility/vb1_helper.c \ - futility/vb2_helper.c \ - futility/bdb_helper.c + futility/vb2_helper.c -# List of commands built in futility and futility_s. -FUTIL_STATIC_CMD_LIST = ${BUILD}/gen/futility_static_cmds.c +# List of commands built in futility. FUTIL_CMD_LIST = ${BUILD}/gen/futility_cmds.c -FUTIL_STATIC_OBJS = ${FUTIL_STATIC_SRCS:%.c=${BUILD}/%.o} \ - ${FUTIL_STATIC_CMD_LIST:%.c=%.o} FUTIL_OBJS = ${FUTIL_SRCS:%.c=${BUILD}/%.o} ${FUTIL_CMD_LIST:%.c=%.o} ${FUTIL_OBJS}: INCLUDES += -Ihost/lib21/include -Ifirmware/lib21/include \ @@ -1120,22 +1127,21 @@ signing_install: ${SIGNING_SCRIPTS} ${SIGNING_SCRIPTS_DEV} ${SIGNING_COMMON} # new Firmware Utility .PHONY: futil -futil: ${FUTIL_STATIC_BIN} ${FUTIL_BIN} +futil: ${FUTIL_BIN} -${FUTIL_STATIC_BIN}: ${FUTIL_STATIC_OBJS} ${UTILLIB} - @${PRINTF} " LD $(subst ${BUILD}/,,$@)\n" - ${Q}${LD} -o $@ ${CFLAGS} ${LDFLAGS} -static $^ ${LDLIBS} +# FUTIL_LIBS is shared by FUTIL_BIN and TEST_FUTIL_BINS. +FUTIL_LIBS = ${CRYPTO_LIBS} ${LIBZIP_LIBS} -${FUTIL_BIN}: LDLIBS += ${CRYPTO_LIBS} ${FWLIB20} +${FUTIL_BIN}: LDLIBS += ${FUTIL_LIBS} ${FUTIL_BIN}: ${FUTIL_OBJS} ${UTILLIB} ${FWLIB20} ${UTILBDB} @${PRINTF} " LD $(subst ${BUILD}/,,$@)\n" ${Q}${LD} -o $@ ${CFLAGS} ${LDFLAGS} $^ ${LDLIBS} .PHONY: futil_install -futil_install: ${FUTIL_BIN} ${FUTIL_STATIC_BIN} +futil_install: ${FUTIL_BIN} @${PRINTF} " INSTALL futility\n" ${Q}mkdir -p ${UB_DIR} - ${Q}${INSTALL} -t ${UB_DIR} ${FUTIL_BIN} ${FUTIL_STATIC_BIN} + ${Q}${INSTALL} -t ${UB_DIR} ${FUTIL_BIN} ${Q}for prog in ${FUTIL_SYMLINKS}; do \ ln -sf futility "${UB_DIR}/$$prog"; done @@ -1169,7 +1175,7 @@ ${TEST_BINS}: LIBS = ${TESTLIB} ${UTILLIB} ${TEST_FUTIL_BINS}: ${FUTIL_OBJS} ${UTILLIB} ${UTILBDB} ${TEST_FUTIL_BINS}: INCLUDES += -Ifutility ${TEST_FUTIL_BINS}: OBJS += ${FUTIL_OBJS} ${UTILLIB} ${UTILBDB} -${TEST_FUTIL_BINS}: LDLIBS += ${CRYPTO_LIBS} +${TEST_FUTIL_BINS}: LDLIBS += ${FUTIL_LIBS} ${TEST2X_BINS}: ${FWLIB2X} ${TEST2X_BINS}: LIBS += ${FWLIB2X} @@ -1193,6 +1199,10 @@ ${TESTLIB}: ${TESTLIB_OBJS} # Generic build rules. LIBS and OBJS can be overridden to tweak the generic # rules for specific targets. +${BUILD}/%_s: ${BUILD}/%.o ${OBJS} ${LIBS} + @${PRINTF} " LD (static) $(subst ${BUILD}/,,$@)\n" + ${Q}${LD} -o $@ ${CFLAGS} ${LDFLAGS} $< ${OBJS} ${LIBS} ${LDLIBS} + ${BUILD}/%: ${BUILD}/%.o ${OBJS} ${LIBS} @${PRINTF} " LD $(subst ${BUILD}/,,$@)\n" ${Q}${LD} -o $@ ${CFLAGS} ${LDFLAGS} $< ${OBJS} ${LIBS} ${LDLIBS} @@ -1237,6 +1247,7 @@ ${UTIL_DEFAULTS}: # Some utilities need external crypto functions CRYPTO_LIBS := $(shell ${PKG_CONFIG} --libs libcrypto) +CRYPTO_STATIC_LIBS := $(shell ${PKG_CONFIG} --libs libcrypto --static) ${BUILD}/utility/dumpRSAPublicKey: LDLIBS += ${CRYPTO_LIBS} ${BUILD}/utility/pad_digest_utility: LDLIBS += ${CRYPTO_LIBS} @@ -1315,9 +1326,7 @@ endif # Generates the list of commands defined in futility by running grep in the # source files looking for the DECLARE_FUTIL_COMMAND() macro usage. -${FUTIL_STATIC_CMD_LIST}: ${FUTIL_STATIC_SRCS} ${FUTIL_CMD_LIST}: ${FUTIL_SRCS} -${FUTIL_CMD_LIST} ${FUTIL_STATIC_CMD_LIST}: @${PRINTF} " GEN $(subst ${BUILD}/,,$@)\n" ${Q}rm -f $@ $@_t $@_commands ${Q}mkdir -p ${BUILD}/gen |