1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161
|
#
# Copyright (c) 1996-2000 The University of Utah and the Flux Group.
#
# This file is part of the OSKit Linux Glue Libraries, which are free
# software, also known as "open source;" you can redistribute them and/or
# modify them under the terms of the GNU General Public License (GPL),
# version 2, as published by the Free Software Foundation (FSF).
#
# The OSKit is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GPL for more details. You should have
# received a copy of the GPL along with the OSKit; see the file COPYING. If
# not, write to the FSF, 59 Temple Place #330, Boston, MA 02111-1307, USA.
#
ifndef _oskit_linux_dev_makerules_
_oskit_linux_dev_makerules_ = yes
TARGET = liboskit_linux_dev.a
all: $(TARGET)
SRCDIRS += $(OSKIT_SRCDIR)/linux/dev \
$(OSKIT_SRCDIR)/linux/src/drivers/block \
$(OSKIT_SRCDIR)/linux/src/drivers/pci
ifneq ($(HOST_ARCH),arm32)
SRCDIRS += $(OSKIT_SRCDIR)/linux/src/drivers/cdrom
endif
MOSTLY_SRCDIRS += $(OSKIT_SRCDIR)/linux/src/drivers/net \
$(OSKIT_SRCDIR)/linux/src/drivers/scsi
DEFINES += -DOSKIT_DEV
# Implicitly include the dev global.h header file at the top of _all_ sources.
# This header #defines a bunch of global Linux symbols
# to ensure linker namespace cleanliness and avoid conflicts.
OSKIT_CPPFLAGS += -include $(OSKIT_SRCDIR)/linux/dev/global.h
# Define SCSIDRIVERS and ETHERDRIVERS.
-include scsidrivers
-include etherdrivers
# Build individual glue files for the SCSI and Ethernet drivers; see below.
SCSIGLUE_CFILES := $(addsuffix _scsiglue.c,$(SCSIDRIVERS))
OBJFILES += $(addsuffix _scsiglue.o,$(SCSIDRIVERS))
CLEAN_FILES += scsidrivers $(addsuffix _scsiglue.c,$(SCSIDRIVERS))
ETHERGLUE_CFILES := $(addsuffix _etherglue.c,$(ETHERDRIVERS))
OBJFILES += $(addsuffix _etherglue.o,$(ETHERDRIVERS))
CLEAN_FILES += etherdrivers $(addsuffix _etherglue.c,$(ETHERDRIVERS))
# Figure out which driver and shared files to actually compile.
# This mostly depends on the contents of $(ETHERDRIVERS), etc; see below.
ETHEROBJS := net_init.o 8390.o
ETHEROBJS += $(addsuffix .o,$(ETHERDRIVERS))
OBJFILES += $(ETHEROBJS)
SCSIOBJS := constants.o g_NCR5380.o hosts.o \
scsi_obsolete.o scsi_error.o scsi_queue.o \
scsi.o scsi_debug.o scsi_ioctl.o scsicam.o sd.o sd_ioctl.o
SCSIOBJS += $(addsuffix .o,$(SCSIDRIVERS))
ifneq ($(HOST_ARCH),arm32)
OBJFILES += $(SCSIOBJS)
endif
## The aha152x driver requires a compile-time define.
## We just use AUTOCONF. Look at the driver for more info.
## This isn't used by other drivers, so we are safe (for now).
DEFINES += -DAUTOCONF
## Hack to keep aic7xxx_proc.c and the assembler from being compiled,
## along with several other files that aren't intended to be
## separately compiled.
OSKIT_EXCLUDE += $(addprefix $(OSKIT_SRCDIR)/linux/src/drivers/scsi/, \
aic7xxx_proc.c aic7xxx_asm.c \
qlogicisp_asm.c NCR5380.c \
eata_dma_proc.c eata_pio_proc.c)
ifeq ($(HOST_ARCH),arm32)
OSKIT_EXCLUDE += $(OSKIT_SRCDIR)/linux/dev/init_scsi.c \
$(OSKIT_SRCDIR)/linux/dev/scsi_glue.c
endif
## We also need to run the sequencer compiler on the local
## machine to get the bytes to download when the kernel runs.
# This compiler needs to run on the local machine, not the target.
#aic7xxx_asm: aic7xxx_asm.c
# cc -o $@ $(OSKIT_SRCDIR)/linux/src/drivers/scsi/aic7xxx_asm.c
# aic7xxx.o: aic7xxx_seq.h aic7xxx_reg.h
# The horrible kludge here just adds a "#define linux"
# to the top of the sequencer assembly language file,
# so that it'll include "aic7xxx_reg.h" properly.
# We can't just use a -D option because,
# although the assembler supports such an option,
# it doesn't pass it to the preprocessor
# but just uses it as an internal symbol.
#aic7xxx_seq.h: aic7xxx_asm aic7xxx_reg.h \
# $(OSKIT_SRCDIR)/linux/src/drivers/scsi/aic7xxx.seq
# ln -fs $(OSKIT_SRCDIR)/linux/src/drivers/scsi/aic7xxx_reg.h aic7xxx_reg.h
# echo "#define linux" >aic7xxx.seq
# cat $(OSKIT_SRCDIR)/linux/src/drivers/scsi/aic7xxx.seq >>aic7xxx.seq
# ./aic7xxx_asm -o $@ aic7xxx.seq
## Linux NCR script compiler (53c7,8xx driver)
## Scripts come pre-compiled; this is only if you change them
## Comes from the Linux Makefile (Updates 53c8xx_u.h and 53c8xx_d.h)
## XXX: Broken makerules for OSKit environ
53c8xx_d.h 53c8xx_u.h : 53c7,8xx.scr script_asm.pl
ln -sf 53c7,8xx.scr fake.c
$(CPP) -traditional -DCHIP=810 fake.c | grep -v '^#' | perl script_asm.pl
mv script.h 53c8xx_d.h
mv scriptu.h 53c8xx_u.h
rm fake.c
## Clean up the `extra' files we created.
CLEAN_FILES += aic7xxx.seq aic7xxx_asm aic7xxx_seq.h aic7xxx_reg.h
### Include other appropriate make rules files ###
include $(OSKIT_SRCDIR)/linux/shared/GNUmakerules
# Extract the list of SCSI device drivers from <dev/linux_scsi.h>;
# the list will appear as a makefile variable called SCSIDRIVERS.
# for each driver, we'll need to build a <driver>_scsiglue.o stub file.
GNUmakefile: scsidrivers
scsidrivers: $(OSKIT_SRCDIR)/oskit/dev/linux_scsi.h
(echo "#define driver(n,d,v,a,f,t) f"; echo "#include \"$<\"") \
| $(CC) -E - $(DEFINES) \
| sed '/^#/d;s/"//g' \
| awk 'BEGIN { printf "SCSIDRIVERS ="; } { printf " %s", $$1; }' >$@
%_scsiglue.c: $(OSKIT_SRCDIR)/oskit/dev/linux_scsi.h
echo '#define HOSTS_C' >$@
echo '#include "scsi_glue.h"' >>$@
grep 'driver.*"$(patsubst %_scsiglue.c,%,$@)",' $< | \
sed -e 's/"[^"]*$$//g' | \
sed -e 's/^.*"/#include "/g' | \
sed -e 's/$$/.h"/g' >>$@
grep 'driver.*"$(patsubst %_scsiglue.c,%,$@)",' $< >>$@
# Extract the list of Ethernet device drivers from <dev/linux_ethernet.h>;
# the list will appear as a makefile variable called ETHERDRIVERS.
# for each driver, we'll need to build a <driver>_etherglue.o stub file.
GNUmakefile: etherdrivers
etherdrivers: $(OSKIT_SRCDIR)/oskit/dev/linux_ethernet.h
(echo "#define driver(n,d,v,a,f,p) f"; echo "#include \"$<\"") \
| $(CC) -E - $(DEFINES) \
| sed '/^#/d;s/"//g' \
| awk 'BEGIN { printf "ETHERDRIVERS ="; } { printf " %s", $$1; }' >$@
%_etherglue.c: $(OSKIT_SRCDIR)/oskit/dev/linux_ethernet.h
echo '#include "ethernet.h"' >$@
grep 'driver.*"$(patsubst %_etherglue.c,%,$@)",' $< >>$@
endif
|