incubator-ooo-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ksch...@apache.org
Subject svn commit: r1175537 [1/3] - /incubator/ooo/ooo-site/trunk/content/tools/
Date Sun, 25 Sep 2011 19:39:09 GMT
Author: kschenk
Date: Sun Sep 25 19:39:08 2011
New Revision: 1175537

URL: http://svn.apache.org/viewvc?rev=1175537&view=rev
Log:
KLS - added tools repository

Added:
    incubator/ooo/ooo-site/trunk/content/tools/
    incubator/ooo/ooo-site/trunk/content/tools/Choosing_the_right_build_system.html   (with props)
    incubator/ooo/ooo-site/trunk/content/tools/CodeReview_Proposal.sxw   (with props)
    incubator/ooo/ooo-site/trunk/content/tools/CodingGuidelines.sxw   (with props)
    incubator/ooo/ooo-site/trunk/content/tools/InterfacesChecklist.sxw   (with props)
    incubator/ooo/ooo-site/trunk/content/tools/background.html   (with props)
    incubator/ooo/ooo-site/trunk/content/tools/build_env.html   (with props)
    incubator/ooo/ooo-site/trunk/content/tools/build_env_conf.html   (with props)
    incubator/ooo/ooo-site/trunk/content/tools/build_env_mkfiles.html   (with props)
    incubator/ooo/ooo-site/trunk/content/tools/build_env_modstruct.html   (with props)
    incubator/ooo/ooo-site/trunk/content/tools/build_env_param.html   (with props)
    incubator/ooo/ooo-site/trunk/content/tools/build_env_tools.html   (with props)
    incubator/ooo/ooo-site/trunk/content/tools/code_Metrics.html   (with props)
    incubator/ooo/ooo-site/trunk/content/tools/coding.html   (with props)
    incubator/ooo/ooo-site/trunk/content/tools/depend.gif   (with props)
    incubator/ooo/ooo-site/trunk/content/tools/ext_comp.html   (with props)
    incubator/ooo/ooo-site/trunk/content/tools/favicon.ico   (with props)
    incubator/ooo/ooo-site/trunk/content/tools/flow1.gif   (with props)
    incubator/ooo/ooo-site/trunk/content/tools/flow2.gif   (with props)
    incubator/ooo/ooo-site/trunk/content/tools/index.html   (with props)
    incubator/ooo/ooo-site/trunk/content/tools/modules.gif   (with props)

