1NAME=grubfs
2
3include ../../config-user.mk
4include ../../global.mk
5include ../../mk/platform.mk
6NAME=grubfs
7_INCLUDE_MK_GCC_=
8include ../../libr/config.mk
9include ../../mk/${COMPILER}.mk
10
11EXT_AR?=a
12LIBAR=libgrubfs.${EXT_AR}
13CC?=gcc
14RANLIB?=ranlib
15OSTYPE=$(shell uname | tr 'A-Z' 'a-z')
16ifeq (${OSTYPE},)
17all:
18	echo LE FAIL
19	exit 1
20endif
21
22KERNFILES=kern/file.c
23KERNFILES+=kern/term.c kern/device.c
24KERNFILES+=kern/err.c
25KERNFILES+=kern/env.c kern/disk.c
26KERNFILES+=kern/fs.c kern/misc.c
27KERNFILES+=kern/time.c
28KERNFILES+=kern/list.c kern/partition.c
29KERNFILES+=kern/mm.c
30KERNFILES+=fs/fshelp.c
31KERNFILES+=fs/reiserfs.c
32KERNFILES+=fs/ext2.c
33KERNFILES+=fs/fat.c
34KERNFILES+=fs/ntfs.c
35KERNFILES+=fs/ntfscomp.c
36KERNFILES+=fs/cpio.c
37KERNFILES+=fs/tar.c
38KERNFILES+=fs/xfs.c
39KERNFILES+=fs/ufs.c
40KERNFILES+=fs/ufs2.c
41# All nested functions are removed from the following .c with a lot of tobacco :-)
42KERNFILES+=fs/hfs.c
43KERNFILES+=fs/hfsplus.c
44KERNFILES+=fs/udf.c
45KERNFILES+=fs/iso9660.c
46KERNFILES+=fs/minix.c
47#KERNFILES+=fs/minix2.c #XXX: Are minix2 and minix the same?
48KERNFILES+=fs/jfs.c
49KERNFILES+=fs/fb.c
50KERNFILES+=fs/sfs.c
51KERNFILES+=grubfs.c
52
53KERNFILES+=partmap/msdos.c
54#KERNFILES+=partmap/acorn.c
55KERNFILES+=partmap/gpt.c
56KERNFILES+=partmap/apple.c
57KERNFILES+=partmap/amiga.c
58KERNFILES+=partmap/sun.c
59KERNFILES+=partmap/bsdlabel.c
60KERNFILES+=partmap/sunpc.c
61
62KERNOBJS=$(subst .c,.o,${KERNFILES})
63CFLAGS+=-Iinclude
64CFLAGS+=-I../../libr/include -DGRUB_TARGET_NO_MODULES
65CFLAGS+=-g
66
67ifneq (,$(findstring cygwin,${OSTYPE}))
68CFLAGS+=-D__CYGWIN__=1
69else
70ifneq (,$(findstring mingw32,${OSTYPE}))
71CFLAGS+=-DMINGW32=1
72else
73ifneq (,$(findstring mingw64,${OSTYPE})$(findstring msys,${OSTYPE}))
74LFDLAGS_SHARE?=-shared
75else
76CFLAGS+=${PIC_CFLAGS}
77endif
78endif
79endif
80
81# This fixes a silly GNU gcc build problem in OSX - BLAME! :D
82ifeq (${OSTYPE},darwin)
83CFLAGS+=-DAPPLE_CC
84endif
85
86include ../../shlr/sdb.mk
87
88BIN=test${EXT_EXE}
89
90all: ${KERNOBJS}
91	${MAKE} $(LIBAR)
92
93${BIN}: ${KERNOBJS} main.o
94	${CC} -o ${BIN} main.o ${CFLAGS} ${KERNOBJS}
95
96lib: $(LIBAR)
97
98$(LIBAR): ${KERNOBJS}
99	rm -f $(LIBAR)
100	${CC_AR} ${KERNOBJS}
101	${RANLIB} $(LIBAR)
102ifneq ($(LIBAR),libgrubfs.a)
103	cp -f $(LIBAR) libgrubfs.a
104endif
105
106clean:
107	rm -f ${KERNOBJS} ${BIN} main.o $(LIBAR)
108
109fs: /tmp/fs
110	@echo ======================
111	@echo m ext2 /mnt
112	@echo md /mnt
113	@echo mo /mnt/fstab
114	@echo mg /mnt/fstab
115	@echo q
116	@echo ======================
117	r2 -n /tmp/fs
118
119/tmp/fs:
120	rm -f /tmp/fs
121	dd count=1 bs=4M if=/dev/zero of=/tmp/fs
122	mkfs.ext2 /tmp/fs
123	sudo mount -o loop /tmp/fs /media
124	sudo cp /etc/fstab /media
125	sudo cp /etc/resolv.conf /media
126	sudo umount /media
127
128sync:
129	echo "XXX: Implement syncing with burg project"
130
131.PHONY: fs clean all lib fs sync
132