# Programas
ASM=WASM        # Ensamblador
LIB=WLIB        # Librerias

# Directorios 
WATCOM=C:\WATCOM # Si esto no funciona pongase el path completo : C:\WATCOM

# Ejecuciones
all: .SYMBOLIC
 @echo.
 @echo ---Modalidades---
 @echo Librerias: make lib
 @echo Instalar:  make install
 @echo Limpiar: make clean
 @echo Librerias tipo Link: make link
 @echo.
 @echo NOTA:
 @echo En ocasiones es necesario editar el fichero MAKEFILE para poner el
 @echo path del directorio WATCOM a la hora de instalar las librerias
 @echo.
 @echo Daniel Lancha Garcia
 @echo.

install: CLIB3R.LIB PLIB3R.LIB .AUTODEPEND .SYMBOLIC
 mkdir $(WATCOM)\LIB386\EXTENSOR>nul
 copy CLIB3R.LIB $(WATCOM)\LIB386\EXTENSOR
 copy PLIB3R.LIB $(WATCOM)\LIB386\EXTENSOR
 copy PLIB3R.LIB $(WATCOM)\LIB386\EXTENSOR\PLIBMT3R.LIB
 copy EXTENSOR.H $(WATCOM)\H
 copy EXTENSOR.LNK $(WATCOM)\BIN
 echo @%WATCOM%\BIN\EXTENSOR.LNK >>$(WATCOM)\BIN\WLINK.LNK

clean: .SYMBOLIC
 cd src
 del *.obj
 cd codigo32
 del *.obj
 cd ..\datos
 del *.obj
 cd ..\link
 del *.obj
 cd ..\..
 del *.lib

lib: CLIB3R.LIB PLIB3R.LIB .SYMBOLIC

link: src\link\extensor.asm src\link\codigo32.asm src\link\segs.asm src\link\tss.asm src\link\plib.asm .SYMBOLIC
 cd src\link
        $(ASM) extensor.asm
        $(ASM) codigo32.asm
        $(ASM) segs.asm
        $(ASM) tss.asm
        $(ASM) plib.asm
        $(LIB) -n ..\..\CLIB3R.LIB +extensor.obj +segs.obj +tss.obj +codigo32.obj
        $(LIB) -n ..\..\PLIB3R.LIB +plib.obj
 cd ..\..
 del CLIB3R.BAK>nul
 del PLIB3R.BAK>nul

extensor: src\extensor.obj

dsp: src\dsp.obj

leds: src\leds.obj

video: src\video.obj

msdos: src\msdos.obj

cpu: src\cpu.obj

mem: src\mem.obj

pag: src\pag.obj

desc: src\desc.obj

procs: src\procs.obj

fin: src\fin.obj

codigo32: src\codigo32\codigo32.obj

clib: src\codigo32\clib.obj

dpmi: src\codigo32\dpmi.obj

except: src\codigo32\except.obj

fdc: src\codigo32\fdc.obj

irqs: src\codigo32\irqs.obj

keyboard: src\codigo32\keyboard.obj

procs32: src\codigo32\procs32.obj

task: src\codigo32\task.obj

timer: src\codigo32\timer.obj

traps: src\codigo32\traps.obj

datos: src\datos\datos.obj

gdt: src\datos\gdt.obj

idt: src\datos\idt.obj

segs: src\datos\segs.obj

tss: src\datos\tss.obj

plib: src\codigo32\plib.obj

src\extensor.obj : src\extensor.asm
 cd src
        $(ASM) extensor.asm
 cd ..

src\dsp.obj: src\dsp.asm
 cd src
        $(ASM) dsp.asm
 cd ..

src\leds.obj: src\leds.asm
 cd src
        $(ASM) leds.asm
 cd ..

src\video.obj: src\video.asm
 cd src
        $(ASM) video.asm
 cd ..

src\msdos.obj: src\msdos.asm
 cd src
        $(ASM) msdos.asm
 cd ..

src\cpu.obj: src\cpu.asm
 cd src
        $(ASM) cpu.asm
 cd ..
        
src\mem.obj: src\mem.asm
 cd src
        $(ASM) mem.asm
 cd ..

src\pag.obj: src\pag.asm
 cd src
        $(ASM) pag.asm
 cd ..

src\desc.obj: src\desc.asm
 cd src
        $(ASM) desc.asm
 cd ..

src\procs.obj: src\procs.asm
 cd src
        $(ASM) procs.asm
 cd ..

src\fin.obj: src\fin.asm
 cd src
        $(ASM) fin.asm
 cd ..

src\datos\datos.obj: src\datos\datos.asm
 cd src\datos
        $(ASM) datos.asm
 cd ..\..

src\datos\gdt.obj: src\datos\gdt.asm
 cd src\datos
        $(ASM) gdt.asm
 cd ..\..

