Hack make! ------------------------------------------------------------------------------- ah! :-) Build svx, build sfx2, build sw, build sd ?!! Time out! What is this build ? Good question :-) So let's examine it in detail, let's first ask the guy directly first: Issuing 'which build' at the command line returns nothing :-) A second try with 'alias build' starts to explain what's happening: alias build='perl /home/user/ooo-build/build/src680-m65/solenv/bin/build.pl' hmm... So how did we get this alias set at all ? From sourcing the LinuxIntelEnvSet.sh which does exactly what the name of the file says: It sets the environment for the Linux build of OOo on the Intel platform - so that helps to understand the other SolarisSparcEnvSet.sh as well. Of what I understand, this file is the end result of the configure process of OOo which is then used for the build process throughout. You can look into the file itself to check what else is in it. So build is the perl script which is in the top-level solenv project [probably a derivation from Solaris environment] which has most of the build tools in it. And how does it work ? Let's learn it in the coolest way possible :-) Let's add a top-level project to OOo :-) We shall with great imagination and creativity call our cool new top-level project as *drum-roll* 'helloworld'! So we start at the top of the build tree with a 'mkdir helloworld' and cd into it [So the path to our project now would typically be similar to '/home/user/ooo-build/build/src680-m65/helloworld' and all further references to our project will simply be referred to in short as helloworld/dir-name/file-name] Now let's try to build our new project [already! with nothing in it :-)] by issuing 'build'. oops! In fact, of course, OOPS! :-) build -- version: 1.130 ERROR: Found no project to build Of course :-) What happens is that the build.pl script takes as input the build.lst which is in the prj folder that every top-level folder has, so what happens is that build.pl is looking for helloworld/prj/build.lst which of course isnt there, so let's touch one just to see what happens! So we do an 'mkdir prj' first and 'touch prj/build.lst' and try again: 'build' build -- version: 1.130 Well, no error this time :-) We must be perfect already ? But that's still no fun yet, so how do we make a bigger dent in this place ? As the quote goes - "Good artists imitate, great artists steal!" which seems very appropriate :-) We look into what other projects are doing [or remember that the Unofficial Hacker's Guide explains this] and continue to find the smallest prj/build.lst we can find with a one-liner command at the top of the build tree that comes in handy for similar tasks: for i in *; do wc -l $i/prj/build.lst; done | sort -n | less One of the smallest is the build.lst file in XmlSearch we will copy over and modify for our own use: --- /dev/null 2004-08-25 23:04:59.000000000 +0530 +++ XmlSearch/prj/build.lst 2003-03-19 18:18:40.000000000 +0530 @@ -0,0 +1,2 @@ +xh XmlSearch : external codemaker NULL +xh XmlSearch\src\com\sun\xmlsearch nmake - all xs NULL ------------------------------------------------------------------------------- dummy.diff Next: dummy