From f27ab9140d54a0c6f25523aeede5d5333116b65e Mon Sep 17 00:00:00 2001 From: Christoffer Dall Date: Fri, 9 Dec 2011 00:20:05 -0500 Subject: 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 --- .gitignore | 1 + Makefile | 38 ++++----------------- config-default.mk | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 107 insertions(+), 32 deletions(-) create mode 100644 config-default.mk 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 +# 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 -- cgit v1.2.3