diff options
author | bonmas14 <bonmas14@gmail.com> | 2025-09-20 22:28:15 +0300 |
---|---|---|
committer | bonmas14 <bonmas14@gmail.com> | 2025-09-20 22:28:15 +0300 |
commit | cdda4c4182c9ee068567529715e4a5c68a8efb58 (patch) | |
tree | 38a63f62a64018a2d35fc33354f8589fd33b7514 /deps/raylib/cmake | |
download | c_wizard-cdda4c4182c9ee068567529715e4a5c68a8efb58.tar.gz c_wizard-cdda4c4182c9ee068567529715e4a5c68a8efb58.zip |
Init commit v1.0
Diffstat (limited to 'deps/raylib/cmake')
-rw-r--r-- | deps/raylib/cmake/AddIfFlagCompiles.cmake | 12 | ||||
-rw-r--r-- | deps/raylib/cmake/CompileDefinitions.cmake | 23 | ||||
-rw-r--r-- | deps/raylib/cmake/CompilerFlags.cmake | 79 | ||||
-rw-r--r-- | deps/raylib/cmake/EnumOption.cmake | 9 | ||||
-rw-r--r-- | deps/raylib/cmake/GlfwImport.cmake | 36 | ||||
-rw-r--r-- | deps/raylib/cmake/InstallConfigurations.cmake | 28 | ||||
-rw-r--r-- | deps/raylib/cmake/JoinPaths.cmake | 26 | ||||
-rw-r--r-- | deps/raylib/cmake/LibraryConfigurations.cmake | 131 | ||||
-rw-r--r-- | deps/raylib/cmake/LibraryPathToLinkerFlags.cmake | 24 | ||||
-rw-r--r-- | deps/raylib/cmake/PackConfigurations.cmake | 18 | ||||
-rw-r--r-- | deps/raylib/cmake/ParseConfigHeader.cmake | 17 | ||||
-rw-r--r-- | deps/raylib/cmake/PopulateConfigVariablesLocally.cmake | 11 | ||||
-rw-r--r-- | deps/raylib/cmake/Uninstall.cmake | 21 | ||||
-rw-r--r-- | deps/raylib/cmake/raylib-config-version.cmake | 21 | ||||
-rw-r--r-- | deps/raylib/cmake/raylib-config.cmake | 79 |
15 files changed, 535 insertions, 0 deletions
diff --git a/deps/raylib/cmake/AddIfFlagCompiles.cmake b/deps/raylib/cmake/AddIfFlagCompiles.cmake new file mode 100644 index 0000000..403607b --- /dev/null +++ b/deps/raylib/cmake/AddIfFlagCompiles.cmake @@ -0,0 +1,12 @@ +include(CheckCCompilerFlag) +function(add_if_flag_compiles flag) + CHECK_C_COMPILER_FLAG("${flag}" COMPILER_HAS_THOSE_TOGGLES) + set(outcome "Failed") + if(COMPILER_HAS_THOSE_TOGGLES) + foreach(var ${ARGN}) + set(${var} "${flag} ${${var}}" PARENT_SCOPE) + endforeach() + set(outcome "compiles") + endif() + message(STATUS "Testing if ${flag} can be used -- ${outcome}") +endfunction() diff --git a/deps/raylib/cmake/CompileDefinitions.cmake b/deps/raylib/cmake/CompileDefinitions.cmake new file mode 100644 index 0000000..cefafde --- /dev/null +++ b/deps/raylib/cmake/CompileDefinitions.cmake @@ -0,0 +1,23 @@ +# Adding compile definitions +target_compile_definitions("raylib" PUBLIC "${PLATFORM_CPP}") +target_compile_definitions("raylib" PUBLIC "${GRAPHICS}") + +function(define_if target variable) + if(${${variable}}) + message(STATUS "${variable}=${${variable}}") + target_compile_definitions(${target} PRIVATE "${variable}") + endif() +endfunction() + +if(${CUSTOMIZE_BUILD}) + target_compile_definitions("raylib" PRIVATE EXTERNAL_CONFIG_FLAGS) + + foreach(FLAG IN LISTS CONFIG_HEADER_FLAGS) + string(REGEX MATCH "([^=]+)=(.+)" _ ${FLAG}) + define_if("raylib" ${CMAKE_MATCH_1}) + endforeach() + + foreach(VALUE IN LISTS CONFIG_HEADER_VALUES) + target_compile_definitions("raylib" PRIVATE ${VALUE}) + endforeach() +endif() diff --git a/deps/raylib/cmake/CompilerFlags.cmake b/deps/raylib/cmake/CompilerFlags.cmake new file mode 100644 index 0000000..970462c --- /dev/null +++ b/deps/raylib/cmake/CompilerFlags.cmake @@ -0,0 +1,79 @@ +include(AddIfFlagCompiles) + +# Makes +/- operations on void pointers be considered an error +# https://gcc.gnu.org/onlinedocs/gcc/Pointer-Arith.html +add_if_flag_compiles(-Werror=pointer-arith CMAKE_C_FLAGS) + +# Generates error whenever a function is used before being declared +# https://gcc.gnu.org/onlinedocs/gcc-4.0.1/gcc/Warning-Options.html +add_if_flag_compiles(-Werror=implicit-function-declaration CMAKE_C_FLAGS) + +# Allows some casting of pointers without generating a warning +add_if_flag_compiles(-fno-strict-aliasing CMAKE_C_FLAGS) + +if (ENABLE_MSAN AND ENABLE_ASAN) + # MSAN and ASAN both work on memory - ASAN does more things + MESSAGE(WARNING "Compiling with both AddressSanitizer and MemorySanitizer is not recommended") +endif() + +if (ENABLE_ASAN) + + # If enabled it would generate errors/warnings for all kinds of memory errors + # (like returning a stack variable by reference) + # https://clang.llvm.org/docs/AddressSanitizer.html + + add_if_flag_compiles(-fno-omit-frame-pointer CMAKE_C_FLAGS CMAKE_LINKER_FLAGS) + add_if_flag_compiles(-fsanitize=address CMAKE_C_FLAGS CMAKE_LINKER_FLAGS) + +endif() + +if (ENABLE_UBSAN) + + # If enabled this will generate errors for undefined behavior points + # (like adding +1 to the maximum int value) + # https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html + + add_if_flag_compiles(-fno-omit-frame-pointer CMAKE_C_FLAGS CMAKE_LINKER_FLAGS) + add_if_flag_compiles(-fsanitize=undefined CMAKE_C_FLAGS CMAKE_LINKER_FLAGS) + +endif() + +if (ENABLE_MSAN) + + # If enabled this will generate warnings for places where uninitialized memory is used + # https://clang.llvm.org/docs/MemorySanitizer.html + + add_if_flag_compiles(-fno-omit-frame-pointer CMAKE_C_FLAGS CMAKE_LINKER_FLAGS) + add_if_flag_compiles(-fsanitize=memory CMAKE_C_FLAGS CMAKE_LINKER_FLAGS) + +endif() + +if(CMAKE_VERSION VERSION_LESS "3.1") + if(CMAKE_C_COMPILER_ID STREQUAL "GNU") + add_if_flag_compiles(-std=gnu99 CMAKE_C_FLAGS) + endif() +else() + set (CMAKE_C_STANDARD 99) +endif() + +if(${PLATFORM} MATCHES "Android") + + # If enabled will remove dead code during the linking process + # https://gcc.gnu.org/onlinedocs/gnat_ugn/Compilation-options.html + add_if_flag_compiles(-ffunction-sections CMAKE_C_FLAGS) + + # If enabled will generate some exception data (usually disabled for C programs) + # https://gcc.gnu.org/onlinedocs/gcc-4.2.4/gcc/Code-Gen-Options.html + add_if_flag_compiles(-funwind-tables CMAKE_C_FLAGS) + + # If enabled adds stack protection guards around functions that allocate memory + # https://www.keil.com/support/man/docs/armclang_ref/armclang_ref_cjh1548250046139.htm + add_if_flag_compiles(-fstack-protector-strong CMAKE_C_FLAGS) + + # Marks that the library will not be compiled with an executable stack + add_if_flag_compiles(-Wa,--noexecstack CMAKE_C_FLAGS) + + # Do not expand symbolic links or resolve paths like "/./" or "/../", etc. + # https://gcc.gnu.org/onlinedocs/gcc/Directory-Options.html + add_if_flag_compiles(-no-canonical-prefixes CMAKE_C_FLAGS) +endif() diff --git a/deps/raylib/cmake/EnumOption.cmake b/deps/raylib/cmake/EnumOption.cmake new file mode 100644 index 0000000..d7d343f --- /dev/null +++ b/deps/raylib/cmake/EnumOption.cmake @@ -0,0 +1,9 @@ +macro(enum_option var values description) + set(${var}_VALUES ${values}) + list(GET ${var}_VALUES 0 default) + set(${var} "${default}" CACHE STRING "${description}") + set_property(CACHE ${var} PROPERTY STRINGS ${${var}_VALUES}) + if (NOT ";${${var}_VALUES};" MATCHES ";${${var}};") + message(FATAL_ERROR "Unknown value ${${var}}. Only -D${var}=${${var}_VALUES} allowed.") + endif() +endmacro() diff --git a/deps/raylib/cmake/GlfwImport.cmake b/deps/raylib/cmake/GlfwImport.cmake new file mode 100644 index 0000000..4a5ef8c --- /dev/null +++ b/deps/raylib/cmake/GlfwImport.cmake @@ -0,0 +1,36 @@ + +if(USE_EXTERNAL_GLFW STREQUAL "ON") + find_package(glfw3 3.4 REQUIRED) +elseif(USE_EXTERNAL_GLFW STREQUAL "IF_POSSIBLE") + find_package(glfw3 3.4 QUIET) +endif() +if (glfw3_FOUND) + set(LIBS_PRIVATE ${LIBS_PRIVATE} glfw) +endif() + +# Explicitly check against "ON", because USE_EXTERNAL_GLFW is a tristate option +# Also adding only on desktop (web also uses glfw but it is more limited and is added using an emcc linker flag) +if(NOT glfw3_FOUND AND NOT USE_EXTERNAL_GLFW STREQUAL "ON" AND "${PLATFORM}" MATCHES "Desktop") + MESSAGE(STATUS "Using raylib's GLFW") + set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE) + set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE) + set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE) + set(GLFW_INSTALL OFF CACHE BOOL "" FORCE) + set(GLFW_LIBRARY_TYPE "OBJECT" CACHE STRING "" FORCE) + + + add_subdirectory(external/glfw) + + # Hide glfw's symbols when building a shared lib + if (BUILD_SHARED_LIBS) + set_property(TARGET glfw PROPERTY C_VISIBILITY_PRESET hidden) + endif() + + list(APPEND raylib_sources $<TARGET_OBJECTS:glfw>) + include_directories(BEFORE SYSTEM external/glfw/include) +elseif("${PLATFORM}" STREQUAL "DRM") + MESSAGE(STATUS "No GLFW required on PLATFORM_DRM") +else() + MESSAGE(STATUS "Using external GLFW") + set(GLFW_PKG_DEPS glfw3) +endif() diff --git a/deps/raylib/cmake/InstallConfigurations.cmake b/deps/raylib/cmake/InstallConfigurations.cmake new file mode 100644 index 0000000..6c606e5 --- /dev/null +++ b/deps/raylib/cmake/InstallConfigurations.cmake @@ -0,0 +1,28 @@ +install( + TARGETS raylib EXPORT raylib-targets + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" + LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" + PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" +) + +# PKG_CONFIG_LIBS_PRIVATE is used in raylib.pc.in +if (NOT BUILD_SHARED_LIBS) + include(LibraryPathToLinkerFlags) + set(PKG_CONFIG_LIBS_PRIVATE ${GLFW_PKG_LIBS}) + string(REPLACE ";" " " PKG_CONFIG_LIBS_PRIVATE "${PKG_CONFIG_LIBS_PRIVATE}") +elseif (BUILD_SHARED_LIBS) + set(PKG_CONFIG_LIBS_EXTRA "") +endif () + +join_paths(libdir_for_pc_file "\${exec_prefix}" "${CMAKE_INSTALL_LIBDIR}") +join_paths(includedir_for_pc_file "\${prefix}" "${CMAKE_INSTALL_INCLUDEDIR}") +configure_file(../raylib.pc.in raylib.pc @ONLY) +configure_file(../cmake/raylib-config-version.cmake raylib-config-version.cmake @ONLY) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/raylib.pc DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/raylib-config-version.cmake DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/raylib") +install(FILES ${PROJECT_SOURCE_DIR}/../cmake/raylib-config.cmake DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/raylib") + +# populates raylib_{FOUND, INCLUDE_DIRS, LIBRARIES, LDFLAGS, DEFINITIONS} +include(PopulateConfigVariablesLocally) +populate_config_variables_locally(raylib) diff --git a/deps/raylib/cmake/JoinPaths.cmake b/deps/raylib/cmake/JoinPaths.cmake new file mode 100644 index 0000000..1de3012 --- /dev/null +++ b/deps/raylib/cmake/JoinPaths.cmake @@ -0,0 +1,26 @@ +# This module provides function for joining paths +# known from most languages +# +# Original license: +# SPDX-License-Identifier: (MIT OR CC0-1.0) +# Explicit permission given to distribute this module under +# the terms of the project as described in /LICENSE.rst. +# Copyright 2020 Jan Tojnar +# https://github.com/jtojnar/cmake-snips +# +# Modelled after Python’s os.path.join +# https://docs.python.org/3.7/library/os.path.html#os.path.join +# Windows not supported +function(join_paths joined_path first_path_segment) + set(temp_path "${first_path_segment}") + foreach(current_segment IN LISTS ARGN) + if(NOT ("${current_segment}" STREQUAL "")) + if(IS_ABSOLUTE "${current_segment}") + set(temp_path "${current_segment}") + else() + set(temp_path "${temp_path}/${current_segment}") + endif() + endif() + endforeach() + set(${joined_path} "${temp_path}" PARENT_SCOPE) +endfunction() diff --git a/deps/raylib/cmake/LibraryConfigurations.cmake b/deps/raylib/cmake/LibraryConfigurations.cmake new file mode 100644 index 0000000..fb78983 --- /dev/null +++ b/deps/raylib/cmake/LibraryConfigurations.cmake @@ -0,0 +1,131 @@ +# Set OpenGL_GL_PREFERENCE to new "GLVND" even when legacy library exists and +# cmake is <= 3.10 +# +# See https://cmake.org/cmake/help/latest/policy/CMP0072.html for more +# information. +if(POLICY CMP0072) + cmake_policy(SET CMP0072 NEW) +endif() + +if (${PLATFORM} MATCHES "Desktop") + set(PLATFORM_CPP "PLATFORM_DESKTOP") + + 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") + add_definitions(-DGL_SILENCE_DEPRECATION) + MESSAGE(AUTHOR_WARNING "OpenGL is deprecated starting with macOS 10.14 (Mojave)!") + endif () + elseif (WIN32) + add_definitions(-D_CRT_SECURE_NO_WARNINGS) + find_package(OpenGL QUIET) + set(LIBS_PRIVATE ${OPENGL_LIBRARIES} winmm) + 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") + find_library(OSS_LIBRARY ossaudio) + endif () + + set(LIBS_PRIVATE m pthread ${OPENGL_LIBRARIES} ${OSS_LIBRARY}) + else () + find_library(pthread NAMES pthread) + find_package(OpenGL QUIET) + if ("${OPENGL_LIBRARIES}" STREQUAL "") + set(OPENGL_LIBRARIES "GL") + endif () + + set(LIBS_PRIVATE m atomic pthread ${OPENGL_LIBRARIES} ${OSS_LIBRARY}) + + if ("${CMAKE_SYSTEM_NAME}" MATCHES "(Net|Open)BSD") + find_library(OSS_LIBRARY ossaudio) + set(LIBS_PRIVATE m pthread ${OPENGL_LIBRARIES} ${OSS_LIBRARY}) + endif () + + if (NOT "${CMAKE_SYSTEM_NAME}" MATCHES "(Net|Open)BSD" AND USE_AUDIO) + set(LIBS_PRIVATE ${LIBS_PRIVATE} dl) + endif () + endif () + +elseif (${PLATFORM} MATCHES "Web") + set(PLATFORM_CPP "PLATFORM_WEB") + if(NOT GRAPHICS) + set(GRAPHICS "GRAPHICS_API_OPENGL_ES2") + endif() + set(CMAKE_STATIC_LIBRARY_SUFFIX ".a") + +elseif (${PLATFORM} MATCHES "Android") + set(PLATFORM_CPP "PLATFORM_ANDROID") + set(GRAPHICS "GRAPHICS_API_OPENGL_ES2") + set(CMAKE_POSITION_INDEPENDENT_CODE ON) + list(APPEND raylib_sources ${ANDROID_NDK}/sources/android/native_app_glue/android_native_app_glue.c) + include_directories(${ANDROID_NDK}/sources/android/native_app_glue) + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--exclude-libs,libatomic.a -Wl,--build-id -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -Wl,--warn-shared-textrel -Wl,--fatal-warnings -u ANativeActivity_onCreate -Wl,-undefined,dynamic_lookup") + + find_library(OPENGL_LIBRARY OpenGL) + set(LIBS_PRIVATE m log android EGL GLESv2 OpenSLES atomic c) + +elseif ("${PLATFORM}" MATCHES "DRM") + set(PLATFORM_CPP "PLATFORM_DRM") + set(GRAPHICS "GRAPHICS_API_OPENGL_ES2") + + add_definitions(-D_DEFAULT_SOURCE) + add_definitions(-DEGL_NO_X11) + add_definitions(-DPLATFORM_DRM) + + find_library(GLESV2 GLESv2) + find_library(EGL EGL) + find_library(DRM drm) + find_library(GBM gbm) + + if (NOT CMAKE_CROSSCOMPILING OR NOT CMAKE_SYSROOT) + include_directories(/usr/include/libdrm) + endif () + set(LIBS_PRIVATE ${GLESV2} ${EGL} ${DRM} ${GBM} atomic pthread m dl) + +elseif ("${PLATFORM}" MATCHES "SDL") + find_package(SDL2 REQUIRED) + set(PLATFORM_CPP "PLATFORM_DESKTOP_SDL") + set(LIBS_PRIVATE SDL2::SDL2) + +endif () + +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 (NOT "${SUGGESTED_GRAPHICS}" STREQUAL "" 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 () + +set(LIBS_PRIVATE ${LIBS_PRIVATE} ${OPENAL_LIBRARY}) + +if (${PLATFORM} MATCHES "Desktop") + set(LIBS_PRIVATE ${LIBS_PRIVATE} glfw) +endif () diff --git a/deps/raylib/cmake/LibraryPathToLinkerFlags.cmake b/deps/raylib/cmake/LibraryPathToLinkerFlags.cmake new file mode 100644 index 0000000..05942b7 --- /dev/null +++ b/deps/raylib/cmake/LibraryPathToLinkerFlags.cmake @@ -0,0 +1,24 @@ +function(library_path_to_linker_flags LD_FLAGS LIB_PATHS) + foreach(L ${LIB_PATHS}) + get_filename_component(DIR ${L} PATH) + get_filename_component(LIBFILE ${L} NAME_WE) + STRING(REGEX REPLACE "^lib" "" FILE ${LIBFILE}) + + if (${L} MATCHES "[.]framework$") + set(FILE_OPT "-framework ${FILE}") + set(DIR_OPT "-F${DIR}") + else() + set(FILE_OPT "-l${FILE}") + set(DIR_OPT "-L${DIR}") + endif() + + if ("${DIR}" STREQUAL "" OR "${DIR}" STREQUAL "${LASTDIR}") + set (DIR_OPT "") + endif() + + set(LASTDIR ${DIR}) + + set(${LD_FLAGS} ${${LD_FLAGS}} ${DIR_OPT} ${FILE_OPT} PARENT_SCOPE) + string (REPLACE ";" " " ${LD_FLAGS} "${${LD_FLAGS}}") + endforeach() +endfunction() diff --git a/deps/raylib/cmake/PackConfigurations.cmake b/deps/raylib/cmake/PackConfigurations.cmake new file mode 100644 index 0000000..ad00ca6 --- /dev/null +++ b/deps/raylib/cmake/PackConfigurations.cmake @@ -0,0 +1,18 @@ +# Packaging +SET(CPACK_PACKAGE_NAME "raylib") +SET(CPACK_PACKAGE_CONTACT "raysan5") +SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Simple and easy-to-use library to enjoy videogames programming") +SET(CPACK_PACKAGE_VERSION "${PROJECT_VERSION}") +SET(CPACK_PACKAGE_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}") +SET(CPACK_PACKAGE_VERSION_MINOR "${PROJECT_VERSION_MINOR}") +SET(CPACK_PACKAGE_VERSION_PATCH "${PROJECT_VERSION_PATCH}") +SET(CPACK_PACKAGE_DESCRIPTION_FILE "${PROJECT_SOURCE_DIR}/../README.md") +SET(CPACK_RESOURCE_FILE_WELCOME "${PROJECT_SOURCE_DIR}/../README.md") +SET(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/../LICENSE") +SET(CPACK_PACKAGE_FILE_NAME "raylib-${PROJECT_VERSION}$ENV{RAYLIB_PACKAGE_SUFFIX}") +SET(CPACK_GENERATOR "ZIP;TGZ;DEB;RPM") # Remove this, if you want the NSIS installer on Windows +SET(CPACK_DEBIAN_PACKAGE_SHLIBDEPS OFF) # can be used to generate deps, slow and requires tools. +SET(CPACK_DEBIAN_PACKAGE_DEPENDS "libatomic1, libc6, libglfw3, libglu1-mesa | libglu1, libglx0, libopengl0") +SET(CPACK_DEBIAN_PACKAGE_NAME "lib${CPACK_PACKAGE_NAME}-dev") +SET(CPACK_RPM_PACKAGE_NAME "lib${CPACK_PACKAGE_NAME}-devel") +include(CPack) diff --git a/deps/raylib/cmake/ParseConfigHeader.cmake b/deps/raylib/cmake/ParseConfigHeader.cmake new file mode 100644 index 0000000..797eea3 --- /dev/null +++ b/deps/raylib/cmake/ParseConfigHeader.cmake @@ -0,0 +1,17 @@ +file(READ "${CMAKE_CURRENT_SOURCE_DIR}/src/config.h" CONFIG_HEADER_CONTENT) + +set(BLANK_OR_BACKSLASH_PATTERN "[ \t\r\n\\]") +set(VALID_IDENTIFIER_PATTERN "[A-Za-z_]+[A-Za-z_0-9]*") +set(VALID_VALUE_PATTERN [=["?[A-Za-z_0-9.-]+"?]=]) # not really correct but does the job since the config.h file hopefully will have been checked by a C preprocessor. +set(MACRO_REGEX "(//${BLANK_OR_BACKSLASH_PATTERN}*)?\#define${BLANK_OR_BACKSLASH_PATTERN}+(${VALID_IDENTIFIER_PATTERN})${BLANK_OR_BACKSLASH_PATTERN}+(${VALID_VALUE_PATTERN})") + +string(REGEX MATCHALL ${MACRO_REGEX} MACRO_LIST ${CONFIG_HEADER_CONTENT}) + +set(CONFIG_HEADER_FLAGS ${MACRO_LIST}) +list(FILTER CONFIG_HEADER_FLAGS INCLUDE REGEX "^.+SUPPORT_") +list(TRANSFORM CONFIG_HEADER_FLAGS REPLACE ${MACRO_REGEX} [[\2=OFF]] REGEX "^//") +list(TRANSFORM CONFIG_HEADER_FLAGS REPLACE ${MACRO_REGEX} [[\2=ON]]) + +set(CONFIG_HEADER_VALUES ${MACRO_LIST}) +list(FILTER CONFIG_HEADER_VALUES EXCLUDE REGEX "(^.+SUPPORT_)|(^//)") +list(TRANSFORM CONFIG_HEADER_VALUES REPLACE ${MACRO_REGEX} [[\2=\3]]) diff --git a/deps/raylib/cmake/PopulateConfigVariablesLocally.cmake b/deps/raylib/cmake/PopulateConfigVariablesLocally.cmake new file mode 100644 index 0000000..151070e --- /dev/null +++ b/deps/raylib/cmake/PopulateConfigVariablesLocally.cmake @@ -0,0 +1,11 @@ +macro(populate_config_variables_locally target) + get_property(raylib_INCLUDE_DIRS TARGET ${target} PROPERTY INTERFACE_INCLUDE_DIRECTORIES) + #get_property(raylib_LIBRARIES TARGET ${target} PROPERTY LOCATION) # only works for SHARED + get_property(raylib_LDFLAGS TARGET ${target} PROPERTY INTERFACE_LINK_LIBRARIES) + get_property(raylib_DEFINITIONS TARGET ${target} PROPERTY DEFINITIONS) + + set(raylib_INCLUDE_DIRS "${raylib_INCLUDE_DIRS}" PARENT_SCOPE) + #set(raylib_LIBRARIES "${raylib_INCLUDE_DIRS}" PARENT_SCOPE) + set(raylib_LDFLAGS "${raylib_LDFLAGS}" PARENT_SCOPE) + set(raylib_DEFINITIONS "${raylib_DEFINITIONS}" PARENT_SCOPE) +endmacro() diff --git a/deps/raylib/cmake/Uninstall.cmake b/deps/raylib/cmake/Uninstall.cmake new file mode 100644 index 0000000..c2d34d4 --- /dev/null +++ b/deps/raylib/cmake/Uninstall.cmake @@ -0,0 +1,21 @@ +if(NOT EXISTS "@CMAKE_BINARY_DIR@/install_manifest.txt") + message(FATAL_ERROR "Cannot find install manifest: @CMAKE_BINARY_DIR@/install_manifest.txt") +endif() + +file(READ "@CMAKE_BINARY_DIR@/install_manifest.txt" files) +string(REGEX REPLACE "\n" ";" files "${files}") +foreach(file ${files}) + message(STATUS "Uninstalling $ENV{DESTDIR}${file}") + if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") + exec_program( + "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\"" + OUTPUT_VARIABLE rm_out + RETURN_VALUE rm_retval + ) + if(NOT "${rm_retval}" STREQUAL 0) + message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}") + endif() + else(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") + message(STATUS "File $ENV{DESTDIR}${file} does not exist.") + endif() +endforeach() diff --git a/deps/raylib/cmake/raylib-config-version.cmake b/deps/raylib/cmake/raylib-config-version.cmake new file mode 100644 index 0000000..74fd03c --- /dev/null +++ b/deps/raylib/cmake/raylib-config-version.cmake @@ -0,0 +1,21 @@ +set(PACKAGE_VERSION "@PROJECT_VERSION@") + +if(PACKAGE_FIND_VERSION VERSION_EQUAL PACKAGE_VERSION) + set(PACKAGE_VERSION_EXACT TRUE) +endif() +if(NOT PACKAGE_FIND_VERSION VERSION_GREATER PACKAGE_VERSION) + set(PACKAGE_VERSION_COMPATIBLE TRUE) +else(NOT PACKAGE_FIND_VERSION VERSION_GREATER PACKAGE_VERSION) + set(PACKAGE_VERSION_UNSUITABLE TRUE) +endif(NOT PACKAGE_FIND_VERSION VERSION_GREATER PACKAGE_VERSION) + +# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it: +if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "@CMAKE_SIZEOF_VOID_P@" STREQUAL "") + return() +endif() + +if(NOT CMAKE_SIZEOF_VOID_P STREQUAL "@CMAKE_SIZEOF_VOID_P@") + math(EXPR installedBits "8 * 8") + set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)") + set(PACKAGE_VERSION_UNSUITABLE TRUE) +endif() diff --git a/deps/raylib/cmake/raylib-config.cmake b/deps/raylib/cmake/raylib-config.cmake new file mode 100644 index 0000000..700965c --- /dev/null +++ b/deps/raylib/cmake/raylib-config.cmake @@ -0,0 +1,79 @@ +# - Try to find raylib +# Options: +# raylib_USE_STATIC_LIBS - OFF by default +# raylib_VERBOSE - OFF by default +# Once done, this defines a raylib target that can be passed to +# target_link_libraries as well as following variables: +# +# raylib_FOUND - System has raylib installed +# raylib_INCLUDE_DIRS - The include directories for the raylib header(s) +# raylib_LIBRARIES - The libraries needed to use raylib +# raylib_LDFLAGS - The linker flags needed with raylib +# raylib_DEFINITIONS - Compiler switches required for using raylib + +if (NOT TARGET raylib) + set(XPREFIX PC_RAYLIB) + + find_package(PkgConfig QUIET) + pkg_check_modules(${XPREFIX} QUIET raylib) + + if (raylib_USE_STATIC_LIBS) + set(XPREFIX ${XPREFIX}_STATIC) + endif() + + set(raylib_DEFINITIONS ${${XPREFIX}_CFLAGS}) + + find_path(raylib_INCLUDE_DIR + NAMES raylib.h + HINTS ${${XPREFIX}_INCLUDE_DIRS} + ) + + set(RAYLIB_NAMES raylib) + + if (raylib_USE_STATIC_LIBS) + set(RAYLIB_NAMES libraylib.a raylib.lib ${RAYLIB_NAMES}) + endif() + + find_library(raylib_LIBRARY + NAMES ${RAYLIB_NAMES} + HINTS ${${XPREFIX}_LIBRARY_DIRS} + ) + + set(raylib_LIBRARIES ${raylib_LIBRARY}) + set(raylib_LIBRARY_DIRS ${${XPREFIX}_LIBRARY_DIRS}) + set(raylib_LIBRARY_DIR ${raylib_LIBRARY_DIRS}) + set(raylib_INCLUDE_DIRS ${raylib_INCLUDE_DIR}) + set(raylib_LDFLAGS ${${XPREFIX}_LDFLAGS}) + + include(FindPackageHandleStandardArgs) + find_package_handle_standard_args(raylib DEFAULT_MSG + raylib_LIBRARY + raylib_INCLUDE_DIR + ) + + mark_as_advanced(raylib_LIBRARY raylib_INCLUDE_DIR) + + if (raylib_USE_STATIC_LIBS) + add_library(raylib STATIC IMPORTED GLOBAL) + else() + add_library(raylib SHARED IMPORTED GLOBAL) + endif() + string (REPLACE ";" " " raylib_LDFLAGS "${raylib_LDFLAGS}") + + set_target_properties(raylib + PROPERTIES + IMPORTED_LOCATION "${raylib_LIBRARIES}" + IMPORTED_IMPLIB "${raylib_LIBRARIES}" + INTERFACE_INCLUDE_DIRECTORIES "${raylib_INCLUDE_DIRS}" + INTERFACE_LINK_LIBRARIES "${raylib_LDFLAGS}" + INTERFACE_COMPILE_OPTIONS "${raylib_DEFINITIONS}" + ) + + if (raylib_VERBOSE) + message(STATUS "raylib_FOUND: ${raylib_FOUND}") + message(STATUS "raylib_INCLUDE_DIRS: ${raylib_INCLUDE_DIRS}") + message(STATUS "raylib_LIBRARIES: ${raylib_LIBRARIES}") + message(STATUS "raylib_LDFLAGS: ${raylib_LDFLAGS}") + message(STATUS "raylib_DEFINITIONS: ${raylib_DEFINITIONS}") + endif() +endif() |