Hi Chris, > What do you perceive are the deficiencies of Makefiles?
take a look at the SConstruct makefile for the "net" project: http://lispbuilder.svn.sourceforge.net/viewvc/*checkout*/lispbuilder/trunk/n et/SConstruct With Makefiles you have to specify which programs to use for the libraries, which names the libraries have (*.dll on Windows, lib*.dylib on MacOSX and lib*.so on Linux) and which programs needs to be called for creating the libraries. Same for applications (but this is easier, because there is only *.exe and *). SCons knows this already. This is wrapped in some nice objects, so you can write this: env = Environment() lib = env.SharedLibrary('net', sources) prg = env.Program('server', 'server.c') env = Environment() env.Depends(prg, lib) "SharedLibrary" returns an object, which can be used to create a dependency for an executable. With Makefiles this will be cluttered with prefixes/suffixes for the filenames. But as I wrote, one main deficiencies of Makefiles is that it is not possible to include some scripting logic without calling external programs. SCons is an integrated system, where you can use Python to write custom build steps without the need to interface to external shell scripts. The "net" project shows already an example with the "system" environment variable, which is used for distinguish different set of targets, but I'm sure this can be simplified, because I don't have much experience with SCons. E.g. the only difference for the 3 platforms are different set of compiler and linker switches and different set of files. The build instructions itself are the same, so this could be refactored to some Python arrays, but I don't know Python good enough to do it. I think the size could be shrinked to 1/3 of the current build file. And the plaform could be detected at runtime, which means running just "scons" on every system would do the build. Regards, Frank _______________________________________________ application-builder mailing list [email protected] http://www.lispniks.com/mailman/listinfo/application-builder
