summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile75
1 files changed, 42 insertions, 33 deletions
diff --git a/Makefile b/Makefile
index 31f714b8..aa22e952 100644
--- a/Makefile
+++ b/Makefile
@@ -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