LINUX.ORG.RU

Как заставить autoconf на Эльбрусе перестать думать, что у меня gcc?

 , ,


0

3

autoconf пытается скомпилировать этот код:

int 
main () 
{ 
#ifndef __GNUC__ 
       choke me 
#endif 

  ; 
  return 0; 
}

и он компилируется, поэтому автоконф решает, что у меня gcc, после чего начинает использовать всякие фичи именно gcc. Так например, ниже использует:

if test "x$ac_compiler_gnu" = "xyes"; then
echo "$as_me:$LINENO: checking if we should add -fno-tree-copyrename to CFLAGS for computed gotos to work properly" >&5
echo $ECHO_N "checking if we should add -fno-tree-copyrename to CFLAGS for computed gotos to work properly... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h.  */

и поехали.

Как правильнее всего форсировать autoconf не делать это? Может быть есть какой-то флаг, который имеет смысл передать autoconf?

С автоконфом честно говоря никогда не работал, только скрипт configure запускал

★★★★★

Последнее исправление: maxcom (всего исправлений: 3)

Как заставить autoconf на Эльбрусе

жесть какая :)

наверное, отправить патчи в апстрим autoconf-а

Harald ★★★★★
()

При наличии Эльбруса с такими вопросами лучше в службу поддержки обращаться. Ну и да, с таким форматированием вообще ничего не понятно.

alexanius ★★
()

Как правильнее всего форсировать autoconf не делать это? Может быть есть какой-то флаг, который имеет смысл передать autoconf?

Не знаю, как правильно. А проще — пропатчить autoconf.

Например, у меня в Debian приведённый тобой код находится в /usr/share/autoconf/autoconf/lang.m4. Открываешь файл, ищешь «choke me», убираешь ifndef/endif вокруг него. Ну или чуть ниже ac_compiler_gnu=yes меняешь на ac_compiler_gnu=no.

i-rinat ★★★★★
()
Ответ на: комментарий от Harald

Никакой тайны, я работал с Эльбрус-2С+, российские процессоры это не плод воображения. И любой может получить к ним хотя бы удаленный доступ.

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от pftBest

Что значит похож? Поддерживается совместимость на уровне опций, расширений и прагм - вот и вся похожесть. Прикидываться gcc нужно для облегчения портирования. Я бы помог ТС, но не пойму что случилось.

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

Он видимо прикидывается gcc зачем-то.

Он не прикидывается, он старается быть максимально совместимым.

AS ★★★★★
()

я не понял - пока я спал, все уже массово эльбрусами затарились?

ps. когда OpenBSD для него появится - разбудите

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

в /proc/cpuinfo

processor	: 3
vendor_id	: unknown
cpu family	: 4
model		: 3
model name	: E2S
revision	: 1
cpu MHz		: 750.18035
L1 cache size	: 64 KB
L1 cache line length	: 32 bytes
L2 cache size	: 2048 KB
L2 cache line length	: 64 bytes
bogomips	: 1388.30

я пытаюсь собрать 19-й эрланг (пока жду доступа в их багтрекер, может там подскажут волшебные ключи компиляции) и конфигурация рассыпается:

configure:34078: ./conftest
configure:34081: $? = 0
configure:34104: result: 8
configure:34120: checking if we should add -fno-tree-copyrename to CFLAGS for computed gotos to work properly
configure:34144: gcc -c -g -O2 -I/home/max/otp_src_19.0/erts/e2k-unknown-linux-gnu    -D_GNU_SOURCE conftest.c >&5
configure:34150: $? = 0
configure:34154: test -z 
			 || test ! -s conftest.err
configure:34157: $? = 0
configure:34160: test -s conftest.o
configure:34163: $? = 0
configure:34176: result: yes
configure:34185: checking for broken gcc-4.3.0 compiler
configure:34232: gcc -o conftest -g -O2 -I/home/max/otp_src_19.0/erts/e2k-unknown-linux-gnu   -fno-tree-copyrename  -D_GNU_SOURCE   conftest.c -lutil -ldl -lm    >&5
lcc: ошибка: неизвестная опция "-fno-tree-copyrename"
configure:34235: $? = 1
configure: program exited with status 1
configure: failed program was:

