From e8adcabd94830be66938e12143c8fe23cdeab605 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1zaro=20Albuquerque?= <33807434+lzralbu@users.noreply.github.com> Date: Fri, 14 Jun 2024 15:53:19 -0400 Subject: [PATCH] update --- cmake/LibraryConfigurations.cmake | 108 ++++++++++++++++-------------- examples/CMakeLists.txt | 73 ++++++++++---------- src/CMakeLists.txt | 2 +- 3 files changed, 95 insertions(+), 88 deletions(-) diff --git a/cmake/LibraryConfigurations.cmake b/cmake/LibraryConfigurations.cmake index 23a7ec2f0..02b28a2e6 100644 --- a/cmake/LibraryConfigurations.cmake +++ b/cmake/LibraryConfigurations.cmake @@ -4,65 +4,69 @@ # See https://cmake.org/cmake/help/latest/policy/CMP0072.html for more # information. if(POLICY CMP0072) - cmake_policy(SET CMP0072 NEW) + cmake_policy(SET CMP0072 NEW) endif() -if (${PLATFORM} MATCHES "Desktop") +if(${PLATFORM} MATCHES "Desktop") set(PLATFORM_CPP "PLATFORM_DESKTOP") - if (APPLE) + if(APPLE) # Need to force OpenGL 3.3 on OS X # See: https://github.com/raysan5/raylib/issues/341 set(GRAPHICS "GRAPHICS_API_OPENGL_33") find_library(OPENGL_LIBRARY OpenGL) set(LIBS_PRIVATE ${OPENGL_LIBRARY}) link_libraries("${LIBS_PRIVATE}") - if (NOT CMAKE_SYSTEM STRLESS "Darwin-18.0.0") + + if(NOT CMAKE_SYSTEM STRLESS "Darwin-18.0.0") add_definitions(-DGL_SILENCE_DEPRECATION) MESSAGE(AUTHOR_WARNING "OpenGL is deprecated starting with macOS 10.14 (Mojave)!") - endif () - elseif (WIN32) + endif() + elseif(WIN32) add_definitions(-D_CRT_SECURE_NO_WARNINGS) find_package(OpenGL QUIET) set(LIBS_PRIVATE ${OPENGL_LIBRARIES} winmm) - elseif (UNIX) + elseif(UNIX) find_library(pthread NAMES pthread) find_package(OpenGL QUIET) - if ("${OPENGL_LIBRARIES}" STREQUAL "") - set(OPENGL_LIBRARIES "GL") - endif () - if ("${CMAKE_SYSTEM_NAME}" MATCHES "(Net|Open)BSD") + if("${OPENGL_LIBRARIES}" STREQUAL "") + set(OPENGL_LIBRARIES "GL") + endif() + + if("${CMAKE_SYSTEM_NAME}" MATCHES "(Net|Open)BSD") find_library(OSS_LIBRARY ossaudio) - endif () + endif() set(LIBS_PRIVATE m pthread ${OPENGL_LIBRARIES} ${OSS_LIBRARY}) - else () + else() find_library(pthread NAMES pthread) find_package(OpenGL QUIET) - if ("${OPENGL_LIBRARIES}" STREQUAL "") + + if("${OPENGL_LIBRARIES}" STREQUAL "") set(OPENGL_LIBRARIES "GL") - endif () + endif() set(LIBS_PRIVATE m atomic pthread ${OPENGL_LIBRARIES} ${OSS_LIBRARY}) - if ("${CMAKE_SYSTEM_NAME}" MATCHES "(Net|Open)BSD") + if("${CMAKE_SYSTEM_NAME}" MATCHES "(Net|Open)BSD") find_library(OSS_LIBRARY ossaudio) set(LIBS_PRIVATE m pthread ${OPENGL_LIBRARIES} ${OSS_LIBRARY}) - endif () + endif() - if (NOT "${CMAKE_SYSTEM_NAME}" MATCHES "(Net|Open)BSD" AND USE_AUDIO) + if(NOT "${CMAKE_SYSTEM_NAME}" MATCHES "(Net|Open)BSD" AND USE_AUDIO) set(LIBS_PRIVATE ${LIBS_PRIVATE} dl) - endif () - endif () + endif() + endif() -elseif (${PLATFORM} MATCHES "Web") +elseif(${PLATFORM} MATCHES "Web") set(PLATFORM_CPP "PLATFORM_WEB") set(GRAPHICS "GRAPHICS_API_OPENGL_ES2") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -s USE_GLFW=3 -s ASSERTIONS=1 --profiling") + + # set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --profiling") set(CMAKE_STATIC_LIBRARY_SUFFIX ".a") -elseif (${PLATFORM} MATCHES "Android") +elseif(${PLATFORM} MATCHES "Android") set(PLATFORM_CPP "PLATFORM_ANDROID") set(GRAPHICS "GRAPHICS_API_OPENGL_ES2") set(CMAKE_POSITION_INDEPENDENT_CODE ON) @@ -73,7 +77,7 @@ elseif (${PLATFORM} MATCHES "Android") find_library(OPENGL_LIBRARY OpenGL) set(LIBS_PRIVATE m log android EGL GLESv2 OpenSLES atomic c) -elseif ("${PLATFORM}" MATCHES "DRM") +elseif("${PLATFORM}" MATCHES "DRM") set(PLATFORM_CPP "PLATFORM_DRM") set(GRAPHICS "GRAPHICS_API_OPENGL_ES2") @@ -86,44 +90,46 @@ elseif ("${PLATFORM}" MATCHES "DRM") find_library(DRM drm) find_library(GBM gbm) - if (NOT CMAKE_CROSSCOMPILING OR NOT CMAKE_SYSROOT) + if(NOT CMAKE_CROSSCOMPILING OR NOT CMAKE_SYSROOT) include_directories(/usr/include/libdrm) - endif () + endif() + set(LIBS_PRIVATE ${GLESV2} ${EGL} ${DRM} ${GBM} atomic pthread m dl) -elseif ("${PLATFORM}" MATCHES "SDL") +elseif("${PLATFORM}" MATCHES "SDL") find_package(SDL2 REQUIRED) set(PLATFORM_CPP "PLATFORM_DESKTOP_SDL") set(LIBS_PRIVATE SDL2::SDL2) +endif() -endif () - -if (NOT ${OPENGL_VERSION} MATCHES "OFF") +if(NOT ${OPENGL_VERSION} MATCHES "OFF") set(${SUGGESTED_GRAPHICS} "${GRAPHICS}") - if (${OPENGL_VERSION} MATCHES "4.3") - set(GRAPHICS "GRAPHICS_API_OPENGL_43") - elseif (${OPENGL_VERSION} MATCHES "3.3") - set(GRAPHICS "GRAPHICS_API_OPENGL_33") - elseif (${OPENGL_VERSION} MATCHES "2.1") - set(GRAPHICS "GRAPHICS_API_OPENGL_21") - elseif (${OPENGL_VERSION} MATCHES "1.1") - set(GRAPHICS "GRAPHICS_API_OPENGL_11") - elseif (${OPENGL_VERSION} MATCHES "ES 2.0") - set(GRAPHICS "GRAPHICS_API_OPENGL_ES2") - elseif (${OPENGL_VERSION} MATCHES "ES 3.0") - set(GRAPHICS "GRAPHICS_API_OPENGL_ES3") - endif () - if ("${SUGGESTED_GRAPHICS}" AND NOT "${SUGGESTED_GRAPHICS}" STREQUAL "${GRAPHICS}") - message(WARNING "You are overriding the suggested GRAPHICS=${SUGGESTED_GRAPHICS} with ${GRAPHICS}! This may fail") - endif () -endif () -if (NOT GRAPHICS) + if(${OPENGL_VERSION} MATCHES "4.3") + set(GRAPHICS "GRAPHICS_API_OPENGL_43") + elseif(${OPENGL_VERSION} MATCHES "3.3") + set(GRAPHICS "GRAPHICS_API_OPENGL_33") + elseif(${OPENGL_VERSION} MATCHES "2.1") + set(GRAPHICS "GRAPHICS_API_OPENGL_21") + elseif(${OPENGL_VERSION} MATCHES "1.1") + set(GRAPHICS "GRAPHICS_API_OPENGL_11") + elseif(${OPENGL_VERSION} MATCHES "ES 2.0") + set(GRAPHICS "GRAPHICS_API_OPENGL_ES2") + elseif(${OPENGL_VERSION} MATCHES "ES 3.0") + set(GRAPHICS "GRAPHICS_API_OPENGL_ES3") + endif() + + if("${SUGGESTED_GRAPHICS}" AND NOT "${SUGGESTED_GRAPHICS}" STREQUAL "${GRAPHICS}") + message(WARNING "You are overriding the suggested GRAPHICS=${SUGGESTED_GRAPHICS} with ${GRAPHICS}! This may fail") + endif() +endif() + +if(NOT GRAPHICS) set(GRAPHICS "GRAPHICS_API_OPENGL_33") -endif () +endif() set(LIBS_PRIVATE ${LIBS_PRIVATE} ${OPENAL_LIBRARY}) -if (${PLATFORM} MATCHES "Desktop") +if(${PLATFORM} MATCHES "Desktop") set(LIBS_PRIVATE ${LIBS_PRIVATE} glfw) -endif () +endif() diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 28550eaec..4cafff438 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -11,7 +11,7 @@ set(example_dirs shapes text textures - ) +) # Next few lines will check for existence of symbols or header files # They are needed for the physac example and threads examples @@ -21,34 +21,38 @@ check_symbol_exists(CLOCK_MONOTONIC time.h HAVE_CLOCK_MONOTONIC) check_symbol_exists(QueryPerformanceCounter windows.h HAVE_QPC) set(CMAKE_REQUIRED_DEFINITIONS) -if (HAVE_QPC OR HAVE_CLOCK_MONOTONIC) +if(HAVE_QPC OR HAVE_CLOCK_MONOTONIC) set(example_dirs ${example_dirs} physac) -endif () +endif() include(CheckIncludeFile) CHECK_INCLUDE_FILE("stdatomic.h" HAVE_STDATOMIC_H) set(CMAKE_THREAD_PREFER_PTHREAD TRUE) find_package(Threads) -if (CMAKE_USE_PTHREADS_INIT AND HAVE_STDATOMIC_H) - add_if_flag_compiles("-std=c11" CMAKE_C_FLAGS) - if (THREADS_HAVE_PTHREAD_ARG) - add_if_flag_compiles("-pthread" CMAKE_C_FLAGS) - endif () - if (CMAKE_THREAD_LIBS_INIT) - link_libraries("${CMAKE_THREAD_LIBS_INIT}") - endif () -endif () -if (APPLE AND NOT CMAKE_SYSTEM STRLESS "Darwin-18.0.0") +if(CMAKE_USE_PTHREADS_INIT AND HAVE_STDATOMIC_H) + add_if_flag_compiles("-std=c11" CMAKE_C_FLAGS) + + if(THREADS_HAVE_PTHREAD_ARG) + add_if_flag_compiles("-pthread" CMAKE_C_FLAGS) + endif() + + if(CMAKE_THREAD_LIBS_INIT) + link_libraries("${CMAKE_THREAD_LIBS_INIT}") + endif() +endif() + +if(APPLE AND NOT CMAKE_SYSTEM STRLESS "Darwin-18.0.0") add_definitions(-DGL_SILENCE_DEPRECATION) MESSAGE(AUTHOR_WARNING "OpenGL is deprecated starting with macOS 10.14 (Mojave)!") -endif () +endif() # Collect all source files and resource files # into a CMake variable set(example_sources) set(example_resources) -foreach (example_dir ${example_dirs}) + +foreach(example_dir ${example_dirs}) # Get the .c files file(GLOB sources ${example_dir}/*.c) list(APPEND example_sources ${sources}) @@ -56,14 +60,14 @@ foreach (example_dir ${example_dirs}) # Any any resources file(GLOB resources ${example_dir}/resources/*) list(APPEND example_resources ${resources}) -endforeach () +endforeach() if(NOT CMAKE_USE_PTHREADS_INIT OR NOT HAVE_STDATOMIC_H) # Items requiring pthreads list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/core/core_loading_thread.c) -endif () +endif() -if (${PLATFORM} MATCHES "Android") +if(${PLATFORM} MATCHES "Android") list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/others/rlgl_standalone.c) list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/others/standard_lighting.c) list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/core/core_3d_picking.c) @@ -87,7 +91,6 @@ if (${PLATFORM} MATCHES "Android") list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/models/models_first_person_maze.c) list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/models/models_magicavoxel_loading.c) - list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/shaders/shaders_custom_uniform.c) list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/shaders/shaders_model_shader.c) list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/shaders/shaders_postprocessing.c) @@ -95,11 +98,10 @@ if (${PLATFORM} MATCHES "Android") list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/shaders/shaders_palette_switch.c) list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/shaders/shaders_basic_lighting.c) -elseif (${PLATFORM} MATCHES "Web") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Os -s USE_GLFW=3 -s ASSERTIONS=1 -s WASM=1 -s ASYNCIFY") +elseif(${PLATFORM} MATCHES "Web") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Os") # Since WASM is used, ALLOW_MEMORY_GROWTH has no extra overheads - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -s ALLOW_MEMORY_GROWTH=1 --no-heap-copy") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --shell-file ${CMAKE_SOURCE_DIR}/src/shell.html") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s WASM=1 -s ASYNCIFY -s ALLOW_MEMORY_GROWTH=1 --shell-file ${CMAKE_SOURCE_DIR}/src/shell.html") set(CMAKE_EXECUTABLE_SUFFIX ".html") list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/others/raylib_opengl_interop.c) @@ -109,33 +111,31 @@ elseif (${PLATFORM} MATCHES "Web") # and fat HTML string(REPLACE "-rdynamic" "" CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "${CMAKE_SHARED_LIBRARY_LINK_C_FLAGS}") -elseif ("${PLATFORM}" STREQUAL "DRM") +elseif("${PLATFORM}" STREQUAL "DRM") list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/others/rlgl_standalone.c) list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/others/raylib_opengl_interop.c) -elseif (NOT SUPPORT_GESTURES_SYSTEM) +elseif(NOT SUPPORT_GESTURES_SYSTEM) # Items requiring gestures system list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/textures/textures_mouse_painting.c) list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/core/core_basic_screen_manager.c) list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/core/core_input_gestures_web.c) list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/core/core_input_gestures.c) - -endif () +endif() # The rlgl_standalone example only targets desktop, without shared libraries. -if (BUILD_SHARED_LIBS OR NOT ${PLATFORM} MATCHES "Desktop") +if(BUILD_SHARED_LIBS OR NOT ${PLATFORM} MATCHES "Desktop") list(REMOVE_ITEM example_sources ${CMAKE_CURRENT_SOURCE_DIR}/others/rlgl_standalone.c) - endif() include_directories(BEFORE SYSTEM others/external/include) -if (NOT TARGET raylib) +if(NOT TARGET raylib) find_package(raylib 2.0 REQUIRED) -endif () +endif() # Do each example -foreach (example_source ${example_sources}) +foreach(example_source ${example_sources}) # Create the basename for the example get_filename_component(example_name ${example_source} NAME) string(REPLACE ".c" "" example_name ${example_name}) @@ -144,19 +144,20 @@ foreach (example_source ${example_sources}) add_executable(${example_name} ${example_source}) target_link_libraries(${example_name} raylib) - if (NOT WIN32) + + if(NOT WIN32) target_link_libraries(${example_name} m) endif() string(REGEX MATCH ".*/.*/" resources_dir ${example_source}) string(APPEND resources_dir "resources") - if (${PLATFORM} MATCHES "Web" AND EXISTS ${resources_dir}) + if(${PLATFORM} MATCHES "Web" AND EXISTS ${resources_dir}) # The local resources path needs to be mapped to /resources virtual path string(APPEND resources_dir "@resources") set_target_properties(${example_name} PROPERTIES LINK_FLAGS "--preload-file ${resources_dir}") - endif () -endforeach () + endif() +endforeach() # Copy all of the resource files to the destination file(COPY ${example_resources} DESTINATION "resources/") diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 387665705..bfb4b05b5 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -69,7 +69,7 @@ else() endif() if (${PLATFORM} MATCHES "Web") - target_link_options(raylib PRIVATE "-sUSE_GLFW=3") + target_link_options(raylib PUBLIC "-sUSE_GLFW=3") endif() set_target_properties(raylib PROPERTIES