libX11 configure.ac patch

Dan Nicholson dbn.lists at gmail.com
Fri Nov 5 06:26:09 PDT 2010


On Fri, Nov 5, 2010 at 6:16 AM, Frans Meulenbroeks
<fransmeulenbroeks at gmail.com> wrote:
> 2010/11/5 Dan Nicholson <dbn.lists at gmail.com>:
>> On Fri, Nov 5, 2010 at 3:35 AM, Frans Meulenbroeks
>> <fransmeulenbroeks at gmail.com> wrote:
>>> Dear all,
>>>
>>> While trying to compile libX11 for nios2, I discovered that configure
>>> accidently thinks it is an os2 system (which is not the case).
>>> The failing code is a match on target_alias for *os2*. As my
>>> target_alias is nios2_linux, this also matches.
>>> I found this on 1.3.2 but verified that the same code is still present
>>> in git head.
>>>
>>> The patch below fixes this for me, but I can imagine people prefer to
>>> strengthen the match for os2 (not sure if changing *os2* to os2* will
>>> work, can't really verify that).
>>>
>>> In case further info is needed feel free to contact me directly. I am
>>> not on the list, just someone passing by to report a problem and
>>> solution.
>>>
>>> Best regards & keep up the good work!
>>> Frans
>>>
>>> Index: libX11-1.3.2/configure.ac
>>> ===================================================================
>>> --- libX11-1.3.2.orig/configure.ac      2010-11-05 10:30:33.825536983 +0100
>>> +++ libX11-1.3.2/configure.ac   2010-11-05 10:31:25.913899269 +0100
>>> @@ -202,6 +202,7 @@
>>>  # arch specific things
>>>  WCHAR32="1"
>>>  case $target_alias in
>>> +  nios2*) os2="false" ;;
>>>   *os2*) os2="true" ; WCHAR32="0" ;;
>>>   *) ;;
>>>  esac
>>
>> I think the reason that *os2* was used is because the test is against
>> $target_alias, and the os2 may be buried in the middle like
>> i386-pc-os2-emx. I see three possible solutions:
>>
>> 1. Change to $target_os, in which case you can just test os2*.
>>
>> 2. Leave it as $target_alias, but change the test to *-os2*.
>>
>> 3. Special case nios2* as you've done here since it will catch the cpu
>> type at the beginning.
>>
>> I think 1 is the most correct since really what we're trying to do is
>> match the OS/2 operating system. Does the following work for you?
>>
>> diff --git a/configure.ac b/configure.ac
>> index 5b79b43..6ec8bda 100644
>> --- a/configure.ac
>> +++ b/configure.ac
>> @@ -246,8 +246,8 @@ dnl AC_PATH_XTRA
>>
>>  # arch specific things
>>  WCHAR32="1"
>> -case $target_alias in
>> -  *os2*) os2="true" ; WCHAR32="0" ;;
>> +case $target_os in
>> +  os2*) os2="true" ; WCHAR32="0" ;;
>>   *) ;;
>>  esac
>>  AC_SUBST(WCHAR32)
>
> Thanks for your quick reply!
>
> This works for me. Actually I did expect this, as my target_os is not
> os2* so I should get the default case.
> The key question is: does this work for os2 systems (and I cannot test that)

Me neither, but I think it should be safe. Clearly this is intended
for OS/2 the operating system.

>> Noticing now that this should really be testing $host_alias or
>> $host_os since that's what you're building the package for. The
>> $target* variables are really only applicable when you're building a
>> cross compiler or something like that. That's orthogonal, but should
>> be fixed.
>
> That's ok. Didn't mention this, but actually this happens when cross
> compiling so I should be using the target_* vars as I am cross
> compiling a lib for the target.
> (nios2 is not that fast, you do not want to compile big packages like X on it).

Technically, when cross compiling --target is only needed when you are
building a compiler. I.e., the system that you're targetting your code
to be created for. --host defines what system you'll be running the
binaries on.

http://www.gnu.org/software/automake/manual/automake.html#Cross_002dCompilation

Do you specify just --target when you build or also --host?

--
Dan



More information about the xorg mailing list