[devel] Q: non-i586 ix86

Led =?iso-8859-1?q?led_=CE=C1_altlinux=2Eru?=
Вт Фев 28 12:41:44 MSK 2006


В сообщении от 27 февраля 2006 22:20 Konstantin A. Lepikhov написал(a):
> Hi!
>
> Monday 27, at 06:36:27 PM you wrote:
> > <цитата от="Dmitry V. Levin">
> >
> > > On Mon, Feb 27, 2006 at 06:17:02PM +0300, Konstantin A. Lepikhov wrote:
> > > [...]
> > >
> > >> Меня интересует практический момент
> > >> введения --target pentium4 для autotools в контексте его использования
> > >> для
> > >> сборки xvid.
> > >
> > > Если выдернуть этот момент из контекста xvid, то
> > > $ fgrep -A1 pentium4 /usr/share/automake/config.sub
> > > 	pentium4)
> > > 		basic_machine=i786-pc
> >
> > ну этот-то знает, его патчили ;) а вот автодетектилку xvid похоже нет ;)
> >
> > PS Так и знал, что придется самому залезть в пакет.
>
> Итак, вторая часть марлезонского балета. Просмотр исходников выявил
> следующее:
> 1) см. configure.in (автодетект архитектуры)
>
> dnl
> ==========================================================================
> dnl Check for the ranlib program to generate static library index
> dnl
> ==========================================================================
>
> AC_PROG_RANLIB
>
> dnl
> ==========================================================================
> dnl
> dnl This part looks for:
> dnl
> dnl ARCHITECTURE : The platform architecture
> dnl                - IA32 for mmx, mmx-ext, mmx2, sse assembly
> dnl                - IA64
> dnl                - PPC for PowerPC assembly routines
> dnl                - GENERIC for plain C sources only
> dnl
> dnl BUS: Address bus size (in bits)
> dnl      - 32
> dnl      - 64
> dnl
> dnl ENDIANNESS: I think you can guess what this thing means :-)
> dnl             - LITTLE_ENDIAN
> dnl             - BIG_ENDIAN
> dnl
> dnl
> ==========================================================================
>
> dnl
> dnl Looking what sources have to be compiled according to the CPU type
> dnl
>
> ARCHITECTURE=""
>
> AC_MSG_CHECKING([for whether to use assembly code])
> if test x"$assembly" = x"yes" ; then
>    AC_MSG_RESULT([yes])
>    AC_MSG_CHECKING([for architecture type])
>    case "$target_cpu" in
> 	  i[[3456]]86)
> 	  AC_MSG_RESULT(ia32)
> 	  	ARCHITECTURE="IA32"
>                 ;;
>           x86_64)
>                 AC_MSG_RESULT(x86_64)
>                 ARCHITECTURE="X86_64"
> 		;;
> 		powerpc)
> 		AC_MSG_RESULT(PowerPC)
> 		ARCHITECTURE="PPC"
> 		;;
> 		ia64)
> 		AC_MSG_RESULT(ia64)
> 		ARCHITECTURE="IA64"
> 		;;
> 		*)
> 		AC_MSG_RESULT($target_cpu)
> 		ARCHITECTURE="GENERIC"
> 		;;
>    esac
> else
>    AC_MSG_RESULT([no])
>    ARCHITECTURE="GENERIC"
> fi
>
> ...
> даже мне понятно, что pentium4 тут явно определится как GENERIC,

Вы себе льстите:) pentium4 определяется как i786, следовательно, для него 
будет вариант
	i[[3456]]86)
	AC_MSG_RESULT(ia32)
 	  	ARCHITECTURE="IA32"
                 ;;

> следовательно для него будет assembly=no + скрипту явно пофиг что будет в
> --target - i386 или i686. Т.е. ExclusiveArch тут без надобности.
>
> 2) см. src/util/x86_asm/cpuid.asm и src/xvid.c/grep detect_cpu_flags(void)
> - даже мне понятно, что возможности cpu определяются в runtime, т.е. смысла
> что-то подкручивать при сборке я еще раз не вижу.

Да, здесь вы правы - сам вчера ещё раз "прошёлся" - по идее, должно 
определятся в runtime (в более ранних версиях xvid этого не было, а в 1.1 
внимательно не смотрел, виноват), потому и залил вчера в incoming сборку с 
"безусловным" --enable-assembly.

>
> Итого - кончайте весь этот тупой тред и пакуйте xvid нормально т.е. без
> всяких --disable-assembly! :)

Так и сделал:)
В любом случае - спасибо. Без ваших "пинаний" не залез бы повторно "парсить" 
configure:)

Но xvid был приведён только как пример:)

-- 
Led.



Подробная информация о списке рассылки Devel