gpt4 book ai didi

c - 将 Autotools 用于具有平台特定源代码的项目

转载 作者:太空狗 更新时间:2023-10-29 17:22:16 26 4
gpt4 key购买 nike

我正在开发一个目前用 C 编写的项目,但我计划在 ASM 中为至少两个平台(x86_64 和 arm)编写一些函数。所以我可能有一些源文件:

  • 通用/one.c
  • 通用/two.c
  • 通用/three.c
  • ARM /one.s
  • x86_64/two.s

我希望配置脚本尽可能选择 .s 文件而不是 .c 文件。因此在 arm 上构建将是 one.s、two.c、three.c 等。

似乎很难或不可能用 Automake 很好地做到这一点。但是,如果我放弃 Automake,我将不得不跟踪我自己的依赖项(呃)。

执行此操作的最佳方法是什么?

最佳答案

这是我的做法。

configure.ac

...
AC_CANONICAL_SYSTEM
AM_PROG_AS
AC_PROG_CC
...
PROC=""
AS_CASE([$host_cpu], [x86_64], [PROC="x86_64"], [arm*], [PROC="arm"])

AM_CONDITIONAL([CPU_X86_64], [test "$PROC" = "x86_64"])
AM_CONDITIONAL([CPU_ARM], [test "$PROC" = "arm"])
AM_CONDITIONAL([CPU_UNDEFINED], [test "x$PROC" = "x"])

Makefile.am

lib_LTLIBRARIES = libfoo.la
libfoo_la_SOURCES = \
$(top_srcdir)/generic/three.c

if CPU_ARM
libfoo_la_SOURCES += $(top_srcdir)/arm/one.s \
$(top_srcdir)/generic/two.c
endif

if CPU_X86_64
libfoo_la_SOURCES += $(top_srcdir)/generic/one.c \
$(top_srcdir)/x86_64/two.s
endif

if CPU_UNDEFINED
libfoo_la_SOURCES += $(top_srcdir)/generic/one.c \
$(top_srcdir)/generic/two.c
endif

关于c - 将 Autotools 用于具有平台特定源代码的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15398632/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com