Added: incubator/ooo/ooo-site/trunk/content/tools/Choosing_the_right_build_system.html
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/tools/Choosing_the_right_build_system.html?rev=1175537&view=auto
==============================================================================
--- incubator/ooo/ooo-site/trunk/content/tools/Choosing_the_right_build_system.html (added)
+++ incubator/ooo/ooo-site/trunk/content/tools/Choosing_the_right_build_system.html Sun Sep 25 19:39:08 2011
@@ -0,0 +1,146 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+  <title>Choosing the right build system</title>
+                       
+  <meta http-equiv="content-type"
+ content="text/html; charset=ISO-8859-1">
+</head>
+<body>
+<h1>Autotools and OpenOffice.org</h1>
+draft 0.1 <a href="mailto:mh@openoffice.org">mh@openoffice.org </a>09/18/2002<br>
+<br>
+autoconf is the most standard build system in the OpenSource world. It automatically
+configure software source code packages. These scripts can adapt the packages
+to many kinds of UNIX-like systems without manual user intervention.  Autoconf
+creates a configuration script for a package from a template file that lists
+the operating system features that the package can use, in the form of m4
+macro calls. The sequence:<br>
+<blockquote>./configure<br>
+make<br>
+make install<br>
+</blockquote>
+is well known for many Open Source software packages. Many times the question
+come up, why OpenOffice.org is not or only partly using this standard build
+system.<br>
+<br>
+<h2>Checking the prerequistes</h2>
+one of the major tasks for a build system is to check the prerequites for
+the build. Typical candidates are <br>
+<ul>
+  <li>Build tools like compiler, linker</li>
+  <li>other development tools like flex, bison</li>
+  <li>Software development kits like jdk (Java Development Kit) or minor kits
+(external libraries and header files like neon, freetype, berkerleydb)</li>
+</ul>
+<h2>Creating the Configuration</h2>
+After all the prerequisites have been checked and validated the configuation
+can be created. In the autotools environment this happens through:<br>
+<ul>
+  <li>generation of config.h</li>
+  <li>generation of makefiles</li>
+</ul>
+In the OpenOffice.org this is done through the generation of a script file
+which describes environment variables to be set after source/executing this
+script file. This is a big difference and has some reasons:<br>
+<ul>
+  <li>OpenOffice.org is used to work on a firm feature set per platform, that
+means a Linux build should be on every Linux distribution the same, independent
+from preinstalled development kits (see above). We see it as critical to
+have binary distrubtion of a product available, which have a different feature
+set provided to the user of the product. This is feasable if you are try
+to adopt some source to your local configuration of your local machine, but
+it's not feasable for redistribution in binary form. So we decided not to
+use a dynamic created config.h (long before StarOffice went OpenSource). Also
+there are not many different Unix flavours available and support at the
+time the autotools were introduced. Also almost of the platform dependencies
+should be coved in one Layer (SAL, System Abstraction Layer), most of the
+other stuff (exception are vcl, bridges) should be system independent and
+shouldn't contain any "HAVE_bla" or "#ifdef platform" conditions (in theory).</li>
+  <li>because OpenOffice.org/StarOffice is an end user product, we support
+only well defined versions of compiler. We should not use the compiler which
+we have randomly found on our machine to produce a redistribution of our product.
+Almost every compiler version has different optimization bugs in it, so that
+the risk of program failures is simply to high if using a unkown/untested
+version of a compiler. So the usual testing of a compiler within configure,
+if it is possible to create object files and so on is simply superflous and
+too time consuming. This is also valid for other tools like bison, flex etc.
+Of course a user should be able to choose a compiler of his own.<br>
+  </li>
+  <li>The creation of makefiles and config.h is also critical because everything
+has to be recreated due to the dependency of almost every artifact to these
+files (for this reason compiler cache has been created).</li>
+  <li>The configuration for debug, product, profiles, shared, static build
+method is also hardcoded into the generated makefiles, so a mixture a debug/nondebug,
+optimized/non optimized object files is not possible but necessary for a product
+with the size of OpenOffice.org (e.g. it's on almost all machines not possible
+to run a full debug build in a debugger, because several Gigabytes of RAM
+are needed).</li>
+  <li>autotools implementation relies on complex macro programming (m4) this
+is just a reason more not to use it. The feature set that is needed for a
+OpenOffice.org build is/was not available in autotools and there were no resource
+to reimplement these in autotools (many new rules for resource, idl compiler,
+own resource format, many other OpenOffice.org specific tagets which are
+not available in the current automake implementation).&nbsp;</li>
+  <li>current makefile implementions are written for dmake, there were no
+resources to rewrite it in GNUmake. Are there any advantages in opposite to
+dmake beside the argument that GNUmake is the "standard make" ?</li>
+  <li>configure is too time consuming for just setting up an build environment
+(e.g. configure for binutils 2.13 lasts several minutes on a 2-3 year old
+machine). OpenOffice.org developers work on several codelines
+in parallel, so a long configure time is not acceptable (imagine the worst case: generation
+of over 1000 makefiles or one gigantic makefile ;) ).</li>
+  <li>autotools are using <a
+ href="http://www.tip.net.au/%7Emillerp/rmch/recu-make-cons-harm.html">recursive
+makefiles</a>.<br>
+  </li>
+</ul>
+<br>
+<h2>Building</h2>
+After configuration is done, the build of the product is coming. On a quite
+modern machine (1.8 GHz Linux) the build last about 6 hours. On older machines
+a build will last up to one day. For this reason no StarOffice or
+OpenOffice.org developer will
+build a complete Office on his own. There are centralized builds available, and
+a developer will only grab part of the solver and the source of the modules
+he is interested in. He changes some files and only the effected (object-)
+files have to be recreated. This speeds up development cycle at lot. To set
+up environment we use:<br>
+<ul>
+  <li><a
+ href="http://porting.openoffice.org/source/browse/tools/solenv/bin/setsolar.pl">setsolar.pl</a>
+(alias setsolar.pl 'perl ooo/solenv/bin/setsolar.pl -envroot -sourceroot
+-file ~/.solar.env.$$.tmp !*; source ~/.solar.env.$$.tmp; rm -f ~/.solar.env.$$.tmp'
+leeds to commands like "setsolar -pro -srx643 unxsols3" and set solver paths
+to globally shared copy of solver. An extra switch -ca (copy all) create
+a local enviroment, that means the solver gets copied on your local hard
+disk.</li>
+  <li>dmake options:</li>
+  <ul>
+    <li>dmake debug=t build with debug information in the current directory</li>
+    <li>dmake nopt=t builds without optimization flags</li>
+    <li>dmake depend=t generates new dependencies</li>
+    <li>other options like profile=t, lint=t, linkinc=t also available</li>
+  </ul>
+  <li><a
+ href="http://porting.openoffice.org/source/browse/tools/solenv/bin/build.pl">build.pl
+    </a>tool: avoid recursive makefile and have some goodies:</li>
+  <ul>
+    <li>build -all build all dependent modules up to current module</li>
+    <li>build -from</li>
+    <li>build -since</li>
+    <li>build -PPn : parallel building (see also dmake -Pn)<br>
+    </li>
+  </ul>
+</ul>
+<br>
+<h4>References:</h4>
+autoconf: <a
+ href="http://www.gnu.org/manual/autoconf/html_mono/autoconf.html">http://www.gnu.org/manual/autoconf/html_mono/autoconf.html</a><br>
+automake: <a
+ href="http://www.gnu.org/manual/automake/html_mono/automake.html">http://www.gnu.org/manual/automake/html_mono/automake.html<br>
+</a>make: <a href="http://www.gnu.org/manual/make/html_mono/make.html">http://www.gnu.org/manual/make/html_mono/make.html</a><br>
+<br>
+<br>
+</body>
+</html>

Propchange: incubator/ooo/ooo-site/trunk/content/tools/Choosing_the_right_build_system.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/ooo/ooo-site/trunk/content/tools/CodeReview_Proposal.sxw
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/tools/CodeReview_Proposal.sxw?rev=1175537&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/ooo/ooo-site/trunk/content/tools/CodeReview_Proposal.sxw
------------------------------------------------------------------------------
    svn:executable = *

Propchange: incubator/ooo/ooo-site/trunk/content/tools/CodeReview_Proposal.sxw
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/ooo/ooo-site/trunk/content/tools/CodingGuidelines.sxw
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/tools/CodingGuidelines.sxw?rev=1175537&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/ooo/ooo-site/trunk/content/tools/CodingGuidelines.sxw
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/ooo/ooo-site/trunk/content/tools/InterfacesChecklist.sxw
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/tools/InterfacesChecklist.sxw?rev=1175537&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/ooo/ooo-site/trunk/content/tools/InterfacesChecklist.sxw
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/ooo/ooo-site/trunk/content/tools/background.html
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/tools/background.html?rev=1175537&view=auto
==============================================================================
--- incubator/ooo/ooo-site/trunk/content/tools/background.html (added)
+++ incubator/ooo/ooo-site/trunk/content/tools/background.html Sun Sep 25 19:39:08 2011
@@ -0,0 +1,295 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>OpenOffice.org - Background for building</title>
+<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
+</head>
+<body>
+
+<H1><A NAME="1.BackgroundInformationforBuildingOpenOffice|outline"></A>
+Background Information</H1>
+
+<P>This section provides background information about the build process 
+for Star/OpenOffice.org.
+Note that StarOffice and OpenOffice.org are developed together, 
+but are two different products, for details 
+see <a href="http://www.openoffice.org/license.html">licenses</a> or the 
+<a href="http://www.openoffice.org/FAQs/faq-questions.html#licensing">FAQ</a>.
+Some parts of Star Office use third party code that cannot be used with
+OpenOffice.org.  Some of this code has been replaced with Open Source code
+and some is left as a future project, for example the grammar checker.
+</P>
+
+<P>The document is split into the following sections:</P>
+<UL TYPE=DISC>
+  <li><a href="#1.1.SourceTreesandOutputTrees|outline">
+	  Source Trees and Output Trees</a></li>
+  <li><a href="#1.2.UsingIdenticalBuildProcesses|outline">
+	  Using Identical Build Processes</a></li>
+  <li><a href="#1.3.ReleaseEngineeringBuilds|outline">
+	  Release Engineering Builds</a></li>
+  <li><a href="#1.4.DevelopingOpenOffice|outline">
+	  Developing in the OpenOffice.org Project</a></LI>
+</UL>
+
+<H2><A NAME="1.1.SourceTreesandOutputTrees|outline"></A>Source Trees
+and Output Trees</H2>
+
+<P>OpenOffice.org developers work in parallel on all platforms. The
+source code for all platforms is identical, with the exception of the
+code for the interface to the operating and windows systems. This
+allows you to build for the different platforms
+simultaneously from a single <b>source tree</b>, i.e. the 
+directory structure that stores all of the source code for
+the office suite. 
+</P>
+
+<P>The <SAMP CLASS="code">solenv</SAMP> tree contains the environment
+tools that the build process uses, for all supported platforms. 
+Formerly it
+also included the platform-specific build tools. Now these 
+build tools are created with a <SAMP CLASS="code">bootstrap</SAMP> 
+script created with the <SAMP CLASS="code">configure</SAMP> script.
+</P>
+
+<P>The build process generates files from the source tree and copies
+them into an <B>output tree</B>, i.e. a directory
+structure that the build process populates with all the files
+necessary to build. The output tree is called <SAMP CLASS="code">solver</SAMP>.
+</P>
+
+<P>When you run bootstrap, the <SAMP CLASS="code">solver</SAMP>
+directory is created. Initially, the <SAMP CLASS="code">solver</SAMP> directory
+is empty. The build process populates this directory. The build
+process delivers all binary files, shared libraries, and dynamic link
+libraries to <SAMP CLASS="code">solver</SAMP>. 
+</P>
+
+<P>When you want to build a specific project, you only need the
+sources of the relevant CVS modules and the output tree <SAMP CLASS="code">solver</SAMP>.
+You do not need the entire source tree, though typically a developer will check
+out one of the <a href="builds">branches</a> and build it from scratch.
+</P>
+
+<P>For more information on the <SAMP CLASS="code">solenv</SAMP> and
+<SAMP CLASS="code">solver</SAMP> trees, see the <A HREF="http://tools.openoffice.org">Tools 
+Project</A>.</P>
+
+<H2><A NAME="1.2.UsingIdenticalBuildProcesses|outline"></A>
+Using Identical Build Processes</H2>
+
+<P>The build process in OpenOffice.org is identical for all platforms. 
+</P>
+
+<P>A OpenOffice.org make tool called <SAMP CLASS="code">dmake</SAMP> controls
+the build process.</p>
+<p>There are makefiles (<SAMP CLASS="code">makefile.mk</SAMP>) and 
+project <a href=build_env_tools.html>build</a> files
+<SAMP CLASS="code">prj/build.lst</SAMP>, handling 
+the interdependencies of modules and directories throughout 
+the source tree. The same makefiles are used for all platforms.  
+Macros used control eventual platform-specific steps in the build 
+process. This 
+guarantees a minimum of effort when porting to a new platform as 
+only the macros in the makefiles need to be adapted. The build process
+does not require any further scripts or platform-dependent makefiles.
+</P>
+<P>Star/OpenOffice.org developers rewrote many of the build tools to make the
+OpenOffice.org build experience as close as possible to the normal open
+source build experience. As a result of this, all of the tools used
+in the make process are portable. OpenOffice.org developers wrote some of
+them, others are standard open source tools, usually GNU utilities.</P>
+<P>The <SAMP CLASS="code">dmake</SAMP> tool is a make utility similar
+to GNU <SAMP CLASS="code">make</SAMP> or the Workshop Compiler <SAMP CLASS="code">dmake</SAMP>.
+This utility has an irregular syntax but is available from source on all
+platforms.
+The OpenOffice.org version of <SAMP CLASS="code">dmake</SAMP>
+is a modified version of the original freeware <SAMP CLASS="code">dmake</SAMP>.
+</P>
+<P>When you run <SAMP CLASS="code">dmake</SAMP> from the top-level directory 
+of the source tree all modules are built.  This is acheived by simply running
+the <SAMP class="code">build -all</samp> in the instsetoo directory.  The build command is described in other <a href=build_env_tools.html>documentation</a>.
+There are many dependencies between the modules,
+so <SAMP CLASS="code">build</SAMP> must build them in a particular
+order. The <SAMP CLASS="code">dmake</SAMP> tool builds the various direcotires
+in the modules,
+then delivers all header files, generated header files, binary files,
+shared libraries, resources, and so on to the <SAMP CLASS="code">solver</SAMP>
+tree.</P>
+<P>For more information on the <SAMP CLASS="code">dmake</SAMP> tool,
+see the <A HREF="http://tools.openoffice.org">Tools 
+Project</A>.</P>
+<H2><A NAME="1.3.ReleaseEngineeringBuilds|outline"></A>Release
+Engineering Builds</H2>
+<P>The OpenOffice.org source tree is structured into <B>project</B>s.</p>
+<p>A project builds a particular
+component of the office suite. For example, the Writer
+project builds the Writer application. A project is an
+application, function, or simply a summary of classes. A project may be 
+subdivided into modules.
+A module is the smallest unit of the office suite that
+can be built.</P>
+<P>Modules correspond to the directories under the 
+top-level directory of the source tree. For example, the Writer project
+includes the <SAMP CLASS="code">sw</SAMP>, <SAMP CLASS="code">starmath</SAMP>,
+<SAMP CLASS="code">res</SAMP> modules, etc.
+</P>
+<p>To determine which project that a module belongs to look at the
+CVS/Repository file.  For example</p>
+<pre>
+froddo: /data2/office
+$ cd config_office
+
+froddo: /data2/office/config_office
+$ cat CVS/Repository
+tools/config_office
+</pre>
+<p>We find out that the config_office directory (module) is part of the tools
+project.</p>
+<P>There are many dependencies between the modules, 
+and the modules must build in a particular order. 
+Module prerequisites are described in first line of the file 
+<SAMP CLASS="code">prj/build.lst</SAMP> for example</p>
+<pre>
+froddo: /data2/office/sw/prj
+$ cat build.lst
+sw      sw      :       connectivity svx stoc uui sch NULL
+</pre>
+<p>We find that sw depends on connectivity etc.  These modules in turn depend
+on others creating a large complex depency tree.</p>
+
+<H3><A NAME="1.3.1.FullBuildsandRespinBuilds|outline"></A>Full Builds</H3>
+
+<P>OpenOffice.org developers typically perform a <B>full build</B> of
+OpenOffice.org in order to build their modules.
+A full build also recompiles all of the source code. It can take up
+to 16 hours to perform a full build of OpenOffice.org. Using tools such as
+distcc and ccache can have dramatic time improvements however.
+</P>
+
+<P>
+To avoid the need of a time-expensive complete 
+re-build each time a change 
+in the code is introduced, the developers are asked to 
+introduce only <b>binary compatible</b> changes in the 
+code unless the it is agreed with the project owner.
+This means that the changes made 
+are of such a nature that no recompilation of further dependent 
+modules become necessary (inserting a new, non-virtual 
+method in a C++ class would be an example of such a binary compatible change).
+The office suite will then be re-compiled as a so-called 
+<B>respin build</B> before the next 'master' s declared. A
+respin build obeys only weak dependencies, i.e. 
+dependencies within a module. Using weak
+dependencies allows you to, for example, to modify a base library header
+file without needing to perform a full build. 
+Since a respin build relies on binary compatible changes, modules 
+can be build in parallel, and the build takes much less time (a few 
+hours) in contrast to a full build. 
+</P>
+<P>By contrast, <B>binary incompatible</B> changes require a full
+build. For reasons of efficiency, this is allowed with the approval of the
+project owner.
+</p>
+
+
+<H3><A NAME="1.3.2.MilestoneBuilds|outline"></A>Snapshots / Milestone Builds</H3>
+
+<p>OpenOffice.org is built and tested. 
+Tarballs of the current source as well as <SAMP CLASS="code">solver</SAMP> 
+and installation tarballs are published in the  
+<a href="http://download.openoffice.org/index.html">download page</a> 
+at www.openoffice.org. This happens roughly every four weeks. As a result, a 
+<b>snapshot</b> of the current state of OpenOffice.org is available. In case the snapshot 
+contains some outstanding 'milestone' improvements in functionality or coding, we may also refer 
+to the snapshot as a <b>milestone build</b>.
+
+</P>
+<H2><A NAME="1.4.DevelopingOpenOffice|outline"></A>Developing
+in the OpenOffice.org Project</H2>
+
+<P>The following is an illustration of how open source developers contribute to
+the OpenOffice.org project.  Suppose that you want to update a method called
+<SAMP CLASS="code">xyz</SAMP> that is defined in the <SAMP
+CLASS="code">svtools</SAMP>
+module. Suppose also that the <SAMP CLASS="code">svx</SAMP> module
+uses the method <SAMP CLASS="code">xyz</SAMP>. You can proceed as
+follows:</P>
+<OL>
+	<LI>Download the milestone <SAMP CLASS="code">solver</SAMP>
+	tarball for the platform you want to develop on.</LI>
+	<LI>Check out the Utilities project from the CVS tree. This
+	copies the <SAMP CLASS="code">svtools</SAMP> module to your local
+	environment.</LI>
+	<LI>Update the method in the <SAMP CLASS="code">svtools</SAMP>
+	module. 
+	</LI>
+	<LI>Check what is the effect of updating the method on other
+	modules. You may want to check how many  modules use the method <SAMP CLASS="code">xyz</SAMP>.
+	This may be difficult to establish. You may conclude that the only
+	other module that uses the <SAMP CLASS="code">xyz</SAMP> method is
+	the <SAMP CLASS="code">svx</SAMP> module. If you are happy that you
+	can make a compatible modification, you can continue.</LI>
+	<LI>Make the change to the method <SAMP CLASS="code">xyz</SAMP>
+	in the module <SAMP CLASS="code">svtools</SAMP>. 
+	</LI>
+	<LI>Build <SAMP CLASS="code">svtools</SAMP>, this delivers the
+	output to the appropriate output tree. 
+	</LI>
+	<LI>In the <SAMP CLASS="code">svx</SAMP> module, make the changes
+	corresponding to the changes that you made in <SAMP CLASS="code">svtools</SAMP>.</LI>
+	<LI>Build <SAMP CLASS="code">svx</SAMP>, this delivers the output
+	to the appropriate output tree. 
+	</LI>
+	<LI>Test your changes.</LI>
+	<LI>Submit the patch.</LI>
+	<LI>A community volunteer or the project owner checks the patch,
+	comments on or approves it</li>
+	<li>The patch is commited to the CVS tree.</li>
+</OL>
+<P><B>Note: </B>Another
+project that you have not checked out may use the same method name.</P>
+
+<H3><A NAME="1.4.1.TipsonHowtoAvoidBreakingtheBuild|outline"></A>Tips
+on How to Avoid Breaking the Build</H3>
+
+<P>When you are developing in OpenOffice.org,
+your code must respect the order in which the modules are built.
+Otherwise, you may create a circular dependency. A circular
+dependency is created when a module attempts to use features in
+another module that is built after it. 
+</P>
+
+<P>For example, if you change the <SAMP CLASS="code">sot</SAMP>
+module so that it uses header or library files from the <SAMP CLASS="code">toolkit</SAMP>
+module, you create a circular dependency. The <SAMP CLASS="code">toolkit</SAMP> module is built
+after the <SAMP CLASS="code">sot</SAMP> module, and indirectly
+depends on it. When the <SAMP CLASS="code">sot</SAMP> module refers
+to the <SAMP CLASS="code">toolkit</SAMP> module, it becomes dependent on it, and the circular
+dependency is created. This will cause the build to break and another solution
+must be found.</P>
+
+<P>Note that the build process builds one
+directory completely, and then builds the next directory.
+</P>
+
+<P>When you are working within a module, your code must respect the existing
+structure of the module, in the following ways:</P>
+
+<UL TYPE=DISC>
+	<LI>Separate the building of objects from the linking of libraries. Create
+	links in the <CODE>utils</CODE> directory
+	as much as possible. This also enables you to find link targets
+	easily.</LI>
+	<LI>To reduce how long it takes to
+	build, keep the source subdirectories to a reasonable size, that is,
+	less than 50 files. 
+	</LI>
+	<LI>When more than one directory uses
+	a header or library file, put the file in the <CODE>inc</CODE> directory.
+	When you build, it appears in the <CODE><VAR>module-name</VAR>/inc</CODE>
+	directory 
+	of the shared output tree after the deliver phase of build process.</li>
+</UL>
+</BODY>
+</html>

Propchange: incubator/ooo/ooo-site/trunk/content/tools/background.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/ooo/ooo-site/trunk/content/tools/build_env.html
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/tools/build_env.html?rev=1175537&view=auto
==============================================================================
--- incubator/ooo/ooo-site/trunk/content/tools/build_env.html (added)
+++ incubator/ooo/ooo-site/trunk/content/tools/build_env.html Sun Sep 25 19:39:08 2011
@@ -0,0 +1,127 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<html>
+<head>
+<title>OpenOffice.org - The build environment</title>
+
+<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
+</head>
+<body>
+<h1>Build Environment</h1>
+
+<p>This section contains the following information:</p>
+
+<ul type="disc">
+<li><a href="build_env_conf.html">The <code>configure</code>Script
+for Linux, Solaris, Mac OS X, etc</a> 
+
+<ul>
+<li><a href=
+"build_env_conf.html#3.1.1.OperatingEnvironmentsSupportedbyconfigureScript%7Coutline">
+The <code>configure</code> Script Operating Environments</a></li>
+
+<li><a href=
+"build_env_conf.html#3.1.2.CheckingthePrerequisites%7Coutline">Checking
+the Prerequisites</a></li>
+
+<li><a href=
+"build_env_conf.html#3.1.3.CheckingToolVersions%7Coutline">Checking
+Tool Versions</a></li>
+
+<li><a href=
+"build_env_conf.html#3.1.4.OptionsAvailablewithconfigureScript%7Coutline">
+Options Available with <code>configure</code> Script</a></li>
+
+<li><a href="build_env_conf.html#bootstrap">Creating the
+<code>bootstrap</code> Utility</a></li>
+
+<li><a href=
+"build_env_conf.html#3.1.5.SettingtheEnvironmentVariables%7Coutline">
+Setting the Environment Variables</a></li>
+</ul>
+</li>
+
+<li><a href="build_env_param.html">Build Environment
+Description</a></li>
+
+<li><a href="build_env_tools.html">Tools Provided for Building and
+Installing</a></li>
+
+<li><a href="build_env_modstruct.html">CVS Module Structure</a> 
+
+<ul>
+<li><a href=
+"build_env_modstruct.html#3.4.1.TopLevelCVSModuleDirectoryStructure%7Coutline">
+Top Level CVS Module Directory Structure</a></li>
+
+<li><a href=
+"build_env_modstruct.html#3.4.2.CompiledObjectsor$INPATHDirectoryStructure%7Coutline">
+Compiled Objects or $INPATH Directory Structure</a></li>
+</ul>
+</li>
+
+<li><a href="build_env_mkfiles.html">Makefiles Description</a> 
+
+<ul>
+<li><a href=
+"build_env_mkfiles.html#3.5.2.GeneralStructureofmakefile.mkMakefiles%7Coutline">
+General Structure of <code>makefile.mk</code> Makefiles</a></li>
+
+<li><a href=
+"build_env_mkfiles.html#3.5.3.GenerationofObjectFilesandLibraries%7Coutline">
+Generation of Object Files and Libraries</a></li>
+
+<li><a href=
+"build_env_mkfiles.html#3.5.4.GenerationofResourceFiles%7Coutline">Generation
+of Resource Files</a></li>
+
+<li><a href=
+"build_env_mkfiles.html#3.5.5.GenerationofApplications%7Coutline">Generation
+of Applications</a></li>
+
+<li><a href=
+"build_env_mkfiles.html#3.5.6.GenerationofSharedLibrariesorDynamicLinkLibraries%7Coutline">
+Generation of Shared Libraries or Dynamic Link Libraries</a></li>
+
+<li><a href=
+"build_env_mkfiles.html#3.5.7.InternalStructureoftheMakefiles%7Coutline">
+Internal Structure of the Makefiles</a> 
+
+<ul>
+<li><a href=
+"build_env_mkfiles.html#3.5.7.1.Thesettings.mkfile%7Coutline">The
+<code>settings.mk</code> file</a></li>
+
+<li><a href=
+"build_env_mkfiles.html#3.5.7.2.Thetarget.mkfile%7Coutline">The
+<code>target.mk</code> file</a></li>
+</ul>
+</li>
+
+<li><a href=
+"build_env_mkfiles.html#3.5.8.SettingAdditionalOptions%7Coutline">Setting
+Additional Options</a></li>
+
+<li><a href=
+"build_env_mkfiles.html#3.5.9.CreationofAdditionalTargets%7Coutline">
+Creation of Additional Targets</a> 
+
+<ul>
+<li><a href=
+"build_env_mkfiles.html#3.5.9.1.AddTargetstoall%7Coutline">Add
+Targets to <code>all</code></a></li>
+
+<li><a href=
+"build_env_mkfiles.html#3.5.9.2.AddingTargetstoaMakefileThatIncludeTargets%7Coutline">
+Adding Targets to a Makefile That Include Targets</a></li>
+
+<li><a href=
+"build_env_mkfiles.html#3.5.9.3.DeclaringDependenciesBeforeAddingTargets%7Coutline">
+Declaring Dependencies Before Adding Targets</a></li>
+</ul>
+</li>
+</ul>
+</li>
+
+</ul>
+</body>
+</html>

Propchange: incubator/ooo/ooo-site/trunk/content/tools/build_env.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/ooo/ooo-site/trunk/content/tools/build_env_conf.html
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/tools/build_env_conf.html?rev=1175537&view=auto
==============================================================================
--- incubator/ooo/ooo-site/trunk/content/tools/build_env_conf.html (added)
+++ incubator/ooo/ooo-site/trunk/content/tools/build_env_conf.html Sun Sep 25 19:39:08 2011
@@ -0,0 +1,962 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<html><head>
+<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
+<title>OpenOffice.org - Configure script</title>
+</head>
+<body>
+<h2>The <code>configure</code> Script for Linux, Solaris, Windows
+and Mac&nbsp;OS&nbsp;X</h2>
+
+<p>The <code>configure</code> script is an <code>autoconf</code>
+script that generates the build environment for the build. This
+section gives details about the <code>configure</code> script,
+including operating environments that it works on, prerequisites,
+and options available, in the following sections:</p>
+
+<ul>
+<li><a href=
+"build_env_conf.html#3.1.1.OperatingEnvironmentsSupportedbyconfigureScript|outline">
+The <code>configure</code> Script Operating Environments</a></li>
+
+<li><a href=
+"build_env_conf.html#3.1.2.CheckingthePrerequisites|outline">Checking
+the Prerequisites</a></li>
+
+<li><a href=
+"build_env_conf.html#3.1.3.CheckingToolVersions|outline">Checking
+Tool Versions</a></li>
+
+<li><a href=
+"build_env_conf.html#3.1.4.OptionsAvailablewithconfigureScript|outline">
+Options Available with <code>configure</code> Script</a></li>
+
+<li><a href="build_env_conf.html#bootstrap">Creating the
+<code>bootstrap</code> Utility</a></li>
+
+<li><a href=
+"build_env_conf.html#3.1.5.SettingtheEnvironmentVariables|outline">Setting
+the Environment Variables</a></li>
+</ul>
+
+<h3><a name=
+"3.1.1.OperatingEnvironmentsSupportedbyconfigureScript|outline"></a>
+The <code>configure</code> Script Operating Environments</h3>
+
+<p>The following table lists the combinations of hardware
+architecture and operating systems that the <code>configure</code>
+script works on. Since we are adding ports all the time to verify that your
+operating system and hardware are supported simply run configure.</p>
+<p>Note that the 64bit port is currently underway but is expected to take some
+time.  Configure will allow Alpha and x86_64 however it is probably not going
+to build a viable OpenOffice.org.  Please email the porting list for further
+information should you require it.</p>
+
+<table border="1" cellspacing="0" cellpadding="5">
+<caption>The <code>configure</code> Script Operating Environments</caption>
+
+<tr valign="top">
+<th>Hardware Architecture</th>
+<th>Operating Systems</th>
+</tr>
+
+<tr valign="top">
+<td>SPARC</td>
+<td>
+<ul type="DISC">
+<li>Solaris</li>
+<li>Linux</li>
+</ul>
+</td>
+</tr>
+
+<tr valign="top">
+<td>Intel</td>
+<td>
+<ul type="DISC">
+<li>Linux</li>
+<li>Windows using <a href="http://sources.redhat.com/cygwin/">cygwin</a></li>
+<li>FreeBSD</li>
+<li>NetBSD</li>
+<li>Solaris</li>
+</ul>
+</td>
+</tr>
+
+<tr valign="top">
+<td>PowerPC</td>
+<td>
+<ul type="DISC">
+<li>Linux</li>
+<li>Mac OS X</li>
+</ul>
+</td>
+</tr>
+
+<tr valign="top">
+<td>Mips</td>
+<td>
+<ul type="DISC">
+<li>Irix</li>
+</ul>
+</td>
+</tr>
+
+<tr valign="top">
+<td>s390</td>
+<td>
+<ul type="DISC">
+<li>Linux</li>
+</ul>
+</td>
+</tr>
+
+</table>
+
+<h3><a name="3.1.2.CheckingthePrerequisites|outline"></a>Checking
+the Prerequisites</h3>
+
+<p>The <code>configure</code> script checks the software, hardware,
+and system requirements. Some of these prerequisites are not
+essential for the <code>configure</code> script to run. If one of
+these prerequisites is missing, you are warned when the
+<code>configure</code> script completes.</p>
+
+<p>Other prerequisites are essential for the the
+<code>configure</code> script to run. If these prerequisites are
+missing, the <code>configure</code> script exits. To continue, you
+must identify the missing prerequisite and take the appropriate
+action. The following table includes information on which
+prerequisites cause the <code>configure</code> script to exit.</p>
+
+<table border="1" cellspacing="0" cellpadding="5" width="100%">
+<caption>Prerequisites Checked by the <code>configure</code>
+Script</caption>
+
+<tr valign="top">
+<th>Prerequisite</th>
+<th>Platform</th>
+<th>If absent</th>
+<th>Comment</th>
+</tr>
+
+<tr valign="top">
+<td>Hardware Architecture</td>
+<td>All</td>
+<td>Script exits</td>
+<td>The <code>configure</code> script only works with certain
+processors.</td>
+</tr>
+
+<tr valign="top">
+<td>Operating System</td>
+<td>All</td>
+<td>Script exits</td>
+<td>The <code>configure</code> script only works with certain
+operating systems.</td>
+</tr>
+
+<tr valign="top">
+<td>Compiler</td>
+<td>All</td>
+<td>Warning displayed</td>
+<td>The <code>configure</code> script only works with certain compilers.</td>
+</tr>
+
+<tr valign="top">
+<td>C Preprocessor</td>
+<td>All, except windows</td>
+<td>Warning displayed</td>
+<td>Needed for the build.  Visual C currently does not support C preprocessor.</td>
+</tr>
+
+<tr valign="top">
+<td><code>sed</code></td>
+<td>All</td>
+<td>Script exits</td>
+<td>Needed by the <code>configure</code> script.</td>
+</tr>
+
+<tr valign="top">
+<td><code>awk</code></td>
+<td>All</td>
+<td>Script exits</td>
+<td>Needed by the <code>configure</code> script and the
+<code>build</code> command.</td>
+</tr>
+
+<tr valign="top">
+<td>Standard C Headers</td>
+<td>All</td>
+<td>Warning displayed</td>
+<td>Needed for the build.</td>
+</tr>
+
+<tr valign="top">
+<td>JDK</td>
+<td>All</td>
+<td>Warning displayed</td>
+<td>Needed for the build.</td>
+</tr>
+
+<tr valign="top">
+<td>Perl</td>
+<td>All</td>
+<td>Script exits</td>
+<td>Needed for the build.</td>
+</tr>
+
+<tr valign="top">
+<td>STLPort 4</td>
+<td>All</td>
+<td>Uses supplied source</td>
+<td>STLPort source is supplied in the checkout, build uses that version</td>
+</tr>
+
+<tr valign="top">
+<td><code>csh</code></td>
+<td>Linux, Solaris, Mac OS X</td>
+<td>Script exits</td>
+<td>Needed for the build.</td>
+</tr>
+
+<tr valign="top">
+<td><code>bison</code></td>
+<td>Linux, Solaris</td>
+<td>Warning displayed</td>
+<td>Bison is needed in the build</td>
+</tr>
+
+<tr valign="top">
+<td><code>flex</code></td>
+<td>Linux, Solaris</td>
+<td>Warning displayed</td>
+<td>Flex is needed for the build</td>
+</tr>
+
+<tr valign="top">
+<td><code>patch</code></td>
+<td>All</td>
+<td>Warning displayed</td>
+<td>Needed for the build.</td>
+</tr>
+
+<tr valign="top">
+<td><code>zip and unzip</code></td>
+<td>Windows</td>
+<td>Warning displayed</td>
+<td>Needed for the build.</td>
+</tr>
+
+<tr valign="top">
+<td><code>GNU Make</code></td>
+<td>All</td>
+<td>Warning displayed
+<br>Error if version not adequate</td>
+<td>GNU make is needed for the build.</td>
+</tr>
+
+<tr valign="top">
+<td>X Runtime libraries and includes</td>
+<td>Linux, Solaris</td>
+<td>Warning displayed</td>
+<td>Needed for the build.</td>
+</tr>
+
+<tr valign="top">
+<td>X Development libraries</td>
+<td>Linux, Solaris</td>
+<td>Script exits</td>
+<td>Needed for the build.</td>
+</tr>
+
+<tr valign="top">
+<td><code>glibc</code></td>
+<td>Linux</td>
+<td>Script exits</td>
+<td>Needed for the build.</td>
+</tr>
+
+<tr valign="top">
+<td>Platform SDK</td>
+<td>Windows</td>
+<td>Error displayed</td>
+<td>Needed for the build.</td>
+</tr>
+
+<tr valign="top">
+<td>GPC</td>
+<td>All</td>
+<td>Error</td>
+<td>The GPC source can be downloaded from 
+<a href="ftp://ftp.cs.man.ac.uk/pub/toby/gpc/gpc231.tar.Z">here.</a></td>
+</tr>
+
+<tr valign="top">
+<td>Pam headers</td>
+<td>Linux</td>
+<td>Warning displayed</td>
+<td>Needed for the build.</td>
+</tr>
+
+<tr valign="top">
+<td>Solaris</td>
+<td>Solaris</td>
+<td>Warning displayed</td>
+<td>Needed for the build. Version 2.6 through 2.9 and various patches.</td>
+</tr>
+</table>
+
+<h3><a name="3.1.3.CheckingToolVersions|outline"></a>Checking Tool
+Versions</h3>
+
+<p>The <code>configure</code> script checks the version number of
+the tools. The following table lists details the tool versions
+checked by the <code>configure</code> script.</p>
+
+<table border="1" cellspacing="0" cellpadding="5">
+<caption>Tool Version Numbers Checked by <code>configure</code>
+Script</caption>
+
+<tr valign="top">
+<th>Tool</th>
+<th>Comment</th>
+</tr>
+
+<tr valign="top">
+<td>Compiler</td>
+<td>
+<ul type="DISC">
+<li><code>gcc</code> 3.0 or better ( gcc 3.2+ recommended)</li>
+
+<li>Workshop C/C++ for Solaris SPARC Version 5.0</li>
+<li>Microsoft Visual C</li>
+<li>MIPSpro 7.2 or better</li>
+<li>Compaq C version 6</li>
+</ul>
+</td>
+</tr>
+
+<tr valign="top">
+<td>JDK</td>
+<td>
+<ul type="DISC">
+<li>JDK 1.3.1 or higher for all platforms
+<p>Note: JDK 1.4.2 support is not reliable.</p>
+</li>
+</ul>
+</td>
+</tr>
+
+<tr valign="top">
+<td>GNU Make</td>
+<td>
+<ul type="DISC">
+<li>GNU Make 3.79.1 or higher for all platforms</li>
+</ul>
+</td>
+</tr>
+
+<tr valign="top">
+<td>Perl</td>
+<td>
+<ul type="DISC">
+<li>Perl 5 or higher for all systems</li>
+</ul>
+</td>
+</tr>
+
+<tr valign="top">
+<td><code>libc</code></td>
+<td>
+<ul type="DISC">
+<li><code>libc</code> 2.1.1 or higher for Linux</li>
+</ul>
+</td>
+</tr>
+</table>
+
+<h3><a name="bootstrap"></a>Creating the <code>bootstrap</code>
+Utility</h3>
+
+<p>The <code>configure</code> script builds the
+<code>bootstrap</code> utility and then copies it to the top-level
+directory. The <code>bootstrap</code> utility creates the tools for
+required for building.</p>
+
+<h3><a name=
+"3.1.4.OptionsAvailablewithconfigureScript|outline"></a>Options
+Available with <code>configure</code> Script</h3>
+
+<p>The options that are available with <code>autoconf</code> are
+also available with the <code>configure</code> script. For
+information on these options, see the <code>autoconf</code> manual
+at the GNU web site at <a href=
+"http://www.gnu.org/">http://www.gnu.org</a>.</p>
+
+<p>There are additional options that you can use with the
+<code>configure</code> script. To display these options, type the
+following command:</p>
+
+<table border="1" cellspacing="0" cellpadding="5" width="476">
+<tr>
+<td valign="top">
+<pre>
+% <kbd>./configure --help</kbd>
+</pre>
+</td>
+</tr>
+</table>
+
+<p>The following table describes the additional options that you
+can use with the <code>configure</code> script.</p>
+
+<table border="1" cellspacing="0" cellpadding="5">
+<caption>Additional Options Available with <code>configure</code>
+Script</caption>
+
+<tr valign="top">
+<th>Option</th>
+<th>Description</th>
+<th>Comment</th>
+</tr>
+<!--- 
+<tr valign="top">
+<td><code>--with-gcc-home</code></td>
+<td>Absolute path to <code>gcc</code> top-level directory.</td>
+<td>If you have built <code>gcc</code> from source using the
+<code>--with-shared</code> option, you specify the path to the root
+of your <code>gcc</code> installation.</td>
+</tr>
+ -->
+
+<tr valign="top">
+<td><code>--with-cl-home</code></td>
+<td>Absolute path to <code>cl</code> directory.</td>
+<td> For Windows NT users, please supply the path for the Microsoft C/C++
+compiler.  Note that this is not the location of the compiler binary but the
+location of the entire distribution.
+</td>
+</tr>
+
+<tr valign="top">
+<td><code>--with-jdk-home</code></td>
+<td>Absolute path to JDK top-level directory.</td>
+<td>If you have JDK 1.3.1 installed, and not in your path, then you
+specify the path to the root of your JDK installation.</td>
+</tr>
+
+<tr valign="top">
+<td><code>--with-perl-home</code></td>
+<td>Absolute path to Perl top-level directory.</td>
+<td>If you have Perl 5 installed, and not in your path, then you
+specify the path to the root of your Perl 5 installation.</td>
+</tr>
+
+<tr valign="top">
+<td><code>--enable-check-only</code></td>
+<td>Checks version numbers of tools in your environment.</td>
+<td>Use this option to check your environment. This option does not
+generate an environment variable file.</td>
+</tr>
+
+<tr valign="top">
+<td><code>--enable-macos9</code></td>
+<td>Generates a Mac OS 9 environment variable file.</td>
+<td>Use this option to generate a Mac OS 9 environment on Mac OS
+X.</td>
+</tr>
+
+<tr valign="top">
+<td><code>--with-stlport4-home</code></td>
+<td>Location of STLport4 library and header files</td>
+<td>Use this option to specify the location of STLport4 library and
+header files.</td>
+</tr>
+
+<tr valign="top">
+<td><code>--with-psdk-home</code></td>
+<td>Location of Microsoft Platform development kit</td>
+<td>For Windows NT users, please supply the path for the Microsoft Platform SDK.
+</td>
+</tr>
+
+<tr valign="top">
+<td><code>--with-lang</code></td>
+<td>language support</td>
+<td>Use this option to build OpenOffice.org with additional
+language support. US English is always included by default.
+Separate multiple languages with commas.</td>
+</tr>
+
+<tr valign="top">
+<td><code>--with-asm-home</code></td>
+<td>assembler compiler</td>
+<td>For Windows users, supply the path for the ml.exe
+assembler.</td>
+</tr>
+
+<tr valign="top">
+<td><code>--disable-gpc</code></td>
+<td>Removes GPC code</td>
+<td>The GPC polygon Clipper code has some licensing issues with some
+distributions.  This option disables this code reducing some of the graphic
+capability.</td>
+</tr>
+
+<tr valign="top">
+<td><code>--enable_debug</code></td>
+<td>Switches various debug options on</td>
+<td>This option is strongly discouraged, it needs about 8gig of disk space</td>
+</tr>
+
+<tr valign="top">
+<td><code>--with-x</code></td>
+<td>X Windows</td>
+<td>use the X Window System</td>
+</tr>
+
+
+<tr valign=top>
+<td><code>--with-gnu-patch</code></td>
+<td>Specify location of GNU patch on Solaris or FreeBSD</td>
+</tr>
+
+<tr valign=top>
+<td><code>--with-gnu-cp</code></td>
+<td>Specify location of GNU cp on Solaris or FreeBSD</td>
+</tr>
+
+<tr valign=top>
+<td><code>--enable-libart</code></td>
+<td>Enables the use of libart, instead of GPC for polygon clipping.</td>
+</tr>
+
+<tr valign=top>
+<td><code>--enable-libsn</code></td>
+<td>Enables the use of libstartup-notification</td>
+</tr>
+
+<tr valign=top>
+<td><code>--without-fonts</code></td>
+<td>Removes Bitstream Vera fonts from openoffice.org installation set, for
+people building for specific distributions where the fonts are known to be
+already available
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--disable-mozilla</code></td>
+<td>OO.o usually includes a strangely hacked up mozilla binary for your
+platform, to build without this version, use this option.
+<p>Usage: --disable-mozilla</p>
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--enable-cups</code></td>
+<td>enable cups support in the psprint project
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--enable-fontconfig</code></td>
+<td>enable support for the fontconfig library
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--disable-directx</code></td>
+<td>Remove DirectX implementation for the new XCanvas interface. This requires
+more installed on Windows to compile.  (DirectX SDK, GDI+ libs)
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--enable-symbols</code></td>
+<td>Include debugging symbols in output.  Warning - a complete build needs 8 Gb
+of space and takes much longer.  (enables -g compiler flag)
+<p>--enable-symbols=SMALL sets the gcc -g1 setting which is smaller.</p>
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--enable-dbgutil:</code></td>
+<td>Include additional debugging utilities, such as assertions, object
+counting, etc. Larger build.  Independent from --enable-debug
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--enable-crashdump:</code></td>
+<td>Enable the crashdump feature code. This option implicitly activates
+--enable-symbols.
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--enable-cl-standard</code></td>
+<td>For Microsoft C/C++ compiler users, use non-optimizing standard compiler.
+(This just disables optimization options and therefore removes a lot of
+warnings when using the cheaper standard compiler.)
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--enable-static-gtk:</code></td>
+<td>Modules that are linked against gtk libraries use the static libraries
+instead of the dynamic ones.  (enables -Bstatic linker flag for gtk libraries)
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--disable-rpath:</code></td>
+<td>Disable the use of relative paths in shared libraries
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--with-system-zlib</code></td>
+<td>Use zlib already on system
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--with-system-jpeg</code></td>
+<td>Use jpeg already on system
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--with-system-expat</code></td>
+<td>Use expat already on system
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--with-system-freetype</code></td>
+<td>Use freetype already on system
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--with-system-libxml</code></td>
+<td>Use libxml already on system
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--with-system-python</code></td>
+<td>Use python already on system
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--with-system-icu</code></td>
+<td>Use icu already on system
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--with-system-db3</code></td>
+<td>Use berkley ver 3 db already on system
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--with-system-sablot</code></td>
+<td>Use sablot already on system
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--with-system-odbc-headers</code></td>
+<td>Use the odbc headers already on system
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--with-system-curl</code></td>
+<td>Use curl already on system
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--with-system-nas</code></td>
+<td>Use nas already on system
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--with-system-neon</code></td>
+<td>Use neon 0.23.x already on system
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--with-stlport4</code></td>
+<td>The location that STLport4 is installed in. The STL header files are
+assumed to be in stlport4-home/stlport and the STLport4 library in
+stlport4-home/lib.
+<p>Usage: --with-stlport4=&lt;absolute path to stlport4 home&gt;</p>
+<p>Warning!!, --without-stlport4 is possible with gcc >= 3.3.3, but will break
+ABI compatability</p>
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--with-gxx-include-path</code></td>
+<td>if you want to override the autodetected g++ include path.
+<p>Usage: --with-gxx-include-path=&lt;absolute path to g++ include dir&gt;</p>
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--disable-java</code></td>
+<td>Build without Java support.  Use if there is no supported JDK for your
+platform.  The build will have no support for Java components, applets,
+accessibility or XML filters.
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--with-ant-home</code></td>
+<td>If you have installed Jakarta Ant on your system, please supply the path
+here.  Note that this is not the location of the Ant binary but the location of
+the entire distribution.
+<p>Usage: --with-ant-home=&lt;absolute path to Ant home&gt;</p>
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--with-perl-home</code></td>
+<td>If you have installed the Perl 5 Distribution, on your
+system, please supply the path here.
+Note that this is not the location of the Perl binary
+but the location of the entire distribution.
+</p>Usage: --with-perl-home=&lt;absolute path to Perl 5 home&gt</p>
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--with-mspdb-path</code></td>
+<td>For Microsoft C/C++ compiler users, please supply the path pointing to the
+mspdb60.dll (MSVC 6) or mspdb7x.dll (.NET).
+<p>Usage: --with-mspdb-path=&lt;absolute path to mspdb60.dll/mspdb7x.dll&gt;</p>
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--with-midl-path</code></td>
+<td>For Microsoft C/C++ .NET compiler users, please supply the path pointing to
+the midl.exe.
+<p>Usage: --with-midl-path=&lt;absolute path to midl.exe&gt;</p>
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--with-csc-path</code></td>
+<td>For Microsoft C/C++ .NET compiler users, please supply the path
+pointing to the csc.exe.
+<p>Usage: --with-csc-path=&lt;absolute path to csc.exe&gt;</p>
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--with-frame-home</code></td>
+<td>For Microsoft C/C++ .NET compiler users, please supply the path pointing to
+the .NET Framework SDK.  Usually something like:
+"/cygdrive/c/Programme/Microsoft Visual Studio .NET/FrameworkSDK"
+<p>Usage: --with-frame-home=&lt;absolute path to Framework SDK&gt;</p>
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--with-wdevenv-path</code></td>
+<td>For Microsoft C/C++ .NET compiler users, please supply the path
+pointing to the wdevenv.exe.
+<p>Usage: --with-wdevenv-path=&lt;absolute path to wdevenv.exe&gt;</p>
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--with-psdk-home</code></td>
+<td>For Windows NT users, please supply the path for the Microsoft Platform SDK.
+<p>Usage: --with-psdk-home=&lt;absolute path to Microsoft Platform SDK&gt;</p>
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--with-old-psdk</code></td>
+<td>For Windows users, and compatibility reasons. Please use this option for
+the October 2002 version of the Microsoft Platform SDK.<br>
+This is a temporary workaround!
+<p>Usage: --with-old-psdk</p>
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--with-local-solenv</code></td>
+<td>If you have solenv in a location other than ../solenv, please supply the
+path here.
+<p>Usage: --with-local-solenv=&lt;absolute path to solenv&gt;</p>
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--with-local-solver</code></td>
+<td>if you have solver in a location other than ../solver, please supply the
+path here.
+<p>Usage: --with-local-solver=&lt;absolute path to solver&gt</p>
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--with-dict</code></td>
+<td>Use this option to build OpenOffice.org with dictionary support. ALL
+dictionaries are always included by default unless overridden with this option.
+Separate multiple dictionaries with commas. For all dictionaries, use
+--with-dict=ALL.
+<p>Usage: --with-dict=ENGB,ENUS,ITIT</p>
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--with-os-version</code></td>
+<td>For FreeBSD users, use this option option to override the detected OSVERSION.
+<p>Usage: --with-os-version=&lt;OSVERSION&gt;
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--with-zip-home</code></td>
+<td>If you use a non standard zip, for example windows please supply the path
+for zip
+<p>Usage: --with-zip-home=&lt;path to zip executable&gt</p>
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--with-mingwin</code></td>
+<td>For Windows users, use the mingwin32 compiler within cygwin environment,
+this implies --with-use-shell=tcsh <p>Usage: --with-mingwin=yes</p>
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--with-use-shell</code></td>
+<td>Select shell different form the default shell. For Windows users, don't use
+the 4NT shell with "mingwin32" environment
+<p>Usage: --with-use-shell=&lt;desired shell&gt;</p>
+</td>
+</tr>
+
+<tr valign=top>
+<td><code>--enable-sgistl</code></td>
+<td>for IRIX users, use this option option to build OpenOffice.org using SGI's
+STL.
+<p>Usage: --enable-check-only=yes</p>
+</td>
+</tr>
+</table>
+
+<h3><a name=
+"3.1.5.SettingtheEnvironmentVariables|outline"></a>Setting the
+Environment Variables</h3>
+
+<p>After the <code>configure</code> script finishes checking the
+prerequisites, it creates the perl script
+<code>set_soenv</code> from set_soenv.in. set_soenv creates an environment
+variable file for your system. The name of this file depends on the
+system that it was generated on. The following table shows the
+naming convention for the environment variable files.</p>
+<p>For bash and other bourne shell derivatives add '.sh' to the following names.</p>
+
+<table border="1" cellspacing="0" cellpadding="5">
+<caption>Naming Convention for Environment Variable Files</caption>
+
+<tr valign="top">
+<th>Operating System</th>
+<th>Architecture</th>
+<th>Environment Variable Filename</th>
+</tr>
+
+<tr valign="top">
+<td>Linux</td>
+<td>Intel</td>
+<td><code>LinuxIntelEnv.set</code></td>
+</tr>
+
+<tr valign="top">
+<td>Solaris</td>
+<td>SPARC</td>
+<td><code>SolarisSparcEnv.set</code></td>
+</tr>
+
+<tr valign="top">
+<td>Solaris</td>
+<td>INTEL</td>
+<td><code>SolarisIntelEnv.set</code></td>
+</tr>
+
+<tr valign="top">
+<td>Windows</td>
+<td>Intel</td>
+<td><code>winenv.set</code> for bash builds or <code>winenv.bat</code> for 4nt builds</td>
+</tr>
+
+<tr valign="top">
+<td>Mac OS X</td>
+<td>PowerPC</td>
+<td><code>MacosxEnv.set</code></td>
+</tr>
+</table>
+
+<p>For the actual name please look at the last lines of the configure script
+output.  It tells you the correct file to source and how to do it in the two
+shell types.</p>
+
+<p>The <code>configure</code> script passes the following path
+variables to the set_soenv Perl script:</p>
+
+<ul type="DISC">
+<li>Compiler path</li>
+
+<li>G++ include path</li>
+
+<li>Path to the JDK</li>
+
+<li>Path to the <code>csh</code></li>
+
+<li>Path to Perl</li>
+
+<li>Location of <i>local</i> solenv</li>
+
+<li>Location of <i>local</i> solver</li>
+
+<li>Path to X libraries</li>
+
+<li>Path to X includes</li>
+
+<li>The build number <i>($UPD)</i></li>
+
+<li>Location of CYGWIN <i>(windows only)</i></li>
+
+<li>Location of STLport4</li>
+
+<li>Language settings</li>
+
+<li>Location of assembler <i>(windows only)</i></li>
+
+<li>Plus a number of other values</li>
+</ul>
+
+<p>Once the path to the correct version of Perl is found, it is
+added as a directive to the set_soenv Perl script. The Perl script then
+probes your system for platform and processor type and version, and
+sets the environment variables accordingly.</p>
+
+<p>Any errors are displayed at the end of the set_soenv Perl script. If you
+do not get any errors then you are ready to build.</p>
+
+</body>
+</html>

Propchange: incubator/ooo/ooo-site/trunk/content/tools/build_env_conf.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/ooo/ooo-site/trunk/content/tools/build_env_mkfiles.html
URL: http://svn.apache.org/viewvc/incubator/ooo/ooo-site/trunk/content/tools/build_env_mkfiles.html?rev=1175537&view=auto
==============================================================================
--- incubator/ooo/ooo-site/trunk/content/tools/build_env_mkfiles.html (added)
+++ incubator/ooo/ooo-site/trunk/content/tools/build_env_mkfiles.html Sun Sep 25 19:39:08 2011
@@ -0,0 +1,619 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>OpenOffice.org - Makefiles description</title>
+<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
+</head>
+<body>
+  
+<h2>Makefiles Description</h2>
+<p>The <code>dmake</code> tool uses <code>makefile.mk</code>.</p>
+<p>The following sections describe the general structure of 
+<code>makefile.mk</code> makefiles. </p>
+<ul>
+  <li><a
+ href="#3.5.2.GeneralStructureofmakefile.mkMakefiles%7Coutline">General
+Structure of <code>makefile.mk</code> Makefiles</a></li>
+  <li><a
+ href="#3.5.3.GenerationofObjectFilesandLibraries%7Coutline">Generation
+of Object Files and Libraries</a></li>
+  <li><a
+ href="#3.5.4.GenerationofResourceFiles%7Coutline">Generation
+of Resource Files</a></li>
+  <li><a
+ href="#3.5.5.GenerationofApplications%7Coutline">Generation
+of Applications</a></li>
+  <li><a
+ href="#3.5.6.GenerationofSharedLibrariesorDynamicLinkLibraries%7Coutline">Generation
+of Shared Libraries or Dynamic Link Libraries</a></li>
+  <li><a
+ href="#3.5.7.InternalStructureoftheMakefiles%7Coutline">Internal
+Structure of the Makefiles</a>
+  <ul>
+    <li><a
+ href="#3.5.7.1.Thesettings.mkfile%7Coutline">The <code>settings.mk</code>
+file</a></li>
+    <li><a
+ href="#3.5.7.2.Thetarget.mkfile%7Coutline">The <code>target.mk</code>
+file</a></li>
+  </ul>
+  </li>
+  <li><a
+ href="#3.5.8.SettingAdditionalOptions%7Coutline">Setting
+Additional Options</a></li>
+  <li><a
+ href="#3.5.9.CreationofAdditionalTargets%7Coutline">Creation
+of Additional Targets</a>
+  <ul>
+    <li><a
+ href="#3.5.9.1.AddTargetstoall%7Coutline">Add Targets
+to <code>all</code></a></li>
+    <li><a
+ href="#3.5.9.2.AddingTargetstoaMakefileThatIncludeTargets%7Coutline">Adding
+Targets to a Makefile That Include Targets</a></li>
+    <li><a
+ href="#3.5.9.3.DeclaringDependenciesBeforeAddingTargets%7Coutline">Declaring
+Dependencies Before Adding Targets</a></li>
+  </ul>
+  </li>
+</ul>
+<h3><a name="3.5.2.GeneralStructureofmakefile.mkMakefiles|outline"></a>General
+Structure of <code>makefile.mk</code> Makefiles</h3>
+<p>The general outline of makefiles is as follows: </p>
+<table border="1" cellspacing="0" cellpadding="5" width="746">
+  <tbody>
+    <tr>
+      <td valign="top">
+      <pre>
+PRJ=..
+
+PRJNAME=SW
+
+TARGET=core
+
+.include:settings.mk
+
+# use the predefined macros
+
+.include:target.mk
+
+      </pre>
+      <br>
+      </td>
+    </tr>
+  </tbody>
+</table>
+<p>The following table describes the macros you use in the general outline
+of a makefile. </p>
+<table border="1" cellspacing="0" cellpadding="5">
+  <caption>General Macros Used in <code>makefile.mk</code></caption><tbody>
+    <tr valign="top">
+      <th>Macro</th>
+      <th>Functional Description</th>
+    </tr>
+    <tr valign="top">
+      <td><code>PRJ</code></td>
+      <td>This macro gives the relative position of the root of the current
+module.</td>
+    </tr>
+    <tr valign="top">
+      <td><code>PRJNAME</code></td>
+      <td>This macro gives the name of the module. This name must be unique
+within the tree.</td>
+    </tr>
+    <tr valign="top">
+      <td><code>TARGET</code></td>
+      <td>This macro specifies an identifier for the current directory. This
+name must be unique within the module, or a filename conflict may occur in
+the output or the <code>solver</code> tree. </td>
+    </tr>
+  </tbody>
+</table>
+<h3><a name="3.5.3.GenerationofObjectFilesandLibraries|outline"></a>Generation
+of Object Files and Libraries</h3>
+<p>The following table describes the macros you use to generate object files
+and libraries. The <var>x</var> in these macros signifies a number between
+one and nine. This specifies support for up to nine different libraries. 
+</p>
+<table border="1" cellspacing="0" cellpadding="5">
+  <caption>Macros for Generating Object Files and Libraries</caption><tbody>
+    <tr valign="top">
+      <th>Macro</th>
+      <th>Functional Description</th>
+    </tr>
+    <tr valign="top">
+      <td><code>OBJFILES=$(OBJ)$/file1.obj $(OBJ)$/file.obj  <br>
+SLOFILES=$(SLO)$/file1.obj $(SLO)$/file.obj </code></td>
+      <td>You must set this macro to generate the appropriate object files
+from the following source files: 
+      <ul type="disc">
+        <li><code>file1.cxx</code></li>
+        <li><code>file2.cxx</code></li>
+      </ul>
+      <p>This macro ensures that the build process creates the object files
+for the compiler in the <code>obj</code> or <code>slo</code> directory of
+the output tree. On Linux,  Solaris, and Mac OS X, this creates dummy <code>.obj</code>
+files as well as the <code>.o</code>files in the <code>obj</code> directory.
+      </p>
+      <p>You can use these targets can be used to compile C and C++ sources
+found in different locations.  See the <code>rules.mk</code> file for details.
+      </p>
+      <p>The build process usually creates a library from the object files
+in the <code>lib</code> subdirectory of the output tree. The name of this
+library is the value of the <code>$TARGET</code> variable. On Linux, Solaris,
+and Mac OS X the libraries are dummy libraries containing only the names
+of the dummy <code>.obj</code>files. </p>
+      </td>
+    </tr>
+    <tr valign="top">
+      <td><code>LIBTARGET=NO</code></td>
+      <td>Set this macro when you do not want to build a library.</td>
+    </tr>
+    <tr valign="top">
+      <td><code>LIBxTARGET=$(LB)$/name.lib</code></td>
+      <td>You can use several library macros of this form to build  libraries
+that do not consist of all object files in a directory  or to merge different
+libraries.  </td>
+    </tr>
+    <tr valign="top">
+      <td><code>LIBxARCHIV=$(LB)$/libname.a</code></td>
+      <td>Sets up support for static linking of libraries. Linux, Solaris,
+and Mac OS X  support this macro.</td>
+    </tr>
+    <tr valign="top">
+      <td><code>LIBxOBJFILES</code></td>
+      <td>Specifies object files to bind into linked libraries.</td>
+    </tr>
+    <tr valign="top">
+      <td><code>LIBxFILES</code></td>
+      <td>Specifies further files to link into the linked library.</td>
+    </tr>
+  </tbody>
+</table>
+<h3><a name="3.5.4.GenerationofResourceFiles|outline"></a>Generation of Resource
+Files</h3>
+<p>The following table describes the macros you use to generate resource
+files. The German language resource files are built by default. To support
+other locales, the environment variable <code>UPDATER</code> must be set
+to YES and the corresponding locale environment variable <code>RES_<i>language</i></code>
+must also be set. </p>
+<p>The <i>x</i> in these macro names signifies a number between one and nine.
+This specifies support for up to nine different resource files. </p>
+<table border="1" cellspacing="0" cellpadding="5">
+  <caption>Macros for Generating Resource Files</caption><tbody>
+    <tr valign="top">
+      <th>Macro</th>
+      <th>Functional Description</th>
+    </tr>
+    <tr valign="top">
+      <td><code>SRCFILES=file1.src file2.src</code></td>
+      <td>You must set up this macro to generate resource files. To create
+one resource file from these files the <code>$(TARGET).srs</code> file is
+created in the <code>srs</code> subdirectory of the output tree, for example:
+      <p><code>SRCTARGET = $(SRS)$/$(TARGET).srs</code></p>
+      </td>
+    </tr>
+    <tr valign="top">
+      <td><code>SRSxNAMES</code> and <code>SRSxFILES</code></td>
+      <td>You can use these macros to support the building of several <code>srs</code>
+files.</td>
+    </tr>
+    <tr valign="top">
+      <td><code>RESLIBxNAME</code> and <code>RESLIBxSRSFILES</code></td>
+      <td>You can use these macros to build resource DLLs.</td>
+    </tr>
+  </tbody>
+</table>
+<p>You can also set the <code>give_me_all_languages</code> environment variable
+to build resource files for languages. However, this builds resource files
+for <em>all</em> languages.</p>
+<h3><a name="3.5.5.GenerationofApplications|outline"></a>Generation of Applications</h3>
+<p>The following table describes the macros you use to generate applications.
+The <var>x</var> in these macro names signifies a number between one and
+nine. This specifies support for up to nine different applications. </p>
+<table border="1" cellspacing="0" cellpadding="5">
+  <caption>Macros Used for Generating Applications</caption><tbody>
+    <tr valign="top">
+      <th>Macro</th>
+      <th>Functional Description</th>
+    </tr>
+    <tr valign="top">
+      <td><code>APPxTARGET</code></td>
+      <td>Indicates the filename of the application. The application is always
+built in the <code>bin</code> directory of the output tree.</td>
+    </tr>
+    <tr valign="top">
+      <td><code>APPxOBJS</code></td>
+      <td>Indicates object files that link to the application. Do not use
+this macro to build objects, as it does not recognize dependencies.</td>
+    </tr>
+    <tr valign="top">
+      <td><code>APPxSTDLIBS</code></td>
+      <td>Indicates import libraries that link to the application. These
+are standard binary libraries, such as <code>.a</code> and <code>.so</code>
+files.</td>
+    </tr>
+    <tr valign="top">
+      <td><code>APPxLIBS</code></td>
+      <td>Indicates libraries from the same module that link to the application.
+For UNIX these are simple text lists of object files,  rather than normal
+binary libraries. </td>
+    </tr>
+    <tr valign="top">
+      <td><code>APPxDEF</code></td>
+      <td>Specifies a definition file, if you use one in linking. For Win32
+only.</td>
+    </tr>
+    <tr valign="top">
+      <td><code>APPxDEPN</code></td>
+      <td>Specifies dependencies.</td>
+    </tr>
+    <tr valign="top">
+      <td><code>APPxRES</code></td>
+      <td>Specifies system resources. For Win32 only.</td>
+    </tr>
+    <tr valign="top">
+      <td><code>APPxICON</code></td>
+      <td>Specifies an application icon. For Win32 only.</td>
+    </tr>
+  </tbody>
+</table>
+<h3><a
+ name="3.5.6.GenerationofSharedLibrariesorDynamicLinkLibraries|outline"></a>Generation
+of Shared Libraries or Dynamic Link Libraries</h3>
+<p>The following table describes the macros you use to generate shared libraries
+or dynamic link libraries (DLLs). The <var>x</var> in these macro names signifies
+a number between one and nine. This specifies support for up to nine different
+shared libraries. </p>
+<table border="1" cellspacing="0" cellpadding="5">
+  <caption>Macros Used for Generating Shared Libraries or DLLs</caption><tbody>
+    <tr valign="top">
+      <th>Macro</th>
+      <th>Functional Description</th>
+    </tr>
+    <tr valign="top">
+      <td><code>SHLxTARGET</code></td>
+      <td>Indicates the filename of the shared library. 
+      <p>In Win32, shared libraries are always built as <code>$(shlxtarget).dll</code>
+and are created in the <code>bin</code> directory of the output tree. </p>
+      <p>In UNIX, shared libraries are built as <code>lib$(shlxtarget).so</code>
+and are located in the <code>lib</code> directory of the output tree.</p>
+      </td>
+    </tr>
+    <tr valign="top">
+      <td><code>UPD and DLLPOSTFIX</code></td>
+      <td>Provide platform and release independent names, for example: <code>bla$(UPD)$(DLLPOSTFIX)</code>
+results in <code>bla599mi.dll</code> for release 599 on Windows NT.</td>
+    </tr>
+    <tr valign="top">
+      <td><code>SHLxOBJS</code></td>
+      <td>Specify the object files that are used to create the library.</td>
+    </tr>
+    <tr valign="top">
+      <td><code>SHLxSTDLIBS</code></td>
+      <td>Links import libraries.</td>
+    </tr>
+    <tr valign="top">
+      <td><code>SHLxLIBS</code></td>
+      <td>Specifies libraries from the same module to put into the shared
+library. </td>
+    </tr>
+    <tr valign="top">
+      <td><code>SHLxDEF</code></td>
+      <td>Specifies the exported symbols file. For Win32 only.</td>
+    </tr>
+    <tr valign="top">
+      <td><code>SHLxDEPN</code></td>
+      <td>Indicates dependencies.</td>
+    </tr>
+    <tr valign="top">
+      <td><code>SHLxRES</code></td>
+      <td>System dependent resources use this macro.</td>
+    </tr>
+    <tr valign="top">
+      <td><code>SHLxIMPLIB</code></td>
+      <td>Specifies an import library to create. For Win32 only. </td>
+    </tr>
+    <tr valign="top">
+      <td><code>DEFxNAME</code></td>
+      <td>Specifies the name of the definition file. This is usually a similar
+name to the shared library.</td>
+    </tr>
+    <tr valign="top">
+      <td><code>DEFxDEPN</code></td>
+      <td>Indicates definition file dependencies.</td>
+    </tr>
+    <tr valign="top">
+      <td><code>DEFLIBxNAME</code></td>
+      <td>Specifies the library name to parse for symbols. For Win32 only.
+      </td>
+    </tr>
+    <tr valign="top">
+      <td><code>DEFxDES</code></td>
+      <td>A comment on the definition file.</td>
+    </tr>
+    <tr valign="top">
+      <td><code>DEFxEXPORTyy</code></td>
+      <td>A symbol name. The <i>y</i> in this macro name signifies a number
+from 1-99.</td>
+    </tr>
+    <tr valign="top">
+      <td><code>DEFxEXPORTFILE</code></td>
+      <td>A file of symbols to export.</td>
+    </tr>
+  </tbody>
+</table>
+<p>The following example shows how you can use these macros:</p>
+<pre>
+$(MISC)$/$(SHLxTARGET).flt: 
+
+	@echo string &gt;&gt; $@
+</pre>
+<p><b>Note:</b> The new line and indentation are necessary for these lines
+to work.</p>
+<p>This command generates a filter file for automatically creating a definition
+file. The <code>ldump</code> tool parses the library specified in <code>DEFLIBxNAME</code>
+for symbols, removes all symbols that match the string in the <code>*.flt</code>
+file, and writes the resulting list into the definition file. </p>
+<p>You can only do this for Win32. A similar process for Linux, Solaris,
+and Mac OS X is planned. </p>
+<h3><a name="3.5.7.InternalStructureoftheMakefiles|outline"></a>Internal
+Structure of the Makefiles</h3>
+<p>Each makefile contains an include directive to a <code>settings.mk</code>
+file, followed by an include directive to a <code>target.mk</code> file.
+The following sections describe these files. </p>
+<h4><a name="3.5.7.1.Thesettings.mkfile|outline"></a>The <code>settings.mk</code>
+file</h4>
+<p>The file <code>settings.mk</code> sets all the global settings for the
+makefiles. It sets macros, based on the following: </p>
+<ul type="disc">
+  <li>The underlying operating system.</li>
+  <li>The compiler used.</li>
+  <li>The version of the office suite you are building.</li>
+</ul>
+<p>For example, it sets the name of the compiler used, linker, or library
+manager. It can also define the names of libraries, compiler switches, and
+link switches.</p>
+<p>In the <code>target.mk</code> file, the standard target is predefined
+depending on the macros you set. For example, it can contain statements for
+linking applications, libraries, or resources. Typically, the <code>include</code>
+directive gets these files from <code>solenv/inc</code>.  Typically, the
+include directive gets these files from solenv/inc.</p>
+<p>There are other makefiles that specify particular settings that control
+parts of the build. The following table describes these special settings 
+makefiles. These makefiles are included by either  <code>settings.mk</code>
+or <code>target.mk</code>.</p>
+<table border="1" cellspacing="0" cellpadding="5">
+  <caption>Special Settings Files for Makefiles</caption><tbody>
+    <tr valign="top">
+      <th>Makefiles</th>
+      <th>Description</th>
+    </tr>
+    <tr valign="top">
+      <td><code>unitools.mk</code></td>
+      <td>This file defines macros for tools which are available on different
+platforms, for example: 
+      <ul type="disc">
+        <li>AWK</li>
+        <li>COPY</li>
+        <li>FIND</li>
+        <li>TYPE</li>
+        <li>TOUCH</li>
+      </ul>
+      </td>
+    </tr>
+    <tr valign="top">
+      <td><code>[upd]minor.mk</code></td>
+      <td>Macros such as <code>BUILD</code> and <code>LAST_MINOR</code> are
+set in this file.</td>
+    </tr>
+    <tr valign="top">
+      <td><code>libs.mk</code></td>
+      <td>The platform-dependent environment setup for <code>LIBRARIES</code>
+is stored in this file.</td>
+    </tr>
+    <tr valign="top">
+      <td><var>platform-name</var><code>.mk <br>
+(os2.mk, wnt.mk, unx.mk)</code></td>
+      <td>These makefiles specify platform-dependent characteristics, for
+example: 
+      <ul type="disc">
+        <li>CC</li>
+        <li>LINK</li>
+        <li>LIB</li>
+        <li>FLAGS</li>
+        <li>LINKFLAGS</li>
+      </ul>
+      <p>Other platform-specific makefiles may also exist. For example:</p>
+      <ul type="disc">
+        <li><code>unxsols2.mk</code></li>
+        <li><code>unxlngi4.mk</code></li>
+      </ul>
+      <p>These files typically contain variables which are used to change
+the build:</p>
+      <ul>
+        <li><code>CDEFS</code> general compiler defines (C/C++)</li>
+        <li><code>CFLAGS</code> general compiler flags (C/C++)</li>
+        <li><code>CFLAGSCC</code> extra C-only compiler flags</li>
+        <li><code>CFLAGSCXX</code> extra C++ only compiler flags</li>
+      </ul>
+      <p>In addition there are flags enabled for profiling or debug builds:</p>
+      <ul>
+        <li><code>CFLAGSPROF</code></li>
+        <li><code>CFLAGSDEBUG</code> <br>
+The typical value for Linux, Solaris, and Mac OS X platforms for <code>CFLAGSDEBUG</code>
+is <code>-g</code>.</li>
+      </ul>
+      <p>There are corresponding linker flags for profiled and debug builds:</p>
+      <ul>
+        <li><code>LINKFLAGSPROF</code></li>
+        <li><code>LINKFLAGSDEBUG</code></li>
+      </ul>
+      <p>There is also support for whether the target is a command-line user
+interface (CUI) or graphical user interface (GUI), whether it is an object
+or shared library and whether it is single-threaded (ST) or multi- threaded
+(MT) by using the following flags:</p>
+      <ul>
+        <li><code>CFLAGSOBJGUIST</code> GUI, object, single-threaded</li>
+        <li><code>CFLAGSOBJCUIST</code> CUI, object, single-threaded</li>
+        <li><code>CFLAGSOBJGUIMT</code> GUI, object, multithreaded</li>
+        <li><code>CFLAGSOBJCUIMT</code> CUI, object, multithreaded</li>
+        <li><code>CFLAGSSLOGUIMT</code> GUI, object, multithreaded</li>
+      </ul>
+      </td>
+    </tr>
+    <tr valign="top">
+      <td><code>rules.mk</code></td>
+      <td>This files specifies the rules for compiling the following types
+of file: 
+      <ul type="disc">
+        <li><code>.asm</code></li>
+        <li><code>.c</code></li>
+        <li><code>.cxx</code></li>
+        <li><code>.idl</code></li>
+        <li><code>.dpc</code></li>
+      </ul>
+      <p>There may be many rules to build each type of file. From these rules,
+existing source files can build targets. </p>
+      </td>
+    </tr>
+  </tbody>
+</table>
+<h4><a name="3.5.7.2.Thetarget.mkfile|outline"></a>The <code>target.mk</code>
+file</h4>
+<p>After the include of <code>settings.mk</code>, the next major include
+is the <code>target.mk</code> file which describes how to build the targets
+of each platform. The <code>target.mk</code> file is divided into the following
+parts: </p>
+<ol>
+  <li>Expansion of the overall targets.</li>
+  <li>Dependency order.</li>
+  <li>Description of the following individual targets: 
+    <ul type="disc">
+      <li><code>_tg_def.mk</code> - the definition files for shared libraries
+(DLLs).</li>
+      <li><code>_tg_sdi.mk</code> - the target definition for the IDL (<code>svidl</code>)
+files.</li>
+      <li><code>tg_obj.mk</code> - the building of the library from object
+files.</li>
+      <li><code>tg_slo.mk</code> - the building of the library from <code>.slo</code>
+files.</li>
+      <li><code>_tg_lib.mk</code> - the building of the library from any
+files.</li>
+      <li><code>_tg_srs.mk</code> - the translation of the <code>.src</code>
+files.</li>
+      <li><code>_tg_res.mk</code> - the translation of the <code>.srs</code>
+files.</li>
+      <li><code>_tg_rslb.mk</code> - generation of the resource DLLs.</li>
+      <li><code>_tg_shl.mk</code> - generation of the shared libraries.</li>
+      <li><code>tg_jar.mk</code> - generation of the jar files.</li>
+      <li><code>tg_dep.mk</code> - generation of the dependencies.</li>
+    </ul>
+  </li>
+</ol>
+<p>The file also includes the descriptions of many further targets such as
+<code>killobj</code>, <code>killbin</code>, and so on. </p>
+<h3><a name="3.5.8.SettingAdditionalOptions|outline"></a>Setting Additional
+Options</h3>
+<p>You use the macros described in the following table to set additional
+options. </p>
+<table border="1" cellspacing="0" cellpadding="5">
+  <caption>Macros for Setting Special Options</caption><tbody>
+    <tr valign="top">
+      <th>Makefiles</th>
+      <th>Description</th>
+    </tr>
+    <tr valign="top">
+      <td><code>ENVCFLAGS</code></td>
+      <td>This macro supports additional compiler options for C.</td>
+    </tr>
+    <tr valign="top">
+      <td><code>ENVCXXFLAGS</code></td>
+      <td>This macro supports additional compiler options for C++.</td>
+    </tr>
+    <tr valign="top">
+      <td><code>ENVLINKFLAGS</code></td>
+      <td>This macro supports additional linker options.</td>
+    </tr>
+  </tbody>
+</table>
+<h3><a name="3.5.9.CreationofAdditionalTargets|outline"></a>Creation of Additional
+Targets</h3>
+<p>The following sections describe ways to create additional targets in a
+makefile. </p>
+<h4><a name="3.5.9.1.AddTargetstoall|outline"></a>Add Targets to <code>all</code></h4>
+<p>To build targets other than the default targets that are created by the
+<code>target.mk</code> file, follow these steps: </p>
+<ol>
+  <li>Add the targets to the target <code>all</code> as dependencies.</li>
+  <li>End the list of targets with <code>ALLTAR</code>.</li>
+  <li>Make sure <code>target all</code> precedes the include of <code>target.mk</code>
+in the makefile.</li>
+</ol>
+<p>If you write your target in a platform independent form without using
+any hard-coded pathnames, ensure that your target appears before the <code>.include:target.mk</code>
+directive. If this works, this is an acceptable way to create an additional
+target. </p>
+<h4><a name="3.5.9.2.AddingTargetstoaMakefileThatIncludeTargets|outline"></a>Adding
+Targets to a Makefile That Include Targets</h4>
+<p>The typical way to add a target is to add it to an existing <code>makefile.mk</code>
+that already includes targets. This causes the following problems:</p>
+<ul>
+  <li>If you place your target before the <code>.include:target.mk</code>
+directive in the makefile, it disables the global targets.</li>
+  <li>If you place your target after the <code>.include:target.mk</code>
+directive, <code>dmake</code> does not build the target.</li>
+  <li>If you try to build your target by using the technique in the following
+sample, you may encounter several other problems. 
+    <table border="1" cellspacing="0" cellpadding="5" width="746">
+      <tbody>
+        <tr>
+          <td valign="top">
+          <pre>
+
+
+all: \
+
+	<var>new-target</var> \<br><br>	ALLTAR<br><br></pre>
+          </td>
+        </tr>
+      </tbody>
+    </table>
+    <p>The first target is always built. When doing an initial build, <code>dmake</code>
+enters states where no <code>ALLTAR</code>is defined and displays an error
+message and stops.</p>
+    <p>There is also no guaranteed order of execution of those two targets.
+It may work most of the time and produce unusual errors on multiprocessor
+machines.</p>
+  </li>
+</ul>
+<h4><a name="3.5.9.3.DeclaringDependenciesBeforeAddingTargets|outline"></a>Declaring
+Dependencies Before Adding Targets</h4>
+<p>Define explicit dependencies as follows:</p>
+<table border="1" cellspacing="0" cellpadding="5" width="746">
+  <tbody>
+    <tr>
+      <td valign="top">
+      <pre>
+
+
+#this object depends on generated source
+
+$(OBJ)$/myobject.obj : $(MISC)$/myobject.cxx
+
+      </pre>
+      <br>
+      </td>
+    </tr>
+  </tbody>
+</table>
+<p>Then define the target to generate the source file after this statement.
+If this object is needed now, there is a dependency on the source file and
+the target is executed. You must define all the targets and dependencies
+after the <code>.include:target.mk</code>directive.</p>
+<p>There is still a potential problem of conflicts with targets added to 
+the global makefiles in the future. If something in the build environment
+changes and affects your target, it may be difficult to identify the change.</p>
+<br>
+</body>
+</html>

Propchange: incubator/ooo/ooo-site/trunk/content/tools/build_env_mkfiles.html
------------------------------------------------------------------------------
    svn:eol-style = native



Mime
View raw message