Add better libtool support in config.gnu.mk

When LIBTOOL is set, then we use libtool all the way.
Otherwise, we manually perform the compile/link stages.
This commit is contained in:
Christophe de Dinechin 2018-04-10 14:25:02 +02:00
parent b678656455
commit e7c15a35ae
1 changed files with 23 additions and 5 deletions

View File

@ -33,7 +33,6 @@ CPP= $(CC) -E
PYTHON= python
AR= $(CROSS_COMPILE:%=%-)ar -rcs
RANLIB= $(CROSS_COMPILE:%=%-)ranlib
LIBTOOL= libtool -no_warning_for_no_symbols
INSTALL= install
CAT= cat /dev/null
@ -42,7 +41,6 @@ CAT= cat /dev/null
# Compilation flags
#------------------------------------------------------------------------------
CFLAGS_PIC= -fPIC
CFLAGS_STD= $(CC_STD:%=-std=%) $(CFLAGS_PIC)
CXXFLAGS_STD= $(CXX_STD:%=-std=%) $(CFLAGS_PIC)
@ -59,10 +57,16 @@ DEPFLAGS= -MD -MP -MF $(@).d -MT $@
# File extensions
#------------------------------------------------------------------------------
EXE_EXT=
ifdef LIBTOOL
OBJ_EXT= .lo
LIB_EXT= .la
DLL_EXT= .la
else
OBJ_EXT= .o
LIB_EXT= .a
EXE_EXT=
DLL_EXT= .so
endif
EXE_PFX=
LIB_PFX= lib
@ -72,14 +76,28 @@ DLL_PFX= lib
# Build rules
#------------------------------------------------------------------------------
MAKE_DIR= mkdir -p $*
MAKE_OBJDIR= $(MAKE_DIR) && touch $@
ifdef LIBTOOL
MIQ_COMPILE= $(LIBTOOL) --silent --mode=compile
MIQ_LINK= $(LIBTOOL) --silent --mode=link
MAKE_CC= $(MIQ_COMPILE) $(CC) $(MIQ_CFLAGS) -c $< -o $@ $(DEPFLAGS)
MAKE_CXX= $(MIQ_COMPILE) $(CXX) $(MIQ_CXXFLAGS) -c $< -o $@ $(DEPFLAGS)
MAKE_AS= $(MIQ_COMPILE) $(CC) $(MIQ_CFLAGS) -c $< -o $@ $(DEPFLAGS)
MAKE_LIB= $(MIQ_LINK) $(LD) $(MIQ_LDFLAGS) $(MIQ_TOLINK) -rpath $(PREFIX_DLL) -o $@
MAKE_DLL= $(MAKE_LIB)
MAKE_EXE= $(MIQ_LINK) $(LD) $(MIQ_LDFLAGS) $(MIQ_TOLINK) -o $@
else
# Non-libtool case: manage manually
CFLAGS_PIC= -fPIC
MAKE_CC= $(CC) $(MIQ_CFLAGS) -c $< -o $@ $(DEPFLAGS)
MAKE_CXX= $(CXX) $(MIQ_CXXFLAGS) -c $< -o $@ $(DEPFLAGS)
MAKE_AS= $(CC) $(MIQ_CFLAGS) -c $< -o $@ $(DEPFLAGS)
MAKE_DIR= mkdir -p $*
MAKE_OBJDIR= $(MAKE_DIR) && touch $@
MAKE_LIB= $(AR) $@ $(MIQ_TOLINK) && $(RANLIB) $@
MAKE_DLL= $(LD) -shared $(MIQ_LDFLAGS) $(MIQ_TOLINK) -o $@ -Wl,-rpath $(PREFIX_DLL)
MAKE_EXE= $(LD) $(MIQ_LDFLAGS) $(MIQ_TOLINK) -o $@
endif
LINK_DIR_OPT= -L
LINK_LIB_OPT= -l