This is the mail archive of the crossgcc@sourceware.org mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Patches for crosscompiling on Mac OS X


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]