]> git.sesse.net Git - pistorm/blobdiff - raylib/CMakeLists.txt
[MEGA-WIP] Raylib-based RTG output
[pistorm] / raylib / CMakeLists.txt
diff --git a/raylib/CMakeLists.txt b/raylib/CMakeLists.txt
new file mode 100644 (file)
index 0000000..d1d8065
--- /dev/null
@@ -0,0 +1,122 @@
+# Setup the project and settings
+project(raylib C)
+set(PROJECT_VERSION 3.5.0)
+set(API_VERSION 351)
+
+include(GNUInstallDirs)
+include(JoinPaths)
+
+# Sets build type if not set by now
+if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
+    if(RAYLIB_IS_MAIN)
+        set(default_build_type Debug)
+    else()
+        message(WARNING "Default build type is not set (CMAKE_BUILD_TYPE)")
+    endif()
+
+    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_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
+endif()
+
+# Used as public API to be included into other projects
+set(raylib_public_headers
+    raylib.h
+    rlgl.h
+    physac.h
+    raymath.h
+    raudio.h
+    )
+
+# Sources to be compiled
+set(raylib_sources
+    core.c
+    models.c
+    shapes.c
+    text.c
+    textures.c
+    utils.c
+    )
+
+# <root>/cmake/GlfwImport.cmake handles the details around the inclusion of glfw
+include(GlfwImport)
+
+
+if (USE_AUDIO)
+    MESSAGE(STATUS "Audio Backend: miniaudio")
+    list(APPEND raylib_sources raudio.c)
+else ()
+    MESSAGE(STATUS "Audio Backend: None (-DUSE_AUDIO=OFF)")
+endif ()
+
+# Sets additional platform options and link libraries for each platform
+# also selects the proper graphics API and version for that platform
+# Produces a variable LIBS_PRIVATE that will be used later
+include(LibraryConfigurations)
+
+add_library(raylib ${raylib_sources} ${raylib_public_headers})
+
+if (NOT BUILD_SHARED_LIBS)
+    MESSAGE(STATUS "Building raylib static library")
+    add_library(raylib_static ALIAS raylib)
+else()
+    MESSAGE(STATUS "Building raylib shared library")
+    if (MSVC)
+        target_compile_definitions(raylib
+                                   PRIVATE $<BUILD_INTERFACE:BUILD_LIBTYPE_SHARED>
+                                   INTERFACE $<INSTALL_INTERFACE:USE_LIBTYPE_SHARED>
+                                   )
+    endif ()
+endif()
+
+set_target_properties(raylib PROPERTIES
+                      PUBLIC_HEADER "${raylib_public_headers}"
+                      VERSION ${PROJECT_VERSION}
+                      SOVERSION ${API_VERSION}
+                      )
+
+if (WITH_PIC OR BUILD_SHARED_LIBS)
+    set_property(TARGET raylib PROPERTY POSITION_INDEPENDENT_CODE ON)
+endif ()
+
+target_link_libraries(raylib "${LIBS_PRIVATE}")
+
+# Sets some compile time definitions for the pre-processor
+# If CUSTOMIZE_BUILD option is on you will not use config.h by default
+# and you will be able to select more build options
+include(CompileDefinitions)
+
+# Registering include directories
+target_include_directories(raylib
+                           PUBLIC
+                           $<INSTALL_INTERFACE:include>
+                           $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
+                           PRIVATE
+                           ${CMAKE_CURRENT_SOURCE_DIR}
+                           ${OPENGL_INCLUDE_DIR}
+                           ${OPENAL_INCLUDE_DIR}
+                           )
+
+# Copy the header files to the build directory for convenience
+file(COPY ${raylib_public_headers} DESTINATION "include")
+
+# Includes information on how the library will be installed on the system
+# when cmake --install is run
+include(InstallConfigurations)
+
+# Print the flags for the user
+if (DEFINED CMAKE_BUILD_TYPE)
+    message(STATUS "Generated build type: ${CMAKE_BUILD_TYPE}")
+else ()
+    message(STATUS "Generated config types: ${CMAKE_CONFIGURATION_TYPES}")
+endif ()
+
+message(STATUS "Compiling with the flags:")
+message(STATUS "  PLATFORM=" ${PLATFORM_CPP})
+message(STATUS "  GRAPHICS=" ${GRAPHICS})
+
+# Options if you want to create an installer using CPack
+include(PackConfigurations)
+
+enable_testing()