70 lines
3.1 KiB
CMake
70 lines
3.1 KiB
CMake
## Finds the Stb utility library on your computer.
|
|
#
|
|
# If Stb is not found on your computer, this script also gives the option to
|
|
# download the library and build it from source.
|
|
#
|
|
# This script exports the following parameters for use if you find the Stb
|
|
# package:
|
|
# - Stb_FOUND: Whether Stb has been found on your computer (or built from
|
|
# source).
|
|
# - Stb_INCLUDE_DIRS: The directory where the header files of Stb are located.
|
|
|
|
#First try to find a PackageConfig for this library.
|
|
find_package(PkgConfig QUIET)
|
|
pkg_check_modules(PC_Stb QUIET Stb)
|
|
|
|
find_path(Stb_INCLUDE_DIRS stb/stb_image_resize.h #Search for something that is a little less prone to false positives than just stb.h.
|
|
HINTS ${PC_Stb_INCLUDEDIR} ${PC_Stb_INCLUDE_DIRS}
|
|
PATHS "$ENV{PROGRAMFILES}" "$ENV{PROGRAMW6432}" "/usr/include"
|
|
PATH_SUFFIXES include/stb stb include
|
|
)
|
|
|
|
include(FindPackageHandleStandardArgs)
|
|
set(_stb_find_required ${Stb_FIND_REQUIRED}) #Temporarily set to optional so that we don't get a message when it's not found but you want to build from source.
|
|
set(_stb_find_quietly ${Stb_FIND_QUIETLY})
|
|
set(Stb_FIND_REQUIRED FALSE)
|
|
set(Stb_FIND_QUIETLY TRUE)
|
|
find_package_handle_standard_args(Stb DEFAULT_MSG Stb_INCLUDE_DIRS)
|
|
set(Stb_FIND_REQUIRED ${_stb_find_required})
|
|
set(Stb_FIND_QUIETLY ${_stb_find_quietly})
|
|
|
|
set(CuraEngine_Download_Stb FALSE)
|
|
if(Stb_FOUND) #Found an existing installation.
|
|
if(NOT Stb_FIND_QUIETLY)
|
|
message(STATUS "Found Stb installation at: ${Stb_INCLUDE_DIRS}")
|
|
endif()
|
|
else()
|
|
#Then optionally clone Stb ourselves.
|
|
option(BUILD_Stb "Build Stb from source." ON) #This is a lie actually, since Stb is header-only and doesn't need any building. We don't build the docs or tests.
|
|
if(BUILD_Stb)
|
|
if(NOT Stb_FIND_QUIETLY)
|
|
message(STATUS "Building Stb from source.")
|
|
endif()
|
|
|
|
include(ExternalProject)
|
|
# Stb's commits in early February seems to cause the engine to fail compilation on Mac.
|
|
ExternalProject_Add(stb
|
|
GIT_REPOSITORY "https://github.com/nothings/stb.git"
|
|
GIT_TAG d5d052c806eee2ca1f858cb58b2f062d9fa25b90
|
|
UPDATE_DISCONNECTED TRUE
|
|
CONFIGURE_COMMAND "" #We don't want to actually go and build/test/generate it. Just need to download the headers.
|
|
BUILD_COMMAND ""
|
|
INSTALL_COMMAND "" #Assume that the user doesn't want to install all dependencies on his system. We just need to get them for building the application.
|
|
)
|
|
set(CuraEngine_Download_Stb TRUE)
|
|
set(Stb_INCLUDE_DIRS "${CMAKE_CURRENT_BINARY_DIR}/stb-prefix/src")
|
|
set(Stb_FOUND TRUE)
|
|
if(NOT Stb_FIND_QUIETLY)
|
|
message(STATUS "Created Stb installation at: ${Stb_INCLUDE_DIRS}")
|
|
endif()
|
|
elseif(NOT Stb_FIND_QUIETLY) #Don't have an installation but don't want us to build it either? Screw you, then.
|
|
if(Stb_FIND_REQUIRED)
|
|
message(FATAL_ERROR "Could NOT find Stb.")
|
|
else()
|
|
message(WARNING "Could NOT find Stb.")
|
|
endif()
|
|
endif()
|
|
endif()
|
|
|
|
mark_as_advanced(Stb_INCLUDE_DIRS)
|