@@ -7,6 +7,7 @@ set(BUILD_OPENGL OFF CACHE STRING "Build with OpenGL support, options are: AUTO
77set_property (CACHE BUILD_OPENGL PROPERTY STRINGS AUTO ON OFF )
88option (BUILD_SHARED_LIBS "Build using shared libraries" ON )
99option (CMAKE_CUDA_ARCHITECTURES "CUDA architectures to build for (needs CMake 3.18)" OFF )
10+ option (ENABLE_FPNGE "Enable fpnge - requires c++ and sse4" OFF )
1011option (HUFFMAN_GPU_CONST_TABLES "Enable Huffman GPU decoder quick const tables" OFF )
1112set (OPENGL_CONTEXT AUTO CACHE STRING "Use specifiedn OpenGL context creation, options are: AUTO GLX GLFW NONE" )
1213set_property (CACHE OPENGL_CONTEXT PROPERTY STRINGS AUTO GLX GLFW NONE )
@@ -69,6 +70,13 @@ endif()
6970
7071set(COMPILED_OPTIONS)
7172
73+ if(ENABLE_FPNGE)
74+ add_definitions(" -DHAVE_FPNGE ")
75+ enable_language(CXX)
76+ list(APPEND COMPILED_OPTIONS fpnge)
77+ set(CMAKE_CXX_FLAGS " ${CMAKE_CXX_FLAGS} -msse4 ")
78+ endif()
79+
7280# allow passing <PackageName>_ROOT to find_package()
7381if(POLICY CMP0074)
7482 cmake_policy(SET CMP0074 NEW)
@@ -81,12 +89,14 @@ endif()
8189if (MSVC)
8290 set(CMAKE_C_FLAGS " ${CMAKE_C_FLAGS} /W4 ")
8391 set(CMAKE_CUDA_FLAGS " ${CMAKE_CUDA_FLAGS} -Xcompiler /W4 ")
92+ set(CMAKE_CXX_FLAGS " ${CMAKE_CXX_FLAGS} /W4 /Zc:__cplusplus ")
8493 if (MSVC_VERSION GREATER_EQUAL 1914)
8594 set(CMAKE_CUDA_FLAGS " ${CMAKE_CUDA_FLAGS} -Xcompiler /Zc:__cplusplus ")
8695 endif()
8796else()
8897 set(CMAKE_C_FLAGS " ${CMAKE_C_FLAGS} -Wall -Wextra -pedantic ")
8998 set(CMAKE_CUDA_FLAGS " ${CMAKE_CUDA_FLAGS} -Xcompiler -Wall -Xcompiler -Wextra ")
99+ set(CMAKE_CXX_FLAGS " ${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic ")
90100endif()
91101
92102# Find OpenGL, GLEW, GLUT and GLFW
@@ -156,9 +166,12 @@ message(STATUS "Configured options: ${COMPILED_OPTIONS}")
156166# GPUJPEG library
157167file(GLOB H_FILES libgpujpeg/*.h ${CMAKE_CURRENT_BINARY_DIR} /libgpujpeg/gpujpeg_version.h)
158168file(GLOB_RECURSE C_FILES src/*.c src/*.cu)
169+ if(NOT DISABLE_CPP)
170+ file(GLOB_RECURSE CPP_FILES src/*.cc src/*.cpp)
171+ endif()
159172list(REMOVE_ITEM C_FILES " ${CMAKE_CURRENT_SOURCE_DIR} /src/main.c ")
160173list(REMOVE_ITEM C_FILES " ${CMAKE_CURRENT_SOURCE_DIR} /src/utils/getopt.c ")
161- add_library(gpujpeg ${H_FILES} ${C_FILES} )
174+ add_library(gpujpeg ${H_FILES} ${C_FILES} ${CPP_FILES} )
162175target_include_directories(${PROJECT_NAME}
163176 PUBLIC ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES}
164177)
@@ -229,7 +242,7 @@ install(EXPORT GPUJPEGTargets
229242install(FILES ${CMAKE_CURRENT_BINARY_DIR} /GPUJPEGConfig.cmake ${CMAKE_CURRENT_BINARY_DIR} /GPUJPEGConfigVersion.cmake
230243 DESTINATION lib/cmake/GPUJPEG)
231244
232- file(GLOB_RECURSE ALL_SOURCES *.c *.cu *.cuh *.h *.hpp)
245+ file(GLOB_RECURSE ALL_SOURCES *.c *.cc *.cpp *. cu *.cuh *.h *.hpp)
233246add_custom_target(cscope cscope -bv ${ALL_SOURCES} )
234247add_custom_target(ctags ctags ${ALL_SOURCES} )
235248add_custom_target(universal-ctags ctags-universal ${ALL_SOURCES} )
0 commit comments