# OpenWatcom makefile to build SDL12.DLL for OS/2

# Create debug build or not?
DEBUG=0
# Enable Hermes MMX blitters?
HERMES=1

INCPATH=-I"$(%WATCOM)/h/os2" -I"$(%WATCOM)/h" -Iinclude -IFSLib

# Special flags for building SDL
SDLCFlags = -DBUILD_SDL
#SDLCFlags+= -DCHECK_LEAKS
SDLCFlags+= -DUSE_DOSSETPRIORITY
# src/joystick/os2 not included since SDL-1.2.15.
SDLCFlags+= -DSDL_JOYSTICK_DUMMY
# USE_ASM_MIXER_VC has no effect since SDL-1.2.10.
#SDLCFlags+= -DUSE_ASM_MIXER_VC
# include paths:
SDLCFlags+= $(INCPATH)

# Name of the DLL to be created
dllname = SDL12

DESCRIPTION = Simple DirectMedia Layer v1.2

#
#==============================================================================
#

cflags = -zq -bd -bm -bt=OS2 -5s -fpi -sg -otexan -wx -ei $(SDLCFlags)
!ifeq DEBUG 1
cflags+= -d2 -dDEBUG_BUILD
!endif

audioobjs = SDL_audio.obj SDL_audiocvt.obj &
            SDL_mixer.obj SDL_mixer_MMX_VC.obj SDL_wave.obj &
            SDL_dart.obj SDL_diskaudio.obj SDL_dummyaudio.obj
cdromobjs = SDL_cdrom.obj SDL_syscdrom.obj
cpuinfoobjs = SDL_cpuinfo.obj
eventsobjs = SDL_active.obj SDL_events.obj SDL_expose.obj &
             SDL_keyboard.obj SDL_mouse.obj SDL_quit.obj &
             SDL_resize.obj
fileobjs = SDL_rwops.obj
!ifeq HERMES 1
hermesobjs = mmx_main.obj mmxp2_32.obj x86_main.obj &
             x86p_16.obj x86p_32.obj
!endif
joystickobjs = SDL_joystick.obj SDL_sysjoystick.obj
loadsoobjs = SDL_sysloadso.obj
threadobjs = SDL_thread.obj SDL_sysmutex.obj &
             SDL_syssem.obj SDL_systhread.obj &
             SDL_syscond.obj
timerobjs = SDL_timer.obj SDL_systimer.obj
videoobjs = SDL_blit.obj SDL_blit_0.obj SDL_blit_1.obj &
            SDL_blit_A.obj SDL_blit_N.obj SDL_bmp.obj &
            SDL_cursor.obj SDL_gamma.obj SDL_pixels.obj &
            SDL_RLEaccel.obj SDL_stretch.obj SDL_surface.obj &
            SDL_video.obj SDL_yuv.obj SDL_yuv_mmx.obj SDL_yuv_sw.obj &
            SDL_os2fslib.obj &
            SDL_nullevents.obj SDL_nullmouse.obj SDL_nullvideo.obj
stdlibobjs = SDL_malloc.obj SDL_qsort.obj SDL_string.obj

object_files= SDL.obj SDL_error.obj SDL_fatal.obj &
              $(stdlibobjs) $(audioobjs) $(cpuinfoobjs) $(eventsobjs) &
              $(fileobjs) $(joystickobjs) $(loadsoobjs) $(threadobjs) &
              $(timerobjs) $(hermesobjs) $(videoobjs) $(cdromobjs)

.extensions:
.extensions: .lib .dll .obj .c .asm

.c: src;src/joystick/dummy;src/audio;src/cdrom;src/cdrom/os2;src/cpuinfo;src/events;src/file;src/joystick;src/loadso/os2;src/stdlib;src/thread;src/thread/os2;src/timer;src/timer/os2;src/video;src/audio/dummy;src/audio/disk;src/audio/dart;src/video/dummy;src/video/os2fslib
#;src/joystick/os2
.asm: src/hermes

.c.obj : .AUTODEPEND
    wcc386 $(cflags) -fo=$^@ $<

.asm.obj : .AUTODEPEND
    nasm -O2 -f obj -D__OS2__ -Isrc/hermes/ -o $^@ $<

all: $(dllname).dll $(dllname).lib done_info .symbolic

$(dllname).dll : $(dllname).lnk compiling_info $(object_files)
    @echo * Linking...
    wlink @$(dllname).lnk

$(dllname).lib : $(dllname).dll
    @echo * Creating LIB file...
    wlib -q -b -n -c -pa -s -t -zld -ii -io $* $(dllname).dll

compiling_info : .symbolic
    @echo * Compiling...

done_info : .symbolic
    @echo * All done!

$(dllname).lnk : makefile
    @echo * Creating linker file $(dllname).lnk...
    @%create $@
    @%append $@ SYSTEM os2v2_dll INITINSTANCE TERMINSTANCE
    @%append $@ NAME $^&
    @for %i in ($(object_files)) do @%append $@ FILE %i
    @%append $@ LIBPATH FSLib
    @%append $@ LIB mmpm2.lib
    @%append $@ LIB FSLib.lib
    @%append $@ LIB libuls.lib
    @%append $@ LIB libconv.lib
    @%append $@ OPTION QUIET
    @%append $@ OPTION IMPF=$^&.exp
    @%append $@ OPTION MAP=$^&.map
    @%append $@ OPTION DESCRIPTION '$(DESCRIPTION)'
    @%append $@ OPTION ELIMINATE
    @%append $@ OPTION MANYAUTODATA
    @%append $@ OPTION OSNAME='OS/2 and eComStation'
    @%append $@ OPTION SHOWDEAD

clean : .SYMBOLIC
    @echo * Cleaning...
    @if exist *.dll rm *.dll
    @if exist *.lib rm *.lib
    @if exist *.obj rm *.obj
    @if exist *.lnk rm *.lnk
    @if exist *.exp rm *.exp
    @if exist *.map rm *.map

SDL_RLEaccel.obj: SDL_RLEaccel.c
    wcc386 $(cflags) -w1 -fo=$^@ $<
