mirror of
				https://github.com/raysan5/raylib.git
				synced 2025-11-04 09:44:20 +00:00 
			
		
		
		
	cmake: Fix PLATFORM_WEB build
Did this ever work? Surely, doesn't look like it...
This commit is contained in:
		
							
								
								
									
										36
									
								
								.travis.yml
									
									
									
									
									
								
							
							
						
						
									
										36
									
								
								.travis.yml
									
									
									
									
									
								
							@@ -5,7 +5,8 @@ git:
 | 
				
			|||||||
  depth: 3
 | 
					  depth: 3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# TODO we could use a 32 bit Docker container for running true 32-bit tests
 | 
					# TODO we could use a 32 bit Docker container for running true 32-bit tests
 | 
				
			||||||
# services: - docker
 | 
					services:
 | 
				
			||||||
 | 
					  - docker
 | 
				
			||||||
 | 
					
 | 
				
			||||||
matrix:
 | 
					matrix:
 | 
				
			||||||
  include:
 | 
					  include:
 | 
				
			||||||
@@ -16,10 +17,10 @@ matrix:
 | 
				
			|||||||
      env: ARCH=amd64
 | 
					      env: ARCH=amd64
 | 
				
			||||||
      sudo: required
 | 
					      sudo: required
 | 
				
			||||||
    - os: linux
 | 
					    - os: linux
 | 
				
			||||||
      env: ARCH=amd64 GLFW=SYSTEM
 | 
					      env: ARCH=amd64 GLFW=SYSTEM RELEASE=NO
 | 
				
			||||||
      sudo: required
 | 
					      sudo: required
 | 
				
			||||||
    - os: linux
 | 
					    - os: linux
 | 
				
			||||||
      env: USE_WAYLAND=ON ARCH=amd64
 | 
					      env: USE_WAYLAND=ON ARCH=amd64 RELEASE=NO
 | 
				
			||||||
      sudo: required
 | 
					      sudo: required
 | 
				
			||||||
      addons:
 | 
					      addons:
 | 
				
			||||||
          apt:
 | 
					          apt:
 | 
				
			||||||
@@ -30,13 +31,15 @@ matrix:
 | 
				
			|||||||
    - os: osx
 | 
					    - os: osx
 | 
				
			||||||
      env: ARCH=universal
 | 
					      env: ARCH=universal
 | 
				
			||||||
    - os: linux
 | 
					    - os: linux
 | 
				
			||||||
      env: ARCH=arm64-android
 | 
					      env: ARCH=arm64-android RELEASE=NO
 | 
				
			||||||
 | 
					      sudo: required
 | 
				
			||||||
 | 
					    - os: linux
 | 
				
			||||||
 | 
					      env: ARCH=html5 RELEASE=NO
 | 
				
			||||||
      sudo: required
 | 
					      sudo: required
 | 
				
			||||||
 | 
					
 | 
				
			||||||
before_script:
 | 
					before_script:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
before_install:
 | 
					before_install:
 | 
				
			||||||
  - export PLATFORM=Desktop
 | 
					 | 
				
			||||||
  - if [ "$TRAVIS_OS_NAME" == "linux" ]; then
 | 
					  - if [ "$TRAVIS_OS_NAME" == "linux" ]; then
 | 
				
			||||||
      if [[ "$ARCH" == *-android ]]; then
 | 
					      if [[ "$ARCH" == *-android ]]; then
 | 
				
			||||||
        export RAYLIB_PACKAGE_SUFFIX="-Android-arm64";
 | 
					        export RAYLIB_PACKAGE_SUFFIX="-Android-arm64";
 | 
				
			||||||
