automake - autoconf
Cómo escribir múltiples condiciones en Makefile.am con "else if" (5)
Quiero compilar mi proyecto con autoconf / automake. Hay 2 condiciones definidas en mi configure.ac
AM_CONDITIONAL(HAVE_CLIENT, test $enable-client -eq 1)
AM_CONDITIONAL(HAVE_SERVER, test $enable-server -eq 1)
Quiero separar _LIBS de estas 2 condiciones en Makefile.am
if HAVE_CLIENT
libtest_LIBS = /
$(top_builddir)/libclient.la
else if HAVE_SERVER
libtest_LIBS = /
$(top_builddir)/libserver.la
else
libtest_LIBS =
endif
pero else if HAVE_SERVER
no, else if HAVE_SERVER
no funciona.
¿Cómo escribir ''else if'' en makefile.am?
Aceptaría la respuesta de ldav1s si fuera usted, pero solo quiero señalar que ''else if'' puede escribirse en términos de ''else'' y ''if'' en cualquier idioma:
if HAVE_CLIENT
libtest_LIBS = $(top_builddir)/libclient.la
else
if HAVE_SERVER
libtest_LIBS = $(top_builddir)/libserver.la
else
libtest_LIBS =
endif
endif
(La sangría es para mayor claridad. No sangre las líneas, no funcionarán ) .
Como has descubierto, no puedes hacer eso. Tu puedes hacer:
libtest_LIBS =
...
if HAVE_CLIENT
libtest_LIBS += libclient.la
endif
if HAVE_SERVER
libtest_LIBS += libserver.la
endif
El código de ptomato también se puede escribir de una manera más limpia como:
ifeq ($(TARGET_CPU),x86) TARGET_CPU_IS_X86 := 1 else ifeq ($(TARGET_CPU),x86_64) TARGET_CPU_IS_X86 := 1 else TARGET_CPU_IS_X86 := 0 endif
Esto no responde a la pregunta de OP, pero como es el resultado principal en google, lo estoy agregando aquí en caso de que sea útil para alguien más.
ifeq ($(CHIPSET),8960)
BLD_ENV_BUILD_ID="8960"
else ifeq ($(CHIPSET),8930)
BLD_ENV_BUILD_ID="8930"
else ifeq ($(CHIPSET),8064)
BLD_ENV_BUILD_ID="8064"
else ifeq ($(CHIPSET), 9x15)
BLD_ENV_BUILD_ID="9615"
else
BLD_ENV_BUILD_ID=
endif
ifdef $(HAVE_CLIENT) libtest_LIBS = / $(top_builddir)/libclient.la else ifdef $(HAVE_SERVER) libtest_LIBS = / $(top_builddir)/libserver.la else libtest_LIBS = endif endif
NOTA: NO sangrar el si entonces no funciona!