1# - try to find DCUBED library 2# 3# DCUBED_LIBRARY_DIR, library search path 4# DCUBED_INCLUDE_DIR, include search path 5# DCUBED_{component}_LIBRARY, the library to link against 6# DCUBED_ENVIRONMENT 7# DCUBED_FOUND, If false, do not try to use this library. 8# 9# Plural versions refer to this library and its dependencies, and 10# are recommended to be used instead, unless you have a good reason. 11# 12# Useful configuration variables you might want to add to your cache: 13# DCUBED_ROOT_DIR - A directory prefix to search 14# (a path that contains include/ as a subdirectory) 15# 16# 2009-2010 Ryan Pavlik <rpavlik@iastate.edu> 17# http://academic.cleardefinition.com 18# Iowa State University HCI Graduate Program/VRAC 19# 20# Copyright Iowa State University 2009-2010. 21# Distributed under the Boost Software License, Version 1.0. 22# (See accompanying file LICENSE_1_0.txt or copy at 23# http://www.boost.org/LICENSE_1_0.txt) 24 25if(NOT BITS) 26 if(CMAKE_SIZEOF_VOID_P MATCHES "8") 27 set(BITS 64) 28 else() 29 set(BITS 32) 30 endif() 31endif() 32 33if(WIN32 AND MSVC) 34 include(CMakeDetermineVSServicePack) 35 determinevsservicepack(_sp) 36 if(MSVC71) 37 set(VC_VER vc71) 38 set(VC_VER_LONG vc71) 39 elseif(MSVC80) 40 set(VC_VER vc8) 41 set(VC_VER_LONG vc80) 42 # FIXME TODO provide more options here 43 set(D3BUILD nt8) 44 if("${_sp}" STREQUAL "vc80sp1") 45 set(_verstring nt8s1) 46 else() 47 set(_verstring nt8) 48 endif() 49 elseif(MSVC90) 50 set(VC_VER vc9) 51 set(VC_VER_LONG vc90) 52 set(_verstring nt9) 53 endif() 54 55 if(BITS EQUAL 32) 56 set(PLATFORM win32) 57 else() 58 set(PLATFORM win64) 59 endif() 60endif() 61 62if(NOT DCUBED_ROOT_DIR) 63 if(EXISTS "$ENV{DCUBED}" AND IS_DIRECTORY "$ENV{DCUBED}") 64 set(DCUBED_ROOT_DIR "$ENV{DCUBED}") 65 endif() 66endif() 67 68file(TO_CMAKE_PATH "${DCUBED_ROOT_DIR}" DCUBED_ROOT_DIR) 69 70set(DCUBED_ROOT_DIR 71 "${DCUBED_ROOT_DIR}" 72 CACHE 73 PATH 74 "Root directory to search for DCubed") 75 76# Do this by default 77if(NOT DEFINED DCUBED_NESTED_TARGETS) 78 set(DCUBED_NESTED_TARGETS TRUE) 79endif() 80 81set(DCUBED_NESTED_TARGETS 82 "${DCUBED_NESTED_TARGETS}" 83 CACHE 84 BOOL 85 "Whether we should compile the wrappers as a part of the solution") 86mark_as_advanced(DCUBED_NESTED_TARGETS) 87 88### 89# Configure DCubed 90### 91 92 93find_path(DCUBED_CORE_INCLUDE_DIR 94 d3ew_inc/modelgate.hxx 95 PATHS 96 "${DCUBED_ROOT_DIR}/inc") 97 98foreach(lib aem cdmwp d3e_base d3e_cd dcm dcm3 g3) 99 find_library(DCUBED_${lib}_LIBRARY 100 ${lib} 101 PATHS 102 "${DCUBED_ROOT_DIR}/lib/${_verstring}") 103 if(DCUBED_${lib}_LIBRARY) 104 list(APPEND DCUBED_LIBRARIES ${DCUBED_${lib}_LIBRARY}) 105 list(APPEND DCUBED_CORE_LIBRARIES ${DCUBED_${lib}_LIBRARY}) 106 endif() 107 mark_as_advanced(DCUBED_${lib}_LIBRARY) 108endforeach() 109 110find_path(DCUBED_WRAPPER_INCLUDE_DIR 111 d3ew_p/p_utils.hxx 112 PATHS 113 "${DCUBED_ROOT_DIR}/source/wrapper_source/") 114 115foreach(lib d3ew_p d3ew_scene) 116 find_library(DCUBED_WRAPPER_${lib}_LIBRARY 117 ${lib}_${D3BUILD} 118 PATHS 119 "${DCUBED_ROOT_DIR}/wrappers/cdmwp/${lib}") 120 mark_as_advanced(DCUBED_WRAPPER_${lib}_LIBRARY) 121endforeach() 122 123set(_nest_targets) 124if(DCUBED_WRAPPER_INCLUDE_DIR) 125 foreach(lib d3ew_p d3ew_scene) 126 if(DCUBED_NESTED_TARGETS OR NOT DCUBED_WRAPPER_${lib}_LIBRARY) 127 if(PARASOLID_FOUND) 128 set(_nest_targets YES) 129 set(DCUBED_WRAPPER_${lib}_LIBRARY 130 "dcubed_wrapper_${lib}_nested_target" 131 CACHE 132 STRING 133 "We will build the DCubed wrapper ${lib} lib." 134 FORCE) 135 else() 136 set(DCUBED_WRAPPER_${lib}_LIBRARY 137 "NESTED_TARGET_REQUIRES_PARASOLID-NOTFOUND" 138 CACHE 139 STRING 140 "Can't build the DCubed wrapper ${lib} without first finding Parasolid." 141 FORCE) 142 endif() 143 endif() 144 endforeach() 145endif() 146 147foreach(lib d3ew_p d3ew_scene) 148 if(DCUBED_WRAPPER_${lib}_LIBRARY) 149 list(APPEND DCUBED_WRAPPER_LIBRARIES ${DCUBED_WRAPPER_${lib}_LIBRARY}) 150 endif() 151endforeach() 152 153if(NOT DCUBED_ROOT_DIR) 154 get_filename_component(_path "${DCUBED_dcm_LIBRARY}" PATH) 155 get_filename_component(_path "${_path}/../.." ABSOLUTE) 156 set(DCUBED_ROOT_DIR 157 "${_path}" 158 CACHE 159 PATH 160 "Root directory to search for DCubed" 161 FORCE) 162endif() 163 164#file(TO_NATIVE_PATH "${DCUBED_ROOT_DIR}" _d3envdir) 165set(DCUBED_ENVIRONMENT "DCUBED=${DCUBED_ROOT_DIR}") 166 167# handle the QUIETLY and REQUIRED arguments and set xxx_FOUND to TRUE if 168# all listed variables are TRUE 169include(FindPackageHandleStandardArgs) 170find_package_handle_standard_args(DCubed 171 DEFAULT_MSG 172 DCUBED_ROOT_DIR 173 DCUBED_LIBRARIES 174 DCUBED_CORE_LIBRARIES 175 DCUBED_CORE_INCLUDE_DIR 176 DCUBED_WRAPPER_INCLUDE_DIR 177 DCUBED_WRAPPER_LIBRARIES) 178 179if(DCUBED_FOUND) 180 if(_nest_targets) 181 get_filename_component(_moddir "${CMAKE_CURRENT_LIST_FILE}" PATH) 182 add_subdirectory("${_moddir}/nested_targets/DCubed") 183 endif() 184 set(DCUBED_INCLUDE_DIRS 185 "${DCUBED_CORE_INCLUDE_DIR}" 186 "${DCUBED_CORE_INCLUDE_DIR}/if3" 187 "${DCUBED_CORE_INCLUDE_DIR}/.." 188 "${DCUBED_WRAPPER_INCLUDE_DIR}") 189 mark_as_advanced(DCUBED_ROOT_DIR) 190endif() 191 192mark_as_advanced(DCUBED_CORE_INCLUDE_DIR DCUBED_WRAPPER_INCLUDE_DIR) 193