Patches for crosscompiling on Mac OS X
Geoffrey Lee
geoffl@gmail.com
Mon Nov 1 09:10:00 GMT 2010
On 2010/11/01, at 17:22, Titus von Boxberg wrote:
>>>>
>>>> e.g.
>>>>
>>>> /Volumes/non-latin/xxxuser
>>>>
>>>> /Users/xxxuser -> /Volumes/non-latin/xxxuser
>>> It's difficult to see how this could be a MacOS specific problem.
>>> To my knowledge you can nowadays have "non-latin" characters in a path
>>> on almost any OS.
>>> What do you mean by "non-latin", anyway?
>>>
>>
>>
>> In this case I have a volume mounted under /Volumes with a Japanese name encoded in UTF-8.
>>
>> For some reason instead of using /Users/username it seems to have walked the symlink and used /Volumes/<volname>/username instead and then it stopped working because CURDIR wasn't set.
>>
>> It may be a problem with other operating systems too, I didn't mean to say that this was Mac OS X specific.
>
> Still, in which way "non-latin" characters are special?
> Files on the Mac are generally encoded using UTF-8. Do you mean any character with
> a mültibyte representation?
> As Yann said: It might be caused by another problem unrelated to encoding.
> Did you test using a path with "latin" characters only, whatever that might be?
> Could you prepare a small test case that demonstrates the problem with make?
Thanks for taking the time to work through the issue with me.
Yes, it is multibyte.
I unzipped a pristine Linux source tree under /tmp and then ran it with O=/tmp/linux-cfg or O=/Users/username/tmp/linux-cfg or O=/Volumes/ホーム/xxx/tmp/linux-cfg and it worked fine.
The output of the above with V=1 set is:
make -C /tmp/linux-cfg \
KBUILD_SRC=/private/tmp/linux-2.6.36 \
KBUILD_EXTMOD="" -f /private/tmp/linux-2.6.36/Makefile \
oldconfig
make -f /private/tmp/linux-2.6.36/scripts/Makefile.build obj=scripts/basic
gcc -Wp,-MD,scripts/basic/.fixdep.d -Iscripts/basic -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -o scripts/basic/fixdep /private/tmp/linux-2.6.36/scripts/basic/fixdep.c
gcc -Wp,-MD,scripts/basic/.docproc.d -Iscripts/basic -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -o scripts/basic/docproc /private/tmp/linux-2.6.36/scripts/basic/docproc.c
gcc -Wp,-MD,scripts/basic/.hash.d -Iscripts/basic -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -o scripts/basic/hash /private/tmp/linux-2.6.36/scripts/basic/hash.c
rm -f .tmp_quiet_recordmcount
ln -fsn /private/tmp/linux-2.6.36 source
/bin/sh /private/tmp/linux-2.6.36/scripts/mkmakefile \
/private/tmp/linux-2.6.36 /private/tmp/linux-cfg 2 6
GEN /private/tmp/linux-cfg/Makefile
mkdir -p include/linux include/config
make -f /private/tmp/linux-2.6.36/scripts/Makefile.build obj=scripts/kconfig oldconfig
gcc -Wp,-MD,scripts/kconfig/.conf.o.d -Iscripts/kconfig -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -DCURSES_LOC="<ncurses.h>" -DLOCALE -DKBUILD_NO_NLS -c -o scripts/kconfig/conf.o /private/tmp/linux-2.6.36/scripts/kconfig/conf.c
/private/tmp/linux-2.6.36/scripts/kconfig/conf.c: In function ‘check_stdin’:
/private/tmp/linux-2.6.36/scripts/kconfig/conf.c:77: warning: format not a string literal and no format arguments
/private/tmp/linux-2.6.36/scripts/kconfig/conf.c:78: warning: format not a string literal and no format arguments
/private/tmp/linux-2.6.36/scripts/kconfig/conf.c:79: warning: format not a string literal and no format arguments
/private/tmp/linux-2.6.36/scripts/kconfig/conf.c: In function ‘conf_askvalue’:
/private/tmp/linux-2.6.36/scripts/kconfig/conf.c:89: warning: format not a string literal and no format arguments
/private/tmp/linux-2.6.36/scripts/kconfig/conf.c: In function ‘conf_choice’:
/private/tmp/linux-2.6.36/scripts/kconfig/conf.c:286: warning: format not a string literal and no format arguments
/private/tmp/linux-2.6.36/scripts/kconfig/conf.c: In function ‘check_conf’:
/private/tmp/linux-2.6.36/scripts/kconfig/conf.c:432: warning: format not a string literal and no format arguments
/private/tmp/linux-2.6.36/scripts/kconfig/conf.c: In function ‘main’:
/private/tmp/linux-2.6.36/scripts/kconfig/conf.c:495: warning: format not a string literal and no format arguments
/private/tmp/linux-2.6.36/scripts/kconfig/conf.c:574: warning: format not a string literal and no format arguments
/private/tmp/linux-2.6.36/scripts/kconfig/conf.c:626: warning: format not a string literal and no format arguments
/private/tmp/linux-2.6.36/scripts/kconfig/conf.c:630: warning: format not a string literal and no format arguments
/private/tmp/linux-2.6.36/scripts/kconfig/conf.c:641: warning: format not a string literal and no format arguments
gcc -Wp,-MD,scripts/kconfig/.kxgettext.o.d -Iscripts/kconfig -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -DCURSES_LOC="<ncurses.h>" -DLOCALE -DKBUILD_NO_NLS -c -o scripts/kconfig/kxgettext.o /private/tmp/linux-2.6.36/scripts/kconfig/kxgettext.c
cat /private/tmp/linux-2.6.36/scripts/kconfig/zconf.tab.c_shipped > scripts/kconfig/zconf.tab.c
cat /private/tmp/linux-2.6.36/scripts/kconfig/lex.zconf.c_shipped > scripts/kconfig/lex.zconf.c
cat /private/tmp/linux-2.6.36/scripts/kconfig/zconf.hash.c_shipped > scripts/kconfig/zconf.hash.c
gcc -Wp,-MD,scripts/kconfig/.zconf.tab.o.d -Iscripts/kconfig -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -DCURSES_LOC="<ncurses.h>" -DLOCALE -DKBUILD_NO_NLS -I/private/tmp/linux-2.6.36/scripts/kconfig -Iscripts/kconfig -c -o scripts/kconfig/zconf.tab.o scripts/kconfig/zconf.tab.c
gcc -o scripts/kconfig/conf scripts/kconfig/conf.o scripts/kconfig/zconf.tab.o -lncurses
scripts/kconfig/conf --oldconfig arch/x86/Kconfig
#
# using defaults found in arch/x86/configs/i386_defconfig
#
*
* Restart config...
*
*
* Linux Kernel Configuration
*
64-bit kernel (64BIT) [N/y/?] (NEW)
(Then, I hit Ctrl-C)
When my source tree is in a home directory, this is what I get with O=/tmp/linux-cfg or O=/Users/username/tmp/linux-cfg or O=/Volumes/ホーム/xxx/tmp/linux-cfg and V=1 set:
make -C /Volumes/ホーム/xxx/tmp/linux-cfg \
KBUILD_SRC=/Volumes/ホーム/xxx/src/linux-2.6.36 \
KBUILD_EXTMOD="" -f /Volumes/ホーム/xxx/src/linux-2.6.36/Makefile \
oldconfig
make -f /Volumes/ホーム/xxx/src/linux-2.6.36/scripts/Makefile.build obj=scripts/basic
I know this version is not the same one as the one used in ct-ng but it is not relevant to demonstrating the issue.
>
>>>>>
>>>>> - ct-ng-glibc.sh.patch
>>>>> There is already a sed handling in ./configure. To use a specific sed,
>>>>> just pass it: --with-sed=/path/to/gsed
>>>>>
>>>>
>>>>
>>>> I think ct-ng already requires gsed during setup, is there a way we can propagate this configure option
>>>> upwards? I think it would be best not to tie gsed to a particular path.
>>> PATH is modified to point first to a set of symbolic links to the required
>>> programs. So this gets propagated "upwards" for any script beyond the point
>>> where those links are created.
>>>
>>
>>
>> Actually, I could not find any symbolic link to the sed I specified during ./configure of ct-ng. If that's the case
>> then something might have gone wrong during my installation. I just had a look and it would appear paths.mk gets created with a sed variable pointing to what was specified during configure, is that what you meant?
>>
>> In that case we can just do --with-sed=${sed} ?
> The links to the configured programs are created in the
> target working directory, I think in tools/bin or so.
> And since PATH should be modified to point there first it should
> not be necessary to point other programs called by ct-ng to gsed
> by specifying --with-sed or SED= since the programs find
> gsed by calling just sed.
>
> How did you configure ct-ng?
>
I followed the exact instructions in docs/readme.macos.txt. Here is what is in the paths.mk:
export install=/usr/bin/install
export bash=/bin/bash
export grep=/usr/bin/grep
export make=/usr/bin/make
export sed=/opt/local/bin/gsed
export libtool=/opt/local/bin/glibtool
export objcopy=/opt/local/bin/gobjcopy
export objdump=/opt/local/bin/gobjdump
export readelf=/opt/local/bin/greadelf
export patch=/usr/bin/patch
So I am quite sure that the correct sed was specified in the configure arguments.
-gl
--
For unsubscribe information see http://sourceware.org/lists.html#faq
More information about the crossgcc
mailing list