Files
qt-creator/cmake/Findyaml-cpp.cmake
Cristian Adam 88781a003f CMake: Qt Creator Static build support
This adds the build system feature that allows Qt Creator's libraries
and plugins to be compiled statically.

Fixes some symbol clashes when all plugins are linked into the same
executable.

Support for actually loading static plugins will be added in a separate
commit.

The feature is controlled by QTC_STATIC_BUILD which by default is OFF.

Change-Id: I1fab7953c43e42dc75619e35660029ee067106df
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2022-04-29 07:16:53 +00:00

132 lines
5.4 KiB
CMake

#.rst:
# Findyaml-cpp
# -----------------
#
# Try to find a yaml-cpp config/package.
# If that fails, build and use our copy of it.
#
find_package(yaml-cpp 0.5 QUIET NO_MODULE)
if (yaml-cpp_FOUND)
# target doesn't set include directory for some reason
get_filename_component(yaml_cpp_include_dir "${YAML_CPP_INCLUDE_DIR}" ABSOLUTE)
if (NOT EXISTS yaml_cpp_include_dir)
unset(yaml_cpp_include_dir)
unset(yaml_cpp_include_dir CACHE)
find_path(yaml_cpp_include_dir yaml-cpp/yaml.h)
endif()
set_target_properties(yaml-cpp PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${yaml_cpp_include_dir}")
else()
if(TARGET yaml-cpp)
return()
endif()
set(YAML_SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/../src/libs/3rdparty/yaml-cpp)
add_qtc_library(yaml-cpp
INCLUDES ${YAML_SOURCE_DIR}/include
PUBLIC_INCLUDES ${YAML_SOURCE_DIR}/include
PROPERTIES AUTOMOC OFF AUTOUIC OFF
SOURCES
${YAML_SOURCE_DIR}/include/yaml-cpp
${YAML_SOURCE_DIR}/include/yaml-cpp/anchor.h
${YAML_SOURCE_DIR}/include/yaml-cpp/binary.h
${YAML_SOURCE_DIR}/include/yaml-cpp/dll.h
${YAML_SOURCE_DIR}/include/yaml-cpp/emitfromevents.h
${YAML_SOURCE_DIR}/include/yaml-cpp/emitter.h
${YAML_SOURCE_DIR}/include/yaml-cpp/emitterdef.h
${YAML_SOURCE_DIR}/include/yaml-cpp/emittermanip.h
${YAML_SOURCE_DIR}/include/yaml-cpp/emitterstyle.h
${YAML_SOURCE_DIR}/include/yaml-cpp/eventhandler.h
${YAML_SOURCE_DIR}/include/yaml-cpp/exceptions.h
${YAML_SOURCE_DIR}/include/yaml-cpp/mark.h
${YAML_SOURCE_DIR}/include/yaml-cpp/node
${YAML_SOURCE_DIR}/include/yaml-cpp/node/convert.h
${YAML_SOURCE_DIR}/include/yaml-cpp/node/detail
${YAML_SOURCE_DIR}/include/yaml-cpp/node/detail/bool_type.h
${YAML_SOURCE_DIR}/include/yaml-cpp/node/detail/impl.h
${YAML_SOURCE_DIR}/include/yaml-cpp/node/detail/iterator.h
${YAML_SOURCE_DIR}/include/yaml-cpp/node/detail/iterator_fwd.h
${YAML_SOURCE_DIR}/include/yaml-cpp/node/detail/memory.h
${YAML_SOURCE_DIR}/include/yaml-cpp/node/detail/node.h
${YAML_SOURCE_DIR}/include/yaml-cpp/node/detail/node_data.h
${YAML_SOURCE_DIR}/include/yaml-cpp/node/detail/node_iterator.h
${YAML_SOURCE_DIR}/include/yaml-cpp/node/detail/node_ref.h
${YAML_SOURCE_DIR}/include/yaml-cpp/node/emit.h
${YAML_SOURCE_DIR}/include/yaml-cpp/node/impl.h
${YAML_SOURCE_DIR}/include/yaml-cpp/node/iterator.h
${YAML_SOURCE_DIR}/include/yaml-cpp/node/node.h
${YAML_SOURCE_DIR}/include/yaml-cpp/node/parse.h
${YAML_SOURCE_DIR}/include/yaml-cpp/node/ptr.h
${YAML_SOURCE_DIR}/include/yaml-cpp/node/type.h
${YAML_SOURCE_DIR}/include/yaml-cpp/noncopyable.h
${YAML_SOURCE_DIR}/include/yaml-cpp/null.h
${YAML_SOURCE_DIR}/include/yaml-cpp/ostream_wrapper.h
${YAML_SOURCE_DIR}/include/yaml-cpp/parser.h
${YAML_SOURCE_DIR}/include/yaml-cpp/stlemitter.h
${YAML_SOURCE_DIR}/include/yaml-cpp/traits.h
${YAML_SOURCE_DIR}/include/yaml-cpp/yaml.h
${YAML_SOURCE_DIR}/src/binary.cpp
${YAML_SOURCE_DIR}/src/collectionstack.h
${YAML_SOURCE_DIR}/src/convert.cpp
${YAML_SOURCE_DIR}/src/directives.cpp
${YAML_SOURCE_DIR}/src/directives.h
${YAML_SOURCE_DIR}/src/emit.cpp
${YAML_SOURCE_DIR}/src/emitfromevents.cpp
${YAML_SOURCE_DIR}/src/emitter.cpp
${YAML_SOURCE_DIR}/src/emitterstate.cpp
${YAML_SOURCE_DIR}/src/emitterstate.h
${YAML_SOURCE_DIR}/src/emitterutils.cpp
${YAML_SOURCE_DIR}/src/emitterutils.h
${YAML_SOURCE_DIR}/src/exceptions.cpp
${YAML_SOURCE_DIR}/src/exp.cpp
${YAML_SOURCE_DIR}/src/exp.h
${YAML_SOURCE_DIR}/src/indentation.h
${YAML_SOURCE_DIR}/src/memory.cpp
${YAML_SOURCE_DIR}/src/node.cpp
${YAML_SOURCE_DIR}/src/node_data.cpp
${YAML_SOURCE_DIR}/src/nodebuilder.cpp
${YAML_SOURCE_DIR}/src/nodebuilder.h
${YAML_SOURCE_DIR}/src/nodeevents.cpp
${YAML_SOURCE_DIR}/src/nodeevents.h
${YAML_SOURCE_DIR}/src/null.cpp
${YAML_SOURCE_DIR}/src/ostream_wrapper.cpp
${YAML_SOURCE_DIR}/src/parse.cpp
${YAML_SOURCE_DIR}/src/parser.cpp
${YAML_SOURCE_DIR}/src/ptr_vector.h
${YAML_SOURCE_DIR}/src/regex_yaml.cpp
${YAML_SOURCE_DIR}/src/regex_yaml.h
${YAML_SOURCE_DIR}/src/regeximpl.h
${YAML_SOURCE_DIR}/src/scanner.cpp
${YAML_SOURCE_DIR}/src/scanner.h
${YAML_SOURCE_DIR}/src/scanscalar.cpp
${YAML_SOURCE_DIR}/src/scanscalar.h
${YAML_SOURCE_DIR}/src/scantag.cpp
${YAML_SOURCE_DIR}/src/scantag.h
${YAML_SOURCE_DIR}/src/scantoken.cpp
${YAML_SOURCE_DIR}/src/setting.h
${YAML_SOURCE_DIR}/src/simplekey.cpp
${YAML_SOURCE_DIR}/src/singledocparser.cpp
${YAML_SOURCE_DIR}/src/singledocparser.h
${YAML_SOURCE_DIR}/src/stream.cpp
${YAML_SOURCE_DIR}/src/stream.h
${YAML_SOURCE_DIR}/src/streamcharsource.h
${YAML_SOURCE_DIR}/src/stringsource.h
${YAML_SOURCE_DIR}/src/tag.cpp
${YAML_SOURCE_DIR}/src/tag.h
${YAML_SOURCE_DIR}/src/token.h
)
if (NOT QTC_STATIC_BUILD)
extend_qtc_target(yaml-cpp
DEFINES yaml_cpp_EXPORTS
PUBLIC_DEFINES YAML_CPP_DLL)
endif()
if(TARGET yaml-cpp)
set(yaml-cpp_FOUND 1)
set_package_properties(yaml-cpp PROPERTIES DESCRIPTION "using internal src/libs/3rdparty/yaml-cpp")
if(MSVC)
target_compile_options(yaml-cpp PUBLIC /wd4251 /wd4275)
endif()
endif()
unset(YAML_SOURCE_DIR)
endif()