# Setup the project and settings project(raylib) include("../utils.cmake") set(raylib_VERSION_MAJOR 1) set(raylib_VERSION_MINOR 8) set(RAYLIB raylib) # Name of the generated library ### Config options ### # Build a static or shared raylib? set(SHARED_RAYLIB OFF CACHE BOOL "Build raylib as a dynamic library") # Platform set(PLATFORM "Desktop" CACHE STRING "Platform to build for.") set_property(CACHE PLATFORM PROPERTY STRINGS "Desktop" "Web" "Android" "Raspberry Pi") # OpenGL version set(OPENGL_VERSION "3.3" CACHE STRING "OpenGL Version to build raylib with") set_property(CACHE OPENGL_VERSION PROPERTY STRINGS "3.3" "2.1" "1.1" "ES 2.0") ### Config options ### # Translate the config options to what raylib wants if(${PLATFORM} MATCHES "Desktop") set(PLATFORM "PLATFORM_DESKTOP") # OpenGL version if (${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") endif() # Need to force OpenGL 3.3 on OS X # See: https://github.com/raysan5/raylib/issues/341 if(APPLE) set(GRAPHICS "GRAPHICS_API_OPENGL_33") endif() elseif(${PLATFORM} MATCHES "Web") set(PLATFORM "PLATFORM_WEB") set(GRAPHICS "GRAPHICS_API_OPENGL_ES2") # Need to use `emcc` set(CMAKE_C_COMPILER "emcc") set(CMAKE_CXX_COMPILER "em++") # Change the name of the output library set(RAYLIB "libraylib.bc") elseif(${PLATFORM} MATCHES "Android") set(PLATFORM "PLATFORM_ANDROID") set(GRAPHICS "GRAPHICS_API_OPENGL_ES2") elseif(${PLATFORM} MATCHES "Raspberry Pi") set(PLATFORM "PLATFORM_RPI") set(GRAPHICS "GRAPHICS_API_OPENGL_ES2") endif() # Get the sources together file(GLOB raylib_sources *.c) file(GLOB stb_vorbis external/stb_vorbis.c) set(sources ${raylib_sources} ${stb_vorbis}) # Which platform? if(${PLATFORM} MATCHES "PLATFORM_DESKTOP") # Build a static or shared raylib? # TODO clean this up a bit? if(${SHARED_RAYLIB}) # Shared library add_library(${RAYLIB} SHARED ${sources}) # Will link -framework (if on OS X) link_os_x_frameworks(raylib) else() # Static library add_library(${RAYLIB} STATIC ${sources}) if(LINUX) # On Linux, need to link a few extra things for static target_link_libraries(${RAYLIB} m pthread dl) target_link_libraries(${RAYLIB} X11 Xrandr Xinerama Xi Xxf86vm Xcursor) # X11 stuff endif() endif() # Always need to link OpenAL and OpenGL if(LINUX) # Elsewhere (such as Linux), need `-lopenal -lGL` target_link_libraries(${RAYLIB} openal) target_link_libraries(${RAYLIB} GL) endif() # Add in GLFW as a linking target target_link_libraries(${RAYLIB} glfw) # Library file & Header set_target_properties(${RAYLIB} PROPERTIES PUBLIC_HEADER "raylib.h") install( TARGETS ${RAYLIB} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib PUBLIC_HEADER DESTINATION include ) # Copy the header files to the build directory file(COPY "raylib.h" DESTINATION ".") file(COPY "rlgl.h" DESTINATION ".") file(COPY "physac.h" DESTINATION ".") file(COPY "raymath.h" DESTINATION ".") file(COPY "audio.h" DESTINATION ".") elseif(${PLATFORM} MATCHES "PLATFORM_WEB") # For the web. add_executable(${RAYLIB} ${sources}) endif() # Set the compile flags to raylib target_compile_definitions(${RAYLIB} PUBLIC ${PLATFORM} PUBLIC ${GRAPHICS} ) # Print the flags for the user message(STATUS "Compiling with the flags:") message(STATUS " PLATFORM=" ${PLATFORM}) message(STATUS " GRAPHICS=" ${GRAPHICS})