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