ApShaders/cmake/modules/FindMtoa.cmake

144 lines
4.6 KiB
CMake

include(FindPackageHandleStandardArgs)
if(NOT DEFINED MTOA_MAYA_VERSION)
set(MTOA_MAYA_VERSION 2018)
if(DEFINED MAYA_VERSION)
set(MTOA_MAYA_VERSION ${MAYA_VERSION})
endif()
if(DEFINED ENV{MAYA_VERSION})
set(MTOA_MAYA_VERSION $ENV{MAYA_VERSION})
endif()
endif()
set(MTOA_INC_SUFFIX "include")
set(MTOA_LIB_SUFFIX "lib")
set(MTOA_PLUGIN_EXTENSION ".so")
set(MTOA_API_NAME mtoa_api)
set(MTOA_KICK_NAME kick)
if(WIN32)
set(MTOA_LOCATION "C:/solidangle/mtoadeploy/${MTOA_MAYA_VERSION}")
if(${MTOA_MAYA_VERSION} GREATER 2019)
set(MTOA_LOCATION "C:/Program Files/Autodesk/Arnold/maya${MTOA_MAYA_VERSION}")
endif()
set(MTOA_KICK_NAME "kick.exe")
set(MTOA_PLUGIN_EXTENSION ".dll")
elseif(APPLE)
if(${MTOA_MAYA_VERSION} GREATER 2019)
set(MTOA_LOCATION "/Applications/Autodesk/Arnold/maya${MTOA_MAYA_VERSION}")
endif()
else()
set(MTOA_LOCATION "/opt/solidangle/mtoa/${MTOA_MAYA_VERSION}")
if(${MTOA_MAYA_VERSION} GREATER 2019)
set(MTOA_LOCATION "/usr/autodesk/arnold/maya${MTOA_MAYA_VERSION}")
endif()
set(MTOA_LIB_SUFFIX "bin")
endif()
if(DEFINED ENV{MTOA_LOCATION})
set(MTOA_LOCATION $ENV{MTOA_LOCATION})
endif()
message(STATUS "MAYA_VERSION : $ENV{MAYA_VERSION}")
message(STATUS "MTOA_MAYA_VERSION : ${MTOA_MAYA_VERSION}")
message(STATUS "MTOA_LOCATION : ${MTOA_LOCATION}")
set(MTOA_ROOT ${MTOA_LOCATION})
if(DEFINED ENV{MTOA_LOCATION})
set(MTOA_ROOT $ENV{MTOA_LOCATION})
endif()
set(MTOA_INCLUDE_PATH MTOA_INCLUDE_PATH-NOTFOUND)
find_path(MTOA_INCLUDE_PATH extension/Extension.h
PATHS
${MTOA_LOCATION}
PATH_SUFFIXES
"${MTOA_INC_SUFFIX}/mtoa"
NO_DEFAULT_PATH
DOC "Mtoa Include Dir")
set(MTOA_VERSION_HEADER "${MTOA_INCLUDE_PATH}/utils/Version.h")
if(EXISTS ${MTOA_VERSION_HEADER})
file(STRINGS ${MTOA_VERSION_HEADER} SRC_CONTENT)
foreach(SRC_LINE ${SRC_CONTENT})
if(${SRC_LINE} MATCHES "^#define MTOA_ARCH_VERSION_NUM")
set(MTOA_VERSION_TYPE MTOA_ARCH_VERSION)
elseif(${SRC_LINE} MATCHES "^#define MTOA_MAJOR_VERSION_NUM")
set(MTOA_VERSION_TYPE MTOA_MAJOR_VERSION_NUM)
elseif(${SRC_LINE} MATCHES "^#define MTOA_MINOR_VERSION_NUM")
set(MTOA_VERSION_TYPE MTOA_MINOR_VERSION_NUM)
elseif(${SRC_LINE} MATCHES "^#define MTOA_FIX_VERSION")
set(MTOA_VERSION_TYPE MTOA_FIX_VERSION)
else()
endif()
# message(${SRC_LINE})
string(STRIP "${SRC_LINE}" LINE_BUFFER)
string(REPLACE " " ";" LINE_BUFFER_LIST ${LINE_BUFFER})
list(LENGTH LINE_BUFFER_LIST _LINE_LENGTH)
list(GET LINE_BUFFER_LIST -1 "${MTOA_VERSION_TYPE}")
# message("## ${LINE_BUFFER_LIST} - ${MTOA_VERSION_TYPE} : ${_LINE_LENGTH}")
endforeach()
if(DEFINED MTOA_FIX_VERSION)
string(SUBSTRING "${MTOA_FIX_VERSION}" 1 1 MTOA_FIX_VERSION)
set(MTOA_VERSION "${MTOA_ARCH_VERSION}.${MTOA_MAJOR_VERSION_NUM}.${MTOA_MINOR_VERSION_NUM}.${MTOA_FIX_VERSION}")
else()
set(MTOA_VERSION "${MTOA_ARCH_VERSION}.${MTOA_MAJOR_VERSION_NUM}.${MTOA_MINOR_VERSION_NUM}")
endif()
else()
message(FATAL_ERROR "Could not find version header : ${MTOA_VERSION_HEADER}")
endif()
if(NOT DEFINED MTOA_VERSION)
message(FATAL_ERROR "Could not find MTOA_VERSION")
endif()
set(MTOA_API_LIBRARY MTOA_API_LIBRARY-NOTFOUND)
find_library(MTOA_API_LIBRARY ${MTOA_API_NAME}
PATHS
"${MTOA_LOCATION}/${MTOA_LIB_SUFFIX}"
DOC "mtoa_api Libray Path")
if(MTOA_API_LIBRARY)
set(MTOA_LIBRARY_PATH "${MTOA_LOCATION}/${MTOA_LIB_SUFFIX}")
endif()
find_program(MTOA_KICK
${MTOA_KICK_NAME}
PATHS
"${MTOA_LOCATION}/bin"
NO_DEFAULT_PATH
DOC "mtoa kick Path")
if(EXISTS ${MTOA_KICK})
execute_process(COMMAND "${MTOA_KICK}" "-av"
WORKING_DIRECTORY "${MTOA_LOCATION}/bin"
RESULT_VARIABLE MTOA_KICK_RESULT
OUTPUT_VARIABLE MTOA_ARNOLD_VERSION)
if(${MTOA_KICK_RESULT} GREATER 0)
message(FATAL_ERROR "Fail to get arnold version : ${MTOA_KICK_RESULT}")
endif()
endif()
message(STATUS "MTOA_ROOT : ${MTOA_ROOT}")
message(STATUS "MTOA_VERSION : ${MTOA_VERSION}")
message(STATUS "MTOA_ARNOLD_VERSION : ${MTOA_ARNOLD_VERSION}")
message(STATUS "MTOA_INCLUDE_PATH : ${MTOA_INCLUDE_PATH}")
message(STATUS "MTOA_LIBRARY_PATH : ${MTOA_LIBRARY_PATH}")
message(STATUS "MTOA_API : ${MTOA_API_LIBRARY}")
message(STATUS "MTOA_KICK : ${MTOA_KICK}")
find_package_handle_standard_args(Mtoa
REQUIRED_VARS
MTOA_INCLUDE_PATH
MTOA_LIBRARY_PATH
MTOA_API_LIBRARY
VERSION_VAR
MTOA_VERSION
)