Skip to content

Commit

Permalink
Build on OSX
Browse files Browse the repository at this point in the history
- Add flag GPUJPEG_USE_CUDA to get all the cuda part conditional
- Update CMAKE to use GL (Without X11 for OSX)

Signed-off-by: Anthony Liot <[email protected]>
  • Loading branch information
wolfviking0 committed Dec 16, 2023
1 parent db88d21 commit cbd8a3b
Show file tree
Hide file tree
Showing 17 changed files with 410 additions and 92 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -44,3 +44,5 @@ test-driver
Debug
Release

# VSCode
.vscode/
36 changes: 28 additions & 8 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,15 @@
cmake_minimum_required(VERSION 3.8.0 FATAL_ERROR)
# change version also in configure.ac
project(gpujpeg VERSION 0.21.0 LANGUAGES C CUDA)
project(gpujpeg VERSION 0.21.0 LANGUAGES C)
include(CheckLanguage)

check_language(CUDA)
if(CMAKE_CUDA_COMPILER)
enable_language(CUDA)
add_definitions(-DGPUJPEG_USE_CUDA)
else()
message(STATUS "No CUDA support")
endif()

# options
set(BUILD_OPENGL AUTO CACHE STRING "Build with OpenGL support, options are: AUTO ON OFF")
Expand Down Expand Up @@ -56,6 +65,8 @@ set(NEEDED_COMPILER_FEATURES c_std_11)

set(COMPILED_OPTIONS)

set(CMAKE_VERBOSE_MAKEFILE ON)

# allow passing <PackageName>_ROOT to find_package()
if(POLICY CMP0074)
cmake_policy(SET CMP0074 NEW)
Expand All @@ -65,6 +76,17 @@ endif()
if(POLICY CMP0092)
cmake_policy(SET CMP0092 NEW)
endif()

# Fix behavior of CMAKE_CXX_STANDARD when targeting macOS.
if (POLICY CMP0025)
cmake_policy(SET CMP0025 NEW)
endif ()

# Find OpenGL, GLEW, GLUT and GLFW
if(POLICY CMP0072)
cmake_policy(SET CMP0072 NEW)
endif()

if (MSVC)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W4")
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Xcompiler /W4")
Expand All @@ -73,10 +95,6 @@ else()
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Xcompiler -Wall -Xcompiler -Wextra")
endif()

# Find OpenGL, GLEW, GLUT and GLFW
if(POLICY CMP0072)
cmake_policy(SET CMP0072 NEW)
endif()
find_package(OpenGL)
find_package(GLEW)
find_package(GLUT)
Expand All @@ -99,15 +117,17 @@ if(NOT BUILD_OPENGL STREQUAL "OFF" AND NOT OPENGL_ERROR)

# Build GPUJPEG library with OpenGL support
add_definitions("-DGPUJPEG_USE_OPENGL")
add_definitions("-DGL_SILENCE_DEPRECATION")

set(GPUJPEG_OPENGL_LIBRARIES)
include_directories(${OPENGL_INCLUDE_DIR} ${GLEW_INCLUDE_DIRS})
list(APPEND GPUJPEG_OPENGL_LIBRARIES ${GLEW_LIBRARIES})
list(APPEND GPUJPEG_OPENGL_LIBRARIES GLEW::GLEW)
list(APPEND GPUJPEG_OPENGL_LIBRARIES ${OPENGL_LIBRARIES})
if(GLUT_FOUND)
include_directories(${GLUT_INCLUDE_DIR})
list(APPEND GPUJPEG_OPENGL_LIBRARIES ${GLUT_glut_LIBRARY})
endif()
if(X11_FOUND AND (OPENGL_CONTEXT STREQUAL "AUTO" OR OPENGL_CONTEXT STREQUAL "GLX"))
if(NOT APPLE AND X11_FOUND AND (OPENGL_CONTEXT STREQUAL "AUTO" OR OPENGL_CONTEXT STREQUAL "GLX"))
include_directories(${X11_INCLUDE_DIR})
list(APPEND GPUJPEG_OPENGL_LIBRARIES ${X11_LIBRARIES})
add_definitions("-DGPUJPEG_USE_GLX")
Expand Down Expand Up @@ -182,7 +202,7 @@ if(GPUJPEG_OPENGL_ENABLED AND GLUT_FOUND)
add_executable(decoder_gltex ${FILES})
target_compile_features(decoder_gltex PRIVATE ${NEEDED_COMPILER_FEATURES})
set_property(TARGET decoder_gltex PROPERTY C_STANDARD 99)
target_link_libraries(decoder_gltex ${PROJECT_NAME} -lglut)
target_link_libraries(decoder_gltex ${PROJECT_NAME} ${GPUJPEG_OPENGL_LIBRARIES})

# OpenGL interoperability example (currently not working)
#file(GLOB FILES test/opengl_interop/*.c test/opengl_interop/*.h test/opengl_interop/*.cu)
Expand Down
4 changes: 3 additions & 1 deletion examples/decode_to_cuda_pnm.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
* then copied back to RAM and written to a PNM file.
*/

#include <cuda_runtime.h>
#ifdef GPUJPEG_USE_CUDA
#include <cuda_runtime.h>
#endif
#include <libgpujpeg/gpujpeg_common.h>
#include <libgpujpeg/gpujpeg_decoder.h>
#include <stdbool.h>
Expand Down
Loading

0 comments on commit cbd8a3b

Please sign in to comment.