@@ -44,9 +47,14 @@ before_install:
 | 
				
			|||||||
        unzip -qq android-ndk*.zip;
 | 
					        unzip -qq android-ndk*.zip;
 | 
				
			||||||
        android-ndk*/build/tools/make_standalone_toolchain.py --arch arm64 --api 21 --install-dir /tmp/android-toolchain;
 | 
					        android-ndk*/build/tools/make_standalone_toolchain.py --arch arm64 --api 21 --install-dir /tmp/android-toolchain;
 | 
				
			||||||
        export PATH=/tmp/android-toolchain/bin:$PATH;
 | 
					        export PATH=/tmp/android-toolchain/bin:$PATH;
 | 
				
			||||||
        export PLATFORM=Android;
 | 
					        export CMAKE_ARCH_ARGS='-DPLATFORM=Android';
 | 
				
			||||||
        export CC=aarch64-linux-android-clang;
 | 
					        export CC=aarch64-linux-android-clang;
 | 
				
			||||||
        export CXX=aarch64-linux-android-clang++;
 | 
					        export CXX=aarch64-linux-android-clang++;
 | 
				
			||||||
 | 
					      elif [ "$ARCH" == "html5" ]; then
 | 
				
			||||||
 | 
					        export RAYLIB_PACKAGE_SUFFIX="-html5";
 | 
				
			||||||
 | 
					        docker run --privileged=true -dit --name emscripten -v $(pwd):/src trzeci/emscripten:sdk-incoming-64bit bash;
 | 
				
			||||||
 | 
					        export CMAKE_ARCH_ARGS='-DPLATFORM=Web -DCMAKE_TOOLCHAIN_FILE=../cmake/emscripten.cmake';
 | 
				
			||||||
 | 
					        export RUNNER='docker exec -it emscripten cmake -E chdir build';
 | 
				
			||||||
      else
 | 
					      else
 | 
				
			||||||
        sudo apt-get install -y gcc-multilib
 | 
					        sudo apt-get install -y gcc-multilib
 | 
				
			||||||
                                libasound2-dev:$ARCH
 | 
					                                libasound2-dev:$ARCH
 | 
				
			||||||
@@ -68,10 +76,10 @@ before_install:
 | 
				
			|||||||
      export RAYLIB_PACKAGE_SUFFIX="-macOS";
 | 
					      export RAYLIB_PACKAGE_SUFFIX="-macOS";
 | 
				
			||||||
      if [ "$GLFW" == "SYSTEM" ]; then brew update; brew install glfw; fi;
 | 
					      if [ "$GLFW" == "SYSTEM" ]; then brew update; brew install glfw; fi;
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
  - "$CC --version"
 | 
					  - mkdir build
 | 
				
			||||||
 | 
					  - $RUNNER $CC --version
 | 
				
			||||||
 | 
					
 | 
				
			||||||
script:
 | 
					script:
 | 
				
			||||||
  - mkdir build
 | 
					 | 
				
			||||||
  - cd build
 | 
					  - cd build
 | 
				
			||||||
  - if test -n "${USE_WAYLAND}";
 | 
					  - if test -n "${USE_WAYLAND}";
 | 
				
			||||||
      then wget https://mirrors.kernel.org/ubuntu/pool/universe/e/extra-cmake-modules/extra-cmake-modules_5.38.0a-0ubuntu1_amd64.deb;
 | 
					      then wget https://mirrors.kernel.org/ubuntu/pool/universe/e/extra-cmake-modules/extra-cmake-modules_5.38.0a-0ubuntu1_amd64.deb;
 | 
				
			||||||
