В Makefiles, как проверить опцию --with-ld в gcc?

Мы пытаемся разработать максимально переносимый Make-файл...

ни uname ни uname -v является окончательным в одном наборе случаев...

which ld также бесполезно, так как оба линкера присутствуют...

Я полагаю, мы могли бы просто проанализировать вывод gcc -v для '--with-ld=/usr/bin/ld', а затем протестировать функции / версию этого компоновщика. Но лучший ли способ сделать это?

Что такое "лучшие практики" здесь? Можно ли более аккуратно запросить gcc - из Makefile - для его параметров компоновщика?

2 ответа

Первое, что приходит мне в голову (протестировано с GNU make и clearmake):

# redirect gcc -v to stdout && count the number of occurrences
GCC_WITH_LD     := $(shell gcc -v 2>&1 | grep -c "\--with-ld")

ifeq ($(GCC_WITH_LD),0)
$(shell echo --with-ld NOT FOUND 1>&2) # print to stderr
# exit using error directive?
else
$(shell echo --with-ld FOUND 1>&2) # print to stderr
endif

mytarget:
        @echo myjobs

Вам нужен вариант -print-prog-name:

      andy@Andrews-Mac-Pro ~ % gcc -print-prog-name=ld
/Library/Developer/CommandLineTools/usr/bin/ld

Затем в Makefile вы можете установить LD с помощью:

      LD := $(shell gcc -print-prog-name=ld)

Это также работает в Solaris.

Другие вопросы по тегам