[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