@@ -81,12 +89,12 @@ script:
 | 
				
			|||||||
      git checkout 1.12 && ./autogen.sh --prefix=/usr && make && sudo make install;
 | 
					      git checkout 1.12 && ./autogen.sh --prefix=/usr && make && sudo make install;
 | 
				
			||||||
      popd;
 | 
					      popd;
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
  - cmake $CMAKE_ARCH_ARGS -DMACOS_FATLIB=ON -DSTATIC=ON -DSHARED=ON -DBUILD_EXAMPLES=ON -DBUILD_GAMES=ON -DUSE_EXTERNAL_GLFW=IF_POSSIBLE -DUSE_WAYLAND=${USE_WAYLAND} -DPLATFORM=${PLATFORM} ..
 | 
					  - $RUNNER cmake $CMAKE_ARCH_ARGS -DMACOS_FATLIB=ON -DSTATIC=ON -DSHARED=ON -DBUILD_EXAMPLES=ON -DBUILD_GAMES=ON -DUSE_EXTERNAL_GLFW=IF_POSSIBLE -DUSE_WAYLAND=${USE_WAYLAND} ..
 | 
				
			||||||
  - make VERBOSE=1
 | 
					  - $RUNNER make VERBOSE=1
 | 
				
			||||||
  - if [ "$GLFW" != "SYSTEM" ]; then make package; fi;
 | 
					  - if [ "$RELEASE" != "NO" ]; then $RUNNER make package; fi;
 | 
				
			||||||
  - sudo make install
 | 
					  - sudo $RUNNER make install
 | 
				
			||||||
  - pkg-config --static --libs raylib
 | 
					  - if [[ "$ARCH" != *-android && "$ARCH" != html5 ]]; then
 | 
				
			||||||
  - if [[ "$ARCH" != *-android ]]; then
 | 
					      pkg-config --static --libs raylib;
 | 
				
			||||||
      nm -g release/libraylib.a | grep glfwGetProcAddress || (echo "libraylib.a doesn't contain GLFW symbols! Aborting..." && false);
 | 
					      nm -g release/libraylib.a | grep glfwGetProcAddress || (echo "libraylib.a doesn't contain GLFW symbols! Aborting..." && false);
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										15
									
								
								cmake/emscripten.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								cmake/emscripten.cmake
									
									
									
									
									
										Normal file
									
								
							@@ -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)
 | 
				
			||||||
@@ -5,7 +5,11 @@ add_definitions("-DRAYLIB_CMAKE=1")
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# Linking for OS X -framework options
 | 
					# Linking for OS X -framework options
 | 
				
			||||||
# Will do nothing on other OSes
 | 
					# Will do nothing on other OSes
 | 
				
			||||||
if(APPLE)
 | 
					if(${PLATFORM} MATCHES "Android")
 | 
				
			||||||
 | 
					  find_library(OPENGL_LIBRARY OpenGL)
 | 
				
			||||||
 | 
					  set(LIBS_PRIVATE m log android EGL GLESv2 OpenSLES atomic c)
 | 
				
			||||||
 | 
					elseif(${PLATFORM} MATCHES "Web")
 | 
				
			||||||
 | 
					elseif(APPLE)
 | 
				
			||||||
  find_library(OPENGL_LIBRARY OpenGL)
 | 
					  find_library(OPENGL_LIBRARY OpenGL)
 | 
				
			||||||
  find_library(COCOA_LIBRARY Cocoa)
 | 
					  find_library(COCOA_LIBRARY Cocoa)
 | 
				
			||||||
  find_library(IOKIT_LIBRARY IOKit)
 | 
					  find_library(IOKIT_LIBRARY IOKit)
 | 
				
			||||||
@@ -16,9 +20,6 @@ if(APPLE)
 | 
				
			|||||||
                   ${IOKIT_LIBRARY} ${COREFOUNDATION_LIBRARY} ${COREVIDEO_LIBRARY})
 | 
					                   ${IOKIT_LIBRARY} ${COREFOUNDATION_LIBRARY} ${COREVIDEO_LIBRARY})
 | 
				
			||||||
elseif(WIN32)
 | 
					elseif(WIN32)
 | 
				
			||||||
  # no pkg-config --static on Windows yet...
 | 
					  # no pkg-config --static on Windows yet...
 | 
				
			||||||
elseif(${PLATFORM} MATCHES "Android")
 | 
					 | 
				
			||||||
  find_library(OPENGL_LIBRARY OpenGL)
 | 
					 | 
				
			||||||
  set(LIBS_PRIVATE m log android EGL GLESv2 OpenSLES atomic c)
 | 
					 | 
				
			||||||
