代码之家  ›  专栏  ›  技术社区  ›  jww avp

ARM A-32的条件自动生成编译?

  •  0
  • jww avp  · 技术社区  · 7 年前

    我有一个需要为arm a-32编译的源文件。A-32包括ARMV4和ARMV7(但不包括AARCH32或AARCH64)。我们的gnu makefile有:

    IS_ARM32 := $(shell echo "$(HOSTX)" | $(GREP) -i -c -E 'arm|armhf|arm7l|eabihf')
    ...
    
    ifeq ($(IS_ARM32),1)
    AES_ARCH = -march=armv7-a -marm
    SRCS += aes-armv4.S
    endif
    ...
    
    ifeq ($(IS_ARM32),1)
    aes-armv4.o : aes-armv4.S
        $(CC) $(strip $(CXXFLAGS) $(AES_ARCH) -mfloat-abi=$(FP_ABI) -c) $<
    endif
    

    根据 Conditional Compilation using Automake Conditionals 手册:

    有条件地编译源文件的一种通常更简单的方法是 汽车制造条件。例如,您可以使用这个makefile.am 构造以构建相同的hello示例:

    bin_PROGRAMS = hello
    if LINUX
    hello_SOURCES = hello-linux.c hello-common.c
    else
    hello_SOURCES = hello-generic.c hello-common.c
    endif
    

    在这种情况下,configure.ac应该使用 有条件的(见 Conditionals )中。

    在链接到条件语句之后,我看不到如下条件语句的列表 LINUX 如本例所用。它还缺少对arm和powerpc等体系结构的条件编译的讨论。

    汽车制造商对ARMA-32使用什么条件?

    或者如何有条件地编译arm a-32?

    1 回复  |  直到 7 年前
        1
  •  0
  •   John Bollinger    7 年前

    在链接到条件语句之后,我看不到 条件句,如 LINUX 以手册为例。它也缺少 关于arm和 PowerPC。

    你似乎忽略了手册摘录中的这段文字:

    在这种情况下,configure.ac应该使用 有条件的

    AM_CONDITIONAL 是autoconf宏,用于定义谓词以在automake条件中使用。不存在前置谓词。

    汽车制造商使用什么武器A-32?

    或者如何有条件地编译arm a-32?

    鉴于您现有的方法是基于

    IS_ARM32 := $(shell echo "$(HOSTX)" | $(GREP) -i -c -E 'arm|armhf|arm7l|eabihf')
    

    你可以这样做 configure.ac 以下内容:

    AM_CONDITIONAL([ARM32], [echo "$HOSTX" | $GREP -i -c -E 'arm|armhf|arm7l|eabihf'])
    

    这假设 HOSTX GREP 是已设置值的autoconf输出变量。如果你不是这样的话,我相信它至少为你提供了一个模型。

    ARM32 在configure.ac中定义的谓词,然后可以在 Makefile.am 与手册中的示例类似的文件:

    if ARM32
    hello_SOURCES = hello-arm32.c hello-common.c
    else
    hello_SOURCES = hello-generic.c hello-common.c
    endif