diff mbox

[v3,1/2] Makefile: Introduced super-simple config file

Message ID 20111209202403.21381.32339.stgit@ubuntu
State New
Headers show

Commit Message

Christoffer Dall Dec. 9, 2011, 8:24 p.m. UTC
Config files are named config.mk. This file is added to .gitignore,
but a default config file is supplied in config-default.mk.

The default config file creates kernel command boot lines for NFS boots
based on a script obtaining the host IP addres. Naturally users can
change this to a static IP or another script if they wish.

The config file lets users select a system and other config options
depend on this overall setting.

I am no expert on Makefiles, so there could be better ways to accomplish
these things, but I think this suffices for now.


Signed-off-by: Christoffer Dall <c.dall@virtualopensystems.com>
---
 .gitignore        |    1 +
 Makefile          |   38 +++-----------------
 config-default.mk |  100 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 107 insertions(+), 32 deletions(-)
 create mode 100644 config-default.mk
diff mbox

Patch

diff --git a/.gitignore b/.gitignore
index 05aa345..07eefe1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,5 +2,6 @@  filesystem.cpio.gz
 linux-system.axf
 uImage
 model.lds
+config.mk
 *.o
 *.swp
diff --git a/Makefile b/Makefile
index e1635ea..54cdbf5 100644
--- a/Makefile
+++ b/Makefile
@@ -5,47 +5,21 @@ 
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE.txt file.
 
-CPPFLAGS	+= -DSMP
-#CPPFLAGS	+= -DTHUMB2_KERNEL
-CPPFLAGS	+= -march=armv7-a
-CPPFLAGS	+= -DVEXPRESS
-
-# Turn this on to use an initrd whose contents are in filesystem.cpio.gz
-USE_INITRD = no
-ifeq ($(USE_INITRD),yes)
-CPPFLAGS	+= -DUSE_INITRD
-FILESYSTEM	= filesystem.cpio.gz
+
+# Include config file (prefer config.mk, fall back to config-default.mk)
+ifneq ($(wildcard config.mk),)
+include config.mk
 else
-FILESYSTEM =
+include config-default.mk
 endif
 
-# MPS (Cortex-M3) definitions
-#CPPFLAGS	+= -DMACH_MPS -DTHUMB2_KERNEL
-#CPPFLAGS	+= -march=armv7-m
-#CPPFLAGS	+= -mthumb -Wa,-mthumb -Wa,-mimplicit-it=always
-
-# Kernel command line
-# MPS:
-# KCMD = "rdinit=/bin/sh console=ttyAMA3 mem=4M earlyprintk"
-# not-vexpress (ie EB, RealviewPB, etc), with initrd
-# KCMD = "console=ttyAMA0 mem=256M earlyprintk"
-# not-vexpress, without initrd:
-# KCMD = "root=/dev/nfs nfsroot=10.1.77.43:/work/debootstrap/arm ip=dhcp console=ttyAMA0 mem=256M earlyprintk"
-# Vexpress, with initrd:
-# KCMD = "console=ttyAMA0 mem=512M mem=512M@0x880000000 earlyprintk ip=192.168.27.200::192.168.27.1:255.255.255.0:angstrom:eth0:off"
-# VExpress, without initrd:
-KCMD ?= "console=ttyAMA0 mem=512M mem=512M@0x880000000 earlyprintk root=/dev/nfs nfsroot=172.31.252.250:/srv/arm-oneiric-root,tcp rw ip=dhcp nfsrootdebug"
-
 MONITOR		= monitor.S
 BOOTLOADER	= boot.S
-KERNEL_SRC	= ../linux-kvm-arm
 KERNEL		= uImage
 
 IMAGE		= linux-system.axf
 LD_SCRIPT	= model.lds.S
 
-CROSS_COMPILE	?= arm-unknown-eabi-
-ARCH		?= arm
 
 CC		= $(CROSS_COMPILE)gcc
 LD		= $(CROSS_COMPILE)ld
@@ -85,4 +59,4 @@  force: ;
 
 Makefile: ;
 
