1# - try to find Adrienne Electronics Corporation timecode card library 2# 3# SDK available from the manufacturer: http://www.adrielec.com/ 4# 5# Cache Variables: (probably not for direct use in your scripts) 6# ADRIENNE_INCLUDE_DIR 7# ADRIENNE_LIBRARY 8# ADRIENNE_RUNTIME_LIBRARY 9# ADRIENNE_INCLUDE_FILE 10# 11# Variables you might use in your CMakeLists.txt: 12# ADRIENNE_FOUND 13# ADRIENNE_INCLUDE_DIRS 14# ADRIENNE_LIBRARIES 15# ADRIENNE_RUNTIME_LIBRARIES - the AEC_NTTC.dll file 16# ADRIENNE_RUNTIME_LIBRARY_DIRS 17# 18# ADRIENNE_INCLUDE_FILENAME - this is probably AEC_NTTC.h, but it might also 19# be AECINTTC.H. 20# 21# ADRIENNE_INCLUDE_HAS_EXTERN_C - Some (most) versions of the header already 22# wrap their definitions in extern "C" { }, but some do not. 23# 24# ADRIENNE_DEFINITIONS - defines a quoted ADRIENNE_INCLUDE_FILENAME as above, 25# so you can write a line like #include ADRIENNE_INCLUDE_FILENAME 26# Also defines ADRIENNE_BEFORE_INCLUDE and ADRIENNE_AFTER_INCLUDE to handle 27# adding extern "C" { and } if the header file doesn't do so itself. 28# 29# Variables that might be set by the user in the gui/command line to help 30# find the library: 31# ADRIENNE_ROOT_DIR - root of an Adrienne CD, disk, or extracted/copied contents 32# thereof. 33# 34# Requires these CMake modules: 35# FindPackageHandleStandardArgs (known included with CMake >=2.6.2) 36# 37# Original Author: 38# 2012 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net> 39# http://academic.cleardefinition.com 40# Iowa State University HCI Graduate Program/VRAC 41# 42# Copyright Iowa State University 2012. 43# Distributed under the Boost Software License, Version 1.0. 44# (See accompanying file LICENSE_1_0.txt or copy at 45# http://www.boost.org/LICENSE_1_0.txt) 46 47# Apparently Windows only. 48if(WIN32 OR CYGWIN) 49 set(ADRIENNE_ROOT_DIR 50 "${ADRIENNE_ROOT_DIR}" 51 CACHE 52 PATH 53 "Directory to search for Adrienne Electronics Timecode data - root of a software distribution or extracted download from http://www.adrielec.com/") 54 55 set(ADRIENNE_DEFINITIONS) 56 57 set(ADRIENNE_INCLUDE_SEARCH 58 # from AecPCIeTC_8-12a: contains AEC_NTTC.h with extern "C" and three extra functions: 59 # AEC_PCTC_OPEN_ALL, AEC_PCTC_CLOSE_ALL, AEC_PCTC_INITIALIZE_EVENT 60 "SDK_SourceCode" 61 62 # from AecPci6_02_CD - called AECINTTC.H but otherwise essentially identical to earlier versions 63 "TestPrograms_WithDLL/DLL_API_INFO" 64 # A zipped development project contains essentially the same, named AEC_NTTC.h so we'll add this in case it's unzipped. 65 "TestPrograms_WithDLL/ZippedDevelopmentProjects/AecMfc32_Rel504" 66 67 # from pc-ltc - called AECINTTC.H and lacks extern "C" 68 "NT-CODE/C40-APP1" 69 ) 70 set(ADRIENNE_HEADER_NAMES 71 AEC_NTTC.H 72 AEC_NTTC.h 73 Aec_nttc.h 74 AECINTTC.H) 75 76 set(ADRIENNE_LIB_SEARCH) 77 set(ADRIENNE_DLL_SEARCH) 78 79 if(CMAKE_SIZEOF_VOID_P MATCHES "8") 80 # 64 bit code - apparently initially packaged only in the 81 # PCIe version of their software 82 list(APPEND ADRIENNE_LIB_SEARCH 83 # from AecPCIeTC_8-12a 84 "64BitOS_files/DLL Versions") 85 86 list(APPEND ADRIENNE_DLL_SEARCH 87 # from AecPCIeTC_8-12a 88 "64BitOS_files/DLL Versions") 89 else() 90 # 32-bit code, much more prevalent. 91 list(APPEND ADRIENNE_LIB_SEARCH 92 # from AecPCIeTC_8-12a 93 "32BitOS_files/DLLversions" 94 95 # from AecPci6_02_CD 96 "TestPrograms_WithDLL/DLL_API_INFO" 97 98 # from pc-ltc 99 "NT-CODE/DLL" 100 ) 101 102 list(APPEND ADRIENNE_DLL_SEARCH 103 # from AecPCIeTC_8-12a 104 "32BitOS_files/DLLversions" 105 106 # from AecPci6_02_CD 107 "TestPrograms_WithDLL" 108 109 # from pc-ltc 110 "NT-CODE/DLL") 111 endif() 112 113 find_library(ADRIENNE_LIBRARY 114 NAMES 115 AEC_NTTC 116 PATHS 117 "${ADRIENNE_ROOT_DIR}" 118 PATH_SUFFIXES 119 ${ADRIENNE_LIB_SEARCH}) 120 121 find_path(ADRIENNE_INCLUDE_DIR 122 NAMES 123 ${ADRIENNE_HEADER_NAMES} 124 PATHS 125 "${ADRIENNE_ROOT_DIR}" 126 PATH_SUFFIXES 127 ${ADRIENNE_INCLUDE_SEARCH}) 128 129 if(ADRIENNE_INCLUDE_DIR) 130 find_file(ADRIENNE_INCLUDE_FILE 131 NAMES 132 ${ADRIENNE_HEADER_NAMES} 133 HINTS 134 ${ADRIENNE_INCLUDE_DIR}) 135 136 # Get include filename 137 get_filename_component(ADRIENNE_INCLUDE_FILENAME 138 "${ADRIENNE_INCLUDE_FILE}" 139 NAME) 140 list(APPEND ADRIENNE_DEFINITIONS -DADRIENNE_INCLUDE_FILENAME="ADRIENNE_INCLUDE_FILENAME") 141 142 # Find out if it has extern "C" in it. 143 file(STRINGS "${ADRIENNE_INCLUDE_FILE}" strings) 144 set(ADRIENNE_INCLUDE_HAS_EXTERN_C OFF) 145 foreach(_line ${strings}) 146 if("${_line}" STREQUAL "extern \"C\"") 147 set(ADRIENNE_INCLUDE_HAS_EXTERN_C ON) 148 break() 149 endif() 150 endforeach() 151 152 if(ADRIENNE_INCLUDE_HAS_EXTERN_C) 153 list(APPEND ADRIENNE_DEFINITIONS -DADRIENNE_BEFORE_INCLUDE -DADRIENNE_AFTER_INCLUDE) 154 else() 155 list(APPEND ADRIENNE_DEFINITIONS "-DADRIENNE_BEFORE_INCLUDE=extern \"C\" {" "-DADRIENNE_AFTER_INCLUDE=}") 156 endif() 157 endif() 158 159 get_filename_component(_adrienne_libdir "${ADRIENNE_LIBRARY}" PATH) 160 find_file(ADRIENNE_RUNTIME_LIBRARY 161 NAMES 162 AEC_NTTC.dll 163 HINTS 164 "${_adrienne_libdir}" 165 "${_adrienne_libdir}/.." 166 PATHS 167 "${ADRIENNE_ROOT_DIR}" 168 PATH_SUFFIXES 169 ${ADRIENNE_DLL_SEARCH}) 170 171 172 set(ADRIENNE_RUNTIME_LIBRARIES "${ADRIENNE_RUNTIME_LIBRARY}") 173 get_filename_component(ADRIENNE_RUNTIME_LIBRARY_DIRS 174 "${ADRIENNE_RUNTIME_LIBRARY}" 175 PATH) 176 177 include(FindPackageHandleStandardArgs) 178 find_package_handle_standard_args(Adrienne 179 DEFAULT_MSG 180 ADRIENNE_LIBRARY 181 ADRIENNE_RUNTIME_LIBRARY 182 ADRIENNE_INCLUDE_DIR 183 ADRIENNE_INCLUDE_FILENAME) 184 185 if(ADRIENNE_FOUND) 186 set(ADRIENNE_LIBRARIES "${ADRIENNE_LIBRARY}") 187 set(ADRIENNE_INCLUDE_DIRS "${ADRIENNE_INCLUDE_DIR}") 188 mark_as_advanced(ADRIENNE_ROOT_DIR) 189 endif() 190 191 mark_as_advanced( 192 ADRIENNE_LIBRARY 193 ADRIENNE_RUNTIME_LIBRARY 194 ADRIENNE_INCLUDE_DIR 195 ADRIENNE_INCLUDE_FILE) 196else() 197 set(ADRIENNE_FOUND OFF) 198 set(ADRIENNE_SDK_IS_WINDOWS_ONLY NOTFOUND) 199 find_package_handle_standard_args(Adrienne 200 DEFAULT_MSG 201 ADRIENNE_SDK_IS_WINDOWS_ONLY) 202endif() 203