при этом эта проверка на no-tree-copyrename обрамлена в условие

34119 if test "x$ac_compiler_gnu" = "xyes"; then
34120 echo "$as_me:$LINENO: checking if we should add -fno-tree-copyrename to CFLAGS for computed gotos to work properly" >&5
34121 echo $ECHO_N "checking if we should add -fno-tree-copyrename to CFLAGS for computed gotos to work properly... $ECHO_C" >&6
34122 cat >conftest.$ac_ext <<_ACEOF

Проверка на compiler_gnu идет выше:

 2359 cat >>conftest.$ac_ext <<_ACEOF
 2360 /* end confdefs.h.  */
 2361 
 2362 int
 2363 main ()
 2364 {
 2365 #ifndef __GNUC__
 2366        choke me
 2367 #endif
 2368 
 2369   ;
 2370   return 0;
 2371 }
 2372 _ACEOF
 2373 rm -f conftest.$ac_objext
 2374 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
 2375   (eval $ac_compile) 2>conftest.er1
...

т.е. проверяется наличие __GNUC__ Понятно, что компилятор будет такое дефайнить, что бы все думали, что он gcc, но не всё получается.

Отсюда и мой вопрос: может есть какой-то простой и известный способ тут зафорсить не gnu? Или проще в этом месте подправить патчем configure, что бы он по-другому всё детектил?

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

Или проще в этом месте подправить патчем configure

Чего ты мучаешься-то? Вот тебе ещё один способ, без патча сборочных скриптом, зато с динамической заменой параметров на ходу:

#!/usr/bin/env python

# file: cc.py
#
# usage:
#   export CC=$PWD/cc.py
#   ./configure
#   make

import sys
import subprocess

params = []
for item in sys.argv[1:]:
    if item == "-fno-tree-copyrename":
        continue
    params.append(item)

subprocess.call(['gcc'] + params)
i-rinat ★★★★★
()
Ответ на: комментарий от max_lapshin

У тебя, судя по всему, 19-ая ветка компилятора, что не есть хорошо. В ней -fno-tree-copyrename действительно отстутсвует, он появляется только в 20-ой и игнорится.

Так что тут проблема не с __GNUC__, а с опцией. Попытайся выкинуть её, а лучше если есть возможность обновить дистрибутив ей воспользоваться.

alexanius ★★
()
Ответ на: комментарий от alexanius
elbrus:~ $lcc -v
lcc:1.19.21:Oct-15-2015:e2k-4c-linux
Thread model: posix
gcc version 4.4.0 compatible.

че, можно попросить обновить систему?

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

Хз, это уже с теми людьми с которыми ты работаешь надо обсуждать. Но обновление - это полная переустановка дистрибутива. Попробуй им послать описание, которое ты мне кинул. И ещё можно писать на user@mcst.ru, они должны отвечать на все подобные вопросы (например данный к отделу дистрибутивов перенаправить).

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

выкинь эльбрус, поддержка этого поделия есть?

anonymous
()
Ответ на: комментарий от former_anonymous

я в итоге добавил патч к erts/configure и вроде всё пошло дальше.

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

И мне пожалуйста тоже парочку заверните в газетку вчерашнюю.

PS. Ну негоже заводить себе ООО лишь для того чтобы купить Эльбрусы. Да и вероятнее всего и не каждое ООО может их получить. Много тайны, а главное неуважение к простым смертным не владеющим собственным ООО и парком личных вертолетов.

Простым смертным гораздо проще пару месяцев подождать и купить чего-нибудь под сокет AM4.

Готов совершенно бесплатно портировать все пингвинообразное в меру своих сил и знаний, лишь бы получить возможность легально приобрести эти диковинные железки (озвученная в соседней теме цена вполне устраивает, а если денег не хватит, то «продам почку») и желательно до выхода в продажу железа под сокет AM4. Договоры и прочие формальности, мне ни к чему, достаточно будет любой официальной бумажки: что не купил краденное и не украл железки.

Deleted
()
Ответ на: комментарий от Alve

Как пропатчить autoconf под Эльбрус?

Ты уже пропатчил Кеды2 под FreeBSD?

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