-.PHONY: all clean
+.PHONY: all clean config.mk config-default.mk
diff --git a/config-default.mk b/config-default.mk
new file mode 100644
index 0000000..0d5bb85
--- /dev/null
+++ b/config-default.mk
@@ -0,0 +1,100 @@ 
+# Configuration file included in Makefile
+#
+# Copyright (C) 2011 Columbia University. All rights reserved.
+# 		     Christoffer Dall <cdall@cs.columbia.edu>
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE.txt file.
+#
+# This is a sample configuration file. To make changes, copy this file to
+# config.mk and modify that file.
+#
+# For all systems you can override USE_INITRD and KCMD from the command-line.
+#
+
+###########################################################################
+# Main options
+#
+CROSS_COMPILE	?= arm-unknown-eabi-
+ARCH		?= arm
+KERNEL_SRC	?= ../linux-kvm-arm
+
+# Select system:
+# mps:		MPS (Cortex-M3)
+# realview_eb:	RealViewPB, EB, etc.
+# vexpress:	Versatile Express
+SYSTEM ?= vexpress
+
+###########################################################################
+# Turn this on to use an initrd whose contents are in filesystem.cpio.gz
+USE_INITRD ?= no
+ifeq ($(USE_INITRD),yes)
+CPPFLAGS	+= -DUSE_INITRD
+FILESYSTEM	?= filesystem.cpio.gz
+else
+FILESYSTEM =
+endif
+
+###########################################################################
+# Default NFS root
+NFS_ROOT	?= /srv/nfsroot
+ifeq ($(origin NFS_SERVER), undefined)
+NFS_SERVER	:= $(shell ip addr show scope global | \
+		   sed -ne '/inet/{s/ *inet \([^/]*\)\/.*/\1/p;q}')
+endif
+
+
+###########################################################################
+# MPS (Cortex-M3) definitions
+#
+ifeq ($(SYSTEM),mps)
+# C-flags
+CPPFLAGS	+= -DMACH_MPS -DTHUMB2_KERNEL
+CPPFLAGS	+= -march=armv7-m
+CPPFLAGS	+= -mthumb -Wa,-mthumb -Wa,-mimplicit-it=always
+
+# Kernel command line
+KCMD ?= "rdinit=/bin/sh console=ttyAMA3 mem=4M earlyprintk"
+endif # SYSTEM = mps
+
+
+###########################################################################
+# EB, RealviewPB, etc
+#
+ifeq ($(SYSTEM),realview_eb)
+
+#CPPFLAGS	+= -DSMP
+CPPFLAGS	+= -march=armv7-a
+#CPPFLAGS	+= -DTHUMB2_KERNEL
+
+# Default kernel command line, using initrd:
+ifeq ($(USE_INITRD),yes)
+	KCMD ?= "console=ttyAMA0 mem=256M earlyprintk"
+endif
+#
+# Default kernel command line, without initrd:
+ifneq ($(USE_INITRD),yes)
+	KCMD ?= "root=/dev/nfs nfsroot=$(NFS_HOST):$(NFS_ROOT) ip=dhcp console=ttyAMA0 mem=256M earlyprintk"
+endif
+endif # SYSTEM = realvire_eb
+
+
+###########################################################################
+# Versatile Express
+#
+ifeq ($(SYSTEM),vexpress)
+
+CPPFLAGS	+= -DSMP
+CPPFLAGS	+= -march=armv7-a
+#CPPFLAGS	+= -DTHUMB2_KERNEL
+CPPFLAGS	+= -DVEXPRESS
+
+# Default kernel command line, using initrd:
+ifeq ($(USE_INITRD),yes)
+	KCMD ?= "console=ttyAMA0 mem=512M mem=512M@0x880000000 earlyprintk ip=dhcp"
+endif
+#
+# Default kernel command line, without initrd:
+ifneq ($(USE_INITRD),yes)
+	KCMD ?= "console=ttyAMA0 mem=512M mem=512M@0x880000000 earlyprintk root=/dev/nfs nfsroot=$(NFS_SERVER):$(NFS_ROOT),tcp rw ip=dhcp nfsrootdebug"
+endif
+endif # SYSTEM = vexpress