blob: 951160ac6a927b3eb045666c1d597ca845228e81 [file] [log] [blame]
# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
package(default_visibility = ["//visibility:public"])
sdl_includes = ["include"]
SDL_DEFAULT_SRC_EXCLUDES = [
# Ignore test files.
"src/test/*.c",
# Unfortunately, thread/generic does not contain any guards to
# prevent collisions against thread/pthread.
"src/thread/generic/*.c",
# Don't include Windows support.
"src/render/direct3d*/**",
"src/render/SDL_d3d*",
"src/haptic/windows/**",
# Remove support for QNX
"src/video/qnx/**",
]
sdl_sources = select({
"@bazel_tools//src/conditions:windows": glob(
include = [
"src/**/*.c",
"src/**/*.h",
],
exclude = [
# Ignore test files
"src/test/*.c",
# Ignore Linux/Unix
"src/core/linux/**",
"src/core/unix/**",
# Ignore thread (exclude for thread/windows)
"src/thread/**",
# Remove support for QNX
"src/video/qnx/**",
],
) + glob([
"src/thread/*",
"src/thread/windows/*",
"src/thread/generic/SDL_syscond.*",
]),
"//conditions:default": glob(
include = [
"src/**/*.c",
"src/**/*.h",
],
exclude = SDL_DEFAULT_SRC_EXCLUDES,
),
})
sdl_headers = [
"include/begin_code.h",
"include/close_code.h",
"include/SDL.h",
"include/SDL_assert.h",
"include/SDL_atomic.h",
"include/SDL_audio.h",
"include/SDL_bits.h",
"include/SDL_blendmode.h",
"include/SDL_clipboard.h",
"include/SDL_config_minimal.h",
"include/SDL_cpuinfo.h",
"include/SDL_egl.h",
"include/SDL_endian.h",
"include/SDL_error.h",
"include/SDL_events.h",
"include/SDL_filesystem.h",
"include/SDL_gamecontroller.h",
"include/SDL_gesture.h",
"include/SDL_haptic.h",
"include/SDL_hints.h",
"include/SDL_joystick.h",
"include/SDL_keyboard.h",
"include/SDL_keycode.h",
"include/SDL_loadso.h",
"include/SDL_log.h",
"include/SDL_main.h",
"include/SDL_messagebox.h",
"include/SDL_metal.h",
"include/SDL_mouse.h",
"include/SDL_mutex.h",
"include/SDL_name.h",
"include/SDL_opengl.h",
"include/SDL_opengl_glext.h",
"include/SDL_opengles.h",
"include/SDL_opengles2.h",
"include/SDL_pixels.h",
"include/SDL_platform.h",
"include/SDL_power.h",
"include/SDL_quit.h",
"include/SDL_rect.h",
"include/SDL_render.h",
"include/SDL_revision.h",
"include/SDL_rwops.h",
"include/SDL_scancode.h",
"include/SDL_sensor.h",
"include/SDL_shape.h",
"include/SDL_stdinc.h",
"include/SDL_surface.h",
"include/SDL_system.h",
"include/SDL_syswm.h",
"include/SDL_thread.h",
"include/SDL_timer.h",
"include/SDL_touch.h",
"include/SDL_version.h",
"include/SDL_video.h",
"include/SDL_vulkan.h",
]
sdl_copts = select({
"@bazel_tools//src/conditions:windows": [],
"//conditions:default": [
"-Wno-string-conversion",
"-pthread",
"-includestdio.h", # Adds `#include <stdio.h>`, which some files need.
],
})
sdl_linkopts = select({
"@bazel_tools//src/conditions:windows": [
"-DEFAULTLIB:user32",
"-DEFAULTLIB:gdi32",
"-DEFAULTLIB:winmm",
"-DEFAULTLIB:imm32",
"-DEFAULTLIB:ole32",
"-DEFAULTLIB:oleaut32",
"-DEFAULTLIB:version",
"-DEFAULTLIB:uuid",
"-DEFAULTLIB:shell32",
"-DEFAULTLIB:advapi32",
"-DEFAULTLIB:hid",
"-DEFAULTLIB:setupapi",
],
"//conditions:default": [
"-ldl",
"-lrt",
],
})
sdl_deps = [
"@sdl2_config//:headers",
]
cc_library(
name = "SDL2",
srcs = sdl_sources,
hdrs = sdl_headers,
copts = sdl_copts,
includes = sdl_includes,
linkopts = sdl_linkopts,
linkstatic = 1,
deps = sdl_deps,
)