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.
sezeroz@12373
     1
# Open Watcom makefile to build SDL2.dll for OS/2:
sezeroz@12373
     2
# wmake -f Makefile.os2
sezeroz@12329
     3
sezeroz@12373
     4
LIBNAME = SDL2
sezeroz@12373
     5
VERSION = 2.0.9
sezeroz@12373
     6
DESCRIPTION = Simple DirectMedia Layer 2
sezeroz@12373
     7
sezeroz@12373
     8
LIBHOME = .
sezeroz@12373
     9
LIBPATH = $(LIBHOME)/lib
sezeroz@12373
    10
DLLFILE = $(LIBHOME)/$(LIBNAME).dll
sezeroz@12373
    11
LIBFILE = $(LIBHOME)/$(LIBNAME).lib
sezeroz@12373
    12
LNKFILE = $(LIBNAME).lnk
sezeroz@12329
    13
sezeroz@12329
    14
INCPATH = -I"$(%WATCOM)/h/os2" -I"$(%WATCOM)/h"
sezeroz@12373
    15
INCPATH+= -I"$(LIBHOME)/h"
sezeroz@12329
    16
INCPATH+= -Iinclude
sezeroz@12329
    17
sezeroz@12419
    18
LIBM = libm.lib
sezeroz@12419
    19
LIBS = mmpm2.lib libuls.lib libconv.lib $(LIBM)
sezeroz@12373
    20
sezeroz@12329
    21
CFLAGS = -bt=os2 -d0 -q -bm -5s -fp5 -fpi87 -sg -oteanbmier -ei
sezeroz@12329
    22
# max warnings:
sezeroz@12329
    23
CFLAGS+= -wx
sezeroz@12329
    24
# building dll:
sezeroz@12329
    25
CFLAGS+= -bd
sezeroz@12329
    26
# the include paths :
sezeroz@12329
    27
CFLAGS+= $(INCPATH)
sezeroz@12425
    28
# building SDL itself (for DECLSPEC):
sezeroz@12329
    29
CFLAGS+= -DBUILD_SDL
sezeroz@12329
    30
sezeroz@12419
    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 &
sezeroz@12419
    32
       k_cos.c k_rem_pio2.c k_sin.c k_tan.c &
sezeroz@12419
    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
sezeroz@12419
    34
sezeroz@12329
    35
SRCS = SDL.c SDL_assert.c SDL_error.c SDL_log.c SDL_dataqueue.c SDL_hints.c
sezeroz@12329
    36
SRCS+= SDL_getenv.c SDL_iconv.c SDL_malloc.c SDL_qsort.c SDL_stdlib.c SDL_string.c
sezeroz@12329
    37
SRCS+= SDL_cpuinfo.c SDL_atomic.c SDL_spinlock.c SDL_thread.c SDL_timer.c
sezeroz@12329
    38
SRCS+= SDL_rwops.c SDL_power.c
sezeroz@12329
    39
SRCS+= SDL_audio.c SDL_audiocvt.c SDL_audiodev.c SDL_audiotypecvt.c SDL_mixer.c SDL_wave.c
sezeroz@12329
    40
SRCS+= SDL_events.c SDL_quit.c SDL_keyboard.c SDL_mouse.c SDL_windowevents.c &
sezeroz@12329
    41
       SDL_clipboardevents.c SDL_dropevents.c SDL_displayevents.c SDL_gesture.c &
sezeroz@12329
    42
       SDL_sensor.c SDL_touch.c
sezeroz@12329
    43
SRCS+= SDL_haptic.c SDL_gamecontroller.c SDL_joystick.c
sezeroz@12329
    44
SRCS+= SDL_render.c yuv_rgb.c SDL_yuv.c SDL_yuv_sw.c SDL_blendfillrect.c &
sezeroz@12329
    45
       SDL_blendline.c SDL_blendpoint.c SDL_drawline.c SDL_drawpoint.c &
sezeroz@12329
    46
       SDL_render_sw.c SDL_rotate.c
sezeroz@12329
    47
SRCS+= SDL_blit.c SDL_blit_0.c SDL_blit_1.c SDL_blit_A.c SDL_blit_auto.c &
sezeroz@12329
    48
       SDL_blit_copy.c SDL_blit_N.c SDL_blit_slow.c SDL_fillrect.c SDL_bmp.c &
sezeroz@12329
    49
       SDL_pixels.c SDL_rect.c SDL_RLEaccel.c SDL_shape.c SDL_stretch.c &
sezeroz@12329
    50
       SDL_surface.c SDL_video.c SDL_clipboard.c SDL_vulkan_utils.c SDL_egl.c
sezeroz@12329
    51
sezeroz@12329
    52
SRCS+= SDL_syscond.c SDL_sysmutex.c SDL_syssem.c SDL_systhread.c SDL_systls.c
sezeroz@12329
    53
SRCS+= SDL_systimer.c
sezeroz@12329
    54
SRCS+= SDL_sysloadso.c
sezeroz@12329
    55
SRCS+= SDL_sysfilesystem.c
sezeroz@12329
    56
SRCS+= SDL_syshaptic.c SDL_sysjoystick.c
sezeroz@12329
    57
SRCS+= SDL_dummyaudio.c SDL_diskaudio.c
sezeroz@12329
    58
SRCS+= SDL_nullvideo.c SDL_nullframebuffer.c SDL_nullevents.c
sezeroz@12329
    59
SRCS+= SDL_dummysensor.c
sezeroz@12329
    60
sezeroz@12329
    61
SRCS+= SDL_dynapi.c
sezeroz@12329
    62
sezeroz@12329
    63
OBJS = $(SRCS:.c=.obj)
sezeroz@12419
    64
