From b9422484fbfbc467645a75d17f30227fb2c4a260 Mon Sep 17 00:00:00 2001 From: Alex Mayfield Date: Tue, 1 May 2018 23:10:46 -0400 Subject: [PATCH] Initial stab at SDL2 and textscreen --- CMakeLists.txt | 10 +++++++ cmake/FindSDL2.cmake | 53 ++++++++++++++++++++++++++++++++++++++ cmake/FindSDL2_mixer.cmake | 0 cmake/FindSDL2_net.cmake | 0 textscreen/CMakeLists.txt | 26 +++++++++++++++++++ 5 files changed, 89 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 cmake/FindSDL2.cmake create mode 100644 cmake/FindSDL2_mixer.cmake create mode 100644 cmake/FindSDL2_net.cmake create mode 100644 textscreen/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..2be647ed --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,10 @@ +set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") + +cmake_minimum_required(VERSION 3.9.3) +project("Chocolate Doom" VERSION 3.0.0 LANGUAGES C) + +find_package(SDL2 2.0.1) +find_package(SDL2_mixer 2.0.0) +find_package(SDL2_net 2.0.0) + +add_subdirectory(textscreen) diff --git a/cmake/FindSDL2.cmake b/cmake/FindSDL2.cmake new file mode 100644 index 00000000..218a67a1 --- /dev/null +++ b/cmake/FindSDL2.cmake @@ -0,0 +1,53 @@ +# Currently works with the following generators: +# - Visual Studio + +set(SDL2_DIR "${SDL2_DIR}" CACHE PATH "Location of SDL2 library directory") + +find_path(SDL2_INCLUDE_DIR "SDL_version.h" + PATHS "${SDL2_DIR}/include") + +if(SDL2_INCLUDE_DIR AND EXISTS "${SDL2_INCLUDE_DIR}/SDL_version.h") + file(STRINGS "${SDL2_INCLUDE_DIR}/SDL_version.h" SDL2_VERSION_MAJOR_LINE REGEX "^#define[ \t]+SDL_MAJOR_VERSION[ \t]+[0-9]+$") + file(STRINGS "${SDL2_INCLUDE_DIR}/SDL_version.h" SDL2_VERSION_MINOR_LINE REGEX "^#define[ \t]+SDL_MINOR_VERSION[ \t]+[0-9]+$") + file(STRINGS "${SDL2_INCLUDE_DIR}/SDL_version.h" SDL2_VERSION_PATCH_LINE REGEX "^#define[ \t]+SDL_PATCHLEVEL[ \t]+[0-9]+$") + string(REGEX REPLACE "^#define[ \t]+SDL_MAJOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_VERSION_MAJOR "${SDL2_VERSION_MAJOR_LINE}") + string(REGEX REPLACE "^#define[ \t]+SDL_MINOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_VERSION_MINOR "${SDL2_VERSION_MINOR_LINE}") + string(REGEX REPLACE "^#define[ \t]+SDL_PATCHLEVEL[ \t]+([0-9]+)$" "\\1" SDL2_VERSION_PATCH "${SDL2_VERSION_PATCH_LINE}") + set(SDL2_VERSION "${SDL2_VERSION_MAJOR}.${SDL2_VERSION_MINOR}.${SDL2_VERSION_PATCH}") + unset(SDL2_VERSION_MAJOR_LINE) + unset(SDL2_VERSION_MINOR_LINE) + unset(SDL2_VERSION_PATCH_LINE) + unset(SDL2_VERSION_MAJOR) + unset(SDL2_VERSION_MINOR) + unset(SDL2_VERSION_PATCH) +endif() + +if(CMAKE_SIZEOF_VOID_P STREQUAL 8) + find_library(SDL2_LIBRARY "SDL2" + PATHS "${SDL2_DIR}/lib/x64") + find_library(SDL2_MAIN_LIBRARY "SDL2main" + PATHS "${SDL2_DIR}/lib/x64") +else() + find_library(SDL2_LIBRARY "SDL2" + PATHS "${SDL2_DIR}/lib/x86") + find_library(SDL2_MAIN_LIBRARY "SDL2main" + PATHS "${SDL2_DIR}/lib/x86") +endif() +set(SDL2_LIBRARIES "${SDL2_MAIN_LIBRARY}" "${SDL2_LIBRARY}") + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(SDL2 + FOUND_VAR SDL2_FOUND + REQUIRED_VARS SDL2_INCLUDE_DIR SDL2_LIBRARIES + VERSION_VAR SDL2_VERSION +) + +if(SDL2_FOUND) + add_library(SDL2::SDL2 UNKNOWN IMPORTED) + set_target_properties(SDL2::SDL2 PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${SDL2_INCLUDE_DIR}" + IMPORTED_LOCATION "${SDL2_LIBRARY}") + add_library(SDL2::SDL2main UNKNOWN IMPORTED) + set_target_properties(SDL2::SDL2main PROPERTIES + IMPORTED_LOCATION "${SDL2_MAIN_LIBRARY}") +endif() diff --git a/cmake/FindSDL2_mixer.cmake b/cmake/FindSDL2_mixer.cmake new file mode 100644 index 00000000..e69de29b diff --git a/cmake/FindSDL2_net.cmake b/cmake/FindSDL2_net.cmake new file mode 100644 index 00000000..e69de29b diff --git a/textscreen/CMakeLists.txt b/textscreen/CMakeLists.txt new file mode 100644 index 00000000..f255cbc4 --- /dev/null +++ b/textscreen/CMakeLists.txt @@ -0,0 +1,26 @@ +add_library(textscreen + textscreen.h + txt_conditional.c txt_conditional.h + txt_checkbox.c txt_checkbox.h + txt_desktop.c txt_desktop.h + txt_dropdown.c txt_dropdown.h + txt_fileselect.c txt_fileselect.h + txt_gui.c txt_gui.h + txt_inputbox.c txt_inputbox.h + txt_io.c txt_io.h + txt_main.h + txt_button.c txt_button.h + txt_label.c txt_label.h + txt_radiobutton.c txt_radiobutton.h + txt_scrollpane.c txt_scrollpane.h + txt_separator.c txt_separator.h + txt_spinctrl.c txt_spinctrl.h + txt_sdl.c txt_sdl.h + txt_strut.c txt_strut.h + txt_table.c txt_table.h + txt_utf8.c txt_utf8.h + txt_widget.c txt_widget.h + txt_window.c txt_window.h + txt_window_action.c txt_window_action.h) +target_include_directories(textscreen PRIVATE "../src/") +target_link_libraries(textscreen SDL2::SDL2)