Makefile.os2
author Sam Lantinga
Sat, 08 Jun 2019 18:22:18 -0700
changeset 12803 70d338e248c8
parent 12425 266c5fbe0bbd
child 12904 a08fb896b104
permissions -rw-r--r--
Fixed bug 4294 - Audio: perform more validation on conversion request

janisozaur

There are many cases which are not able to be handled by SDL's audio conversion routines, including too low (negative) rate, too high rate (impossible to allocate).

This patch aims to report such issues early and handle others in a graceful manner. The "INT32_MAX / RESAMPLER_SAMPLES_PER_ZERO_CROSSING" value is the conservative approach in terms of what can _technically_ be supported, but its value is 4'194'303, or just shy of 4.2MHz. I highly doubt any sane person would use such rates, especially in SDL2, so I would like to drive this limit further down, but would need some assistance to do that, as doing so would have to introduce an arbitrary value. Are you OK with such approach? What would a good value be? Wikipedia (https://en.wikipedia.org/wiki/High-resolution_audio) lists 96kHz as the highest sampling rate in use, even if I quadruple it for a good measure, to 384kHz it's still an order of magnitude lower than 4MHz.
     1 # Open Watcom makefile to build SDL2.dll for OS/2:
     2 # wmake -f Makefile.os2
     3 
     4 LIBNAME = SDL2
     5 VERSION = 2.0.9
     6 DESCRIPTION = Simple DirectMedia Layer 2
     7 
     8 LIBHOME = .
     9 LIBPATH = $(LIBHOME)/lib
    10 DLLFILE = $(LIBHOME)/$(LIBNAME).dll
    11 LIBFILE = $(LIBHOME)/$(LIBNAME).lib
    12 LNKFILE = $(LIBNAME).lnk
    13 
    14 INCPATH = -I"$(%WATCOM)/h/os2" -I"$(%WATCOM)/h"
    15 INCPATH+= -I"$(LIBHOME)/h"
    16 INCPATH+= -Iinclude
    17 
    18 LIBM = libm.lib
    19 LIBS = mmpm2.lib libuls.lib libconv.lib $(LIBM)
    20 
    21 CFLAGS = -bt=os2 -d0 -q -bm -5s -fp5 -fpi87 -sg -oteanbmier -ei
    22 # max warnings:
    23 CFLAGS+= -wx
    24 # building dll:
    25 CFLAGS+= -bd
    26 # the include paths :
    27 CFLAGS+= $(INCPATH)
    28 # building SDL itself (for DECLSPEC):
    29 CFLAGS+= -DBUILD_SDL
    30 
    31 MSRCS= e_atan2.c e_exp.c e_fmod.c e_log10.c e_log.c e_pow.c e_rem_pio2.c e_sqrt.c &
    32        k_cos.c k_rem_pio2.c k_sin.c k_tan.c &
    33        s_atan.c s_copysign.c s_cos.c s_fabs.c s_floor.c s_scalbn.c s_sin.c s_tan.c
    34 
    35 SRCS = SDL.c SDL_assert.c SDL_error.c SDL_log.c SDL_dataqueue.c SDL_hints.c
    36 SRCS+= SDL_getenv.c SDL_iconv.c SDL_malloc.c SDL_qsort.c SDL_stdlib.c SDL_string.c
    37 SRCS+= SDL_cpuinfo.c SDL_atomic.c SDL_spinlock.c SDL_thread.c SDL_timer.c
    38 SRCS+= SDL_rwops.c SDL_power.c
    39 SRCS+= SDL_audio.c SDL_audiocvt.c SDL_audiodev.c SDL_audiotypecvt.c SDL_mixer.c SDL_wave.c
    40 SRCS+= SDL_events.c SDL_quit.c SDL_keyboard.c SDL_mouse.c SDL_windowevents.c &
    41        SDL_clipboardevents.c SDL_dropevents.c SDL_displayevents.c SDL_gesture.c &
    42        SDL_sensor.c SDL_touch.c
    43 SRCS+= SDL_haptic.c SDL_gamecontroller.c SDL_joystick.c
    44 SRCS+= SDL_render.c yuv_rgb.c SDL_yuv.c SDL_yuv_sw.c SDL_blendfillrect.c &
    45        SDL_blendline.c SDL_blendpoint.c SDL_drawline.c SDL_drawpoint.c &
    46        SDL_render_sw.c SDL_rotate.c
    47 SRCS+= SDL_blit.c SDL_blit_0.c SDL_blit_1.c SDL_blit_A.c SDL_blit_auto.c &
    48        SDL_blit_copy.c SDL_blit_N.c SDL_blit_slow.c SDL_fillrect.c SDL_bmp.c &
    49        SDL_pixels.c SDL_rect.c SDL_RLEaccel.c SDL_shape.c SDL_stretch.c &
    50        SDL_surface.c SDL_video.c SDL_clipboard.c SDL_vulkan_utils.c SDL_egl.c
    51 
    52 SRCS+= SDL_syscond.c SDL_sysmutex.c SDL_syssem.c SDL_systhread.c SDL_systls.c
    53 SRCS+= SDL_systimer.c
    54 SRCS+= SDL_sysloadso.c
    55 SRCS+= SDL_sysfilesystem.c
    56 SRCS+= SDL_syshaptic.c SDL_sysjoystick.c
    57 SRCS+= SDL_dummyaudio.c SDL_diskaudio.c
    58 SRCS+= SDL_nullvideo.c SDL_nullframebuffer.c SDL_nullevents.c
    59 SRCS+= SDL_dummysensor.c
    60 
    61 SRCS+= SDL_dynapi.c
    62 
    63 OBJS = $(SRCS:.c=.obj)
    64 MOBJS= $(MSRCS:.c=.obj)
    65 
    66 .extensions:
    67 .extensions: .lib .dll .obj .c .asm
    68 
    69 .c: ./src;./src/dynapi;./src/audio;./src/cpuinfo;./src/events;./src/file;./src/haptic;./src/joystick;./src/power;./src/render;./src/render/software;./src/sensor;./src/stdlib;./src/thread;./src/timer;./src/video;./src/video/yuv2rgb;./src/atomic;./src/audio/disk;
    70 .c: ./src/haptic/dummy;./src/joystick/dummy;./src/audio/dummy;./src/video/dummy;./src/sensor/dummy;
    71 .c: ./src/loadso/dummy;./src/filesystem/dummy;./src/timer/dummy;./src/thread/generic;
    72 
    73 all: $(DLLFILE) $(LIBFILE) .symbolic
    74 
    75 $(DLLFILE): $(OBJS) $(LIBM) $(LNKFILE)
    76     @echo * Linking: $@
    77     wlink @$(LNKFILE)
    78 
    79 $(LIBFILE): $(DLLFILE)
    80     @echo * Creating LIB file: $@
    81     wlib -q -b -n -c -pa -s -t -zld -ii -io $* $(DLLFILE)
    82 
    83 .c.obj:
    84     wcc386 $(CFLAGS) -fo=$^@ $<
    85 
    86 SDL_cpuinfo.obj: SDL_cpuinfo.c
    87     wcc386 $(CFLAGS) -wcd=200 -fo=$^@ $<
    88 
    89 SDL_rwops.obj: SDL_rwops.c
    90     wcc386 $(CFLAGS) -wcd=136 -fo=$^@ $<
    91 
    92 SDL_blendfillrect.obj: SDL_blendfillrect.c
    93     wcc386 $(CFLAGS) -wcd=200 -fo=$^@ $<
    94 
    95 SDL_blendline.obj: SDL_blendline.c
    96     wcc386 $(CFLAGS) -wcd=200 -fo=$^@ $<
    97 
    98 SDL_blendpoint.obj: SDL_blendpoint.c
    99     wcc386 $(CFLAGS) -wcd=200 -fo=$^@ $<
   100 
   101 SDL_RLEaccel.obj: SDL_RLEaccel.c
   102     wcc386 $(CFLAGS) -wcd=201 -fo=$^@ $<
   103 
   104 .c: ./src/libm;
   105 $(LIBM): $(MOBJS)
   106     wlib -q -b -n -c -pa -s -t -zld -ii -io $@ $(MOBJS)
   107 
   108 $(LNKFILE):
   109     @echo * Creating linker file: $@
   110     @%create $@
   111     @%append $@ SYSTEM os2v2_dll INITINSTANCE TERMINSTANCE
   112     @%append $@ NAME $(DLLFILE)
   113     @for %i in ($(OBJS)) do @%append $@ FILE %i
   114     @%append $@ LIBPATH $(%LIB);$(LIBPATH)
   115     @for %i in ($(LIBS)) do @%append $@ LIB %i
   116     @%append $@ OPTION QUIET
   117     @%append $@ OPTION IMPF=$(LIBHOME)/$^&.exp
   118     @%append $@ OPTION MAP=$(LIBHOME)/$^&.map
   119     @%append $@ OPTION DESCRIPTION '@$#libsdl org:$(VERSION)$#@$(DESCRIPTION)'
   120     @%append $@ OPTION QUIET
   121     @%append $@ OPTION ELIMINATE
   122     @%append $@ OPTION MANYAUTODATA
   123     @%append $@ OPTION OSNAME='OS/2 and eComStation'
   124     @%append $@ OPTION SHOWDEAD
   125 
   126 clean: .SYMBOLIC
   127     @ echo * Clean: $(LIBNAME)
   128     @if exist *.obj rm *.obj
   129     @if exist *.err rm *.err
   130     @if exist $(LNKFILE) rm $(LNKFILE)
   131     @if exist $(LIBM) rm $(LIBM)
   132 
   133 distclean: .SYMBOLIC clean
   134     @if exist $(LIBHOME)/*.exp rm $(LIBHOME)/*.exp
   135     @if exist $(LIBHOME)/*.map rm $(LIBHOME)/*.map
   136     @if exist $(LIBFILE) rm $(LIBFILE)
   137     @if exist $(DLLFILE) rm $(DLLFILE)