Add SDL_Process subsystem

This commit is contained in:
Semphris
2024-08-29 13:06:25 -04:00
committed by Sam Lantinga
parent 6c83491116
commit 9eea8234e6
30 changed files with 2414 additions and 1 deletions

View File

@@ -2860,6 +2860,55 @@ if (SDL_DIALOG)
endif()
endif()
sdl_sources("${SDL3_SOURCE_DIR}/src/process/SDL_process.c")
if(WINDOWS)
sdl_glob_sources("${SDL3_SOURCE_DIR}/src/process/windows/*.c")
set(SDL_PROCESS_WINDOWS 1)
set(HAVE_SDL_PROCESS TRUE)
else()
check_c_source_compiles("
#include <spawn.h>
#include <unistd.h>
int main(void)
{
int pipes[2];
int pid;
const char * args[] = {
\"/bin/false\",
NULL
};
const char * env[] = { NULL };
pipe(pipes);
posix_spawnattr_t attr;
posix_spawn_file_actions_t fa;
posix_spawnattr_init(&attr);
posix_spawn_file_actions_init(&fa);
posix_spawn_file_actions_addclose(&fa, pipes[0]);
posix_spawn_file_actions_adddup2(&fa, pipes[1], STDOUT_FILENO);
posix_spawn(&pid, args[0], &fa, &attr, (char * const *) args, (char * const *) env);
posix_spawnp(&pid, args[0], &fa, &attr, (char * const *) args, (char * const *) env);
posix_spawn_file_actions_destroy(&fa);
posix_spawnattr_destroy(&attr);
return 0;
}
" HAVE_POSIX_SPAWN)
if(HAVE_POSIX_SPAWN)
sdl_glob_sources("${SDL3_SOURCE_DIR}/src/process/posix/*.c")
set(SDL_PROCESS_POSIX 1)
set(HAVE_SDL_PROCESS TRUE)
endif()
endif()
# Platform-independent options
if(SDL_VIDEO)
@@ -2949,6 +2998,10 @@ if(NOT HAVE_SDL_DIALOG)
set(SDL_DIALOG_DUMMY 1)
sdl_sources(${SDL3_SOURCE_DIR}/src/dialog/dummy/SDL_dummydialog.c)
endif()
if(NOT HAVE_SDL_PROCESS)
set(SDL_PROCESS_DUMMY 1)
sdl_glob_sources(${SDL3_SOURCE_DIR}/src/process/dummy/*.c)
endif()
if(NOT HAVE_CAMERA)
set(SDL_CAMERA_DRIVER_DUMMY 1)
sdl_glob_sources("${SDL3_SOURCE_DIR}/src/camera/dummy/*.c")