2014-04-30 40 views
1

要看到什么,我试图做见下图:确定架构在Makefile.am用automake

我的问题是我怎么能有条件地设置我的Makefile.am内AM_CPPFLAGS或 my_lib_la_CPPFLAGS。这样,当配置 运行正确的CPPFLAGS设置?

目前我做的东西的影响:

lib_xml_wrapper_la_CPPFLAGS = -I../../ 

UNAME_S = $(shell uname -s) 
UNAME_P = $(shell uname -p) 
ifeq ($(UNAME_S),Linux)  
    lib_xml_wrapper_la_CPPFLAGS += -DLINUX 
    ifeq ($(UNAME_P),x86_64) 
     lib_xml_wrapper_la_CPPFLAGS += -D AMD64 
    endif 
    ifeq ($(UNAME_P),x86_64) 
     lib_xml_wrapper_la_CPPFLAGS += -I../../../external/xerces-c-3.1.1-x86_64-linux-gcc-3.4/include/ 
    endif 
    ifneq ($(filter %86,$(UNAME_P)),) 
     lib_xml_wrapper_la_CPPFLAGS += -I../../../external/xerces-c-3.1.1-x86-linux-gcc-3.4/include/ 
    endif 
    ifneq ($(filter arm%,$(UNAME_P)),) 
     lib_xml_wrapper_la_CPPFLAGS += 
    endif 
endif 
ifeq ($(UNAME_S),Darwin) 
    lib_xml_wrapper_la_CPPFLAGS += -DOSX 
    ifneq ($(filter %86,$(UNAME_P)),) 
     lib_xml_wrapper_la_CPPFLAGS += -I../../../external/xerces-c-3.1.1-x86-macosx-gcc-3.4/include/ 
    endif 
    ifneq ($(filter arm%,$(UNAME_P)),) 
     lib_xml_wrapper_la_CPPFLAGS += 
    endif 
endif 

这似乎并不在Makefile.am工作。我收到以下错误:

xml_wrapper/Makefile.am:26: error: endif without if 
xml_wrapper/Makefile.am:35: error: endif without if 
automake: warnings are treated as errors 
xml_wrapper/Makefile.am:10: warning: shell uname -s: non-POSIX variable name 
xml_wrapper/Makefile.am:10: (probably a GNU make extension) 
xml_wrapper/Makefile.am:11: warning: shell uname -p: non-POSIX variable name 
xml_wrapper/Makefile.am:11: (probably a GNU make extension) 
xml_wrapper/Makefile.am:20: warning: filter %86,$(UNAME_P: non-POSIX variable name 
xml_wrapper/Makefile.am:20: (probably a GNU make extension) 
xml_wrapper/Makefile.am:23: warning: filter arm%,$(UNAME_P: non-POSIX variable name 
xml_wrapper/Makefile.am:23: (probably a GNU make extension) 
xml_wrapper/Makefile.am:29: warning: filter %86,$(UNAME_P: non-POSIX variable name 
xml_wrapper/Makefile.am:29: (probably a GNU make extension) 
xml_wrapper/Makefile.am:32: warning: filter arm%,$(UNAME_P: non-POSIX variable name 
xml_wrapper/Makefile.am:32: (probably a GNU make extension) 
+0

[Autoreconf可能以“非POSIX变量名”停止](http://stackoverflow.com/questions/15711824/autoreconf-stops-with-non-posix-variable-name) –

+0

@MikeKinghan What我试过类似于那篇文章,但我所问的是不同的。 –

回答

3

选择CPU和OS configure.ac比较好处理,其中有AC_CANONICAL_HOST该分析从uname输出,并把它的标准格式:

configure.ac

... 
AC_CANONICAL_HOST 
WRAPPER_CPPFLAGS="" 
AS_CASE([$host_os], 
     [linux*], 
     [ 
      WRAPPER_CPPFLAGS="$WRAPPER_CPPFLAGS -DLINUX" 
      AS_CASE([$host_cpu], 
        [x86_64], 
        [ 
         WRAPPER_CPPFLAGS="$WRAPPER_CPPFLAGS -DAMD64 -I../../../external/xerces-c-3.1.1-x86_64-linux-gcc-3.4/include" 
        ], 
        [i?86], 
        [ 
         WRAPPER_CPPFLAGS="$WRAPPER_CPPFLAGS -I../../../external/xerces-c-3.1.1-x86-linux-gcc-3.4/include" 
        ]) 
     ], 
     [darwin*], 
     [ 
      WRAPPER_CPPFLAGS="$WRAPPER_CPPFLAGS -DOSX" 
      AS_CASE([$host_cpu], 
        [i?86], 
        [ 
         WRAPPER_CPPFLAGS="$WRAPPER_CPPFLAGS -I../../../external/xerces-c-3.1.1-x86-macosx-gcc-3.4/include" 
        ]) 
     ]) 
AC_SUBST([WRAPPER_CPPFLAGS]) 

Makefile.am

... 
lib_xml_wrapper_la_CPPFLAGS = -I../.. $(WRAPPER_CPPFLAGS)