ports/cad/cura-engine/files/FindStb.cmake
Matthieu Volat a065119e03 cad/cura-engine: upgrade to 5.7.0
- redo build system for our system
- prepare for cura 5.7.0
2024-09-04 16:57:15 -04:00

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)