-
Notifications
You must be signed in to change notification settings - Fork 89
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add color, image and material classes
- Loading branch information
1 parent
015a9eb
commit 235ecf8
Showing
15 changed files
with
3,716 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
# ------------------------------------------------------------------- | ||
# This file is part of the CMake build system for OGRE (Object-oriented Graphics Rendering Engine) For the latest info, | ||
# see http://www.ogre3d.org/ | ||
# | ||
# The contents of this file are placed in the public domain. Feel free to make use of it in any way you like. | ||
# ------------------------------------------------------------------- | ||
|
||
# * Try to find FreeImage Once done, this will define | ||
# | ||
# FreeImage_FOUND - system has FreeImage FreeImage_INCLUDE_DIRS - the FreeImage include directories FreeImage_LIBRARIES | ||
# - link these to use FreeImage | ||
|
||
include(FindPkgMacros) | ||
findpkg_begin(FreeImage) | ||
|
||
# Get path, convert backslashes as ${ENV_${var}} | ||
getenv_path(FREEIMAGE_HOME) | ||
|
||
# construct search paths | ||
set(FreeImage_PREFIX_PATH ${FREEIMAGE_HOME} ${ENV_FREEIMAGE_HOME}) | ||
create_search_paths(FreeImage "") | ||
# redo search if prefix path changed | ||
clear_if_changed( | ||
FreeImage_PREFIX_PATH | ||
FreeImage_LIBRARY_FWK | ||
FreeImage_LIBRARY_REL | ||
FreeImage_LIBRARY_DBG | ||
FreeImage_INCLUDE_DIR) | ||
|
||
set(FreeImage_LIBRARY_NAMES | ||
freeimage | ||
freeimageLib | ||
FreeImage | ||
FreeImageLib) | ||
get_debug_names(FreeImage_LIBRARY_NAMES) | ||
|
||
use_pkgconfig(FreeImage_PKGC freeimage) | ||
|
||
findpkg_framework(FreeImage) | ||
|
||
find_path(FreeImage_INCLUDE_DIR NAMES FreeImage.h HINTS ${FreeImage_INC_SEARCH_PATH} ${FreeImage_PKGC_INCLUDE_DIRS}) | ||
|
||
find_library( | ||
FreeImage_LIBRARY_REL | ||
NAMES ${FreeImage_LIBRARY_NAMES} | ||
HINTS ${FreeImage_LIB_SEARCH_PATH} ${FreeImage_PKGC_LIBRARY_DIRS} | ||
PATH_SUFFIXES | ||
"" | ||
Release | ||
RelWithDebInfo | ||
MinSizeRel) | ||
find_library( | ||
FreeImage_LIBRARY_DBG | ||
NAMES ${FreeImage_LIBRARY_NAMES_DBG} | ||
HINTS ${FreeImage_LIB_SEARCH_PATH} ${FreeImage_PKGC_LIBRARY_DIRS} | ||
PATH_SUFFIXES "" Debug) | ||
|
||
make_library_set(FreeImage_LIBRARY) | ||
|
||
findpkg_finish(FreeImage) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,193 @@ | ||
# ------------------------------------------------------------------- | ||
# This file is part of the CMake build system for OGRE (Object-oriented Graphics Rendering Engine) For the latest info, | ||
# see http://www.ogre3d.org/ | ||
# | ||
# The contents of this file are placed in the public domain. Feel free to make use of it in any way you like. | ||
# ------------------------------------------------------------------- | ||
|
||
# ###################################################################################################################### | ||
# Provides some common functionality for the FindPackage modules | ||
# ###################################################################################################################### | ||
|
||
# Begin processing of package | ||
macro(findpkg_begin PREFIX) | ||
if(NOT ${PREFIX}_FIND_QUIETLY) | ||
message(STATUS "Looking for ${PREFIX}...") | ||
endif() | ||
endmacro(findpkg_begin) | ||
|
||
# Display a status message unless FIND_QUIETLY is set | ||
macro(pkg_message PREFIX) | ||
if(NOT ${PREFIX}_FIND_QUIETLY) | ||
message(STATUS ${ARGN}) | ||
endif() | ||
endmacro(pkg_message) | ||
|
||
# Get environment variable, define it as ENV_$var and make sure backslashes are converted to forward slashes | ||
macro(getenv_path VAR) | ||
set(ENV_${VAR} $ENV{${VAR}}) | ||
# replace won't work if var is blank | ||
if(ENV_${VAR}) | ||
string( | ||
REGEX | ||
REPLACE "\\\\" | ||
"/" | ||
ENV_${VAR} | ||
${ENV_${VAR}}) | ||
endif() | ||
endmacro(getenv_path) | ||
|
||
# Construct search paths for includes and libraries from a PREFIX_PATH | ||
macro(create_search_paths PREFIX PATH_SUFFIX) | ||
foreach(dir ${${PREFIX}_PREFIX_PATH}) | ||
set(${PREFIX}_INC_SEARCH_PATH | ||
${${PREFIX}_INC_SEARCH_PATH} | ||
${dir}/include | ||
${dir}/Include | ||
${dir}/include/${PREFIX}${PATH_SUFFIX} | ||
${dir}/Headers) | ||
set(${PREFIX}_LIB_SEARCH_PATH | ||
${${PREFIX}_LIB_SEARCH_PATH} | ||
${dir}/lib | ||
${dir}/Lib | ||
${dir}/lib/${PREFIX}${PATH_SUFFIX} | ||
${dir}/Libs) | ||
set(${PREFIX}_BIN_SEARCH_PATH ${${PREFIX}_BIN_SEARCH_PATH} ${dir}/bin) | ||
endforeach(dir) | ||
if(ANDROID) | ||
set(${PREFIX}_LIB_SEARCH_PATH ${${PREFIX}_LIB_SEARCH_PATH} ${OGRE_DEPENDENCIES_DIR}/lib/${ANDROID_ABI}) | ||
endif() | ||
set(${PREFIX}_FRAMEWORK_SEARCH_PATH ${${PREFIX}_PREFIX_PATH}) | ||
endmacro(create_search_paths) | ||
|
||
# clear cache variables if a certain variable changed | ||
macro(clear_if_changed TESTVAR) | ||
# test against internal check variable HACK: Apparently, adding a variable to the cache cleans up the list a bit. We | ||
# need to also remove any empty strings from the list, but at the same time ensure that we are actually dealing with a | ||
# list. | ||
list(APPEND ${TESTVAR} "") | ||
list(REMOVE_ITEM ${TESTVAR} "") | ||
if(NOT | ||
"${${TESTVAR}}" | ||
STREQUAL | ||
"${${TESTVAR}_INT_CHECK}") | ||
message(STATUS "${TESTVAR} changed.") | ||
foreach(var ${ARGN}) | ||
set(${var} "NOTFOUND" CACHE STRING "x" FORCE) | ||
endforeach(var) | ||
endif() | ||
set(${TESTVAR}_INT_CHECK ${${TESTVAR}} CACHE INTERNAL "x" FORCE) | ||
endmacro(clear_if_changed) | ||
|
||
# Try to get some hints from pkg-config, if available | ||
macro(use_pkgconfig PREFIX PKGNAME) | ||
if(NOT ANDROID) | ||
find_package(PkgConfig) | ||
if(PKG_CONFIG_FOUND) | ||
pkg_check_modules(${PREFIX} ${PKGNAME}) | ||
endif() | ||
endif() | ||
endmacro(use_pkgconfig) | ||
|
||
# Couple a set of release AND debug libraries (or frameworks) | ||
macro(make_library_set PREFIX) | ||
if(${PREFIX}_FWK) | ||
set(${PREFIX} ${${PREFIX}_FWK}) | ||
elseif(${PREFIX}_REL AND ${PREFIX}_DBG) | ||
set(${PREFIX} | ||
optimized | ||
${${PREFIX}_REL} | ||
debug | ||
${${PREFIX}_DBG}) | ||
elseif(${PREFIX}_REL) | ||
set(${PREFIX} ${${PREFIX}_REL}) | ||
elseif(${PREFIX}_DBG) | ||
set(${PREFIX} ${${PREFIX}_DBG}) | ||
endif() | ||
endmacro(make_library_set) | ||
|
||
# Generate debug names from given release names | ||
macro(get_debug_names PREFIX) | ||
foreach(i ${${PREFIX}}) | ||
set(${PREFIX}_DBG | ||
${${PREFIX}_DBG} | ||
${i}d | ||
${i}D | ||
${i}_d | ||
${i}_D | ||
${i}_debug | ||
${i}) | ||
endforeach(i) | ||
endmacro(get_debug_names) | ||
|
||
# Add the parent dir from DIR to VAR | ||
macro(add_parent_dir VAR DIR) | ||
get_filename_component(${DIR}_TEMP "${${DIR}}/.." ABSOLUTE) | ||
set(${VAR} ${${VAR}} ${${DIR}_TEMP}) | ||
endmacro(add_parent_dir) | ||
|
||
# Do the final processing for the package find. | ||
macro(findpkg_finish PREFIX) | ||
# skip if already processed during this run | ||
if(NOT ${PREFIX}_FOUND) | ||
if(${PREFIX}_INCLUDE_DIR AND ${PREFIX}_LIBRARY) | ||
set(${PREFIX}_FOUND TRUE) | ||
set(${PREFIX}_INCLUDE_DIRS ${${PREFIX}_INCLUDE_DIR}) | ||
set(${PREFIX}_LIBRARIES ${${PREFIX}_LIBRARY}) | ||
if(NOT ${PREFIX}_FIND_QUIETLY) | ||
message(STATUS "Found ${PREFIX}: ${${PREFIX}_LIBRARIES}") | ||
endif() | ||
else() | ||
if(NOT ${PREFIX}_FIND_QUIETLY) | ||
message(STATUS "Could not locate ${PREFIX}") | ||
endif() | ||
if(${PREFIX}_FIND_REQUIRED) | ||
message( | ||
FATAL_ERROR | ||
"Required library ${PREFIX} not found! Install the library (including dev packages) and try again. If the library is already installed, set the missing variables manually in cmake." | ||
) | ||
endif() | ||
endif() | ||
|
||
mark_as_advanced( | ||
${PREFIX}_INCLUDE_DIR | ||
${PREFIX}_LIBRARY | ||
${PREFIX}_LIBRARY_REL | ||
${PREFIX}_LIBRARY_DBG | ||
${PREFIX}_LIBRARY_FWK) | ||
endif() | ||
endmacro(findpkg_finish) | ||
|
||
# Slightly customised framework finder | ||
macro(findpkg_framework fwk) | ||
if(APPLE) | ||
set(${fwk}_FRAMEWORK_PATH | ||
${${fwk}_FRAMEWORK_SEARCH_PATH} | ||
${CMAKE_FRAMEWORK_PATH} | ||
~/Library/Frameworks | ||
/Library/Frameworks | ||
/System/Library/Frameworks | ||
/Network/Library/Frameworks | ||
${CMAKE_CURRENT_SOURCE_DIR}/lib/macosx/Release | ||
${CMAKE_CURRENT_SOURCE_DIR}/lib/macosx/Debug) | ||
# These could be arrays of paths, add each individually to the search paths | ||
foreach(i ${OGRE_PREFIX_PATH}) | ||
set(${fwk}_FRAMEWORK_PATH ${${fwk}_FRAMEWORK_PATH} ${i}/lib/macosx/Release ${i}/lib/macosx/Debug) | ||
endforeach(i) | ||
|
||
foreach(i ${OGRE_PREFIX_BUILD}) | ||
set(${fwk}_FRAMEWORK_PATH ${${fwk}_FRAMEWORK_PATH} ${i}/lib/macosx/Release ${i}/lib/macosx/Debug) | ||
endforeach(i) | ||
|
||
foreach(dir ${${fwk}_FRAMEWORK_PATH}) | ||
set(fwkpath ${dir}/${fwk}.framework) | ||
if(EXISTS ${fwkpath}) | ||
set(${fwk}_FRAMEWORK_INCLUDES ${${fwk}_FRAMEWORK_INCLUDES} ${fwkpath}/Headers ${fwkpath}/PrivateHeaders) | ||
set(${fwk}_FRAMEWORK_PATH ${dir}) | ||
if(NOT ${fwk}_LIBRARY_FWK) | ||
set(${fwk}_LIBRARY_FWK "-framework ${fwk}") | ||
endif() | ||
endif(EXISTS ${fwkpath}) | ||
endforeach(dir) | ||
endif(APPLE) | ||
endmacro(findpkg_framework) |
Oops, something went wrong.