const std = @import("std"); pub fn build(b: *std.Build) void { const target = b.standardTargetOptions(.{}); const optimize = b.standardOptimizeOption(.{}); const lib = b.addStaticLibrary(.{ .name = "SDL", .target = target, .optimize = optimize, }); lib.addIncludePath(.{ .path = "include" }); lib.addIncludePath(.{ .path = "src" }); lib.installHeadersDirectoryOptions(.{ .source_dir = .{ .path = "include/SDL3" }, .install_dir = .header, .install_subdir = "SDL3", }); lib.addCSourceFiles(.{ .files = &.{ "src/SDL.c", "src/SDL_assert.c", "src/SDL_error.c", "src/SDL_guid.c", "src/SDL_hashtable.c", "src/SDL_hints.c", "src/SDL_list.c", "src/SDL_log.c", "src/SDL_properties.c", "src/SDL_utils.c", "src/atomic/SDL_atomic.c", "src/atomic/SDL_spinlock.c", "src/audio/SDL_audio.c", "src/audio/SDL_audiocvt.c", "src/audio/SDL_audiodev.c", "src/audio/SDL_audioqueue.c", "src/audio/SDL_audioresample.c", "src/audio/SDL_audiotypecvt.c", "src/audio/SDL_mixer.c", "src/audio/SDL_wave.c", "src/audio/aaudio/SDL_aaudio.c", "src/audio/alsa/SDL_alsa_audio.c", // "src/audio/android/SDL_androidaudio.c", "src/audio/disk/SDL_diskaudio.c", "src/audio/dsp/SDL_dspaudio.c", "src/audio/dummy/SDL_dummyaudio.c", // "src/audio/emscripten/SDL_emscriptenaudio.c", "src/audio/jack/SDL_jackaudio.c", // "src/audio/n3ds/SDL_n3dsaudio.c", // "src/audio/netbsd/SDL_netbsdaudio.c", "src/audio/openslES/SDL_openslES.c", "src/audio/pipewire/SDL_pipewire.c", // "src/audio/ps2/SDL_ps2audio.c", // "src/audio/psp/SDL_pspaudio.c", "src/audio/pulseaudio/SDL_pulseaudio.c", // "src/audio/qnx/SDL_qsa_audio.c", "src/audio/sndio/SDL_sndioaudio.c", // "src/audio/vita/SDL_vitaaudio.c", // "src/audio/wasapi/SDL_wasapi.c", // "src/audio/wasapi/SDL_wasapi_win32.c", "src/camera/SDL_camera.c", // "src/camera/android/SDL_camera_android.c", "src/camera/dummy/SDL_camera_dummy.c", // "src/camera/emscripten/SDL_camera_emscripten.c", "src/camera/mediafoundation/SDL_camera_mediafoundation.c", "src/camera/v4l2/SDL_camera_v4l2.c", "src/core/SDL_core_unsupported.c", "src/core/SDL_runapp.c", // "src/core/android/SDL_android.c", // "src/core/freebsd/SDL_evdev_kbd_freebsd.c", "src/core/linux/SDL_dbus.c", "src/core/linux/SDL_evdev.c", "src/core/linux/SDL_evdev_capabilities.c", "src/core/linux/SDL_evdev_kbd.c", "src/core/linux/SDL_fcitx.c", "src/core/linux/SDL_ibus.c", "src/core/linux/SDL_ime.c", "src/core/linux/SDL_sandbox.c", "src/core/linux/SDL_system_theme.c", "src/core/linux/SDL_threadprio.c", "src/core/linux/SDL_udev.c", // "src/core/n3ds/SDL_n3ds.c", // "src/core/openbsd/SDL_wscons_kbd.c", // "src/core/openbsd/SDL_wscons_mouse.c", // "src/core/ps2/SDL_ps2.c", // "src/core/psp/SDL_psp.c", "src/core/unix/SDL_appid.c", "src/core/unix/SDL_poll.c", "src/cpuinfo/SDL_cpuinfo.c", "src/dialog/SDL_dialog_utils.c", "src/dialog/dummy/SDL_dummydialog.c", "src/dialog/unix/SDL_portaldialog.c", "src/dialog/unix/SDL_unixdialog.c", "src/dialog/unix/SDL_zenitydialog.c", "src/dynapi/SDL_dynapi.c", "src/events/SDL_clipboardevents.c", "src/events/SDL_displayevents.c", "src/events/SDL_dropevents.c", "src/events/SDL_events.c", "src/events/SDL_keyboard.c", "src/events/SDL_keysym_to_scancode.c", "src/events/SDL_mouse.c", "src/events/SDL_pen.c", "src/events/SDL_quit.c", "src/events/SDL_scancode_tables.c", "src/events/SDL_touch.c", "src/events/SDL_windowevents.c", "src/events/imKStoUCS.c", "src/file/SDL_iostream.c", // "src/file/n3ds/SDL_iostreamromfs.c", "src/filesystem/SDL_filesystem.c", // "src/filesystem/android/SDL_sysfilesystem.c", "src/filesystem/dummy/SDL_sysfilesystem.c", "src/filesystem/dummy/SDL_sysfsops.c", // "src/filesystem/emscripten/SDL_sysfilesystem.c", // "src/filesystem/n3ds/SDL_sysfilesystem.c", "src/filesystem/posix/SDL_sysfsops.c", // "src/filesystem/ps2/SDL_sysfilesystem.c", // "src/filesystem/psp/SDL_sysfilesystem.c", // "src/filesystem/riscos/SDL_sysfilesystem.c", "src/filesystem/unix/SDL_sysfilesystem.c", // "src/filesystem/vita/SDL_sysfilesystem.c", "src/haptic/SDL_haptic.c", // "src/haptic/android/SDL_syshaptic.c", // "src/haptic/darwin/SDL_syshaptic.c", "src/haptic/dummy/SDL_syshaptic.c", "src/haptic/linux/SDL_syshaptic.c", "src/hidapi/SDL_hidapi.c", "src/hidapi/libusb/hid.c", "src/hidapi/linux/hid.c", // "src/hidapi/mac/hid.c", // "src/hidapi/netbsd/hid.c", "src/joystick/SDL_gamepad.c", "src/joystick/SDL_joystick.c", "src/joystick/SDL_steam_virtual_gamepad.c", // "src/joystick/android/SDL_sysjoystick.c", // "src/joystick/bsd/SDL_bsdjoystick.c", "src/joystick/controller_type.c", // "src/joystick/darwin/SDL_iokitjoystick.c", "src/joystick/dummy/SDL_sysjoystick.c", // "src/joystick/emscripten/SDL_sysjoystick.c", // "src/joystick/gdk/SDL_gameinputjoystick.c", "src/joystick/hidapi/SDL_hidapi_combined.c", "src/joystick/hidapi/SDL_hidapi_gamecube.c", "src/joystick/hidapi/SDL_hidapi_luna.c", "src/joystick/hidapi/SDL_hidapi_ps3.c", "src/joystick/hidapi/SDL_hidapi_ps4.c", "src/joystick/hidapi/SDL_hidapi_ps5.c", "src/joystick/hidapi/SDL_hidapi_rumble.c", "src/joystick/hidapi/SDL_hidapi_shield.c", "src/joystick/hidapi/SDL_hidapi_stadia.c", "src/joystick/hidapi/SDL_hidapi_steam.c", "src/joystick/hidapi/SDL_hidapi_steamdeck.c", "src/joystick/hidapi/SDL_hidapi_switch.c", "src/joystick/hidapi/SDL_hidapi_wii.c", "src/joystick/hidapi/SDL_hidapi_xbox360.c", "src/joystick/hidapi/SDL_hidapi_xbox360w.c", "src/joystick/hidapi/SDL_hidapi_xboxone.c", "src/joystick/hidapi/SDL_hidapijoystick.c", "src/joystick/linux/SDL_sysjoystick.c", // "src/joystick/n3ds/SDL_sysjoystick.c", // "src/joystick/ps2/SDL_sysjoystick.c", // "src/joystick/psp/SDL_sysjoystick.c", "src/joystick/steam/SDL_steamcontroller.c", "src/joystick/virtual/SDL_virtualjoystick.c", "src/joystick/vita/SDL_sysjoystick.c", "src/libm/e_atan2.c", "src/libm/e_exp.c", "src/libm/e_fmod.c", "src/libm/e_log.c", "src/libm/e_log10.c", "src/libm/e_pow.c", "src/libm/e_rem_pio2.c", "src/libm/e_sqrt.c", "src/libm/k_cos.c", "src/libm/k_rem_pio2.c", "src/libm/k_sin.c", "src/libm/k_tan.c", "src/libm/s_atan.c", "src/libm/s_copysign.c", "src/libm/s_cos.c", "src/libm/s_fabs.c", "src/libm/s_floor.c", "src/libm/s_modf.c", "src/libm/s_scalbn.c", "src/libm/s_sin.c", "src/libm/s_tan.c", "src/loadso/dlopen/SDL_sysloadso.c", // "src/loadso/dummy/SDL_sysloadso.c", "src/locale/SDL_locale.c", // "src/locale/android/SDL_syslocale.c", "src/locale/dummy/SDL_syslocale.c", // "src/locale/emscripten/SDL_syslocale.c", // "src/locale/n3ds/SDL_syslocale.c", "src/locale/unix/SDL_syslocale.c", // "src/locale/vita/SDL_syslocale.c", "src/main/SDL_main_callbacks.c", // "src/main/emscripten/SDL_sysmain_callbacks.c", "src/main/generic/SDL_sysmain_callbacks.c", "src/misc/SDL_url.c", // "src/misc/android/SDL_sysurl.c", "src/misc/dummy/SDL_sysurl.c", // "src/misc/emscripten/SDL_sysurl.c", // "src/misc/riscos/SDL_sysurl.c", "src/misc/unix/SDL_sysurl.c", // "src/misc/vita/SDL_sysurl.c", "src/power/SDL_power.c", // "src/power/android/SDL_syspower.c", // "src/power/emscripten/SDL_syspower.c", // "src/power/haiku/SDL_syspower.c", "src/power/linux/SDL_syspower.c", // "src/power/macos/SDL_syspower.c", // "src/power/n3ds/SDL_syspower.c", // "src/power/psp/SDL_syspower.c", // "src/power/vita/SDL_syspower.c", // "src/render/SDL_d3dmath.c", "src/render/SDL_render.c", "src/render/SDL_render_unsupported.c", "src/render/SDL_yuv_sw.c", "src/render/opengl/SDL_render_gl.c", "src/render/opengl/SDL_shaders_gl.c", "src/render/opengles2/SDL_render_gles2.c", "src/render/opengles2/SDL_shaders_gles2.c", // "src/render/ps2/SDL_render_ps2.c", // "src/render/psp/SDL_render_psp.c", "src/render/software/SDL_blendfillrect.c", "src/render/software/SDL_blendline.c", "src/render/software/SDL_blendpoint.c", "src/render/software/SDL_drawline.c", "src/render/software/SDL_drawpoint.c", "src/render/software/SDL_render_sw.c", "src/render/software/SDL_rotate.c", "src/render/software/SDL_triangle.c", // "src/render/vitagxm/SDL_render_vita_gxm.c", // "src/render/vitagxm/SDL_render_vita_gxm_memory.c", // "src/render/vitagxm/SDL_render_vita_gxm_tools.c", "src/render/vulkan/SDL_render_vulkan.c", "src/render/vulkan/SDL_shaders_vulkan.c", "src/sensor/SDL_sensor.c", // "src/sensor/android/SDL_androidsensor.c", "src/sensor/dummy/SDL_dummysensor.c", // "src/sensor/n3ds/SDL_n3dssensor.c", // "src/sensor/vita/SDL_vitasensor.c", "src/stdlib/SDL_crc16.c", "src/stdlib/SDL_crc32.c", "src/stdlib/SDL_getenv.c", "src/stdlib/SDL_iconv.c", "src/stdlib/SDL_malloc.c", "src/stdlib/SDL_memcpy.c", "src/stdlib/SDL_memmove.c", "src/stdlib/SDL_memset.c", "src/stdlib/SDL_mslibc.c", "src/stdlib/SDL_qsort.c", "src/stdlib/SDL_stdlib.c", "src/stdlib/SDL_string.c", "src/stdlib/SDL_strtokr.c", "src/storage/SDL_storage.c", "src/storage/generic/SDL_genericstorage.c", "src/storage/steam/SDL_steamstorage.c", "src/thread/SDL_thread.c", "src/thread/generic/SDL_syscond.c", "src/thread/generic/SDL_sysmutex.c", "src/thread/generic/SDL_sysrwlock.c", "src/thread/generic/SDL_syssem.c", "src/thread/generic/SDL_systhread.c", "src/thread/generic/SDL_systls.c", // "src/thread/n3ds/SDL_syscond.c", // "src/thread/n3ds/SDL_sysmutex.c", // "src/thread/n3ds/SDL_syssem.c", // "src/thread/n3ds/SDL_systhread.c", // "src/thread/ps2/SDL_syssem.c", // "src/thread/ps2/SDL_systhread.c", // "src/thread/psp/SDL_sysmutex.c", // "src/thread/psp/SDL_syssem.c", // "src/thread/psp/SDL_systhread.c", "src/thread/pthread/SDL_syscond.c", "src/thread/pthread/SDL_sysmutex.c", "src/thread/pthread/SDL_sysrwlock.c", "src/thread/pthread/SDL_syssem.c", "src/thread/pthread/SDL_systhread.c", "src/thread/pthread/SDL_systls.c", // "src/thread/vita/SDL_sysmutex.c", // "src/thread/vita/SDL_syssem.c", // "src/thread/vita/SDL_systhread.c", "src/time/SDL_time.c", // "src/time/n3ds/SDL_systime.c", // "src/time/ps2/SDL_systime.c", // "src/time/psp/SDL_systime.c", "src/time/unix/SDL_systime.c", // "src/time/vita/SDL_systime.c", "src/timer/SDL_timer.c", // "src/timer/haiku/SDL_systimer.c", // "src/timer/n3ds/SDL_systimer.c", // "src/timer/ps2/SDL_systimer.c", // "src/timer/psp/SDL_systimer.c", "src/timer/unix/SDL_systimer.c", // "src/timer/vita/SDL_systimer.c", "src/video/SDL_RLEaccel.c", "src/video/SDL_blit.c", "src/video/SDL_blit_0.c", "src/video/SDL_blit_1.c", "src/video/SDL_blit_A.c", "src/video/SDL_blit_N.c", "src/video/SDL_blit_auto.c", "src/video/SDL_blit_copy.c", "src/video/SDL_blit_slow.c", "src/video/SDL_bmp.c", "src/video/SDL_clipboard.c", "src/video/SDL_egl.c", "src/video/SDL_fillrect.c", "src/video/SDL_pixels.c", "src/video/SDL_rect.c", "src/video/SDL_stretch.c", "src/video/SDL_surface.c", "src/video/SDL_video.c", "src/video/SDL_video_unsupported.c", "src/video/SDL_vulkan_utils.c", "src/video/SDL_yuv.c", // "src/video/android/SDL_androidclipboard.c", // "src/video/android/SDL_androidevents.c", // "src/video/android/SDL_androidgl.c", // "src/video/android/SDL_androidkeyboard.c", // "src/video/android/SDL_androidmessagebox.c", // "src/video/android/SDL_androidmouse.c", // "src/video/android/SDL_androidtouch.c", // "src/video/android/SDL_androidvideo.c", // "src/video/android/SDL_androidvulkan.c", // "src/video/android/SDL_androidwindow.c", "src/video/dummy/SDL_nullevents.c", "src/video/dummy/SDL_nullframebuffer.c", "src/video/dummy/SDL_nullvideo.c", // "src/video/emscripten/SDL_emscriptenevents.c", // "src/video/emscripten/SDL_emscriptenframebuffer.c", // "src/video/emscripten/SDL_emscriptenmouse.c", // "src/video/emscripten/SDL_emscriptenopengles.c", // "src/video/emscripten/SDL_emscriptenvideo.c", "src/video/kmsdrm/SDL_kmsdrmdyn.c", "src/video/kmsdrm/SDL_kmsdrmevents.c", "src/video/kmsdrm/SDL_kmsdrmmouse.c", "src/video/kmsdrm/SDL_kmsdrmopengles.c", "src/video/kmsdrm/SDL_kmsdrmvideo.c", "src/video/kmsdrm/SDL_kmsdrmvulkan.c", // "src/video/n3ds/SDL_n3dsevents.c", // "src/video/n3ds/SDL_n3dsframebuffer.c", // "src/video/n3ds/SDL_n3dsswkb.c", // "src/video/n3ds/SDL_n3dstouch.c", // "src/video/n3ds/SDL_n3dsvideo.c", "src/video/offscreen/SDL_offscreenevents.c", "src/video/offscreen/SDL_offscreenframebuffer.c", "src/video/offscreen/SDL_offscreenopengles.c", "src/video/offscreen/SDL_offscreenvideo.c", "src/video/offscreen/SDL_offscreenwindow.c", // "src/video/ps2/SDL_ps2video.c", // "src/video/psp/SDL_pspevents.c", // "src/video/psp/SDL_pspgl.c", // "src/video/psp/SDL_pspmouse.c", // "src/video/psp/SDL_pspvideo.c", // "src/video/qnx/SDL_qnxgl.c", // "src/video/qnx/SDL_qnxkeyboard.c", // "src/video/qnx/SDL_qnxvideo.c", "src/video/raspberry/SDL_rpievents.c", "src/video/raspberry/SDL_rpimouse.c", "src/video/raspberry/SDL_rpiopengles.c", "src/video/raspberry/SDL_rpivideo.c", // "src/video/riscos/SDL_riscosevents.c", // "src/video/riscos/SDL_riscosframebuffer.c", // "src/video/riscos/SDL_riscosmessagebox.c", // "src/video/riscos/SDL_riscosmodes.c", // "src/video/riscos/SDL_riscosmouse.c", // "src/video/riscos/SDL_riscosvideo.c", // "src/video/riscos/SDL_riscoswindow.c", // "src/video/vita/SDL_vitaframebuffer.c", // "src/video/vita/SDL_vitagl_pvr.c", // "src/video/vita/SDL_vitagles.c", // "src/video/vita/SDL_vitagles_pvr.c", // "src/video/vita/SDL_vitakeyboard.c", // "src/video/vita/SDL_vitamessagebox.c", // "src/video/vita/SDL_vitamouse.c", // "src/video/vita/SDL_vitatouch.c", // "src/video/vita/SDL_vitavideo.c", // "src/video/vivante/SDL_vivanteopengles.c", // "src/video/vivante/SDL_vivanteplatform.c", // "src/video/vivante/SDL_vivantevideo.c", // "src/video/vivante/SDL_vivantevulkan.c", "src/video/wayland/SDL_waylandclipboard.c", "src/video/wayland/SDL_waylanddatamanager.c", "src/video/wayland/SDL_waylanddyn.c", "src/video/wayland/SDL_waylandevents.c", "src/video/wayland/SDL_waylandkeyboard.c", "src/video/wayland/SDL_waylandmessagebox.c", "src/video/wayland/SDL_waylandmouse.c", "src/video/wayland/SDL_waylandopengles.c", "src/video/wayland/SDL_waylandshmbuffer.c", "src/video/wayland/SDL_waylandvideo.c", "src/video/wayland/SDL_waylandvulkan.c", "src/video/wayland/SDL_waylandwindow.c", "src/video/x11/SDL_x11clipboard.c", "src/video/x11/SDL_x11dyn.c", "src/video/x11/SDL_x11events.c", "src/video/x11/SDL_x11framebuffer.c", "src/video/x11/SDL_x11keyboard.c", "src/video/x11/SDL_x11messagebox.c", "src/video/x11/SDL_x11modes.c", "src/video/x11/SDL_x11mouse.c", "src/video/x11/SDL_x11opengl.c", "src/video/x11/SDL_x11opengles.c", "src/video/x11/SDL_x11pen.c", "src/video/x11/SDL_x11shape.c", "src/video/x11/SDL_x11touch.c", "src/video/x11/SDL_x11video.c", "src/video/x11/SDL_x11vulkan.c", "src/video/x11/SDL_x11window.c", "src/video/x11/SDL_x11xfixes.c", "src/video/x11/SDL_x11xinput2.c", "src/video/x11/edid-parse.c", "src/video/yuv2rgb/yuv_rgb_lsx.c", "src/video/yuv2rgb/yuv_rgb_sse.c", "src/video/yuv2rgb/yuv_rgb_std.c", }, }); lib.linkSystemLibrary("udev"); lib.linkSystemLibrary("libusb-1.0"); lib.linkSystemLibrary("dbus-1"); lib.defineCMacro("HAVE_DBUS_DBUS_H", "1"); if (target.result.os.tag == .windows) { lib.addCSourceFiles(.{ .files = &.{ "src/audio/directsound/SDL_directsound.c", "src/core/windows/SDL_hid.c", "src/core/windows/SDL_immdevice.c", "src/core/windows/SDL_windows.c", "src/core/windows/SDL_xinput.c", "src/core/windows/pch.c", "src/dialog/windows/SDL_windowsdialog.c", "src/filesystem/windows/SDL_sysfilesystem.c", "src/filesystem/windows/SDL_sysfsops.c", "src/haptic/windows/SDL_dinputhaptic.c", "src/haptic/windows/SDL_windowshaptic.c", "src/hidapi/windows/hid.c", "src/hidapi/windows/hidapi_descriptor_reconstruct.c", "src/hidapi/windows/pp_data_dump/pp_data_dump.c", "src/joystick/windows/SDL_dinputjoystick.c", "src/joystick/windows/SDL_rawinputjoystick.c", "src/joystick/windows/SDL_windows_gaming_input.c", "src/joystick/windows/SDL_windowsjoystick.c", "src/joystick/windows/SDL_xinputjoystick.c", "src/loadso/windows/SDL_sysloadso.c", "src/locale/windows/SDL_syslocale.c", "src/locale/winrt/SDL_syslocale.c", "src/misc/windows/SDL_sysurl.c", "src/power/windows/SDL_syspower.c", "src/sensor/windows/SDL_windowssensor.c", "src/thread/windows/SDL_syscond_cv.c", "src/thread/windows/SDL_sysmutex.c", "src/thread/windows/SDL_sysrwlock_srw.c", "src/thread/windows/SDL_syssem.c", "src/thread/windows/SDL_systhread.c", "src/thread/windows/SDL_systls.c", "src/time/windows/SDL_systime.c", "src/timer/windows/SDL_systimer.c", "src/video/windows/SDL_windowsclipboard.c", "src/video/windows/SDL_windowsevents.c", "src/video/windows/SDL_windowsframebuffer.c", "src/video/windows/SDL_windowskeyboard.c", "src/video/windows/SDL_windowsmessagebox.c", "src/video/windows/SDL_windowsmodes.c", "src/video/windows/SDL_windowsmouse.c", "src/video/windows/SDL_windowsopengl.c", "src/video/windows/SDL_windowsopengles.c", "src/video/windows/SDL_windowsrawinput.c", "src/video/windows/SDL_windowsshape.c", "src/video/windows/SDL_windowsvideo.c", "src/video/windows/SDL_windowsvulkan.c", "src/video/windows/SDL_windowswindow.c", "src/render/direct3d/SDL_render_d3d.c", "src/render/direct3d/SDL_shaders_d3d.c", "src/render/direct3d11/SDL_render_d3d11.c", "src/render/direct3d11/SDL_shaders_d3d11.c", "src/render/direct3d12/SDL_render_d3d12.c", "src/render/direct3d12/SDL_shaders_d3d12.c", } }); } lib.linkLibC(); b.installArtifact(lib); }