else()
 | 
					else()
 | 
				
			||||||
  find_library(pthread NAMES pthread)
 | 
					  find_library(pthread NAMES pthread)
 | 
				
			||||||
  find_package(OpenGL QUIET)
 | 
					  find_package(OpenGL QUIET)
 | 
				
			||||||
@@ -87,6 +88,9 @@ function(link_libraries_to_executable executable)
 | 
				
			|||||||
  # Link raylib
 | 
					  # Link raylib
 | 
				
			||||||
  if (TARGET raylib_shared)
 | 
					  if (TARGET raylib_shared)
 | 
				
			||||||
    target_link_libraries(${executable} raylib_shared)
 | 
					    target_link_libraries(${executable} raylib_shared)
 | 
				
			||||||
 | 
					  elseif(${PLATFORM} MATCHES "Web")
 | 
				
			||||||
 | 
					    target_link_libraries(${executable} ${__PKG_CONFIG_LIBS_PRIVATE})
 | 
				
			||||||
 | 
					    target_link_libraries(${executable} raylib)
 | 
				
			||||||
  else()
 | 
					  else()
 | 
				
			||||||
    target_link_libraries(${executable} raylib ${__PKG_CONFIG_LIBS_PRIVATE})
 | 
					    target_link_libraries(${executable} raylib ${__PKG_CONFIG_LIBS_PRIVATE})
 | 
				
			||||||
  endif()
 | 
					  endif()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,5 @@
 | 
				
			|||||||
# Setup the project and settings
 | 
					# Setup the project and settings
 | 
				
			||||||
project(raylib)
 | 
					project(raylib C)
 | 
				
			||||||
include(GNUInstallDirs)
 | 
					include(GNUInstallDirs)
 | 
				
			||||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../cmake")
 | 
					list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../cmake")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -13,14 +13,6 @@ configure_file(config.h.in ${CMAKE_BINARY_DIR}/cmake/config.h)
 | 
				
			|||||||
include_directories(${CMAKE_BINARY_DIR})
 | 
					include_directories(${CMAKE_BINARY_DIR})
 | 
				
			||||||
include_directories(SYSTEM .)
 | 
					include_directories(SYSTEM .)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if(MACOS_FATLIB)
 | 
					 | 
				
			||||||
    if (CMAKE_OSX_ARCHITECTURES)
 | 
					 | 
				
			||||||
        message(FATAL_ERROR "User supplied -DCMAKE_OSX_ARCHITECTURES overrides -DMACOS_FATLIB=ON")
 | 
					 | 
				
			||||||
    else()
 | 
					 | 
				
			||||||
        SET(CMAKE_OSX_ARCHITECTURES "x86_64;i386")
 | 
					 | 
				
			||||||
    endif()
 | 
					 | 
				
			||||||
endif()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Get the sources together
 | 
					# Get the sources together
 | 
				
			||||||
file(GLOB raylib_sources *.c)
 | 
					file(GLOB raylib_sources *.c)
 | 
				
			||||||
list(REMOVE_ITEM raylib_sources ${CMAKE_CURRENT_SOURCE_DIR}/rglfw.c)
 | 
					list(REMOVE_ITEM raylib_sources ${CMAKE_CURRENT_SOURCE_DIR}/rglfw.c)
 | 
				
			||||||
