CMake: Configure: Add cross-platform (openGL) Nvidia Cg support.
This commit is contained in:
parent
d03d5125a0
commit
6fe7b59801
|
|
@ -0,0 +1,185 @@
|
|||
# Filename: FindCg.cmake
|
||||
#
|
||||
# Usage:
|
||||
# find_package(Cg [REQUIRED] [QUIET])
|
||||
#
|
||||
# It sets the following variables:
|
||||
# FOUND_CG - system has NvidiaCg
|
||||
# CG_IPATH - the NvidiaCg include directory
|
||||
# CG_LPATH - the NvidiaCg library directory
|
||||
# CG_LIBS - the Cg components found
|
||||
#
|
||||
# FOUND_CGGL - system has CgGL
|
||||
# CGGL_IPATH - the CgGL include directory
|
||||
# CGGL_LPATH - the CgGL library directory
|
||||
# CGGL_LIBS - the CgGL components found
|
||||
#
|
||||
|
||||
|
||||
### Define macros to find each sublibrary ###
|
||||
|
||||
# Find Cg for OpenGL
|
||||
macro(find_cggl)
|
||||
if(CGGL_LPATH AND CGGL_IPATH)
|
||||
# If its cached, we don't need to refind it
|
||||
set(FOUND_CGGL TRUE)
|
||||
if(WIN32)
|
||||
set(CGGL_LIBS cgGL.lib)
|
||||
else()
|
||||
set(CGGL_LIBS CgGL)
|
||||
endif()
|
||||
else()
|
||||
# Find the include directory
|
||||
find_path(CGGL_IPATH
|
||||
NAMES "cgGL.h"
|
||||
PATHS "C:/Program Files/Cg"
|
||||
"C:/Program Files/NVIDIA Corporation/Cg/include"
|
||||
"/usr/include"
|
||||
"/usr/local/include"
|
||||
"/opt/Cg"
|
||||
"/opt/nvidia-cg-toolkit/include" # Gentoo
|
||||
PATH_SUFFIXES "" "Cg"
|
||||
DOC "The path to NvidiaCg's include directory."
|
||||
)
|
||||
|
||||
# Find the library directory
|
||||
find_library(CGGL_LIBRARY
|
||||
NAMES "CgGL" "libCgGL"
|
||||
PATHS "C:/Program Files/Cg"
|
||||
"C:/Program Files/NVIDIA Corporation/Cg"
|
||||
"/usr"
|
||||
"/usr/local"
|
||||
"/opt/Cg"
|
||||
"/opt/nvidia-cg-toolkit" # Gentoo
|
||||
PATH_SUFFIXES "" "lib" "lib32" "lib64"
|
||||
)
|
||||
get_filename_component(CGGL_LIBRARY_DIR "${CGGL_LIBRARY}" PATH)
|
||||
set(CGGL_LPATH "${CGGL_LIBRARY_DIR}" CACHE PATH "The path to the CgGL library directory.") # Library path
|
||||
|
||||
unset(CGGL_LIBRARY_DIR)
|
||||
unset(CGGL_LIBRARY CACHE)
|
||||
|
||||
|
||||
# Check if we have everything we need
|
||||
if(CGGL_IPATH AND CGGL_LPATH)
|
||||
set(CGGL_FOUND TRUE)
|
||||
if(WIN32)
|
||||
set(CGGL_LIBS cgGL.lib)
|
||||
else()
|
||||
set(CGGL_LIBS CgGL)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
mark_as_advanced(CGGL_IPATH)
|
||||
mark_as_advanced(CGGL_LPATH)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
|
||||
# Find Cg for DirectX 8
|
||||
macro(find_cgdx8)
|
||||
endmacro()
|
||||
|
||||
|
||||
# Find Cg for DirectX 9
|
||||
macro(find_cgdx9)
|
||||
endmacro()
|
||||
|
||||
|
||||
# Find Cg for DirectX 10
|
||||
macro(find_cgdx10)
|
||||
endmacro()
|
||||
|
||||
|
||||
|
||||
# Find base Nvidia Cg
|
||||
if(CG_LPATH AND CG_IPATH)
|
||||
# If its cached, we don't need to refind it
|
||||
set(FOUND_CG TRUE)
|
||||
if(WIN32)
|
||||
set(CG_LIBS cg.lib)
|
||||
else()
|
||||
set(CG_LIBS Cg)
|
||||
endif()
|
||||
|
||||
find_cggl()
|
||||
find_cgdx8()
|
||||
find_cgdx9()
|
||||
find_cgdx10()
|
||||
|
||||
else()
|
||||
# On OSX default to using the framework version of Cg.
|
||||
if(APPLE)
|
||||
include(${CMAKE_ROOT}/Modules/CMakeFindFrameworks.cmake)
|
||||
set(CG_INCLUDES)
|
||||
|
||||
cmake_find_frameworks(Cg)
|
||||
if(Cg_FRAMEWORKS)
|
||||
foreach(dir ${Cg_FRAMEWORKS})
|
||||
set(CG_INCLUDES ${CG_INCLUDES} ${dir}/Headers ${dir}/PrivateHeaders)
|
||||
endforeach(dir)
|
||||
unset(Cg_FRAMEWORKS)
|
||||
|
||||
# Find the include dir
|
||||
find_path(CG_IPATH
|
||||
NAMES "cg.h"
|
||||
PATHS ${CG_INCLUDES}
|
||||
DOC "The path to NvidiaCg's include directory."
|
||||
)
|
||||
unset(CG_INCLUDES)
|
||||
|
||||
# Set the library dir (TODO: Check the correctness on Mac OS X)
|
||||
set(CG_LPATH "/Library/Frameworks/Cg.framework" CACHE PATH "The path to NvidiaCg's library directory.")
|
||||
endif()
|
||||
|
||||
else()
|
||||
# Find the include directory
|
||||
find_path(CG_IPATH
|
||||
NAMES "cg.h"
|
||||
PATHS "C:/Program Files/Cg"
|
||||
"C:/Program Files/NVIDIA Corporation/Cg/include"
|
||||
"/usr/include"
|
||||
"/usr/local/include"
|
||||
"/opt/Cg"
|
||||
"/opt/nvidia-cg-toolkit/include" # Gentoo
|
||||
PATH_SUFFIXES "" "Cg"
|
||||
DOC "The path to NvidiaCg's include directory."
|
||||
)
|
||||
|
||||
# Find the library directory
|
||||
find_library(CG_LIBRARY
|
||||
NAMES "Cg" "libCg"
|
||||
PATHS "C:/Program Files/Cg"
|
||||
"C:/Program Files/NVIDIA Corporation/Cg"
|
||||
"/usr"
|
||||
"/usr/local"
|
||||
"/opt/Cg"
|
||||
"/opt/nvidia-cg-toolkit" # Gentoo
|
||||
PATH_SUFFIXES "" "lib" "lib32" "lib64"
|
||||
)
|
||||
get_filename_component(CG_LIBRARY_DIR "${CG_LIBRARY}" PATH)
|
||||
set(CG_LPATH "${CG_LIBRARY_DIR}" CACHE PATH "The path to NvidiaCG's library directory.") # Library path
|
||||
|
||||
unset(CG_LIBRARY_DIR)
|
||||
unset(CG_LIBRARY CACHE)
|
||||
endif()
|
||||
|
||||
# Check if we have everything we need
|
||||
if(CG_IPATH AND CG_LPATH)
|
||||
set(CG_FOUND TRUE)
|
||||
if(WIN32)
|
||||
set(CG_LIBS cg.lib)
|
||||
else()
|
||||
set(CG_LIBS Cg)
|
||||
endif()
|
||||
|
||||
find_cggl()
|
||||
find_cgdx8()
|
||||
find_cgdx9()
|
||||
find_cgdx10()
|
||||
|
||||
endif()
|
||||
|
||||
mark_as_advanced(CG_IPATH)
|
||||
mark_as_advanced(CG_LPATH)
|
||||
endif()
|
||||
|
|
@ -62,66 +62,16 @@ config_package(FFTW COMMENT "fftw")
|
|||
find_package(Squish)
|
||||
config_package(SQUISH COMMENT "squish")
|
||||
|
||||
# Find and configure Cg library
|
||||
find_package(Cg)
|
||||
config_package(CG COMMENT "Nvidia Cg Shading Langauge")
|
||||
config_package(CGGL COMMENT "Cg OpenGL API")
|
||||
config_package(CGDX8 COMMENT "Cg DX8 API")
|
||||
config_package(CGDX9 COMMENT "Cg DX9 API")
|
||||
config_package(CGDX10 COMMENT "Cg DX10 API")
|
||||
|
||||
if(FOUND_CG)
|
||||
set(USE_CG TRUE CACHE BOOL "If true, compile Panda3D with Nvidia Cg")
|
||||
if(USE_CG)
|
||||
set(HAVE_CG TRUE)
|
||||
endif()
|
||||
endif()
|
||||
if(HAVE_CG)
|
||||
message(STATUS "+ Nvidia Cg High Level Shading Language")
|
||||
else()
|
||||
message(STATUS "- Did not find Nvidia Cg High Level Shading Language")
|
||||
endif()
|
||||
|
||||
if(FOUND_CGGL)
|
||||
set(USE_CGGL TRUE CACHE BOOL "If true, compile Panda3D with Cg OpenGL API")
|
||||
if(USE_CGGL)
|
||||
set(HAVE_CGGL TRUE)
|
||||
endif()
|
||||
endif()
|
||||
if(HAVE_CGGL)
|
||||
message(STATUS "+ Cg OpenGL API")
|
||||
else()
|
||||
message(STATUS "- Did not find Cg OpenGL API")
|
||||
endif()
|
||||
|
||||
if(FOUND_CGDX8)
|
||||
set(USE_CGDX8 TRUE CACHE BOOL "If true, compile Panda3D with Cg DX8 API")
|
||||
if(USE_CGDX8)
|
||||
set(HAVE_CGDX8 TRUE)
|
||||
endif()
|
||||
endif()
|
||||
if(HAVE_CGDX8)
|
||||
message(STATUS "+ Cg DX8 API")
|
||||
else()
|
||||
message(STATUS "- Did not find Cg DX8 API")
|
||||
endif()
|
||||
|
||||
if(FOUND_CGDX9)
|
||||
set(USE_CGDX9 TRUE CACHE BOOL "If true, compile Panda3D with Cg DX9 API")
|
||||
if(USE_CGDX9)
|
||||
set(HAVE_CGDX9 TRUE)
|
||||
endif()
|
||||
endif()
|
||||
if(HAVE_CGDX9)
|
||||
message(STATUS "+ Cg DX9 API")
|
||||
else()
|
||||
message(STATUS "- Did not find Cg DX9 API")
|
||||
endif()
|
||||
|
||||
if(FOUND_CGDX10)
|
||||
set(USE_CGDX10 TRUE CACHE BOOL "If true, compile Panda3D with Cg DX10 API")
|
||||
if(USE_CGDX10)
|
||||
set(HAVE_CGDX10 TRUE)
|
||||
endif()
|
||||
endif()
|
||||
if(HAVE_CGDX10)
|
||||
message(STATUS "+ Cg DX10 API")
|
||||
else()
|
||||
message(STATUS "- Did not find Cg DX10 API")
|
||||
endif()
|
||||
|
||||
if(FOUND_VRPN)
|
||||
set(USE_VRPN TRUE CACHE BOOL "If true, compile Panda3D with VRPN")
|
||||
|
|
|
|||
Loading…
Reference in New Issue