summaryrefslogtreecommitdiff
path: root/README
diff options
context:
space:
mode:
authorLuke Shumaker <luke@HP-dv6426us-u904.(none)>2009-10-28 21:16:58 -0400
committerLuke Shumaker <lukeshu@sbcglobal.net>2015-06-26 00:30:18 -0600
commit9efb5c3e6a370aab6fa962ab5c558437264a6fde (patch)
treeabdd7184698dab2612501bc9a79454c83b60bbf6 /README
parentd454c2682afbfd3e1aa98fd1be585edacd80b3c7 (diff)
get hacking on rvs
Diffstat (limited to 'README')
-rw-r--r--README80
1 files changed, 80 insertions, 0 deletions
diff --git a/README b/README
new file mode 100644
index 0000000..38341ce
--- /dev/null
+++ b/README
@@ -0,0 +1,80 @@
+#!/usr/bin/less
+
+ Thing(y) 0.1 -- This Hack Is Not GNU (yet?)
+
+The name seems really... noobish right now. The idea was that I would
+fork several GNU projects, to experiment with new features, then worry
+about getting them merged back into mainstream GNU later.
+
+This sounds dumb right now because, well, Thing doesn't include any
+GNU-based packages right now. Right now it is my tinkering with
+making new build/mangagement tools, perhaps one day I will use them to
+work on GNU packages, or get them merged.
+
+I like the name because
+ a) it's ambiguous/random
+ b) the `y' at the end is optional. Sometimes I use the `y' to
+ hint at how much I expect it to become part of GNU
+ c) It's a refference to GNU's own name.
+ The reason it's significant that it's `not GNU' is because
+ I differ from GNU design principals in a few places.
+ Getting them merged into GNU would sometimes even require
+ an ammendment to the GNU Coding Standards. Although, it's
+ moot, because I still haven't done any GNU hacking.
+
+Anyway, right now Thing is mostly a build system... the one Thing
+uses. I had all these (unrelated) packages, and I was tired of
+patching the config and Makefiles with general changes. I got sick of
+them being different, and hard to manage. So I started refactoring
+them to be on the same build system.
+
+=How the build system works=
+
+ `Makefile' in the top directory is a file you will use, but packages
+ won't know it exists. It offers several commands that can be used
+ to build packages:
+ complete-PKG_NAME - each package is not complete, there are
+ several files generic to all packages, this
+ completes the package
+ distclean-PKG_NAME - make that `distclean'. Actually, more
+ than distclean, it removes generic files
+ placed there by `complete-PKG_NAME'
+ build-PKG_NAME - build the package in the separate directory
+ `PACKAGE_NAME-build'.
+ This depends on `complete-PKG_NAME'.
+ This works by calling that package's Makefile
+ install-PKG_NAME - runs `$(MAKE) -C PKG_NAME-build install'
+ clean-PKG_NAME - runs `$(MAKE) -C PKG_NAME-build clean'
+
+ complete-PKG_NAME
+ * This copies the following files from this directory into the
+ package's directory:
+ * configure
+ * COPYING
+ * Makefile.in
+ build-PKG_NAME
+ (depends on complete-PKG_NAME)
+ (`$srcdir' by default is the directory containing configure)
+ * This creates and cd into the directory `PKG_NAME-build'
+ * It runs `../PKG_NAME/configure'
+ * It sources the file `$srcdir/config' if it exists. This
+ allows for package-specific configure stuff to happen
+ * It scans $srcdir and subdirectories for any files with the
+ names:
+ Makefile.in
+ *.mk.in
+ * It goes through the standard Autoconf fare on these files,
+ and places the resulting files in the coresponding files
+ in `PKG_NAME-build', sans `.in'
+ * It runs make in the `PKG_NAME-build' directory
+ Yeah, this means running the generic `Makefile' generated from
+ `Makefile.in'. So, how do you actually get things to build?
+ It sources/includes `main.mk'
+ The generic Makefile provides several generic functions:
+ * target `Makefile': remakes all Makefiles
+ * Also generates a `*.d' file for each `*.c' file,
+ containing dependancies on #included header files.
+ * target `dist': creates a .tar.gz of the package
+ * target `distclean': cleans all files. This LEAVES generic
+ files
+