use the -newos toolchain even if -elf is present.
[newos.git] / docs / building.html
blob48524ada3fe969b3928ddd85ee2956082425568a
1 <html>
2 <head>
3 <title>The NewOS Operating System: Docs</title>
4 </head>
5 <body BGCOLOR="#FFFFFF">
7 <h1 align="center">Building NewOS</h1>
9 <hr>
11 <hr>
13 <table border="0" width="100%" bgcolor="#E8E8E8">
14 <tr>
15 <td width="100%" height="100%" valign="top" align="left">
16 <ul>
17 <h4>You'll Need:</h4>
18 <li>GNU C</li>
19 <li>GNU gmake</li>
20 <br>
21 <br>
22 <p>To build newos, you need to grab a special toolchain (gcc + binutils) that I've compiled for most
23 popular host OS's (and some less popular as well). The only supported build toolchain are the ones I've made, but
24 you may or may not be able to pull it off if your host computer is x86 and has an ELF producing toolchain
25 already installed. Go to <a href="http://newos.sourceforge.net/download.php">here</a> to download and install a toolchain.
26 <p>To make a floppy image (pretty much what you'll always want to do):
27 type <b>make</b>. It will put the final disk image in <b>build/i386/final</b>. This is the
28 file you want to write to a floppy to boot.
29 <p>NOTE: you need to be running the GNU make. On some systems (FreeBSD), GNU make is called gmake. So, if you get
30 a bunch of make errors and it bails really quickly, try <b>gmake</b> instead of <b>make</b>.
31 <p>The first time you run it may spit out a ton of warnings about missing .d files, this is normal.
32 The make system hasn't built all of the dependency files yet. When it sees one is missing, it'll build it.
33 <p>Sometimes the make system will get confused if it has a bad .d file or something along those lines. In
34 that case try running <b>make allclean</b>, this will take the system back to it's default state.
35 <b>make clean</b> removes all the compiled code and targets, but not the .d files.
36 <br>
37 <p>Building non-native ports are a bit more involved. To build them, you need a GNU C toolchain compiled
38 for the target processor. I compiled them all as arch-elf, where arch is defined as the target architecture.
39 For example, on my Sparc Solaris box, I have a toolchain installed at /usr/local/i386-elf/, /usr/local/sh-elf/,
40 etc. I placed /usr/local/arch-elf/bin in the path and set the environment variable ARCH to be the architecture.
41 Valid ones are 'i386','sh'. Hopefully should work. The build system will be looking for files like
42 sh-elf-gcc and sh-elf-ld. It may be confused for whatever reason and not find the proper target, in which case
43 please email me at <a href="mailto:geist@newos.org">geist@newos.org</a> and I'll try to fix the make system to
44 recognize your case.
45 </td>
46 </tr>
47 </table>
49 <hr>
51 <table border="1" width="100%" bgcolor="#D9D5FF">
52 <tr>
53 <td width="100%" height="49" valign="top" align="center"><small><font color="#000000">This
54 page copyright 2002 </font></small><font size="2">© <a href="mailto:geist@newos.org">Travis
55 Geiselbrecht</a><br>
56 Any questions, comments, gripes, whatever:
57 <a href="mailto:geist@newos.org">geist@newos.org</a></font>
58 </td>
59 </tr>
60 </table>
62 </body>
63 </html>