chicken-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Chicken-users] building only from .c files (who needs to cross-comp


From: Matthew Welland
Subject: Re: [Chicken-users] building only from .c files (who needs to cross-compile)
Date: Mon, 4 Sep 2006 22:15:55 -0700
User-agent: KMail/1.8.3

On Monday 04 September 2006 17:19, Brandon J. Van Every wrote:
[snip]
> Two perceived reasons for building only from .c files:
> 
> - someone may need to cross-compile
> - someone may be unable to get a bootstrapped chicken to compile .scm to .c
> 
> I have serious reservations about the latter reason.  Part of the point 
> of getting people to build from sources, is to test the build.  If we 
> aren't actually exercising the .scm to .c part of the build, then that's 
> a way for build problems to develop.  We want users to see build 
> problems and report them to us, so that we can fix them.  Granted, if we 
> start distributing binaries for multiple platforms, then we won't get 
> the benefit of in-field build testing.  It would be down to just Felix's 
> build environment and my build environment, either of which could 
> develop probelms, flake, or go belly up.  I think if we start 
> distributing binaries, and aren't getting any in-field build testing, 
> then we need to implement a regular nightly build.

Why is it important for your build system to be exercised everywhere? If you 
can provide a windows installer based solution won't 99.999% of interested 
Windows chicken users be happy?

> As for cross-compilation.  First, I'll define it, to avoid heat and 
> angst over nothing.  "Cross-compilation" means "building an .exe on one 
> platform that is meant to run on another platform."  Distributing .c 
> files is not cross-compilation (at least from a C compiler's 
> perspective).  Firing up the MinGW-Windows target on Linux, that's 
> cross-compilation.  Various open source projects do this sort of thing; 
> for instance, I believe http://www.freeciv.org is built this way.  
> (Warning: Elite Timewaster Alert!)
> 
> So, who has the real need to do cross-compilation?

Cell phones, UMPC's, PDA's, embedded systems, heck - maybe even 
microcontrollers, are all valid targets to use chicken as a development 
mechanism. Choices you make in your build system will impact the ease of 
doing cross compilation and the likelyhood of chicken being used in these 
applications. I think there have been some successes IIRC but I know I have 
failed to get chicken + eggs working via cross-compilation. I have surveyed 
the scheme options for doing what I want (end user apps and robot controller 
on the Ipaq) and I think that if I could get it to work chicken would be a 
really neat solution.

> Felix, I hope it's not you, and that you're saying you just want to 
> cross-compile for official Windows distributions.  CMake 2.4.3 can't do 
> cross-compilation, although it may be implemented in the distant 
> future.  That means you'd be building official Chickens using Autoconf.  
> That's very much against my agenda, which is, having CMake builds 
> regularly exercised and tested in-field.  It also strikes me as a really 
> bad idea, putting so much faith in cross-compilation, as opposed to 
> building, testing, and solving problems on proper Windows boxes.  It's 
> just a whole new can of worms that I personally won't be dealing with.  
> The Autoconf support is really weak / broken for MinGW, both in Chicken 
> and in MSYS.  It doesn't even exist for MSVC; that's why I spent 9 
> months implementing a CMake build. 
> 
> So, let's say cross-compilation isn't for official Windows builds.  
> Maybe it's Unix-Unix cross-compilation or something.  Who needs to do 
> it?  What are the requirements? 

I would like to use chicken to develop applications on my IPAQ handheld PC 
running familiar Linux with Opie (http://handhelds.org). This lowly machine 
has limited memory and is excruciatingly slow doing compilation. 
Theoretically it is possible for me to get gcc etc. running on it but I 
haven't yet succeeded (I get "C compiler can't create executables" errors). 
I'm using Openembedded (http://www.openembedded.org/) for cross compilation.

I wouldn't care what build system chicken uses if I could just install the 
right .ipk files on my Ipaq :-). As I mentioned in a previous post I was able 
to get chicken compiled and make a package file for the Ipaq. I'm stuck now 
since I can't figure out how to get eggs to compile under Openembedded.

I think the simplest solution would be a mechanism that dumped all the 
required C files etc. so I could cross compile without having to run chicken 
on the target system.

Maybe something like this:

stage1: creates bootstrap csc etc, autoconf files and CMake files
    stage2, option 1: builds using CMake
    stage2, option 2: builds using Autoconf. 

> And is this going to require Autoconf forever?  I'm not in favor of 
> that.  CMake may not be able to cross-compile, but it is 1 build and it 
> does work everywhere, unlike Autoconf.  That outweighs the convenience 
> of building everything from only 1 box.  I don't want to maintain 2 
> builds, especially if cross-compilation drives more and more feature 
> requirements that disrupt the CMake build.

I guess you guys will have to decide if supporting us nuts who think we need 
to do cross compilation are worth the pain to support :-)

> A final thorn: which build to install?  It doesn't matter with Autoconf, 
> as it's only a one-stage build.  CMake is two-stage; its first stage is 
> done in the /boot directory.  Let's say I built /boot entirely from .c 
> files, and even throw in currently missing bits like /boot/csi, 
> /boot/csc, /boot/chicken-profile, and /boot/chicken-setup.  Should I let 
> the user install this?  No, I shouldn't.  I want them to do a two-stage 
> bootstrap and install the final products.  I don't want to take bug 
> reports on one-stage Chickens that got installed from /boot.  They're 
> supposed to get the best code as the final output; that's all I want to 
> maintain.
> 
> Bottom line: I think CMake should only use .c files to build 
> chicken-boot.  Further products need to be derived from chicken-boot, 
> i.e. csi, csc, chicken-profile, chicken-setup.
> 
> 
> Cheers,
> Brandon Van Every
> 
> 
> 
> _______________________________________________
> Chicken-users mailing list
> address@hidden
> http://lists.nongnu.org/mailman/listinfo/chicken-users
> 
> 
> 

-- 
http://www.kiatoa.com, a self-governing site where *you* can be the boss!
  You make and choose the stories and the classifieds are always free.
     Also, many "best of" polls. Come join in the ballot stuffing!




reply via email to

[Prev in Thread] Current Thread [Next in Thread]