From fa211ce85ff385d670562ec7332fb350d8c02e2b Mon Sep 17 00:00:00 2001 From: Jackie Huang Date: Thu, 7 Jan 2016 22:37:30 -0800 Subject: [PATCH] libtool: do not use jlibtool jlibtool is hardcoded to be used but we need to use our libtool, so fix the makfiles to make it compatible with our libtool. Upstream-Status: Inappropriate [embedded specific] Signed-off-by: Jackie Huang Signed-off-by: Yi Zhao Signed-off-by: Ankur Tyagi --- Make.inc.in | 3 +- scripts/boiler.mk | 4 ++- scripts/install.mk | 14 +++++----- scripts/libtool.mk | 69 +++++++++++++++++++++++++++------------------- 4 files changed, 52 insertions(+), 38 deletions(-) diff --git a/Make.inc.in b/Make.inc.in index fefb022a26..e78f3fe9dc 100644 --- a/Make.inc.in +++ b/Make.inc.in @@ -57,6 +57,7 @@ CPPFLAGS = @CPPFLAGS@ LIBPREFIX = @LIBPREFIX@ EXEEXT = @EXEEXT@ +LIBTOOL = @LIBTOOL@ ACLOCAL = @ACLOCAL@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -167,7 +168,7 @@ ANALYZE.c := @clang_path@ # ifeq "$(USE_SHARED_LIBS)" "yes" TESTBINDIR = ./$(BUILD_DIR)/bin/local - TESTBIN = FR_LIBRARY_PATH=./build/lib/.libs $(JLIBTOOL) --quiet --mode=execute $(TESTBINDIR) + TESTBIN = FR_LIBRARY_PATH=./build/lib/.libs $(LIBTOOL) --quiet --mode=execute $(TESTBINDIR) else TESTBINDIR = ./$(BUILD_DIR)/bin TESTBIN = ./$(BUILD_DIR)/bin diff --git a/scripts/boiler.mk b/scripts/boiler.mk index 9d70104747..f436163583 100644 --- a/scripts/boiler.mk +++ b/scripts/boiler.mk @@ -271,6 +271,7 @@ define COMPILE_C_CMDS $(Q)$(ECHO) CC $< $(Q)$(strip ${COMPILE.c} -o $@ -c -MD ${CPPFLAGS} ${CFLAGS} ${SRC_CFLAGS} ${INCDIRS} \ $(addprefix -I, ${SRC_INCDIRS}) ${SRC_DEFS} ${DEFS} $<) + ${Q}mv $(dir $@)/.libs/$(notdir $*.d) ${BUILD_DIR}/objs/$*.d endef else # @@ -286,6 +287,7 @@ define COMPILE_C_CMDS $(Q)cppcheck --enable=style -q ${CHECKFLAGS} $(filter -isystem%,${SRC_CFLAGS}) \ $(filter -I%,${SRC_CFLAGS}) $(filter -D%,${SRC_CFLAGS}) ${INCDIRS} \ $(addprefix -I,${SRC_INCDIRS}) ${SRC_DEFS} ${DEFS} --suppress=variableScope --suppress=invalidscanf $< + ${Q}mv $(dir $@)/.libs/$(notdir $*.d) ${BUILD_DIR}/objs/$*.d endef endif @@ -603,7 +605,7 @@ $(BUILD_DIR): # Define compilers and linkers # -BOOTSTRAP_BUILD = +BOOTSTRAP_BUILD = COMPILE.c = ${CC} COMPILE.cxx = ${CXX} CPP = cc -E diff --git a/scripts/install.mk b/scripts/install.mk index 916411563b..e38c1ed697 100644 --- a/scripts/install.mk +++ b/scripts/install.mk @@ -46,7 +46,7 @@ define ADD_INSTALL_RULE.exe install: $${${1}_INSTALLDIR}/$(notdir ${1}) # Install executable ${1} - $${${1}_INSTALLDIR}/$(notdir ${1}): ${JLIBTOOL} $${${1}_BUILD}/${1} | $${${1}_INSTALLDIR} + $${${1}_INSTALLDIR}/$(notdir ${1}): ${LIBTOOL} $${${1}_BUILD}/${1} | $${${1}_INSTALLDIR} @$(ECHO) INSTALL ${1} $(Q)$${PROGRAM_INSTALL} -c -m 755 $${BUILD_DIR}/bin/${1} $${${1}_INSTALLDIR}/ $(Q)$${${1}_POSTINSTALL} @@ -65,7 +65,7 @@ define ADD_INSTALL_RULE.a install: $${${1}_INSTALLDIR}/$(notdir ${1}) # Install static library ${1} - $${${1}_INSTALLDIR}/$(notdir ${1}): ${JLIBTOOL} ${1} | $${${1}_INSTALLDIR} + $${${1}_INSTALLDIR}/$(notdir ${1}): ${LIBTOOL} ${1} | $${${1}_INSTALLDIR} @$(ECHO) INSTALL ${1} $(Q)$${PROGRAM_INSTALL} -c -m 755 $${BUILD_DIR}/lib/${1} $${${1}_INSTALLDIR}/ $(Q)$${${1}_POSTINSTALL} @@ -87,9 +87,9 @@ define ADD_INSTALL_RULE.la install: $${${1}_INSTALLDIR}/$(notdir ${1}) # Install libtool library ${1} - $${${1}_INSTALLDIR}/$(notdir ${1}): ${JLIBTOOL} $${${1}_BUILD}/${1} | $${${1}_INSTALLDIR} + $${${1}_INSTALLDIR}/$(notdir ${1}): ${LIBTOOL} $${${1}_BUILD}/${1} | $${${1}_INSTALLDIR} @$(ECHO) INSTALL ${1} - $(Q)$${PROGRAM_INSTALL} -c -m 755 $${LOCAL_FLAGS_MIN} $${BUILD_DIR}/lib/${1} $${${1}_INSTALLDIR}/ + $(Q)$${PROGRAM_INSTALL} -c -m 755 $${BUILD_DIR}/lib/${1} $${${1}_INSTALLDIR}/ $(Q)$${${1}_POSTINSTALL} endef @@ -107,7 +107,7 @@ define ADD_INSTALL_RULE.man install: ${2}/$(notdir ${1}) # Install manual page ${1} - ${2}/$(notdir ${1}): ${JLIBTOOL} ${1} | ${2} + ${2}/$(notdir ${1}): ${LIBTOOL} ${1} | ${2} @$(ECHO) INSTALL $(notdir ${1}) $(Q)$${PROGRAM_INSTALL} -c -m 644 ${1} ${2}/ @@ -122,9 +122,9 @@ endef define ADD_INSTALL_RULE.dir # Install directory .PHONY: ${1} - ${1}: ${JLIBTOOL} + ${1}: ${LIBTOOL} @$(ECHO) INSTALL -d -m 755 ${1} - $(Q)$${PROGRAM_INSTALL} -d -m 755 ${1} + $(Q)$${INSTALL} -d -m 755 ${1} endef diff --git a/scripts/libtool.mk b/scripts/libtool.mk index 64c2fe0804..5ee5f321b9 100644 --- a/scripts/libtool.mk +++ b/scripts/libtool.mk @@ -29,29 +29,33 @@ ifeq "$(findstring darwin,$(HOSTINFO))" "darwin" JLIBTOOL_DEFS += -L/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib endif -JLIBTOOL := ${BUILD_DIR}/make/jlibtool - -# Add a rule to build jlibtool BEFORE any other targets. This -# means that we can use it to build the later targets. -all install: ${JLIBTOOL} - -# Note that we need to use a compilation rule that does NOT -# include referencing ${LIBTOOL}, as we don't have a jlibtool -# binary! -${JLIBTOOL}: ${top_makedir}/jlibtool.c - $(Q)mkdir -p $(dir $@) - $(Q)echo CC jlibtool.c - $(Q)${CC} $< -o $@ ${JLIBTOOL_DEFS} - -clean: jlibtool_clean - -.PHONY: jlibtool_clean -jlibtool_clean: - $(Q)rm -f ${JLIBTOOL} - -# Tell GNU Make to use this value, rather than anything specified -# on the command line. -override LIBTOOL := ${JLIBTOOL} +ifeq "${LIBTOOL}" "JLIBTOOL" + JLIBTOOL := ${BUILD_DIR}/make/jlibtool + + # Add a rule to build jlibtool BEFORE any other targets. This + # means that we can use it to build the later targets. + all install: ${JLIBTOOL} + + # Note that we need to use a compilation rule that does NOT + # include referencing ${LIBTOOL}, as we don't have a jlibtool + # binary! + ${JLIBTOOL}: ${top_makedir}/jlibtool.c + $(Q)mkdir -p $(dir $@) + $(Q)echo CC jlibtool.c + $(Q)${CC} $< -o $@ ${JLIBTOOL_DEFS} + + clean: jlibtool_clean + + .PHONY: jlibtool_clean + jlibtool_clean: + $(Q)rm -f ${JLIBTOOL} + + # Tell GNU Make to use this value, rather than anything specified + # on the command line. + override LIBTOOL := ${JLIBTOOL} +else # else we're not using jlibtool + all install: ${LIBTOOL} +endif # When using libtool, it produces a '.libs' directory. Ensure that it # is removed on "make clean", too. @@ -65,12 +69,19 @@ clean: .libs_clean # Re-define compilers and linkers # OBJ_EXT = lo -COMPILE.c = ${LIBTOOL} --silent --mode=compile ${CC} -COMPILE.cxx = ${LIBTOOL} --mode=compile ${CXX} -LINK.c = ${LIBTOOL} --silent --mode=link ${CC} -LINK.cxx = ${LIBTOOL} --mode=link ${CXX} -PROGRAM_INSTALL = ${LIBTOOL} --silent --mode=install ${INSTALL} - +ifeq "${LIBTOOL}" "JLIBTOOL" + COMPILE.c = ${LIBTOOL} --silent --mode=compile ${CC} + COMPILE.cxx = ${LIBTOOL} --mode=compile ${CXX} + LINK.c = ${LIBTOOL} --silent --mode=link ${CC} + LINK.cxx = ${LIBTOOL} --mode=link ${CXX} + PROGRAM_INSTALL = ${LIBTOOL} --silent --mode=install ${INSTALL} +else + COMPILE.c = ${LIBTOOL} --mode=compile --tag=CC ${CC} + COMPILE.cxx = ${LIBTOOL} --mode=compile --tag=CC ${CXX} + LINK.c = ${LIBTOOL} --mode=link --tag=CC ${CC} -module -export-dynamic + LINK.cxx = ${LIBTOOL} --mode=link --tag=CC ${CXX} -module -export-dynamic + PROGRAM_INSTALL = ${LIBTOOL} --mode=install ${INSTALL} +endif # LIBTOOL_ENDINGS - Given a library ending in ".a" or ".so", replace that # extension with ".la".