@@ -72,9 +64,9 @@ if(${PLATFORM} MATCHES "Desktop")
 | 
				
			|||||||
    set(GRAPHICS "GRAPHICS_API_OPENGL_ES2")
 | 
					    set(GRAPHICS "GRAPHICS_API_OPENGL_ES2")
 | 
				
			||||||
  endif()
 | 
					  endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if(APPLE)
 | 
				
			||||||
    # Need to force OpenGL 3.3 on OS X
 | 
					    # Need to force OpenGL 3.3 on OS X
 | 
				
			||||||
    # See: https://github.com/raysan5/raylib/issues/341
 | 
					    # See: https://github.com/raysan5/raylib/issues/341
 | 
				
			||||||
  if(APPLE)
 | 
					 | 
				
			||||||
    set(GRAPHICS "GRAPHICS_API_OPENGL_33")
 | 
					    set(GRAPHICS "GRAPHICS_API_OPENGL_33")
 | 
				
			||||||
    link_libraries("${LIBS_PRIVATE}")
 | 
					    link_libraries("${LIBS_PRIVATE}")
 | 
				
			||||||
  elseif(WIN32)
 | 
					  elseif(WIN32)
 | 
				
			||||||
@@ -85,12 +77,9 @@ elseif(${PLATFORM} MATCHES "Web")
 | 
				
			|||||||
  set(PLATFORM "PLATFORM_WEB")
 | 
					  set(PLATFORM "PLATFORM_WEB")
 | 
				
			||||||
  set(GRAPHICS "GRAPHICS_API_OPENGL_ES2")
 | 
					  set(GRAPHICS "GRAPHICS_API_OPENGL_ES2")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # Need to use `emcc`
 | 
					  set(CMAKE_C_FLAGS "-s USE_GLFW=3 -s ASSERTIONS=1 --profiling")
 | 
				
			||||||
  set(CMAKE_C_COMPILER "emcc")
 | 
					 | 
				
			||||||
  set(CMAKE_CXX_COMPILER "em++")
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # Change the name of the output library
 | 
					  # Change the name of the output library
 | 
				
			||||||
  set(RAYLIB "libraylib.bc")
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
elseif(${PLATFORM} MATCHES "Android")
 | 
					elseif(${PLATFORM} MATCHES "Android")
 | 
				
			||||||
  set(PLATFORM "PLATFORM_ANDROID")
 | 
					  set(PLATFORM "PLATFORM_ANDROID")
 | 
				
			||||||
@@ -110,13 +99,7 @@ elseif(${PLATFORM} MATCHES "Raspberry Pi")
 | 
				
			|||||||
  set(GRAPHICS "GRAPHICS_API_OPENGL_ES2")
 | 
					  set(GRAPHICS "GRAPHICS_API_OPENGL_ES2")
 | 
				
			||||||
endif()
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Which platform?
 | 
					if(${SHARED})
 | 
				
			||||||
