From 5d0dcc449b10f1d21db167fe16da836462ee3103 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Mon, 11 Apr 2005 23:35:57 +0000 Subject: updated docs to discuss multiple files and including libs svn path=/trunk/; revision=2711 --- externals/build/README | 46 ++++++++++++++++++++++++++++++++++++++-------- externals/build/TODO | 16 ++++++++++++++++ 2 files changed, 54 insertions(+), 8 deletions(-) diff --git a/externals/build/README b/externals/build/README index ccc691d6..8c547a2f 100644 --- a/externals/build/README +++ b/externals/build/README @@ -21,22 +21,52 @@ The build system is actually on top of the different externals packages that are in the CVS. Every external (the source code) is linked into the "src" directory. -In order to be platform independent this is done via c-includes. +In order for the paths to be platform independent, this is done via c-includes. Then the build system just tries to build every external that it finds in "src". -Problems with this approach: -- it can't be applied to externals that use additional libraries. -- it might be hard for externals that use several source files - (not always, look at src/ann.c) -- I could not find a way how this should work on windows with nmake .. - for now I just put the windows links in build/win/*.c ... -Guenter +Externals That Need Libraries +============================= + +In order to add an external that needs libraries to this build system, create +a "libs" file with the exact same name as the source file (i.e. oggread~.c and +oggread~.libs). If the .libs file has cross-platforms library options, it +should go into externals/build/src. .libs files for platform-specific library +options go in externals/build/PLATFORM (see TODO, this is totally implemented). + + +Externals That Are Built From Multiple Files +============================================ + +In the externals/build/src/*. file, #include the other files that need to be +compiled and linked in. See how the chaos externals are included: + +attract1.c:#include "../../bbogart/chaos/lyapunov.c" +attract1.c:#include "../../bbogart/chaos/attract1.c" +base.c:#include "../../bbogart/chaos/lyapunov.c" +base.c:#include "../../bbogart/chaos/base.c" +base3.c:#include "../../bbogart/chaos/lyapunov.c" +base3.c:#include "../../bbogart/chaos/base3.c" +dejong.c:#include "../../bbogart/chaos/lyapunov.c" +dejong.c:#include "../../bbogart/chaos/dejong.c" + + + +Problems with this approach +=========================== +- no way to use autoconf/automake + +- it might be hard for externals that use several source files + +- I could not find a way how this should work on windows with nmake .. + for now I just put the windows links in build/win/*.c. This should be + converted to a MinGW GNU Makefile, then it would work the same as on the + other platforms. diff --git a/externals/build/TODO b/externals/build/TODO index 98e4f93e..7cbcfb7a 100644 --- a/externals/build/TODO +++ b/externals/build/TODO @@ -1,3 +1,19 @@ - include mp3 externals from iem_mp3 and unauthorized and make mp3*.libs files +- put objects with conflicting names into a directory namespace + + maxlib/scale + Gem/scale + iem/prepend + cxc/prepend + flext/prepend + +- move .libs files to externals/build/src from externals/build/PLATFORM. The + platform-specific makefiles copy them before compiling. If a + platform-specific .libs file is needed, create it in the + externals/build/PLATFORM directory. The makefiles will use both: + `test -f $*.libs && cat $*.libs` `test -f ../src/$*.libs && cat ../src/$*.libs` + +- make MinGW makefile for "win" so that the GNU Makefile method will be + standard on all platforms. -- cgit v1.2.1