diff options
author | Luca Sas <sas.luca.alex@gmail.com> | 2020-03-06 17:48:44 +0000 |
---|---|---|
committer | Luca Sas <sas.luca.alex@gmail.com> | 2020-03-06 17:48:44 +0000 |
commit | 581538a8b371c0a9003dc0f1bf081222b8c4fdd9 (patch) | |
tree | f5759a699424211d4a66e24365a596072818ab33 /libs/raylib/cmake | |
download | gamejam-slgj-2024-581538a8b371c0a9003dc0f1bf081222b8c4fdd9.tar.gz gamejam-slgj-2024-581538a8b371c0a9003dc0f1bf081222b8c4fdd9.tar.bz2 gamejam-slgj-2024-581538a8b371c0a9003dc0f1bf081222b8c4fdd9.zip |
Setup the project
Diffstat (limited to 'libs/raylib/cmake')
-rw-r--r-- | libs/raylib/cmake/AddIfFlagCompiles.cmake | 12 | ||||
-rw-r--r-- | libs/raylib/cmake/BuildType.cmake | 43 | ||||
-rw-r--r-- | libs/raylib/cmake/CheckFileSystemSymlinkSupport.cmake | 13 | ||||
-rw-r--r-- | libs/raylib/cmake/EnumOption.cmake | 9 | ||||
-rw-r--r-- | libs/raylib/cmake/LibraryPathToLinkerFlags.cmake | 24 | ||||
-rw-r--r-- | libs/raylib/cmake/PopulateConfigVariablesLocally.cmake | 11 | ||||
-rw-r--r-- | libs/raylib/cmake/emscripten.cmake | 15 | ||||
-rw-r--r-- | libs/raylib/cmake/raylib-config-version.cmake | 21 | ||||
-rw-r--r-- | libs/raylib/cmake/raylib-config.cmake | 76 | ||||
-rw-r--r-- | libs/raylib/cmake/test-pkgconfig.sh | 21 |
10 files changed, 245 insertions, 0 deletions
diff --git a/libs/raylib/cmake/AddIfFlagCompiles.cmake b/libs/raylib/cmake/AddIfFlagCompiles.cmake new file mode 100644 index 0000000..403607b --- /dev/null +++ b/libs/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/libs/raylib/cmake/BuildType.cmake b/libs/raylib/cmake/BuildType.cmake new file mode 100644 index 0000000..80ccdee --- /dev/null +++ b/libs/raylib/cmake/BuildType.cmake @@ -0,0 +1,43 @@ +# Set a default build type if none was specified +set(default_build_type "Release") +if(EXISTS "${CMAKE_SOURCE_DIR}/.git") + set(default_build_type "Debug") +endif() + +if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + message(STATUS "Setting build type to '${default_build_type}' as none was specified.") + set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE + STRING "Choose the type of build." FORCE) + # Set the possible values of build type for cmake-gui + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" + "MinSizeRel" "RelWithDebInfo") +endif() + +# Taken from the https://github.com/OpenChemistry/tomviz project +# Copyright (c) 2014-2017, Kitware, Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +# 2. Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# 3. Neither the name of the copyright holder nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR +# TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/libs/raylib/cmake/CheckFileSystemSymlinkSupport.cmake b/libs/raylib/cmake/CheckFileSystemSymlinkSupport.cmake new file mode 100644 index 0000000..798840e --- /dev/null +++ b/libs/raylib/cmake/CheckFileSystemSymlinkSupport.cmake @@ -0,0 +1,13 @@ +# Populates a ${FILESYSTEM_LACKS_SYMLINKS} variable +message(STATUS "Testing if file system supports symlinks") +execute_process( + COMMAND ${CMAKE_COMMAND} -E create_symlink CMakeLists.txt "${CMAKE_CURRENT_BINARY_DIR}/TestingIfSymlinkWorks" + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + RESULT_VARIABLE FILESYSTEM_LACKS_SYMLINKS +) +If (FILESYSTEM_LACKS_SYMLINKS) + message(STATUS "Testing if file system supports symlinks -- unsupported") +else() + message(STATUS "Testing if file system supports symlinks -- supported") +endif() + diff --git a/libs/raylib/cmake/EnumOption.cmake b/libs/raylib/cmake/EnumOption.cmake new file mode 100644 index 0000000..d7d343f --- /dev/null +++ b/libs/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/libs/raylib/cmake/LibraryPathToLinkerFlags.cmake b/libs/raylib/cmake/LibraryPathToLinkerFlags.cmake new file mode 100644 index 0000000..05942b7 --- /dev/null +++ b/libs/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/libs/raylib/cmake/PopulateConfigVariablesLocally.cmake b/libs/raylib/cmake/PopulateConfigVariablesLocally.cmake new file mode 100644 index 0000000..151070e --- /dev/null +++ b/libs/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/libs/raylib/cmake/emscripten.cmake b/libs/raylib/cmake/emscripten.cmake new file mode 100644 index 0000000..621ae78 --- /dev/null +++ b/libs/raylib/cmake/emscripten.cmake @@ -0,0 +1,15 @@ +SET(CMAKE_SYSTEM_NAME Linux) + +SET(CMAKE_C_COMPILER emcc) +SET(CMAKE_CXX_COMPILER em++) +if(NOT DEFINED CMAKE_AR) + find_program(CMAKE_AR NAMES emar) +endif() +if(NOT DEFINED CMAKE_RANLIB) + find_program(CMAKE_RANLIB NAMES emranlib) +endif() + +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH) +set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) diff --git a/libs/raylib/cmake/raylib-config-version.cmake b/libs/raylib/cmake/raylib-config-version.cmake new file mode 100644 index 0000000..74fd03c --- /dev/null +++ b/libs/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/libs/raylib/cmake/raylib-config.cmake b/libs/raylib/cmake/raylib-config.cmake new file mode 100644 index 0000000..b535874 --- /dev/null +++ b/libs/raylib/cmake/raylib-config.cmake @@ -0,0 +1,76 @@ +# - 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 + +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}" + 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() diff --git a/libs/raylib/cmake/test-pkgconfig.sh b/libs/raylib/cmake/test-pkgconfig.sh new file mode 100644 index 0000000..ccbdfb6 --- /dev/null +++ b/libs/raylib/cmake/test-pkgconfig.sh @@ -0,0 +1,21 @@ +#!/bin/sh +# Test if including/linking/running an installed raylib works + +set -x +export LD_RUN_PATH=/usr/local/lib + +CFLAGS="-Wall -Wextra -Werror $CFLAGS" +if [ "$ARCH" = "i386" ]; then +CFLAGS="-m32 $CLFAGS" +fi + +cat << EOF | ${CC:-cc} -otest -xc - $(pkg-config --libs --cflags $@ raylib.pc) $CFLAGS && exec ./test +#include <stdlib.h> +#include <raylib.h> + +int main(void) +{ + int num = GetRandomValue(42, 1337); + return 42 <= num && num <= 1337 ? EXIT_SUCCESS : EXIT_FAILURE; +} +EOF |