src\datos\idt.obj: src\datos\idt.asm
 cd src\datos
        $(ASM) idt.asm
 cd ..\..

src\datos\segs.obj: src\datos\segs.asm
 cd src\datos
        $(ASM) segs.asm
 cd ..\..

src\datos\tss.obj: src\datos\tss.asm
 cd src\datos
        $(ASM) tss.asm
 cd ..\..

src\codigo32\codigo32.obj: src\codigo32\codigo32.asm
 cd src\codigo32
        $(ASM) codigo32.asm
 cd ..\..

src\codigo32\clib.obj: src\codigo32\clib.asm
 cd src\codigo32
        $(ASM) clib.asm
 cd ..\..

src\codigo32\dpmi.obj: src\codigo32\dpmi.asm
 cd src\codigo32
        $(ASM) dpmi.asm
 cd ..\..

src\codigo32\except.obj: src\codigo32\except.asm
 cd src\codigo32
        $(ASM) except.asm
 cd ..\..

src\codigo32\fdc.obj: src\codigo32\fdc.asm
 cd src\codigo32
        $(ASM) fdc.asm
 cd ..\..

src\codigo32\irqs.obj: src\codigo32\irqs.asm
 cd src\codigo32
        $(ASM) irqs.asm
 cd ..\..

src\codigo32\keyboard.obj: src\codigo32\keyboard.asm
 cd src\codigo32
        $(ASM) keyboard.asm
 cd ..\..

src\codigo32\procs32.obj: src\codigo32\procs32.asm
 cd src\codigo32
        $(ASM) procs32.asm
 cd ..\..

src\codigo32\task.obj: src\codigo32\task.asm
 cd src\codigo32
        $(ASM) task.asm
 cd ..\..

src\codigo32\timer.obj: src\codigo32\timer.asm
 cd src\codigo32
        $(ASM) timer.asm
 cd ..\..

src\codigo32\traps.obj: src\codigo32\traps.asm
 cd src\codigo32
        $(ASM) traps.asm
 cd ..\..

src\codigo32\plib.obj: src\codigo32\plib.asm
 cd src\codigo32
        $(ASM) plib.asm
 cd ..\..

CLIB3R.LIB : src\extensor.obj src\dsp.obj src\leds.obj src\video.obj src\msdos.obj src\cpu.obj src\mem.obj src\pag.obj src\desc.obj src\procs.obj src\fin.obj src\datos\datos.obj src\datos\gdt.obj src\datos\idt.obj src\datos\segs.obj src\datos\tss.obj src\codigo32\clib.obj src\codigo32\dpmi.obj src\codigo32\except.obj src\codigo32\fdc.obj src\codigo32\irqs.obj src\codigo32\keyboard.obj src\codigo32\procs32.obj src\codigo32\task.obj src\codigo32\timer.obj src\codigo32\traps.obj src\codigo32\codigo32.obj src\extensor.asm src\dsp.asm src\leds.asm src\video.asm src\msdos.asm src\cpu.asm src\mem.asm src\pag.asm src\desc.asm src\procs.asm src\fin.asm src\datos\datos.asm src\datos\gdt.asm src\datos\idt.asm src\datos\segs.asm src\datos\tss.asm src\codigo32\codigo32.asm src\codigo32\clib.asm src\codigo32\dpmi.asm src\codigo32\except.asm src\codigo32\fdc.asm src\codigo32\irqs.asm src\codigo32\keyboard.asm src\codigo32\procs32.asm src\codigo32\task.asm src\codigo32\timer.asm src\codigo32\traps.asm
 cd src
        $(LIB) -n ..\CLIB3R.LIB +extensor.obj +dsp.obj +leds.obj +video.obj +msdos.obj 
        $(LIB) ..\CLIB3R.LIB +cpu.obj +mem.obj +pag.obj +desc.obj +procs.obj +fin.obj
 cd datos
        $(LIB) ..\..\CLIB3R.LIB +datos.obj +gdt.obj +idt.obj +segs.obj +tss.obj
 cd ..\codigo32
         $(LIB) ..\..\CLIB3R.LIB +codigo32.obj +except.obj +timer.obj +task.obj
         $(LIB) ..\..\CLIB3R.LIB +keyboard.obj +irqs.obj +fdc.obj +traps.obj
         $(LIB) ..\..\CLIB3R.LIB +dpmi.obj +procs32.obj +clib.obj
 cd ..\..
 del clib3r.bak>nul

PLIB3R.LIB : src\codigo32\plib.obj src\codigo32\plib.asm
 cd src\codigo32
        $(LIB) -n ..\..\PLIB3R.LIB +plib.obj
 cd ..\..
 del plib3r.bak>nul

