Return-Path: X-Original-To: apmail-incubator-ooo-dev-archive@minotaur.apache.org Delivered-To: apmail-incubator-ooo-dev-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id D1538D6DE for ; Thu, 1 Nov 2012 16:57:44 +0000 (UTC) Received: (qmail 15415 invoked by uid 500); 1 Nov 2012 16:57:44 -0000 Delivered-To: apmail-incubator-ooo-dev-archive@incubator.apache.org Received: (qmail 15091 invoked by uid 500); 1 Nov 2012 16:57:43 -0000 Mailing-List: contact ooo-dev-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: ooo-dev@incubator.apache.org Delivered-To: mailing list ooo-dev@incubator.apache.org Received: (qmail 15067 invoked by uid 99); 1 Nov 2012 16:57:43 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 01 Nov 2012 16:57:43 +0000 X-ASF-Spam-Status: No, hits=1.5 required=5.0 tests=HTML_MESSAGE,RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of jancasacondor@gmail.com designates 209.85.219.47 as permitted sender) Received: from [209.85.219.47] (HELO mail-oa0-f47.google.com) (209.85.219.47) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 01 Nov 2012 16:57:37 +0000 Received: by mail-oa0-f47.google.com with SMTP id h1so2703620oag.6 for ; Thu, 01 Nov 2012 09:57:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=E+iEOjZsMb/3LRCuo7UKiqhEeg52K0JQ3zqsUF0s67g=; b=bEppm5FIvsV9VdrPMclYZ5wXGf6KPNxdDkmCpMtjSoNj22q0RmVOqkvBialniZa1nX zqC6whIhgAJM4xjLSzOuBFPZBtwXj+Odf7CqMtwtUL7k7tedeqLZ4I3tyIloWFiKl0lO pUGLsm9DoYlAxrV2nBwtm+H4GsHf5xZ0+QFTKMm0yJuNNj3/SIJYUCNBKvhHOTHU6yJN tPC45JEKAV/HnKpOp71PedKzTjtF3WGvLV8k23g5VHMn1du3Ty+Qrquon7eYVr0I1PZQ MHPpWAezuws5i+pRgf9UPwdn5WI/h/oNeBp0UVbUr7TFFEWasuGs0eIJRxkEwpTU6kpU 0zEg== MIME-Version: 1.0 Received: by 10.182.184.102 with SMTP id et6mr33290570obc.102.1351789036391; Thu, 01 Nov 2012 09:57:16 -0700 (PDT) Received: by 10.76.91.9 with HTTP; Thu, 1 Nov 2012 09:57:16 -0700 (PDT) In-Reply-To: <5092A708.9040800@googlemail.com> References: <5092A708.9040800@googlemail.com> Date: Thu, 1 Nov 2012 17:57:16 +0100 Message-ID: Subject: Re: [question] build infra structure. From: jan iversen To: ooo-dev@incubator.apache.org Content-Type: multipart/alternative; boundary=f46d0444e8a5534efb04cd71e905 X-Virus-Checked: Checked by ClamAV on apache.org --f46d0444e8a5534efb04cd71e905 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable See below please. THANKS for your VERY informative answer, it helped me a lot. I was of the simple idea, that we pursued a simple build process made up of gnuMake and an addon to gather for the shortcoming of gnumake in respect of cascaded makefiles. I hope to see your presentation on video later, due to personal budget restriction (dont we all have that) I cannot participate. Jan. On 1 November 2012 17:44, Andre Fischer wrote: > On 31.10.2012 22:20, jan iversen wrote: > >> Hi >> >> I have been searching for detailed internal information about how the >> build >> process works with build and dmake (gnumake). >> >> I have seen the relationship in the single directories (prj/build.lst >> prj/d.lst and makefile.mk), but I cannot find a central makefile. >> >> If I understand life, there should be a central makefile, telling e.g. h= ow >> .cpp is translated to .o >> > > Pah, who needs a central makefile if he can have a Perl file instead :-) > > Sorry, I could not resist. I am currently preparing a talk for ApacheCon > about the AOO build system and it is somewhat depressing to see how bizar= re > some things are. > It=B4s quite OK, I learn fast :-) (and being a dane I like that kind of jokes/hints) > > If I find the time after ApacheCon then I will turn my talk into a Wiki > page or one or several blog posts. > Here is the short version. > > First there is configure and bootstrap. But I think that you have > mastered that step already. > > Then comes the actual building. The central makefile is main/solenv/bin/ > build.pl, yes, a Perl script. It reads /prj/build.lst files to > a) determine the dependency between modules and (just the first line) > b) find the directories inside each module that have to be built. > (all other lines) > build.pl starts at main/instsetoo_native/prj/buil**d.pl = and follows the dependency to other modules. > > build.pl can handle multi process builds and uses the module dependency > graph to build modules in the right order. > It can do partial builds: > build --all --from ignores all modules before when > building AOO (in the linearization of the dependency graph) > build --all called in another module than instsetoo_native builds all > dependencies and stops when the current module is built. > > build.pl calls dmake for every module, regardless of whether they are > dmake or gbuild modules. > - For dmake modules it calls dmake for all directories listed in > prj/build.lst > - For gbuild modules it does the same but prj/build.lst only contains one > entry which points to util/makefile.mk > This util/makefile.mk then chains GNU make for /Makefile > gbuild modules have all their makefiles in their top level directory. > One makefile per library or other main targets. > Why dont we just use dmake/gnumake, have a makefile in each directory which includes a master makefile ? > > Both dmake and gbuild distinguish between data and build logic. The > modules usually contain only descriptions of which source files have to b= e > compiled and which libraries are to be linked. How that is done, on all > the different platforms, compilers, environment variables is handled by > makefiles in > solenv/inc for dmake > solenv/gbuild for gbuild > A I wrong in saying that the bulid list and delivery list could just as easily have been expressed as a target in makefile.in ??? Please forgive me, I am (as one who looks at the process with new eyes) just floating ideas ? > > > The last part of the build process is the creation of installation sets. > It is triggered by instsetoo_native/util/makefile**.mkwhich basically just calls solenv/bin/ > make_installer.pl with a cleverly selected bunch of parameters. > make_installer.pl uses a larger number of Perl modules under > solenv/bin/modules/installer which then do the actual work of collecting > the relevant files, copying them into a temporary directory into a runnab= le > office, and finally packing them into a package that fits the target > platform. > > > I am aware that the above is still very terse. I am happy to answer any > questions (if I know the answer). > Thanks again, you actually helped me a lot !!!! > > Regards, > Andre > > > >> Can somebody please point me in the direction, or tell me if it done in = a >> different way ? >> >> My reason for asking is that I need to add a set of new standard rules >> for >> localization (.xhlp -> .po ....) >> >> Thanks in advance. >> Jan >> >> > --f46d0444e8a5534efb04cd71e905--