aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--externals/build/README46
-rw-r--r--externals/build/TODO16
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.