rnmake
3.0.0
Main Page
Related Pages
Files
File List
main.doxy
Go to the documentation of this file.
1
////////////////////////////////////////////////////////////////////////////////
2
//
3
// Package: RoadNarrows Make System
4
//
5
// File: main.doxy
6
//
7
// Description:
8
// This file contains the doxygen directives to generate the main page.
9
//
10
////////////////////////////////////////////////////////////////////////////////
11
12
/*! \file */
13
14
/*! \mainpage RoadNarrows Make System
15
16
\section rnmake_intro Introduction
17
18
The rnmake system provides a fast and simple make system for RoadNarrows LLC
19
packages.
20
Each package has a required, but flexible, directory hierarchical structure.
21
22
The rnmake system supports both native and cross-compliled target
23
architectures.
24
25
The rnmake system is built around GNU make plus some simple shell (sh/bash)
26
utilities and the doxygen documentation tools.
27
28
At RoadNarrows, a typical workstation builds for multiple targets. So rnmake
29
evolved to support multiple-target, cross-compilations. All supported compiler
30
tool chains are GNU gcc based. The target platform must be near Posix compliant.
31
32
All rnmake core files reside under /<em>installpath</em>/rnmake where
33
/<em>installpath</em> is the installed directory path root of the rnmake/.
34
35
\section rnmake_quickstart Quick Start
36
Change your current working directory to the top package directory.
37
38
The default target architecture is defined by the environment variable
39
<b>RNMAKE_ARCH_DFT</b> if defined. Else the <em>i386</em>
40
32-bit Linux Posix is the default.
41
42
To make the package for the default target architecture:
43
\code
44
$ make deps
45
$ make
46
$ make install
47
\endcode
48
49
To clean or to clobber the pre-installed distribution:
50
\code
51
$ make clean
52
$ make distclean
53
\endcode
54
55
To make for a specific target architecture, add arch=<em>arch</em> to the
56
command line. For example, to build and install for Arm PXA XScale Linux target:
57
\code
58
$ make arch=armpxa install
59
\endcode
60
61
\section rnmake_pkg_def Package Definition
62
A package is a set of functionally related components such as libraries,
63
header files, applications, configuration files, and documentation.
64
65
\section rnmake_prod_def Product Definition
66
A product is a collection of one or more packages.
67
Because a package has a focused use, a package may
68
be used across multiple products developed by RoadNarrows, RoadNarrows Robotics,
69
and RoadNarrows Intelligent Systems.
70
71
\section rnmake_core_mk Core Make Files
72
\li The core make file \ref Rules.mk "rnmake/Rules.mk"
73
is included in all package make files. It
74
defines the set of rules to make a package.
75
\li The rnmake/Arch/ subdirectory
76
contains the make macro definitions to build for a given target platform
77
architecture. It includes tool-chain locations, install locations,
78
and build flags.
79
\li The rnmake/doxy/ subdirectory defines the doxygen directives and styles
80
for a package.
81
\li The rnmake/utils subdirectory contains simple shell utility scripts.
82
83
\section rnmake_pkg_mk Package Make Files
84
\li Under each package's top directory <em>topdir</em> there exists the
85
subdirectory make/ where:\n
86
The Pkg.mk file defines the package specific make definitions.\n
87
The doxy.conf file defines the configuration for the doxygen document
88
generation.
89
\li For each source [sub]directory under <em>topdir</em>
90
there exists a Makefile defining how to make that level of the package.
91
92
\section rnmake_doxy Doxygen
93
RoadNarrows heavily uses doxygen (see http://www.stack.nl/~dimitri/doxygen) to
94
document the source code. The rnmake system has built-in targets to support
95
the generation of doxygen HTML documenation.
96
97
\section rnamke_rules Make Target Rules
98
\termblock
99
\term make [arch=<em>arch</em>] help
100
\termdata List available key make targets.
101
\endterm
102
\term \endterm
103
\term make [arch=<em>arch</em>] deps
104
\termdata Make dependencies.
105
\endterm
106
\term make [arch=<em>arch</em>] [all]
107
\termdata Compile libraries and applications.
108
\endterm
109
\term make [arch=<em>arch</em>] documents
110
\termdata Make documentation.
111
\endterm
112
\term make [arch=<em>arch</em>] install
113
\termdata Install distribution. (libraries, applications, and documentation
114
are automatically made as required).
115
\term \endterm
116
\endterm
117
\term make [arch=<em>arch</em>] tarballs
118
\termdata Make binary, source, and documenation compressed tar files
119
(tarballs).
120
\term \endterm
121
\endterm
122
\term make [arch=<em>arch</em>] clean
123
\termdata Clean object files.
124
\endterm
125
\term make [arch=<em>arch</em>] distclean
126
\termdata Clean plus remove distribution and local files, and dependencies.
127
\endterm
128
\term make [arch=<em>arch</em>] clobber
129
\termdata Same as distclean.
130
\endterm
131
\term \endterm
132
\term make [arch=<em>arch</em>] <em>file</em>.o
133
\termdata Make an individual object file.
134
\endterm
135
\term make [arch=<em>arch</em>] <em>file</em>.ii
136
\termdata Make an individual post c preprocessor file.
137
\endterm
138
\endtermblock
139
140
\section rnmake_arch Architectures
141
The currently supported architectures are:
142
\termblock
143
\term i386
144
\termdata Linux with any Intel (backwards) compatible 32-bit architectures.
145
\endterm
146
\term x86_64
147
\termdata Linux with any AMD 64-bit architectures.
148
\endterm
149
\term armpxa
150
\termdata Cross-compiled Familiar Linux XScale Arm PXA architectures.
151
\endterm
152
\term armang
153
\termdata Cross-compiled Angstrom Linux XScale Arm PXA architectures.
154
\endterm
155
\term cygwin
156
\termdata Cross-compiled for Windows systems with install cygwin
157
(see http://www.cygwin.com).
158
\endterm
159
\term cygwin-nat
160
\termdata Natively compiled on Windows systems with install cygwin
161
(see http://www.cygwin.com).
162
\endterm
163
\term osx
164
\termdata Apple Mac OS-X natively compiled systems.
165
Tested on users' personal machines, but has not officially
166
RoadNarrows tested and verified.
167
\endterm
168
\endtermblock
169
New architectures are added as needed. One near-term addition will be the
170
Gumstix Verdex and Overo platform running Linux 2.6.
171
172
\section rnmake_toolchains Tool Chains
173
No compiler tool chains are included. This is the responsibility of the
174
developer or organization.
175
176
\subsection rnmake_toolchains_ver Verified Tool-Chains and Targets
177
The rnmake system and resultant compiled packages have been verified using the
178
following tool chains and cross-compiled targets:
179
\termblock
180
\term make
181
\termdata GNU make 3.8+.\n
182
make 3.81 Fedora Core 5/6 on 32-bit and 64-bit machines.\n
183
make 3.81 Ubuntu 8.1/9.4 on 32-bit and 64-bit machines.\n
184
make 3.8+ Windows cygwin on 32-bit machines.
185
\endterm
186
187
\term gcc
188
\termdata GNU gcc 4.3+ compiler, link loader, pre-processor, archiver,
189
utilities, target system headers and libraries.\n
190
gcc 4.1.2 Fedora Core 5/6 on 32-bit and 64-bit machines.\n
191
gcc 4.3.2+ for Ubuntu 8.1/9.4 on 32-bit and 64-bit machines.\n
192
gcc 4.3+ Windows cygwin on 32-bit machines.
193
\endterm
194
195
\term arm-linux-gcc
196
\termdata GNU gcc 4.1 cross-compiler, link loader, pre-processor, archiver,
197
utilities, target system headers and libraries.\n
198
gcc 4.1.0 Linux 2.4 XScale Arm PXA. Tested on the K-Team
199
KoreBot single board computer.
200
\endterm
201
202
\term i686-pc-cygwin-gcc
203
\termdata GNU gcc 4.3+ cross-compiler, link loader, pre-processor,
204
archiver, utilities, target system headers and libraries.\n
205
gcc 4.3 for Fedora Core 5 & 6 on 32-bit and 64-bit machines.
206
\endterm
207
208
\term doxygen
209
\termdata Doxygen 1.5.8 for Fedora Core 5/6, Ubuntu 8.1/9.4, and
210
Windows cygwin platforms
211
\endterm
212
213
\term shell
214
\termdata System standard <b>sh</b> or <b>bash</b> shell.
215
\endterm
216
\endtermblock
217
218
\section rnmake_tweaks Tweaks
219
There are many tweaks a developer can do to rnmake to alter its behavior by
220
simply editing the appropriate make file macros. Some common tweaks are:
221
\li Export the environment variable <b>RNMAKE_ARCH_DFT</b> to defined the
222
default make architecture.
223
\code
224
# Example
225
$ export RNMAKE_ARCH_DFT=x86_64
226
$
227
$ make # make [sub]package for x86_64 architecture
228
\endcode
229
\li A developer can easily add a new host architecture by adding their new
230
rnmake architecture make file Arch.<em>newarch</em>.mk to rnmake/Arch/
231
directory. The best way to start is to copy an existing Arch.<em>arch</em>.mk
232
file and make the appropriate changes.
233
\li For Arch.<em>arch</em>.mk (see files for full set of tweaks):
234
\termblock
235
\term prefix \termdata Defines where to install the package. \endterm
236
\term CROSS_COMPILE \termdata Tool chain command prefix string \endterm
237
\endtermblock
238
\li Top Makefile
239
\termblock
240
\term prefix_root
241
\termdata Root directory to install all target architectures.
242
If <em>prefix</em> is defined, <em>prefix_root</em> is ignored.\n
243
Default: <em>topdir</em>/xinstall/
244
\endtermblock
245
246
\section rnmake_mani File Manifest
247
List of directories, files, and naming conventions.
248
249
\subsection rnamake_mani_nom Nomenclature
250
\termblock
251
\term <em>rnmake</em>
252
\termdata Directory path to the top directory of the rnmake package.\n
253
Example: /prj/rnmake
254
\endterm
255
\term <em>pkgroot</em>
256
\termdata Directory path to package top directory.\n
257
Example: /prj/pkg/librnr
258
\endterm
259
\term <em>topdir</em>
260
\termdata Directory path to product's top directory. May be same as
261
<em>pkgroot</em> for single packages.
262
\endterm
263
\term <em>prefix</em>
264
\termdata Install root directory.\n
265
Example: <em>topdir</em>/xinstall/<em>arch</em>/ \n
266
Default: /prj/xinstall/<em>arch</em>/
267
\endterm
268
\term <em>arch</em>
269
\termdata Target host platform architecture.
270
\endterm
271
\term <em>pkg</em>
272
\termdata Package fully qualified name.
273
\endterm
274
\term <em>prod</em>
275
\termdata Product fully qualified name.
276
\endterm
277
\term <em>path</em>
278
\termdata A directory path.
279
\endterm
280
\endtermblock
281
282
\subsection rnmake_mani_core Core Make System
283
\termblock
284
\term <em>rnmake</em>/
285
\termdata The rnmake top directory containing core make files including
286
Rules.mk.
287
\endterm
288
\term <em>rnmake</em>/Arch/
289
\termdata The subdirectory holding the architecture make files.
290
\endterm
291
\term <em>rnmake</em>/doxy/
292
\termdata The doxygen package files.
293
\endterm
294
\term <em>rnmake</em>/utils/
295
\termdata Various rnmake utility scripts.
296
\endterm
297
\endtermblock
298
299
\subsection rnmake_mani_pkg General Package Structure
300
\termblock
301
\term <em>pkgroot</em>/docs/
302
\termdata Package doxygen main and support documentation.
303
\endterm
304
\term <em>pkgroot</em>/examples/
305
\termdata Package example programs.
306
\endterm
307
\term <em>pkgroot</em>/include/
308
\termdata Package top include directory.
309
\endterm
310
\term <em>pkgroot</em>/make/
311
\termdata Package wide make and configuration files.
312
\term <em>pkgroot</em>/<em>path</em>/
313
\termdata Package subcomponent directory. \n
314
For examploe: a subdirectory holding source files for a library.
315
\endterm
316
\endtermblock
317
318
\subsection rnmake_mani_prod General Product Structure
319
\termblock
320
\term <em>topdir</em>/make/
321
\termdata Product wide make and configuration files.
322
\endterm
323
\term <em>topdir</em>/<em>pkg_n</em>/
324
\termdata Package <em>n</em> root directory.
325
\endterm
326
\endtermblock
327
328
\subsection rnmake_mani_inter Make Intermediates
329
\termblock
330
\term <em>pkgroot</em>/<em>path</em>/.deps/
331
\termdata Source dependencies for package directory.
332
\endterm
333
\term <em>pkgroot</em>/<em>path</em>/.deps/deps.<em>arch</em>/
334
\termdata Source dependencies for <em>arch</em> architecure.
335
\endterm
336
\term <em>pkgroot</em>/<em>path</em>/obj/
337
\termdata Object files for packaage directory.
338
\endterm
339
\term <em>pkgroot</em>/<em>path</em>/obj/obj.<em>arch</em>/
340
\termdata Object files for <em>arch</em> architecure.
341
\endterm
342
\term <em>pkgroot</em>/loc/
343
\termdata Top directory containing local-only generated
344
libraries and applications. Local files are not installed.
345
\endterm
346
\term <em>topdir</em>/dist/
347
\termdata Distribution generated files top directory.
348
Distribution files are installed to <em>prefix</em>.
349
\endterm
350
\term <em>topdir</em>/dist/dist.<em>arch</em>/
351
\termdata Distribution generated files for <em>arch</em> architecture.
352
\endterm
353
\term <em>topdir</em>/dist/dist.<em>arch</em>/bin/
354
\termdata Executables.
355
\endterm
356
\term <em>topdir</em>/dist/dist.<em>arch</em>/lib/
357
\termdata Libraries.
358
\endterm
359
\term <em>topdir</em>/dist/dist.<em>arch></em>/etc/
360
\termdata System configuration.
361
\endterm
362
\term <em>topdir</em>/dist/dist.<em>arch</em>/share/
363
\termdata Package configuration and documenation including doxygen
364
generated HTML.
365
\endterm
366
\term <em>topdir</em>/dist/dist.<em>arch</em>/src/
367
\termdata A clean copy of source files for tarring, etc.
368
\endterm
369
\term <em>topdir</em>/dist/dist.<em>arch</em>/tmp/
370
\termdata Directory holding temporaries.
371
\endterm
372
\endtermblock
373
374
\subsection rnmake_mani_ins Install
375
Install directories. Any of the following parameters can be overriden
376
as necessary
377
in an including Makefile or on the command line.
378
Note that these parameters are the same as the traditional <b>configuration</b>
379
naming convention.
380
\termblock
381
\term <em>prefix</em>/
382
\termdata Installed files root directory.
383
\endterm
384
\term <em>exec_prefix</em>
385
\termdata Installed executables root directory
386
<br>default: <em>prefix</em>
387
\endterm
388
\term <em>bindir</em>
389
\termdata Installed executables directory
390
<br>default: <em>exec_prefix</em>/bin
391
\endterm
392
\term <em>sbindir </em>
393
\termdata Installed system executables directory
394
<br>default: <em>exec_prefix</em>/sbin
395
\endterm
396
\term <em>libexecdir</em>
397
\termdata Installed executable libraries directory
398
<br>default: <em>exec_prefix</em>/libexec
399
\endterm
400
\term <em>sysconfdir</em>
401
\termdata Installed system configuration files directory
402
<br>default: <em>prefix</em>/etc
403
\endterm
404
\term <em>localstatedir</em>
405
\termdata Installed local state directory
406
<br>default: <em>prefix</em>/var
407
\endterm
408
\term <em>libdir</em>
409
\termdata Installed libraries directory
410
<br>default: <em>exec_prefix</em>/lib
411
\endterm
412
\term <em>includedir</em>
413
\termdata Installed API headers directory
414
<br>default: <em>prefix</em>/include
415
\endterm
416
\term <em>sharedir</em>
417
\termdata Installed shared data directory
418
<br>default: <em>prefix</em>/share
419
\endterm
420
\term <em>infodir</em>
421
\termdata Installed information directory
422
<br>default: <em>prefix</em>/info
423
\endterm
424
\term <em>docdir</em>
425
\termdata Installed documentation directory
426
<br>default: <em>prefix</em>/share/doc
427
\endterm
428
\term <em>mandir</em>
429
\termdata Installed manpages directory
430
<br>default: <em>prefix</em>/man
431
\endterm
432
\endtermblock
433
434
\subsection rnmake_mani_tar Tarballs
435
\termblock
436
\term <em>topdir</em>/dist/<em>pkg</em>-doc.tar.gz
437
\termdata Package source documentation tarball file.
438
\endterm
439
\term <em>topdir</em>/dist/<em>pkg</em>-src.tar.gz
440
\termdata Package source tarball file.
441
\endterm
442
\term <em>topdir</em>/dist/<em>pkg</em>-<em>arch</em>.tar.gz
443
\termdata Package binary compiled source tarball file
444
for <em>arch</em> architecture (only if stand-alone package).
445
\endterm
446
\term <em>topdir</em>/dist/<em>prod</em>-<em>arch</em>.tar.gz
447
\termdata Product binary compiled source tarball file for <em>arch</em>
448
architecture .
449
\endterm
450
\endtermblock
451
452
\page page_eula EULA
453
\section eula_txt RoadNarrows LLC rnmake Package End User Licence Agreement
454
455
\subsection eula_permissions Permissions
456
Permission is hereby granted, without written agreement and without
457
license or royalty fees, to use, copy, modify, and distribute this
458
software and its documentation for any purpose, provided that
459
(1) The above copyright notice and the following two paragraphs
460
appear in all copies of the source code and (2) redistributions
461
including binaries reproduces these notices in the supporting
462
documentation. Substantial modifications to this software may be
463
copyrighted by their authors and need not follow the licensing terms
464
described here, provided that the new terms are clearly indicated in
465
all files where they apply.
466
467
\subsection eula_warranties Warranties
468
In no event shall the author, RoadNarrows LLC or any members/employees
469
of RoadNarrows LLC or distributors of this software be liable to any
470
party for direct, indirect, special, incidental, or consequential
471
damages arising out of the use of this software and its documentation,
472
even if the authors or any of the above parties have been advised of
473
the possibility of such damage.
474
475
The author and RoadNarrows LLC specifically disclaim any warranties,
476
including, but not limited to, the implied warranties of merchantability anD
477
fitness for a particular purpose. the software provided hereunder is on an
478
"as is" basis, and the authors and distributors have no obligation tO
479
provide maintenance, support, updates, enhancements, or modifications.
480
481
\subsection eula_copyright Copyright
482
All Rights Reserved by RoadNarrows LLC
483
\n (C) 2004-2009
484
\n http://www.roadnarrows.com
485
486
*/
Generated on Thu Apr 26 2018 11:35:19 for rnmake by
1.8.11
©2018 RoadNarrows LLC
www.roadnarrows.com