forked from libsdl-org/SDL
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
cmake: Add mini-SDL2 CMake project to test SDL2 prefixes
- Loading branch information
Showing
3 changed files
with
133 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
# This cmake build script is meant for verifying the various CMake configuration script. | ||
|
||
cmake_minimum_required(VERSION 3.12) | ||
project(sdl_test LANGUAGES C) | ||
|
||
cmake_policy(SET CMP0074 NEW) | ||
|
||
# Override CMAKE_FIND_ROOT_PATH_MODE to allow search for SDL2 outside of sysroot | ||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE NEVER) | ||
|
||
include(FeatureSummary) | ||
|
||
option(TEST_SHARED "Test linking to shared SDL2 library" ON) | ||
add_feature_info("TEST_SHARED" TEST_SHARED "Test linking with shared library") | ||
|
||
option(TEST_STATIC "Test linking to static SDL2 libary" ON) | ||
add_feature_info("TEST_STATIC" TEST_STATIC "Test linking with static library") | ||
|
||
if(TEST_SHARED) | ||
find_package(SDL2 REQUIRED CONFIG COMPONENTS SDL2) | ||
if(EMSCRIPTEN OR (WIN32 AND NOT WINDOWS_STORE)) | ||
find_package(SDL2 REQUIRED CONFIG COMPONENTS SDL2main) | ||
endif() | ||
add_executable(gui-shared WIN32 main_gui.c) | ||
if(TARGET SDL2::SDL2main) | ||
target_link_libraries(gui-shared PRIVATE SDL2::SDL2main) | ||
endif() | ||
target_link_libraries(gui-shared PRIVATE SDL2::SDL2) | ||
if(WIN32) | ||
add_custom_command(TARGET gui-shared POST_BUILD | ||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "$<TARGET_FILE:SDL2::SDL2>" "$<TARGET_FILE_DIR:gui-shared>" | ||
) | ||
endif() | ||
|
||
add_executable(gui-shared-vars WIN32 main_gui.c) | ||
target_link_libraries(gui-shared-vars PRIVATE ${SDL2_LIBRARIES}) | ||
target_include_directories(gui-shared-vars PRIVATE ${SDL2_INCLUDE_DIRS}) | ||
|
||
add_executable(cli-shared main_cli.c) | ||
target_link_libraries(cli-shared PRIVATE SDL2::SDL2) | ||
if(WIN32) | ||
add_custom_command(TARGET cli-shared POST_BUILD | ||
COMMAND ${CMAKE_COMMAND} -E copy_if_different "$<TARGET_FILE:SDL2::SDL2>" "$<TARGET_FILE_DIR:cli-shared>" | ||
) | ||
endif() | ||
|
||
# SDL2_LIBRARIES does not support creating a cli SDL2 application | ||
# (it is possible that SDL2main is a stub, but we don't know for sure) | ||
if(NOT TARGET SDL2::SDL2main) | ||
add_executable(cli-shared-vars main_cli.c) | ||
target_link_libraries(cli-shared-vars PRIVATE ${SDL2_LIBRARIES}) | ||
target_include_directories(cli-shared-vars PRIVATE ${SDL2_INCLUDE_DIRS}) | ||
endif() | ||
endif() | ||
|
||
if(TEST_STATIC) | ||
find_package(SDL2 REQUIRED CONFIG COMPONENTS SDL2-static) | ||
if(EMSCRIPTEN OR (WIN32 AND NOT WINDOWS_STORE)) | ||
find_package(SDL2 REQUIRED CONFIG COMPONENTS SDL2main) | ||
endif() | ||
add_executable(gui-static WIN32 main_gui.c) | ||
if(TARGET SDL2::SDL2main) | ||
target_link_libraries(gui-static PRIVATE SDL2::SDL2main) | ||
endif() | ||
target_link_libraries(gui-static PRIVATE SDL2::SDL2-static) | ||
|
||
add_executable(gui-static-vars WIN32 main_gui.c) | ||
target_link_libraries(gui-static-vars PRIVATE ${SDL2MAIN_LIBRARY} ${SDL2_STATIC_LIBRARIES}) | ||
target_include_directories(gui-static-vars PRIVATE ${SDL2_INCLUDE_DIRS}) | ||
|
||
add_executable(cli-static main_cli.c) | ||
target_link_libraries(cli-static PRIVATE SDL2::SDL2-static) | ||
|
||
# SDL2_LIBRARIES does not support creating a cli SDL2 application (when SDL2::SDL2main is available) | ||
# (it is possible that SDL2main is a stub, but we don't know for sure) | ||
if(NOT TARGET SDL2::SDL2main) | ||
add_executable(cli-static-vars main_cli.c) | ||
target_link_libraries(cli-static-vars PRIVATE ${SDL2_STATIC_LIBRARIES}) | ||
target_include_directories(cli-static-vars PRIVATE ${SDL2_INCLUDE_DIRS}) | ||
endif() | ||
endif() | ||
|
||
message(STATUS "SDL2_PREFIX: ${SDL2_PREFIX}") | ||
message(STATUS "SDL2_INCLUDE_DIR: ${SDL2_INCLUDE_DIR}") | ||
message(STATUS "SDL2_INCLUDE_DIRS: ${SDL2_INCLUDE_DIRS}") | ||
message(STATUS "SDL2_LIBRARIES: ${SDL2_LIBRARIES}") | ||
message(STATUS "SDL2_STATIC_LIBRARIES: ${SDL2_STATIC_LIBRARIES}") | ||
message(STATUS "SDL2MAIN_LIBRARY: ${SDL2MAIN_LIBRARY}") | ||
message(STATUS "SDL2TEST_LIBRARY: ${SDL2TEST_LIBRARY}") | ||
|
||
feature_summary(WHAT ALL) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
#define SDL_MAIN_HANDLED | ||
#include "SDL.h" | ||
#include <stdio.h> | ||
|
||
int main(int argc, char *argv[]) { | ||
SDL_SetMainReady(); | ||
if (SDL_Init(0) < 0) { | ||
fprintf(stderr, "could not initialize sdl2: %s\n", SDL_GetError()); | ||
return 1; | ||
} | ||
SDL_Delay(100); | ||
SDL_Quit(); | ||
return 0; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
#include "SDL.h" | ||
#include <stdio.h> | ||
|
||
int main(int argc, char *argv[]) { | ||
SDL_Window *window = NULL; | ||
SDL_Surface *screenSurface = NULL; | ||
if (SDL_Init(SDL_INIT_VIDEO) < 0) { | ||
fprintf(stderr, "could not initialize sdl2: %s\n", SDL_GetError()); | ||
return 1; | ||
} | ||
window = SDL_CreateWindow( | ||
"hello_sdl2", | ||
SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, | ||
640, 480, | ||
SDL_WINDOW_SHOWN | ||
); | ||
if (window == NULL) { | ||
fprintf(stderr, "could not create window: %s\n", SDL_GetError()); | ||
return 1; | ||
} | ||
screenSurface = SDL_GetWindowSurface(window); | ||
SDL_FillRect(screenSurface, NULL, SDL_MapRGB(screenSurface->format, 0xff, 0xff, 0xff)); | ||
SDL_UpdateWindowSurface(window); | ||
SDL_Delay(100); | ||
SDL_DestroyWindow(window); | ||
SDL_Quit(); | ||
return 0; | ||
} |