# Makefile # この1行をいじるだけ(順番も守ること!) OBJ = kakunin.o kakuninOK.o int.o fifo.o nasmfunc.obj LIB = $(LIBPATH)w32clibc.lib $(LIBPATH)golibc.lib $(LIBPATH)libmingw.lib # QEMU(QEMU側の設定を忘れずに) HARI_TOOLS = /cygdrive/C/usr/HariboteOS/tolset/z_tools/ QEMU = $(HARI_TOOLS)qemu/ INCPATH = $(HARI_TOOLS)win32/ LIBPATH = $(INCPATH) # Bochs #BOCHS = /cygdrive/c/Program\ Files/Bochs-2.4.1/ BOCHS = /cygdrive/c/Program\ Files/Bochs-2.3/ # ツール NASM = nasm NDISASM = ndisasm CC = gcc LD = ld STRIP = objcopy # フラグ NFLAGS = -f win32 CFLAGS = -c -nostdlib -fno-exceptions -ffreestanding -fno-builtin -Wall -c LFLAGS = -static --script=ldscript -nostdlib -Map Map.map --section-start .text=0x1200 -e 0x00 SFLAGS = -O binary --remove-section=.idata --remove-section=.reloc --remove-section=.debug # ファイル・フォルダ名 trash = $(target) $(FIRST) $(SECOND) $(THIRD) *.o *.obj F_SRC = firstboot.asm FIRST = firstboot.bin S_SRC = secondboot.asm SECOND = secondboot.bin THIRD = thirdboot.bin target = tmp.img # デフォルト動作 all: @make --no-print-directory ${target} dd if=${target} of=/dev/fd0 @cp ${target} ${BOCHS}; cd ${BOCHS} && ./bochs.exe -q ; tail -n50 bochsout.txt # 一般規則 %.o : %.c ${CC} ${CFLAGS} -o $*.o $*.c %.obj : %.asm ${NASM} ${NFLAGS}-o $*.obj $*.asm # 生成規則(ここに書かれていないものは一般規則で実行される) ${target} : ${FIRST} ${SECOND} ${THIRD} cat ${FIRST} ${SECOND} ${THIRD} >$@ ${FIRST} : ${F_SRC} ${NASM} ${F_SRC} -o $@ ${SECOND} : ${S_SRC} ${NASM} ${S_SRC} -o $@ ${THIRD}: ${OBJ} @${LD} ${LFLAGS} -o $@ ${OBJ} ${LIB} @${STRIP} ${SFLAGS} $@ # コマンド v: ${target} @cp ${target} ${BOCHS}; cd ${BOCHS} && ./bochs.exe -q ; tail -n50 bochsout.txt run: ${target} @cp ${target} $(QEMU); cd $(QEMU) && ./my.bat debug: ${PARTS} @${NASM} ${F_SRC} -l ${PARTS}/$(F_SRC:.asm=_list.asm) -o ${FIRST} @${NASM} ${S_SRC} -l ${PARTS}/$(S_SRC:.asm=_list.asm) -o ${SECOND} @make --no-print-directory ${target} @${NDISASM} -u ${THIRD} > ${PARTS}/third_dis.asm @cp ${target} ${BOCHS}; cd ${BOCHS} && ./bochsdbg.exe -q ; tail -n50 bochsout.txt ${PARTS}: @mkdir $@ clean : @-rm -f *~ $(PARTS)/* $(trash) @-rmdir $(PARTS) @ls -l dd : ${target} dd if=${target} of=/dev/fd0
このwikiの更新情報RSS