
# Makefile for sysbench - System Benchmark 0.9.0

.SUFFIXES:
.SUFFIXES: .c .cpp .cxx .rc .ckr

#Compiler switches:
# -c      compile, don't link
# -Gm+    use the multi-threaded libraries
# -ss     allow  "//" for comment lines
# -Ms     use the system calling convention and not _optlink as the default
# -Gd-    use statically linked libs.
# -Se     allow C Set/2  extensions
# -Ti+	  produce debugger info
# -Q+	  be quiet
# -O+ 	  optimize
# -G4 	  486 opt.
# -G5 	  586 opt.
# -Gf+	  fast float code
# -Gi+	  fast int code
# -Gs+	  remove stack probes
# -Gt+    variables do not cross 64kB limit
# -Om-    Do not limit memory when icc is inlining
# -Gx+    Do not generate C++ exception handlers
# -Mp     _Optlink
# -Ms     _System
# -Oi500  Set threshold of automatic function inlining to 500 ACUs.

# Do NOT use -Sa with _beginthread()

#LFLAGS        = /C /DE /ALIGN:16 /BASE:65536 /EXEPACK /NOL
LFLAGS        = /ALIGN:16 /BASE:65536 /EXEPACK /NOL
#LIBS        = dive.lib + DDE4MBS + os2386 # + dde4muii.lib + dde4cci.lib 
LIBS        = DDE4MBS + os2386 # + dde4muii.lib + dde4cci.lib 
#CFLAGS_CKR      = -Q+ -Ss -Gm+ -Ti+ -Si+ -Fi+  # debug 
CFLAGS_CKR      = -Q+ -Om- -Ss -Gm+ -G4 -Gi+ -Gf+ -O+ -Oi500 -Gs+ -Si+ -Fi+ # full optimization
CFLAGS_C      = $(CFLAGS_CKR) -Wpro
CFLAGS_CPP    = -Q+ -Gd- -Gm+ -Ti+ -Si+ -Fi+
#CFLAGS_CPP    = -Q+ -Om- -Gx+ -Gm+ -G4 -Gi+ -Gf+ -O+ -Gs+ -Si+ -Fi+
#object files without DIVE, since its not finished
#OBJECTS       = pmb_main.obj pmb_bench.obj pmb_fft.obj pmb_flops.obj pmb_linpack.obj \
#                pmb_dhry_1.obj pmb_hanoi.obj pmb_heaps.obj pmb_sieve.obj pmb_dive.obj \
#                pmb_memspeed.obj pmb_diskio.obj pmb_gfx.obj
OBJECTS       = pmb_main.obj pmb_bench.obj pmb_fft.obj pmb_flops.obj pmb_linpack.obj \
                pmb_dhry_1.obj pmb_hanoi.obj pmb_heaps.obj pmb_sieve.obj \
                pmb_memspeed.obj pmb_diskio.obj pmb_gfx.obj

.rc.res:
   rc -r $*.rc

.c.obj:
   icc -c $(CFLAGS_C) $*.c
#   icc -c -I\toolkt21\c\os2h $(CFLAGS_C) $*.c

.ckr.obj: #K&R C
   icc -c $(CFLAGS_CKR) $*.ckr

.cpp.obj:
   icc -c $(CFLAGS_CPP) $*.cpp

.cxx.obj:
   icc -c $(CFLAGS_CPP) $*.cxx


all: pmb.exe

pmb.exe: $(OBJECTS) pmb.def pmb.res
        link386 $(LFLAGS) $(OBJECTS), sysb.exe, NUL.MAP, $(LIBS), pmb.def
        rc pmb.res sysb.exe


#dependencies
pmb.res: pmb.rc pmb.h 
pmb_main.obj: pmb_main.c types.h pmb.h pmb_bench.h pmb_datatype.h
pmb_bench.obj: pmb_bench.c types.h pmb_bench.h pmb_datatype.h
pmb_fft.obj: pmb_fft.ckr
pmb_flops.obj: pmb_flops.ckr
pmb_linpack.obj: pmb_linpack.ckr
pmb_dhry_1.obj: pmb_dhry_1.ckr pmb_dhry_2.ckr pmb_dhry.h
   icc -c $(CFLAGS_CKR) -Ol+ pmb_dhry_1.ckr pmb_dhry_2.ckr
pmb_hanoi.obj: pmb_hanoi.ckr
pmb_heaps.obj: pmb_heaps.ckr
pmb_sieve.obj: pmb_sieve.ckr
pmb_dive.obj: pmb_dive.c
pmb_memspeed.obj: pmb_memspeed.c
pmb_diskio.obj: pmb_diskio.c
pmb_gfx.obj: pmb_gfx.c

