summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoffer Dall <c.dall@virtualopensystems.com>2011-12-09 00:20:05 -0500
committerChristoffer Dall <cdall@cs.columbia.edu>2011-12-09 00:20:44 -0500
commitf27ab9140d54a0c6f25523aeede5d5333116b65e (patch)
treedb0288f8f1bf01372d8a975781fa8d653b7651a9
parent1502732d0551dbaf50835d20520fb5545bc84718 (diff)
Makefile: Introduced super-simple config file
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>
-rw-r--r--.gitignore1
-rw-r--r--Makefile38
-rw-r--r--config-default.mk100
3 files changed, 107 insertions, 32 deletions
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