Files
retrobsd/Makefile
2015-03-21 14:11:41 -07:00

185 lines
6.4 KiB
Makefile

# Copyright (c) 1986 Regents of the University of California.
# All rights reserved. The Berkeley software License Agreement
# specifies the terms and conditions for redistribution.
#
# This makefile is designed to be run as:
# make
#
# The `make' will compile everything, including a kernel, utilities
# and a root filesystem image.
#
# Supported boards
#
MAX32 = pic32/max32
UBW32 = pic32/ubw32
UBW32UART = pic32/ubw32-uart
MAXIMITE = pic32/maximite
EXPLORER16 = pic32/explorer16
STARTERKIT = pic32/starter-kit
DUINOMITE = pic32/duinomite
PINGUINO = pic32/pinguino-micro
DIP = pic32/dip
BAREMETAL = pic32/baremetal
RETROONE = pic32/retroone
# Select target board
TARGET ?= $(MAX32)
# Filesystem and swap sizes.
FS_KBYTES = 16384
SWAP_KBYTES = 2048
# Set this to the device name for your SD card. With this
# enabled you can use "make installfs" to copy the filesys.img
# to the SD card.
#SDCARD = /dev/sdb
#
# C library options: passed to libc makefile.
# See lib/libc/Makefile for explanation.
#
DEFS =
FSUTIL = tools/fsutil/fsutil
#
# Filesystem contents.
#
BIN_FILES := $(wildcard bin/*)
SBIN_FILES := $(wildcard sbin/*)
UFLASH_FILES := $(wildcard uflash/*)
GAMES_FILES := $(shell find games -type f ! -path '*/.*')
LIB_FILES := $(wildcard lib/*)
LIBEXEC_FILES := $(wildcard libexec/*)
ETC_FILES = etc/rc etc/rc.local etc/ttys etc/gettytab etc/group \
etc/passwd etc/shadow etc/fstab etc/motd etc/shells \
etc/termcap
INC_FILES = include/stdio.h include/syscall.h include/sys/types.h \
include/sys/select.h
SHARE_FILES = share/re.help share/example/Makefile \
share/example/ashello.S share/example/chello.c \
share/example/blkjack.bas share/example/hilow.bas \
share/example/stars.bas share/example/prime.scm \
share/example/fact.fth share/example/echo.S \
share/smallc/lib.c share/smallc/Makefile share/smallc/primelist.c \
share/smallc/primesum.c share/smallc/sys.s share/smallc/test1.c \
share/smallc/test2.c $(wildcard share/lccom/*)
ALLFILES = $(SBIN_FILES) $(ETC_FILES) $(BIN_FILES) $(LIB_FILES) $(LIBEXEC_FILES) \
$(INC_FILES) $(SHARE_FILES) $(GAMES_FILES) $(UFLASH_FILES) \
var/log/messages var/log/wtmp .profile
ALLDIRS = sbin/ bin/ dev/ etc/ tmp/ lib/ libexec/ share/ share/example/ \
share/lccom/ share/misc/ share/smallc/ var/ var/run/ var/log/ u/ include/ include/sys/ \
games/ games/lib/ uflash/
BDEVS = dev/sd0!b0:0 dev/sd1!b0:1 dev/sw0!b1:0
CDEVS = dev/console!c0:0 \
dev/mem!c1:0 dev/kmem!c1:1 dev/null!c1:2 dev/zero!c1:3 \
dev/tty!c2:0 \
dev/rsd0!c3:0 dev/rsd1!c3:1 dev/swap!c3:0 \
dev/klog!c4:0 \
dev/stdin!c5:0 dev/stdout!c5:1 dev/stderr!c5:2 \
dev/rsw0!c6:0 \
dev/porta!c7:0 dev/portb!c7:1 dev/portc!c7:2 \
dev/portd!c7:3 dev/porte!c7:4 dev/portf!c7:5 dev/portg!c7:6 \
dev/confa!c7:64 dev/confb!c7:65 dev/confc!c7:66 \
dev/confd!c7:67 dev/confe!c7:68 dev/conff!c7:69 dev/confg!c7:70 \
dev/spi1!c9:0 dev/spi2!c9:1 dev/spi3!c9:2 dev/spi4!c9:3 \
dev/glcd0!c10:0 dev/uflash!c12:0
FDDEVS = dev/fd/ dev/fd/0!c5:0 dev/fd/1!c5:1 dev/fd/2!c5:2 \
dev/fd/3!c5:3 dev/fd/4!c5:4 dev/fd/5!c5:5 dev/fd/6!c5:6 \
dev/fd/7!c5:7 dev/fd/8!c5:8 dev/fd/9!c5:9 dev/fd/10!c5:10 \
dev/fd/11!c5:11 dev/fd/12!c5:12 dev/fd/13!c5:13 \
dev/fd/14!c5:14 dev/fd/15!c5:15 dev/fd/16!c5:16 \
dev/fd/17!c5:17 dev/fd/18!c5:18 dev/fd/19!c5:19 \
dev/fd/20!c5:20 dev/fd/21!c5:21 dev/fd/22!c5:22 \
dev/fd/23!c5:23 dev/fd/24!c5:24 dev/fd/25!c5:25 \
dev/fd/26!c5:26 dev/fd/27!c5:27 dev/fd/28!c5:28 \
dev/fd/29!c5:29
ADCDEVS = dev/adc0!c8:0 dev/adc1!c8:1 dev/adc2!c8:2 dev/adc3!c8:3 \
dev/adc4!c8:4 dev/adc5!c8:5 dev/adc6!c8:6 dev/adc7!c8:7 \
dev/adc8!c8:8 dev/adc9!c8:9 dev/adc10!c8:10 dev/adc11!c8:11 \
dev/adc12!c8:12 dev/adc13!c8:13 dev/adc14!c8:14 dev/adc15!c8:15
OCDEVS = dev/oc0!c11:0 dev/oc1!c11:1 dev/oc2!c11:2 dev/oc3!c11:3 dev/oc4!c11:4
all: build kernel
$(MAKE) fs
fs: filesys.img user.img
kernel:
$(MAKE) -C sys/$(TARGET)
build:
$(MAKE) -C tools
$(MAKE) -C src install
filesys.img: $(FSUTIL) $(ALLFILES)
rm -f $@
$(FSUTIL) -n$(FS_KBYTES) -s$(SWAP_KBYTES) $@
$(FSUTIL) -a $@ $(ALLDIRS) $(ALLFILES)
$(FSUTIL) -a $@ $(CDEVS)
$(FSUTIL) -a $@ $(BDEVS)
$(FSUTIL) -a $@ $(ADCDEVS)
$(FSUTIL) -a $@ $(OCDEVS)
# $(FSUTIL) -a $@ $(FDDEVS)
user.img: $(FSUTIL)
rm -f $@
$(FSUTIL) -n$(FS_KBYTES) $@
$(FSUTIL):
cd tools/fsutil; $(MAKE)
clean:
rm -f *~
for dir in tools src sys/pic32; do $(MAKE) -C $$dir -k clean; done
cleanall: clean
rm -f sys/pic32/*/unix.hex bin/* sbin/* lib/* games/[a-k]* games/[m-z]* libexec/* share/man/cat*/*
rm -f games/lib/adventure.dat
rm -f games/lib/cfscores
rm -f share/re.help
rm -f share/misc/more.help
rm -f etc/termcap
rm -f uflash/*
# TODO
buildlib:
@echo installing /usr/include
# cd include; $(MAKE) DESTDIR=$(DESTDIR) install
@echo
@echo compiling libc.a
cd lib/libc; $(MAKE) $(LIBCDEFS)
@echo installing /lib/libc.a
cd lib/libc; $(MAKE) DESTDIR=$(DESTDIR) install
@echo
@echo compiling C compiler
cd lib; $(MAKE) ccom cpp c2
@echo installing C compiler
cd lib/ccom; $(MAKE) DESTDIR=$(DESTDIR) install
cd lib/cpp; $(MAKE) DESTDIR=$(DESTDIR) install
cd lib/c2; $(MAKE) DESTDIR=$(DESTDIR) install
cd lib; $(MAKE) clean
@echo
@echo re-compiling libc.a
cd lib/libc; $(MAKE) $(LIBCDEFS)
@echo re-installing /lib/libc.a
cd lib/libc; $(MAKE) DESTDIR=$(DESTDIR) install
@echo
@echo re-compiling C compiler
cd lib; $(MAKE) ccom cpp c2
@echo re-installing C compiler
cd lib/ccom; $(MAKE) DESTDIR=$(DESTDIR) install
cd lib/cpp; $(MAKE) DESTDIR=$(DESTDIR) install
cd lib/c2; $(MAKE) DESTDIR=$(DESTDIR) install
@echo
installfs: filesys.img
ifdef SDCARD
sudo dd bs=16k if=filesys.img of=$(SDCARD)
else
@echo "Error: No SDCARD defined."
endif