ifeq ($(OS),linux)PLAN9VX=1PLAN9GUI=x11PLAN9AUDIO=unixPLAN9PCAP=nopcapPLAN9TAP=ethertapendif ifeq ($(OS),darwin)PLAN9VX=1PLAN9GUI=osxPLAN9AUDIO=nonePLAN9PCAP=nopcapPLAN9TAP=ethertapendif ifeq ($(OS),freebsd)PLAN9VX=1PLAN9GUI=x11PLAN9AUDIO=unixPLAN9PCAP=nopcapPLAN9TAP=notapendif # Boot files# Do not remove:# - boot, needed to boot# - factotum, used by libauthPLAN9BOOT=\ 9660srv \ boot \ bzfs \ factotum \ fossil \ kfs \ rootfs \ venti \ # Default argument to bootPLAN9BOOTARG=local!/boot/rootfs # If you don't have/want X11#PLAN9GUI=nogui # Virtual ethernet devices#PLAN9PCAP=etherpcap#PLAN9PCAP=nopcap#PLAN9TAP=ethertap#PLAN9TAP=notap ifeq ($(PLAN9VX),1) PLAN9SCRIPTS = \ $(addprefix $(BINDIR)/, \ 9vxc \ 9vxp \ acmevx \ rcvx \ tap \ ) all: 9vx/9vx9vx/install: $(BINDIR)/9vx $(PLAN9SCRIPTS) $(BINDIR)/9vx: 9vx/9vx $(INSTALL) $< $@ $(BINDIR)/%: ../bin/% $(INSTALL) $< $@ PLAN9_BOOT_OBJS = $(PLAN9BOOT:%=9vx/%.o) PLAN9_OBJS = \ $(addprefix 9vx/, \ bootinit.o \ conf.o \ devaudio.o \ devaudio-$(PLAN9AUDIO).o \ devfs-posix.o \ devmntloop.o \ devmouse.o \ devram.o \ devtab.o \ kprocdev.o \ label.o \ load.o \ main.o \ mmu.o \ sched.o \ sdloop.o \ stub.o \ term.o \ time.o \ trap.o \ tty.o \ vx32.o \ ) ifeq ($(OS),darwin)PLAN9_OBJS := $(PLAN9_OBJS) 9vx/osx/signal.o 9vx/osx/cmpswap.oendif # While we could do an || here on the os, leave this: linux # or freebsd may later differ in what they do. ifeq ($(OS),linux)PLAN9_OBJS := $(PLAN9_OBJS) 9vx/gccmagic/cmpswap.oendif ifeq ($(OS),freebsd)PLAN9_OBJS := $(PLAN9_OBJS) 9vx/gccmagic/cmpswap.oendif PLAN9_A_OBJS = \ $(addprefix 9vx/a/, \ allocb.o \ auth.o \ chan.o \ classmask.o \ cleanname.o \ convD2M.o \ convM2D.o \ convS2M.o \ convM2S.o \ dev.o \ devcap.o \ devcons.o \ devdraw.o \ devdup.o \ devenv.o \ devmnt.o \ devproc.o \ devpipe.o \ devroot.o \ devsd.o \ devsrv.o \ devssl.o \ devtls.o \ eipfmt.o \ encodefmt.o \ fault.o \ fcallfmt.o \ fmt.o \ getfields.o \ ipaux.o \ latin1.o \ page.o \ parse.o \ parseip.o \ part.o \ pgrp.o \ print.o \ proc.o \ qio.o \ qlock.o \ sdscsi.o \ segment.o \ strecpy.o \ swap.o \ sysfile.o \ sysproc.o \ thwack.o \ tokenize.o \ u16.o \ u32.o \ u64.o \ unthwack.o \ utf.o \ ) PLAN9_IP_OBJS = \ $(addprefix 9vx/,\ devip.o \ devip-posix.o \ $(PLAN9PCAP).o \ $(PLAN9TAP).o \ vether.o \ ) \ $(addprefix 9vx/a/,\ devaoe.o \ devether.o \ netif.o \ sdaoe.o \ ) \ $(addprefix 9vx/a/ip/,\ arp.o \ chandial.o \ devip.o \ esp.o \ ethermedium.o \ gre.o \ icmp.o \ icmp6.o \ il.o \ inferno.o \ ip.o \ ipaux.o \ ipifc.o \ ipmux.o \ iproute.o \ ipv6.o \ loopbackmedium.o \ netdevmedium.o \ netlog.o \ nullmedium.o \ pktmedium.o \ ptclbsum.o \ tcp.o \ udp.o \ )ifneq ($(PLAN9PCAP), nopcap)PLAN9_IP_LIBS = -lpcapelsePLAN9_IP_LIBS =endif PLAN9_nogui_OBJS = \ $(addprefix 9vx/,\ nogui.o \ ) PLAN9_nogui_LIBS = PLAN9_x11_OBJS = \ $(addprefix 9vx/x11/, \ x11-draw.o \ x11-init.o \ x11-itrans.o \ x11-kernel.o \ x11-keysym2rune.o \ )PLAN9_x11_LIBS = -L/usr/X11R6/lib -L/usr/local/lib -lX11 PLAN9_osx_OBJS =\ $(addprefix 9vx/osx/, \ screen.o \ draw.o \ )PLAN9_osx_LIBS = -ggdb -framework Carbon -framework QuickTime PLAN9_GUI_OBJS = $(PLAN9_$(PLAN9GUI)_OBJS)PLAN9_GUI_LIBS = $(PLAN9_$(PLAN9GUI)_LIBS) PLAN9_DEPS = \ $(PLAN9_OBJS) \ $(PLAN9_A_OBJS) \ $(PLAN9_BOOT_OBJS) \ $(PLAN9_IP_OBJS) \ $(PLAN9_GUI_OBJS) \ 9vx/libsec/libsec.a \ 9vx/libmemlayer/libmemlayer.a \ 9vx/libmemdraw/libmemdraw.a \ 9vx/libdraw/libdraw.a \ libvx32/libvx32.a \ 9vx/9vx: $(PLAN9_DEPS) $(HOST_CC) -o $@ $(HOST_LDFLAGS) $(PLAN9_DEPS) $(PLAN9_GUI_LIBS) $(PLAN9_IP_LIBS) -lpthread 9vx/a/%.o: 9vx/a/%.c $(HOST_CC) $(HOST_CFLAGS) -I. -I9vx -I9vx/a -Wall -Wno-missing-braces -c -o $@ $< 9vx/a/ip/%.o: 9vx/a/ip/%.c $(HOST_CC) $(HOST_CFLAGS) -I. -I9vx -I9vx/a -Wall -Wno-missing-braces -c -o $@ $< 9vx/x11/%.o: 9vx/x11/%.c $(HOST_CC) $(HOST_CFLAGS) -I. -I9vx -I9vx/a -I/usr/X11R6/include -I/usr/local/include -Wall -Wno-missing-braces -c -o $@ $< 9vx/osx/%.o: 9vx/osx/%.c $(HOST_CC) $(HOST_CFLAGS) -I. -I9vx -I9vx/a -Wall -Wno-missing-braces -c -o $@ $< 9vx/%.o: 9vx/%.c $(HOST_CC) $(HOST_CFLAGS) -D "BOOTARG=\"$(PLAN9BOOTARG)\"" -I. -I9vx -I9vx/a -Wall -Wno-missing-braces -c -o $@ $< 9vx/%.o: 9vx/%.S $(HOST_CC) $(HOST_CFLAGS) -I. -I9vx -I9vx/a -Wall -Wno-missing-braces -c -o $@ $< 9vx/bootinit.c: 9vx/mkbootinitc 9vx/mkbootinitc $(PLAN9BOOT) >$@ 9vx/data2s: 9vx/data2s.c $(HOST_CC) -o $@ $< # We need the sed command to have a correct variable name for 9660srv9vx/%.S: 9vx/%.9 9vx/data2s ./9vx/data2s `echo $* | sed 's/^[0-9]/_&/'` < $< >$@_ && mv $@_ $@ 9vx/%.S: 9vx/%.bz2 9vx/data2s ./9vx/data2s `echo $* | sed 's/^[0-9]/_&/'` < $< >$@_ && mv $@_ $@ 9vx/a/errstr.h: 9vx/a/error.h sed 's/extern //; s!;.*/\* ! = "!; s! \*\/!";!' 9vx/a/error.h >9vx/a/errstr.h 9vx/a/proc.o: 9vx/a/errstr.h 9vx/stub.o: 9vx/kerndate.h 9vx/kerndate.h: echo 'ulong kerndate =' `date +%s` ';' >9vx/kerndate.h .PHONY: 9vx/kerndate.h 9vx/AUTOGEN: 9vx/a/AUTOGEN 9vx/9vx .PHONY: 9vx/AUTOGEN 9vx/a/AUTOGEN: cd 9vx/a/; ./AUTOGEN -r $(ROOT) .PHONY: 9vx/a/AUTOGEN CLEAN_FILES += \ 9vx/*.d \ 9vx/*.o \ 9vx/a/*.d \ 9vx/a/*.o \ 9vx/x11/*.d \ 9vx/x11/*.o \ 9vx/kerndate.h \ 9vx/a/errstr.h \ 9vx/9vx \ 9vx/bootinit.c \ 9vx/data2s \ 9vx/9660srv.S \ 9vx/boot.S \ 9vx/bzfs.S \ 9vx/factotum.S \ 9vx/fossil.S \ 9vx/kfs.S \ 9vx/rootfs.S \ 9vx/venti.S include 9vx/libdraw/Makefraginclude 9vx/libmemlayer/Makefraginclude 9vx/libmemdraw/Makefraginclude 9vx/libsec/Makefrag endif
ifeq ($(OS),linux)
PLAN9VX=1
PLAN9GUI=x11
PLAN9AUDIO=unix
PLAN9PCAP=nopcap
PLAN9TAP=ethertap
endif
ifeq ($(OS),darwin)
PLAN9VX=1
PLAN9GUI=osx
PLAN9AUDIO=none
PLAN9PCAP=nopcap
PLAN9TAP=ethertap
endif
ifeq ($(OS),freebsd)
PLAN9VX=1
PLAN9GUI=x11
PLAN9AUDIO=unix
PLAN9PCAP=nopcap
PLAN9TAP=notap
endif
# Boot files
# Do not remove:
# - boot, needed to boot
# - factotum, used by libauth
PLAN9BOOT=\
9660srv \
boot \
bzfs \
factotum \
fossil \
kfs \
rootfs \
venti \
# Default argument to boot
PLAN9BOOTARG=local!/boot/rootfs
# If you don't have/want X11
#PLAN9GUI=nogui
# Virtual ethernet devices
#PLAN9PCAP=etherpcap
#PLAN9PCAP=nopcap
#PLAN9TAP=ethertap
#PLAN9TAP=notap
ifeq ($(PLAN9VX),1)
PLAN9SCRIPTS = \
$(addprefix $(BINDIR)/, \
9vxc \
9vxp \
acmevx \
rcvx \
tap \
)
all: 9vx/9vx
9vx/install: $(BINDIR)/9vx $(PLAN9SCRIPTS)
$(BINDIR)/9vx: 9vx/9vx
$(INSTALL) $< $@
$(BINDIR)/%: ../bin/%
$(INSTALL) $< $@
PLAN9_BOOT_OBJS = $(PLAN9BOOT:%=9vx/%.o)
PLAN9_OBJS = \
$(addprefix 9vx/, \
bootinit.o \
conf.o \
devaudio.o \
devaudio-$(PLAN9AUDIO).o \
devfs-posix.o \
devmntloop.o \
devmouse.o \
devram.o \
devtab.o \
kprocdev.o \
label.o \
load.o \
main.o \
mmu.o \
sched.o \
sdloop.o \
stub.o \
term.o \
time.o \
trap.o \
tty.o \
vx32.o \
)
ifeq ($(OS),darwin)
PLAN9_OBJS := $(PLAN9_OBJS) 9vx/osx/signal.o 9vx/osx/cmpswap.o
endif
# While we could do an || here on the os, leave this: linux
# or freebsd may later differ in what they do.
ifeq ($(OS),linux)
PLAN9_OBJS := $(PLAN9_OBJS) 9vx/gccmagic/cmpswap.o
endif
ifeq ($(OS),freebsd)
PLAN9_OBJS := $(PLAN9_OBJS) 9vx/gccmagic/cmpswap.o
endif
PLAN9_A_OBJS = \
$(addprefix 9vx/a/, \
allocb.o \
auth.o \
chan.o \
classmask.o \
cleanname.o \
convD2M.o \
convM2D.o \
convS2M.o \
convM2S.o \
dev.o \
devcap.o \
devcons.o \
devdraw.o \
devdup.o \
devenv.o \
devmnt.o \
devproc.o \
devpipe.o \
devroot.o \
devsd.o \
devsrv.o \
devssl.o \
devtls.o \
eipfmt.o \
encodefmt.o \
fault.o \
fcallfmt.o \
fmt.o \
getfields.o \
ipaux.o \
latin1.o \
page.o \
parse.o \
parseip.o \
part.o \
pgrp.o \
print.o \
proc.o \
qio.o \
qlock.o \
sdscsi.o \
segment.o \
strecpy.o \
swap.o \
sysfile.o \
sysproc.o \
thwack.o \
tokenize.o \
u16.o \
u32.o \
u64.o \
unthwack.o \
utf.o \
)
PLAN9_IP_OBJS = \
$(addprefix 9vx/,\
devip.o \
devip-posix.o \
$(PLAN9PCAP).o \
$(PLAN9TAP).o \
vether.o \
) \
$(addprefix 9vx/a/,\
devaoe.o \
devether.o \
netif.o \
sdaoe.o \
) \
$(addprefix 9vx/a/ip/,\
arp.o \
chandial.o \
devip.o \
esp.o \
ethermedium.o \
gre.o \
icmp.o \
icmp6.o \
il.o \
inferno.o \
ip.o \
ipaux.o \
ipifc.o \
ipmux.o \
iproute.o \
ipv6.o \
loopbackmedium.o \
netdevmedium.o \
netlog.o \
nullmedium.o \
pktmedium.o \
ptclbsum.o \
tcp.o \
udp.o \
)
ifneq ($(PLAN9PCAP), nopcap)
PLAN9_IP_LIBS = -lpcap
else
PLAN9_IP_LIBS =
endif
PLAN9_nogui_OBJS = \
$(addprefix 9vx/,\
nogui.o \
)
PLAN9_nogui_LIBS =
PLAN9_x11_OBJS = \
$(addprefix 9vx/x11/, \
x11-draw.o \
x11-init.o \
x11-itrans.o \
x11-kernel.o \
x11-keysym2rune.o \
)
PLAN9_x11_LIBS = -L/usr/X11R6/lib -L/usr/local/lib -lX11
PLAN9_osx_OBJS =\
$(addprefix 9vx/osx/, \
screen.o \
draw.o \
)
PLAN9_osx_LIBS = -ggdb -framework Carbon -framework QuickTime
PLAN9_GUI_OBJS = $(PLAN9_$(PLAN9GUI)_OBJS)
PLAN9_GUI_LIBS = $(PLAN9_$(PLAN9GUI)_LIBS)
PLAN9_DEPS = \
$(PLAN9_OBJS) \
$(PLAN9_A_OBJS) \
$(PLAN9_BOOT_OBJS) \
$(PLAN9_IP_OBJS) \
$(PLAN9_GUI_OBJS) \
9vx/libsec/libsec.a \
9vx/libmemlayer/libmemlayer.a \
9vx/libmemdraw/libmemdraw.a \
9vx/libdraw/libdraw.a \
libvx32/libvx32.a \
9vx/9vx: $(PLAN9_DEPS)
$(HOST_CC) -o $@ $(HOST_LDFLAGS) $(PLAN9_DEPS) $(PLAN9_GUI_LIBS) $(PLAN9_IP_LIBS) -lpthread
9vx/a/%.o: 9vx/a/%.c
$(HOST_CC) $(HOST_CFLAGS) -I. -I9vx -I9vx/a -Wall -Wno-missing-braces -c -o $@ $<
9vx/a/ip/%.o: 9vx/a/ip/%.c
$(HOST_CC) $(HOST_CFLAGS) -I. -I9vx -I9vx/a -Wall -Wno-missing-braces -c -o $@ $<
9vx/x11/%.o: 9vx/x11/%.c
$(HOST_CC) $(HOST_CFLAGS) -I. -I9vx -I9vx/a -I/usr/X11R6/include -I/usr/local/include -Wall -Wno-missing-braces -c -o $@ $<
9vx/osx/%.o: 9vx/osx/%.c
$(HOST_CC) $(HOST_CFLAGS) -I. -I9vx -I9vx/a -Wall -Wno-missing-braces -c -o $@ $<
9vx/%.o: 9vx/%.c
$(HOST_CC) $(HOST_CFLAGS) -D "BOOTARG=\"$(PLAN9BOOTARG)\"" -I. -I9vx -I9vx/a -Wall -Wno-missing-braces -c -o $@ $<
9vx/%.o: 9vx/%.S
$(HOST_CC) $(HOST_CFLAGS) -I. -I9vx -I9vx/a -Wall -Wno-missing-braces -c -o $@ $<
9vx/bootinit.c: 9vx/mkbootinitc
9vx/mkbootinitc $(PLAN9BOOT) >$@
9vx/data2s: 9vx/data2s.c
$(HOST_CC) -o $@ $<
# We need the sed command to have a correct variable name for 9660srv
9vx/%.S: 9vx/%.9 9vx/data2s
./9vx/data2s `echo $* | sed 's/^[0-9]/_&/'` < $< >$@_ && mv $@_ $@
9vx/%.S: 9vx/%.bz2 9vx/data2s
./9vx/data2s `echo $* | sed 's/^[0-9]/_&/'` < $< >$@_ && mv $@_ $@
9vx/a/errstr.h: 9vx/a/error.h
sed 's/extern //; s!;.*/\* ! = "!; s! \*\/!";!' 9vx/a/error.h >9vx/a/errstr.h
9vx/a/proc.o: 9vx/a/errstr.h
9vx/stub.o: 9vx/kerndate.h
9vx/kerndate.h:
echo 'ulong kerndate =' `date +%s` ';' >9vx/kerndate.h
.PHONY: 9vx/kerndate.h
9vx/AUTOGEN: 9vx/a/AUTOGEN 9vx/9vx
.PHONY: 9vx/AUTOGEN
9vx/a/AUTOGEN:
cd 9vx/a/; ./AUTOGEN -r $(ROOT)
.PHONY: 9vx/a/AUTOGEN
CLEAN_FILES += \
9vx/*.d \
9vx/*.o \
9vx/a/*.d \
9vx/a/*.o \
9vx/x11/*.d \
9vx/x11/*.o \
9vx/kerndate.h \
9vx/a/errstr.h \
9vx/9vx \
9vx/bootinit.c \
9vx/data2s \
9vx/9660srv.S \
9vx/boot.S \
9vx/bzfs.S \
9vx/factotum.S \
9vx/fossil.S \
9vx/kfs.S \
9vx/rootfs.S \
9vx/venti.S
include 9vx/libdraw/Makefrag
include 9vx/libmemlayer/Makefrag
include 9vx/libmemdraw/Makefrag
include 9vx/libsec/Makefrag
endif