LINUX.ORG.RU

выбор файла зависит от архитектуры

 


0

1

Как мне сделать в сценарии, чтобы выполнилась проверка, например сравнение с uname -m и x86_64, и в зависимости от этого выбирался файл для компиляции.

если можно то в нескольких вариантах. Например как в makefile можно сделать и в autoconf.ac и Makefile.am.

как делаю я.

разделяю платформенную реализацию по дирам:

include // хидеры
src // общий сорц
linux // реализация для линукса
osx // реализация для осх

в мейкфайле завожу переменную с платформой:

PLATFORM := none
UNAME := $(shell uname -s)
ifeq ($(UNAME),Linux)
PLATFORM = linux
endif
ifeq ($(UNAME),Darwin)
PLATFORM = osx
endif
ifeq ($(PLATFORM),none)
$(error unknown platform $(UNAME))
endif

выбираю сорцы для сборки:

PLATFORM_SRC = $(SOURCES)/$(PLATFORM)
OBJECTS += $(patsubst %.c, $(OBJ)/%.o, $(wildcard $(SOURCES)/*.c $(PLATFORM_SRC)/*.c))

vvviperrr ★★★★★
()

Как мне сделать в сценарии

man bash

как в makefile можно сделать

info make

и в autoconf.ac и Makefile.am

google://autoconf automake uname check

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)

Доступ к этой инфе уже есть в configure.ac: "${host_cpu}".

gag ★★★★★
()
Ответ на: комментарий от Gvidon

У меня два файла на ассемблере для разных архитектур, я уже сделал создав свой configure без использования autotools, но всё же интересно, как с помощью autotools и проверок в makefile можно сделать.

u0atgKIRznY5
() автор топика
Ответ на: комментарий от Stil

host_cpu

А потом кросскомпиляция не работает.

Как намекнули выше, если есть необходимость запускать какую-то скомпилированную тулзу во время компиляции, необходимо её дополнительно скомпилировать под build_cpu.

gag ★★★★★
()

Учти что не на всех платформах оно называется x86_64. На *BSD, например, amd64. И да, лучше сделать это в одном файле под #ifdef. Это позволит не дублировать общий код, исключит возможность забыть обновить сигнатуру функции для части архитектур и т.д.

slovazap ★★★★★
()
Ответ на: комментарий от slovazap

а потом я обнаруживаю себя ковыряющимся в qemu, погрязшим в ифдефах с десятками архитектур. нет уж, спасибо.

vvviperrr ★★★★★
()
Ответ на: комментарий от vvviperrr

Совет был не вам, а ТС. А оправдывающим кривые решения собственным неосиляторством мне посоветовать нечего :)

slovazap ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.