if(${PLATFORM} MATCHES "PLATFORM_WEB")
 | 
					 | 
				
			||||||
  # For the web.
 | 
					 | 
				
			||||||
  add_executable(${RAYLIB} ${sources})
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
else()
 | 
					 | 
				
			||||||
  if(${SHARED})
 | 
					 | 
				
			||||||
  add_library(${RAYLIB}_shared SHARED ${sources})
 | 
					  add_library(${RAYLIB}_shared SHARED ${sources})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  target_compile_definitions(${RAYLIB}_shared
 | 
					  target_compile_definitions(${RAYLIB}_shared
 | 
				
			||||||
@@ -158,16 +141,15 @@ else()
 | 
				
			|||||||
      PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
 | 
					      PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
  endif()
 | 
					  endif()
 | 
				
			||||||
  endif(${SHARED})
 | 
					endif(${SHARED})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(${STATIC})
 | 
				
			||||||
 | 
					  if(${PLATFORM} MATCHES "PLATFORM_WEB")
 | 
				
			||||||
 | 
					    set(CMAKE_STATIC_LIBRARY_SUFFIX ".bc")
 | 
				
			||||||
 | 
					  endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if(${STATIC})
 | 
					 | 
				
			||||||
  add_library(${RAYLIB} STATIC ${sources})
 | 
					  add_library(${RAYLIB} STATIC ${sources})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    target_compile_definitions(${RAYLIB}
 | 
					 | 
				
			||||||
        PUBLIC ${PLATFORM}
 | 
					 | 
				
			||||||
        PUBLIC ${GRAPHICS}
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  set(PKG_CONFIG_LIBS_PRIVATE ${__PKG_CONFIG_LIBS_PRIVATE})
 | 
					  set(PKG_CONFIG_LIBS_PRIVATE ${__PKG_CONFIG_LIBS_PRIVATE})
 | 
				
			||||||
  if (${PLATFORM} MATCHES "Desktop")
 | 
					  if (${PLATFORM} MATCHES "Desktop")
 | 
				
			||||||
    target_link_libraries(${RAYLIB} glfw ${GLFW_LIBRARIES})
 | 
					    target_link_libraries(${RAYLIB} glfw ${GLFW_LIBRARIES})
 | 
				
			||||||
@@ -181,18 +163,23 @@ else()
 | 
				
			|||||||
    ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
 | 
					    ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
 | 
				
			||||||
    PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
 | 
					    PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
  endif(${STATIC})
 | 
					endif(${STATIC})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  configure_file(../raylib.pc.in raylib.pc @ONLY)
 | 
					configure_file(../raylib.pc.in raylib.pc @ONLY)
 | 
				
			||||||
  install(FILES ${CMAKE_BINARY_DIR}/release/raylib.pc DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
 | 
					install(FILES ${CMAKE_BINARY_DIR}/release/raylib.pc DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 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 ".")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					target_compile_definitions(${RAYLIB}
 | 
				
			||||||
 | 
					    PUBLIC ${PLATFORM}
 | 
				
			||||||
 | 
					    PUBLIC ${GRAPHICS}
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # 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 ".")
 | 
					 | 
				
			||||||
endif()
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Print the flags for the user
 | 
					# Print the flags for the user
 | 
				
			||||||
message(STATUS "Compiling with the flags:")
 | 
					message(STATUS "Compiling with the flags:")
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,13 +1,24 @@
 | 
				
			|||||||
### Config options ###
 | 
					### Config options ###
 | 
				
			||||||
include(CMakeDependentOption)
 | 
					include(CMakeDependentOption)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set(PLATFORM "Desktop" CACHE STRING "Platform to build for.")
 | 
				
			||||||
 | 
					set_property(CACHE PLATFORM PROPERTY STRINGS "Desktop" "Web" "Android" "Raspberry Pi")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Shared library is always PIC. Static library should be PIC too if linked into a shared library
 | 
					# Shared library is always PIC. Static library should be PIC too if linked into a shared library
 | 
				
			||||||
option(WITH_PIC "Compile static library as position-independent code" OFF)
 | 
					option(WITH_PIC "Compile static library as position-independent code" OFF)
 | 
				
			||||||
option(SHARED "Build raylib as a dynamic library" OFF)
 | 
					option(SHARED "Build raylib as a dynamic library" OFF)
 | 
				
			||||||
option(STATIC "Build raylib as a static library" ON)
 | 
					option(STATIC "Build raylib as a static library" ON)
 | 
				
			||||||
option(MACOS_FATLIB  "Build fat library for both i386 and x86_64 on macOS" ON)
 | 
					option(MACOS_FATLIB  "Build fat library for both i386 and x86_64 on macOS" ON)
 | 
				
			||||||
option(USE_AUDIO "Build raylib with audio module" ON)
 | 
					option(USE_AUDIO "Build raylib with audio module" ON)
 | 
				
			||||||
cmake_dependent_option(USE_OPENAL_BACKEND "Link raylib with openAL instead of mini-al" OFF "USE_AUDIO" OFF)
 | 
					if(${PLATFORM} MATCHES "Web")
 | 
				
			||||||
 | 
					  cmake_dependent_option(USE_OPENAL_BACKEND "Link raylib with openAL instead of mini-al" ON "USE_AUDIO" OFF)
 | 
				
			||||||
 | 
					else()
 | 
				
			||||||
 | 
					  cmake_dependent_option(USE_OPENAL_BACKEND "Link raylib with openAL instead of mini-al" OFF "USE_AUDIO" OFF)
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
set(USE_EXTERNAL_GLFW  OFF  CACHE STRING "Link raylib against system GLFW instead of embedded one")
 | 
					set(USE_EXTERNAL_GLFW  OFF  CACHE STRING "Link raylib against system GLFW instead of embedded one")
 | 
				
			||||||
set_property(CACHE USE_EXTERNAL_GLFW PROPERTY STRINGS ON OFF IF_POSSIBLE)
 | 
					set_property(CACHE USE_EXTERNAL_GLFW PROPERTY STRINGS ON OFF IF_POSSIBLE)
 | 
				
			||||||
if(UNIX AND NOT APPLE)
 | 
					if(UNIX AND NOT APPLE)
 | 
				
			||||||
@@ -15,12 +26,6 @@ if(UNIX AND NOT APPLE)
 | 
				
			|||||||
endif()
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
set(PLATFORM "Desktop" CACHE STRING "Platform to build for.")
 | 
					 | 
				
			||||||
set_property(CACHE PLATFORM PROPERTY STRINGS "Desktop" "Web" "Android" "Raspberry Pi")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
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")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# core.c
 | 
					# core.c
 | 
				
			||||||
option(SUPPORT_BUSY_WAIT_LOOP "Use busy wait loop for timing sync instead of a high-resolution timer" ON)
 | 
					option(SUPPORT_BUSY_WAIT_LOOP "Use busy wait loop for timing sync instead of a high-resolution timer" ON)
 | 
				
			||||||
option(SUPPORT_CAMERA_SYSTEM "Provide camera module (camera.h) with multiple predefined cameras: free, 1st/3rd person, orbital" ON)
 | 
					option(SUPPORT_CAMERA_SYSTEM "Provide camera module (camera.h) with multiple predefined cameras: free, 1st/3rd person, orbital" ON)
 | 
				
			||||||
@@ -88,4 +93,14 @@ if(DEFINED STATIC_RAYLIB)
 | 
				
			|||||||
  message(DEPRECATION "-DSTATIC_RAYLIB is deprecated. Please use -DSTATIC instead.")
 | 
					  message(DEPRECATION "-DSTATIC_RAYLIB is deprecated. Please use -DSTATIC instead.")
 | 
				
			||||||
endif()
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(${PLATFORM} MATCHES "Desktop" AND APPLE)
 | 
				
			||||||
 | 
					  if(MACOS_FATLIB)
 | 
				
			||||||
 | 
					      if (CMAKE_OSX_ARCHITECTURES)
 | 
				
			||||||
 | 
					          message(FATAL_ERROR "User supplied -DCMAKE_OSX_ARCHITECTURES overrides -DMACOS_FATLIB=ON")
 | 
				
			||||||
 | 
					      else()
 | 
				
			||||||
 | 
					          set(CMAKE_OSX_ARCHITECTURES "x86_64;i386")
 | 
				
			||||||
 | 
					      endif()
 | 
				
			||||||
 | 
					  endif()
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# vim: ft=cmake
 | 
					# vim: ft=cmake
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -73,6 +73,7 @@
 | 
				
			|||||||
*
 | 
					*
 | 
				
			||||||
**********************************************************************************************/
 | 
					**********************************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "config.h"
 | 
				
			||||||
#if !defined(USE_OPENAL_BACKEND)
 | 
					#if !defined(USE_OPENAL_BACKEND)
 | 
				
			||||||
    #define USE_MINI_AL 1       // Set to 1 to use mini_al; 0 to use OpenAL.
 | 
					    #define USE_MINI_AL 1       // Set to 1 to use mini_al; 0 to use OpenAL.
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,7 @@
 | 
				
			|||||||
/* config.h.in */
 | 
					/* config.h.in */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#cmakedefine USE_OPENAL_BACKEND 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// core.c
 | 
					// core.c
 | 
				
			||||||
/* Camera module is included (camera.h) and multiple predefined cameras are available: free, 1st/3rd person, orbital */
 | 
					/* Camera module is included (camera.h) and multiple predefined cameras are available: free, 1st/3rd person, orbital */
 | 
				
			||||||
#cmakedefine SUPPORT_CAMERA_SYSTEM 1
 | 
					#cmakedefine SUPPORT_CAMERA_SYSTEM 1
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -568,6 +568,7 @@ void ExportImage(const char *fileName, Image image)
 | 
				
			|||||||
    // NOTE: Getting Color array as RGBA unsigned char values
 | 
					    // NOTE: Getting Color array as RGBA unsigned char values
 | 
				
			||||||
    unsigned char *imgData = (unsigned char *)GetImageData(image);
 | 
					    unsigned char *imgData = (unsigned char *)GetImageData(image);
 | 
				
			||||||
    SavePNG(fileName, imgData, image.width, image.height, 4);
 | 
					    SavePNG(fileName, imgData, image.width, image.height, 4);
 | 
				
			||||||
 | 
					    // FIXME ^ this fails on PLATFORM_WEB, what should we do?
 | 
				
			||||||
    free(imgData);
 | 
					    free(imgData);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -147,27 +147,23 @@ void TraceLog(int msgType, const char *text, ...)
 | 
				
			|||||||
#endif  // SUPPORT_TRACELOG
 | 
					#endif  // SUPPORT_TRACELOG
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(SUPPORT_SAVE_BMP)
 | 
					 | 
				
			||||||
// Creates a BMP image file from an array of pixel data
 | 
					// Creates a BMP image file from an array of pixel data
 | 
				
			||||||
void SaveBMP(const char *fileName, unsigned char *imgData, int width, int height, int compSize)
 | 
					void SaveBMP(const char *fileName, unsigned char *imgData, int width, int height, int compSize)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#if defined(PLATFORM_DESKTOP) || defined(PLATFORM_RPI)
 | 
					#if defined(SUPPORT_SAVE_BMP) && (defined(PLATFORM_DESKTOP) || defined(PLATFORM_RPI))
 | 
				
			||||||
    stbi_write_bmp(fileName, width, height, compSize, imgData);
 | 
					    stbi_write_bmp(fileName, width, height, compSize, imgData);
 | 
				
			||||||
    TraceLog(LOG_INFO, "BMP Image saved: %s", fileName);
 | 
					    TraceLog(LOG_INFO, "BMP Image saved: %s", fileName);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(SUPPORT_SAVE_PNG)
 | 
					 | 
				
			||||||
// Creates a PNG image file from an array of pixel data
 | 
					// Creates a PNG image file from an array of pixel data
 | 
				
			||||||
void SavePNG(const char *fileName, unsigned char *imgData, int width, int height, int compSize)
 | 
					void SavePNG(const char *fileName, unsigned char *imgData, int width, int height, int compSize)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#if defined(PLATFORM_DESKTOP) || defined(PLATFORM_RPI)
 | 
					#if defined(SUPPORT_SAVE_PNG) && (defined(PLATFORM_DESKTOP) || defined(PLATFORM_RPI))
 | 
				
			||||||
    stbi_write_png(fileName, width, height, compSize, imgData, width*compSize);
 | 
					    stbi_write_png(fileName, width, height, compSize, imgData, width*compSize);
 | 
				
			||||||
    TraceLog(LOG_INFO, "PNG Image saved: %s", fileName);
 | 
					    TraceLog(LOG_INFO, "PNG Image saved: %s", fileName);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Keep track of memory allocated
 | 
					// Keep track of memory allocated
 | 
				
			||||||
// NOTE: mallocType defines the type of data allocated
 | 
					// NOTE: mallocType defines the type of data allocated
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user