]> git.llucax.com Git - software/makeit.git/commitdiff
Split configuration into project-wide and local
authorLeandro Lucarella <llucarella@integratech.com.ar>
Fri, 29 Oct 2010 18:21:57 +0000 (15:21 -0300)
committerLeandro Lucarella <llucarella@integratech.com.ar>
Fri, 29 Oct 2010 18:21:57 +0000 (15:21 -0300)
If Toplevel.mak and Makeit.mak should not be edited by the user, and
Config.mak is supposed to be a local configuration file, we are missing a
place to have project-wide configuration, like default compiler flags and
flavors. This patch make Config.mak a project-wide configuration file and
adds Config.local.mak as a local user-wide configuration, to tweak local
parameters as colors, or default compiler to use.

Toplevel.mak
example/Config.local.mak [new file with mode: 0644]
example/Config.mak
example/README
example/subproj/Config.local.mak [new file with mode: 0644]
example/subproj/Config.mak [deleted file]

index 8cffea43a30b68f24a2ffc86db920ac299982a56..5d16acfd18f77c01a31e08af7abf9f171fcd2d76 100644 (file)
@@ -1,9 +1,12 @@
 ifndef Toplevel.mak.included
 Toplevel.mak.included := 1
 
-# Load top-level directory local configuration
+# Load top-level directory project configuration
 sinclude $T/Config.mak
 
+# Load top-level directory local configuration
+sinclude $T/Config.local.mak
+
 # Include the build system library
 include $T/Makeit.mak
 
diff --git a/example/Config.local.mak b/example/Config.local.mak
new file mode 100644 (file)
index 0000000..e3f5ce7
--- /dev/null
@@ -0,0 +1,4 @@
+
+# Use GCC as C compiler
+CC := gcc
+
index c32caacfcbf84de94af581da9a2f08bfb47ccbff..e48599d9b4b3cc876bc5a516db912631e4bad345 100644 (file)
@@ -1,22 +1,4 @@
 
-# Use debug flavor by default
-F := dbg
-
-# C compiler
-CC := gcc
-
-# Use pre-compiled headers
-GCH := 1
-
-# Warn about everything
-override CPPFLAGS += -Wall
-override LDFLAGS += -Wall
-
-# Be standard compliant
-override CFLAGS += -std=c99 -pedantic
-override CXXFLAGS += -std=c++98 -pedantic
-
-
 # Flavors (variants) flags
 ##########################
 
@@ -33,3 +15,24 @@ override CPPFLAGS += -ggdb -pg --coverage
 override LDFLAGS += -pg --coverage
 endif
 
+# Common flags
+##############
+
+# Warn about everything
+override CPPFLAGS += -Wall
+override LDFLAGS += -Wall
+
+# Be standard compliant
+override CFLAGS += -std=c99 -pedantic
+override CXXFLAGS += -std=c++98 -pedantic
+
+# Other project configuration
+#############################
+
+# Use debug flavor by default
+F := dbg
+
+# Use pre-compiled headers
+GCH := 1
+
+
index e3b8addaf5d5cdac6eb1dc954a5708be79bcca7e..b0cc392877cb1440a220c723729f8545234b9c9f 100644 (file)
@@ -1,10 +1,16 @@
 
-This is a test/example for a nice Make based build system.
+This is a test/example for the Makeit build system.
 
-The Config.mak should not be saved to the repositories usually, but in this
-case it is because part of this demonstration is to show how to customize the
-build system through Config.mak, and specially to show how a project can be
-"embedded" into another tweaking the Config.mak.
+The Config.local.mak should not be saved to the repositories usually, it's
+supposed to be user configuration not visible to other users, but in
+this case it is because is part of this demonstration. Also, subproj's
+Config.local.mak shows how to make another project using Makeit behave as it was
+part of this project, as an "embedded" sub-project.
+
+This means you could copy subproj directory elsewhere, remove Config.local.mak
+and that should be a standalone project using Makeit. Tweaking ours
+Config.local.mak here, we integrate it into the build system, so doing make in
+our parent project will make subproj too.
 
 lib1 is a standalone C library compiled into a shared object.  lib2 is another
 shared library which uses lib1 and otherproj, which is a standalone project
@@ -12,8 +18,8 @@ shared library which uses lib1 and otherproj, which is a standalone project
 produces another standalone shared object.  Finally, prog is a program which
 uses lib1 and lib2.
 
-Every project have it's copy of Makeit.mak and it's own Toplevel.mak. Both
-files shouldn't be modified ever (unless you're hacking the build system).
+Every standalone project have it's copy of Makeit.mak and it's own Toplevel.mak.
+Both files shouldn't be modified ever (unless you're hacking the build system).
 
 Then each directory containing some library or program to build (or directories
 to include) has a Build.mak, which has only the logic to build the
diff --git a/example/subproj/Config.local.mak b/example/subproj/Config.local.mak
new file mode 100644 (file)
index 0000000..a8c1b96
--- /dev/null
@@ -0,0 +1,12 @@
+
+# Use the container project top-level directory as ours.
+T := ..
+
+# Define the default goal to the main target of this subproject when doing make
+# in this directory (you can use "all" to make the whole super-project).
+.DEFAULT_GOAL := otherproj
+
+# Include the "parent" project and local configuration.
+sinclude $T/Config.mak
+sinclude $T/Config.local.mak
+
diff --git a/example/subproj/Config.mak b/example/subproj/Config.mak
deleted file mode 100644 (file)
index dc4e4b4..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-
-# Use the container project top-level directory as ours
-T := ..
-
-# Define the default goal when doing make in this directory
-.DEFAULT_GOAL := otherproj
-
-# Include the "parent" project configuration
-sinclude $T/Config.mak
-