#                       MAKEFILE                        2004-02-07 Agner Fog

# Makefile for library of functions made in assembly language
# There are three versions of the library:

# asmlibm.lib in MS-COFF format,
# asmlibo.lib in OMF format,
# asmlibe.a   in ELF format

# The three versions contain the same functions and are built from the same 
# source.
# Use asmlibm.lib for Windows systems with Microsoft or Gnu compiler
# Use asmlibo.lib for Windows systems with Borland compiler 
# Use asmlibe.a   for Linux, BSD and UNIX systems (32-bit Intel-compatible platform)

asmlib.zip: asmlibm.lib asmlibo.lib asmlibe.a cpuid.com
  pkzip -a asmlib.zip asmlibm.lib asmlibo.lib asmlibe.a asmlib.h
  pkzip -a asmlib.zip detectpr.asm instrset.asm rdtsc.asm round.asm truncate.asm minmaxi.asm minmaxd.asm
  pkzip -a asmlib.zip detectpr.obj instrset.obj rdtsc.obj round.obj truncate.obj minmaxi.obj minmaxd.obj
  pkzip -a asmlib.zip asmlib.txt makefile
  pkzip -a asmlib.zip cpuid.com cpuid.asm
           
# make asmlibm.lib using MS LIB v. 6.00:
asmlibm.lib: detectpr.cof instrset.cof rdtsc.cof round.cof truncate.cof minmaxi.cof minmaxd.cof
  LIB /LINK50COMPAT /out:asmlibm.lib detectpr.cof instrset.cof rdtsc.cof
  LIB /LINK50COMPAT asmlibm.lib round.cof truncate.cof minmaxi.cof minmaxd.cof
  LIB /LIST:asmlibm.lst asmlibm.lib

# make asmlibo.lib using Borland tlib v. 3.02:
asmlibo.lib: detectpr.obj instrset.obj rdtsc.obj round.obj truncate.obj minmaxi.obj minmaxd.obj
  TLIB asmlibo.lib /C -+detectpr.obj -+instrset.obj -+rdtsc.obj
  TLIB asmlibo.lib /C -+round.obj -+truncate.obj -+minmaxi.obj -+minmaxd.obj, asmlibo.lst

# convert with objcopy.exe from www.mingw.org (download binutils):
asmlibe.a: asmlibm.lib
  objcopy -Oelf32-i386 asmlibm.lib asmlibe.a

.asm.obj:
  ML /c /Cx /W3 /omf $<

.asm.cof:
  ML /c /Cx /W3 /coff /Fo$*.cof $<

.cof.o:
  objcopy -Oelf32-i386 $< $*.o  
  
cpuid.com: cpuid.asm
  ml /c /Zm /Fl cpuid.asm
  tlink /t cpuid;

