From a586a31a93c61a4ba7fd5d40cc180e2aa6e3b262 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 29 Mar 2017 13:48:24 -0700 Subject: [PATCH] stub the oven tool and add a find module for FBX SDK --- cmake/modules/FindFBXSDK.cmake | 110 +++++++++++++++++++++++++++++++++ tools/CMakeLists.txt | 3 + tools/oven/CMakeLists.txt | 5 ++ tools/oven/src/main.cpp | 14 +++++ 4 files changed, 132 insertions(+) create mode 100644 cmake/modules/FindFBXSDK.cmake create mode 100644 tools/oven/CMakeLists.txt create mode 100644 tools/oven/src/main.cpp diff --git a/cmake/modules/FindFBXSDK.cmake b/cmake/modules/FindFBXSDK.cmake new file mode 100644 index 0000000000..477aff6bf2 --- /dev/null +++ b/cmake/modules/FindFBXSDK.cmake @@ -0,0 +1,110 @@ +# Locate the FBX SDK +# +# Defines the following variables: +# +# FBX_FOUND - Found the FBX SDK +# FBX_VERSION - Version number +# FBX_INCLUDE_DIRS - Include directories +# FBX_LIBRARIES - The libraries to link to +# +# Accepts the following variables as input: +# +# FBX_VERSION - as a CMake variable, e.g. 2017.0.1 +# FBX_ROOT - (as a CMake or environment variable) +# The root directory of the FBX SDK install + +# adapted from https://github.com/ufz-vislab/VtkFbxConverter/blob/master/FindFBX.cmake +# which uses the MIT license (https://github.com/ufz-vislab/VtkFbxConverter/blob/master/LICENSE.txt) + +if (NOT FBX_VERSION) + set(FBX_VERSION 2017.0.1) +endif() + +string(REGEX REPLACE "^([0-9]+).*$" "\\1" FBX_VERSION_MAJOR "${FBX_VERSION}") +string(REGEX REPLACE "^[0-9]+\\.([0-9]+).*$" "\\1" FBX_VERSION_MINOR "${FBX_VERSION}") +string(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]+).*$" "\\1" FBX_VERSION_PATCH "${FBX_VERSION}") + +set(FBX_MAC_LOCATIONS "/Applications/Autodesk/FBX\ SDK/${FBX_VERSION}") + +if (WIN32) + string(REGEX REPLACE "\\\\" "/" WIN_PROGRAM_FILES_X64_DIRECTORY $ENV{ProgramW6432}) +endif() + +set(FBX_WIN_LOCATIONS "${WIN_PROGRAM_FILES_X64_DIRECTORY}/Autodesk/FBX/FBX SDK/${FBX_VERSION}") + +set(FBX_SEARCH_LOCATIONS $ENV{FBX_ROOT} ${FBX_ROOT} ${FBX_MAC_LOCATIONS} ${FBX_WIN_LOCATIONS}) + +function(_fbx_append_debugs _endvar _library) + if (${_library} AND ${_library}_DEBUG) + set(_output optimized ${${_library}} debug ${${_library}_DEBUG}) + else() + set(_output ${${_library}}) + endif() + + set(${_endvar} ${_output} PARENT_SCOPE) +endfunction() + +if (${CMAKE_CXX_COMPILER_ID} MATCHES "Clang") + set(fbx_compiler clang) +elseif (${CMAKE_CXX_COMPILER_ID} MATCHES "GNU") + set(fbx_compiler gcc4) +endif() + +function(_fbx_find_library _name _lib _suffix) + if (MSVC12) + set(VS_PREFIX vs2013) + endif() + + if (MSVC11) + set(VS_PREFIX vs2012) + endif() + + if (MSVC10) + set(VS_PREFIX vs2010) + endif() + + if (MSVC90) + set(VS_PREFIX vs2008) + endif() + + find_library(${_name} + NAMES ${_lib} + HINTS ${FBX_SEARCH_LOCATIONS} + PATH_SUFFIXES lib/${fbx_compiler}/${_suffix} lib/${fbx_compiler}/ub/${_suffix} lib/${VS_PREFIX}/x64/${_suffix} + ) + + mark_as_advanced(${_name}) +endfunction() + +find_path(FBX_INCLUDE_DIR fbxsdk.h + PATHS ${FBX_SEARCH_LOCATIONS} + PATH_SUFFIXES include +) +mark_as_advanced(FBX_INCLUDE_DIR) + +if (WIN32) + _fbx_find_library(FBX_LIBRARY libfbxsdk-md release) + _fbx_find_library(FBX_LIBRARY_DEBUG libfbxsdk-md debug) +elseif (APPLE) + find_library(CARBON NAMES Carbon) + find_library(SYSTEM_CONFIGURATION NAMES SystemConfiguration) + _fbx_find_library(FBX_LIBRARY libfbxsdk.a release) + _fbx_find_library(FBX_LIBRARY_DEBUG libfbxsdk.a debug) +endif() + +include(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(FBX DEFAULT_MSG FBX_LIBRARY FBX_INCLUDE_DIR) + +if (FBX_FOUND) + set(FBX_INCLUDE_DIRS ${FBX_INCLUDE_DIR}) + _fbx_append_debugs(FBX_LIBRARIES FBX_LIBRARY) + add_definitions(-DFBXSDK_NEW_API) + + if (WIN32) + add_definitions(-DK_PLUGIN -DK_FBXSDK -DK_NODLL) + set(CMAKE_EXE_LINKER_FLAGS /NODEFAULTLIB:\"LIBCMT\") + set(FBX_LIBRARIES ${FBX_LIBRARIES} Wininet.lib) + elseif (APPLE) + set(FBX_LIBRARIES ${FBX_LIBRARIES} ${CARBON} ${SYSTEM_CONFIGURATION}) + endif() +endif() diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index 8dc993e6fe..0561956709 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -19,3 +19,6 @@ set_target_properties(skeleton-dump PROPERTIES FOLDER "Tools") add_subdirectory(atp-get) set_target_properties(atp-get PROPERTIES FOLDER "Tools") + +add_subdirectory(oven) +set_target_properties(oven PROPERTIES FOLDER "Tools") diff --git a/tools/oven/CMakeLists.txt b/tools/oven/CMakeLists.txt new file mode 100644 index 0000000000..5244b68217 --- /dev/null +++ b/tools/oven/CMakeLists.txt @@ -0,0 +1,5 @@ +set(TARGET_NAME oven) + +setup_hifi_project() + +find_package(FBXSDK REQUIRED) diff --git a/tools/oven/src/main.cpp b/tools/oven/src/main.cpp new file mode 100644 index 0000000000..831ba00328 --- /dev/null +++ b/tools/oven/src/main.cpp @@ -0,0 +1,14 @@ +// +// main.cpp +// tools/oven/src +// +// Created by Stephen Birarda on 3/28/2017. +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html + + +int main (int argc, char** argv) { + return 0; +}