MOBJS= $(MSRCS:.c=.obj)
sezeroz@12329
    65
sezeroz@12331
    66
.extensions:
sezeroz@12331
    67
.extensions: .lib .dll .obj .c .asm
sezeroz@12331
    68
sezeroz@12373
    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;
sezeroz@12373
    70
.c: ./src/haptic/dummy;./src/joystick/dummy;./src/audio/dummy;./src/video/dummy;./src/sensor/dummy;
sezeroz@12373
    71
.c: ./src/loadso/dummy;./src/filesystem/dummy;./src/timer/dummy;./src/thread/generic;
sezeroz@12331
    72
sezeroz@12329
    73
all: $(DLLFILE) $(LIBFILE) .symbolic
sezeroz@12329
    74
sezeroz@12419
    75
$(DLLFILE): $(OBJS) $(LIBM) $(LNKFILE)
sezeroz@12373
    76
    @echo * Linking: $@
sezeroz@12329
    77
    wlink @$(LNKFILE)
sezeroz@12329
    78
sezeroz@12373
    79
$(LIBFILE): $(DLLFILE)
sezeroz@12373
    80
    @echo * Creating LIB file: $@
sezeroz@12329
    81
    wlib -q -b -n -c -pa -s -t -zld -ii -io $* $(DLLFILE)
sezeroz@12329
    82
sezeroz@12329
    83
.c.obj:
sezeroz@12329
    84
    wcc386 $(CFLAGS) -fo=$^@ $<
sezeroz@12329
    85
sezeroz@12329
    86
SDL_cpuinfo.obj: SDL_cpuinfo.c
sezeroz@12329
    87
    wcc386 $(CFLAGS) -wcd=200 -fo=$^@ $<
sezeroz@12329
    88
sezeroz@12329
    89
SDL_rwops.obj: SDL_rwops.c
sezeroz@12329
    90
    wcc386 $(CFLAGS) -wcd=136 -fo=$^@ $<
sezeroz@12329
    91
sezeroz@12329
    92
SDL_blendfillrect.obj: SDL_blendfillrect.c
sezeroz@12329
    93
    wcc386 $(CFLAGS) -wcd=200 -fo=$^@ $<
sezeroz@12329
    94
sezeroz@12329
    95
SDL_blendline.obj: SDL_blendline.c
sezeroz@12329
    96
    wcc386 $(CFLAGS) -wcd=200 -fo=$^@ $<
sezeroz@12329
    97
sezeroz@12329
    98
SDL_blendpoint.obj: SDL_blendpoint.c
sezeroz@12329
    99
    wcc386 $(CFLAGS) -wcd=200 -fo=$^@ $<
sezeroz@12329
   100
sezeroz@12329
   101
SDL_RLEaccel.obj: SDL_RLEaccel.c
sezeroz@12329
   102
    wcc386 $(CFLAGS) -wcd=201 -fo=$^@ $<
sezeroz@12329
   103
sezeroz@12419
   104
.c: ./src/libm;
sezeroz@12419
   105
$(LIBM): $(MOBJS)
sezeroz@12419
   106
    wlib -q -b -n -c -pa -s -t -zld -ii -io $@ $(MOBJS)
sezeroz@12419
   107
sezeroz@12329
   108
$(LNKFILE):
sezeroz@12373
   109
    @echo * Creating linker file: $@
sezeroz@12329
   110
    @%create $@
sezeroz@12329
   111
    @%append $@ SYSTEM os2v2_dll INITINSTANCE TERMINSTANCE
sezeroz@12329
   112
    @%append $@ NAME $(DLLFILE)
sezeroz@12329
   113
    @for %i in ($(OBJS)) do @%append $@ FILE %i
sezeroz@12373
   114
    @%append $@ LIBPATH $(%LIB);$(LIBPATH)
sezeroz@12373
   115
    @for %i in ($(LIBS)) do @%append $@ LIB %i
sezeroz@12329
   116
    @%append $@ OPTION QUIET
sezeroz@12373
   117
    @%append $@ OPTION IMPF=$(LIBHOME)/$^&.exp
sezeroz@12373
   118
    @%append $@ OPTION MAP=$(LIBHOME)/$^&.map
sezeroz@12373
   119
    @%append $@ OPTION DESCRIPTION '@$#libsdl org:$(VERSION)$#@$(DESCRIPTION)'
sezeroz@12329
   120
    @%append $@ OPTION QUIET
sezeroz@12329
   121
    @%append $@ OPTION ELIMINATE
sezeroz@12329
   122
    @%append $@ OPTION MANYAUTODATA
sezeroz@12329
   123
    @%append $@ OPTION OSNAME='OS/2 and eComStation'
sezeroz@12329
   124
    @%append $@ OPTION SHOWDEAD
sezeroz@12329
   125
sezeroz@12329
   126
clean: .SYMBOLIC
sezeroz@12329
   127
    @ echo * Clean: $(LIBNAME)
sezeroz@12329
   128
    @if exist *.obj rm *.obj
sezeroz@12329
   129
    @if exist *.err rm *.err
sezeroz@12329
   130
    @if exist $(LNKFILE) rm $(LNKFILE)
sezeroz@12419
   131
    @if exist $(LIBM) rm $(LIBM)
sezeroz@12329
   132
sezeroz@12329
   133
distclean: .SYMBOLIC clean
sezeroz@12373
   134
    @if exist $(LIBHOME)/*.exp rm $(LIBHOME)/*.exp
sezeroz@12373
   135
    @if exist $(LIBHOME)/*.map rm $(LIBHOME)/*.map
sezeroz@12373
   136
    @if exist $(LIBFILE) rm $(LIBFILE)
sezeroz@12329
   137
    @if exist $(DLLFILE) rm $(DLLFILE)