diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..581f8da --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +**/build/** \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index e69de29..1f6fe95 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -0,0 +1,14 @@ +cmake_minimum_required(VERSION 3.18) +project( + gui_framework_benchmark + DESCRIPTION "GUI Framework Benchmark" + HOMEPAGE_URL "https://www.etheryo.fr/" + LANGUAGES CXX C +) +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_C_STANDARD 99) +set(CMAKE_C_STANDARD_REQUIRED ON) + +# Projects +add_subdirectory(rmlui) \ No newline at end of file diff --git a/rmlui/CMakeLists.txt b/rmlui/CMakeLists.txt new file mode 100644 index 0000000..387f1ff --- /dev/null +++ b/rmlui/CMakeLists.txt @@ -0,0 +1,50 @@ +# Project +project( + rmlui_test + VERSION 1.0.0 + DESCRIPTION "rmlui_test" + LANGUAGES CXX C +) + +# Dependencies +set(CMAKE_TLS_VERIFY FALSE) # Custom TLS/Proxy sometimes does not enable download +include(dependencies.cmake) + +# Source files +set(TARGET rmlui_test) +set(SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src") +add_executable(${TARGET} + ${SOURCES}/main.cpp +) + +# Include folders +target_include_directories(${TARGET} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/include") +target_include_directories(${TARGET} PRIVATE "${RMLUI_INCLUDE_DIRS}") + +# Libraries +target_link_libraries( + ${TARGET} PRIVATE + rmlui_debugger + rmlui_core +) + +# Compilation depending on the platform +if(MSVC) + # Build the program as a window-only (no cmd) + if(CMAKE_BUILD_TYPE STREQUAL "Release") + target_link_options(${TARGET} PRIVATE "/SUBSYSTEM:WINDOWS") + target_compile_options(${TARGET} PRIVATE /W3 /WX ) + else() + target_compile_options(${TARGET} PRIVATE /W3 /WX /DEBUG ) + endif() +else() + target_compile_options(${TARGET} PRIVATE -Wall -Wextra -Wpedantic -Werror) +endif() + +# Output folder +set_target_properties(${TARGET} + PROPERTIES + ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" + LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" + RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" +) \ No newline at end of file diff --git a/rmlui/data/hello_world.rml b/rmlui/data/hello_world.rml new file mode 100644 index 0000000..ed8fa7f --- /dev/null +++ b/rmlui/data/hello_world.rml @@ -0,0 +1,9 @@ + + + Hello world + + +

RmlUi

+

Hello world

+ +
\ No newline at end of file diff --git a/rmlui/dependencies.cmake b/rmlui/dependencies.cmake new file mode 100644 index 0000000..c3aa45f --- /dev/null +++ b/rmlui/dependencies.cmake @@ -0,0 +1,38 @@ +cmake_minimum_required(VERSION 3.11) + +# Freetype parameters +set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE) +# Freetype +include(FetchContent) +FetchContent_Declare( + freetype + DOWNLOAD_EXTRACT_TIMESTAMP OFF + GIT_REPOSITORY https://gitlab.freedesktop.org/freetype/freetype.git + GIT_TAG VER-2-13-3 +) +FetchContent_GetProperties(freetype) +if (NOT freetype_POPULATED) + set(FETCHCONTENT_QUIET NO) + FetchContent_MakeAvailable(freetype) +endif() + +# RML UI parameters +set(BUILD_SHARED_LIBS ON CACHE BOOL "" FORCE) +set(Freetype_ROOT ${freetype_SOURCE_DIR} CACHE PATH "Path to freetype root" FORCE) +add_library(Freetype::Freetype ALIAS freetype) +# RML UI +FetchContent_Declare( + rmlui + GIT_REPOSITORY https://github.com/mikke89/RmlUi.git + GIT_TAG 6.1 +) +FetchContent_GetProperties(rmlui) +if (NOT rmlui_POPULATED) + set(FETCHCONTENT_QUIET NO) + FetchContent_MakeAvailable(rmlui) +endif() +set(RMLUI_INCLUDE_DIRS + "${RmlUi_SOURCE_DIR}/Include" + "${RmlUi_SOURCE_DIR}/Backends" + "${RmlUi_SOURCE_DIR}/Samples/shell/include" +) diff --git a/rmlui/src/main.cpp b/rmlui/src/main.cpp new file mode 100644 index 0000000..cf6469f --- /dev/null +++ b/rmlui/src/main.cpp @@ -0,0 +1,11 @@ +#include +#include +#include + +#include + +int main(int argc, char **argv) +{ + printf("Using RML Version: %s\n", Rml::GetVersion().c_str()); + return 0; +} \ No newline at end of file