From cb80f16d00f8b05b9d6ba5ec6ebb0a241a84e56b Mon Sep 17 00:00:00 2001 From: Nick Gerleman Date: Mon, 16 Jan 2023 07:56:11 -0800 Subject: [PATCH] Add Global CMake Build and OSS Tests (#1217) Summary: X-link: https://github.com/facebook/yoga/pull/1217 This updates the CMake build present for being able to share options, fixing up flags, etc. A GTest build is added as well, along with a script and VSCode debug target so that OSS contributors can very easily run and debug tests on any OS. Note that this isn't completely done (need to revise Windows, Mac, documentation), but should be finished enough otherwise for review. Changelog: [Internal] Reviewed By: cortinico Differential Revision: D42406686 fbshipit-source-id: 95e7ba5e4751c496a171785490e85cf0097fa839 --- ReactCommon/yoga/yoga/CMakeLists.txt | 41 ++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 ReactCommon/yoga/yoga/CMakeLists.txt diff --git a/ReactCommon/yoga/yoga/CMakeLists.txt b/ReactCommon/yoga/yoga/CMakeLists.txt new file mode 100644 index 00000000000..e51f3679538 --- /dev/null +++ b/ReactCommon/yoga/yoga/CMakeLists.txt @@ -0,0 +1,41 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree. + + +cmake_minimum_required(VERSION 3.13) +project(yogacore) +set(CMAKE_VERBOSE_MAKEFILE on) + +if(TARGET yogacore) + return() +endif() + +include(CheckIPOSupported) + +set(YOGA_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/..) +include(${YOGA_ROOT}/cmake/project-defaults.cmake) + + +file(GLOB SOURCES CONFIGURE_DEPENDS + ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/**/*.cpp) + +add_library(yogacore STATIC ${SOURCES}) + +# Yoga conditionally uses when building for Android +if (ANDROID) + target_link_libraries(yogacore log) +endif() + +check_ipo_supported(RESULT result) +if(result) + set_target_properties(yogacore PROPERTIES + CMAKE_INTERPROCEDURAL_OPTIMIZATION true) +endif() + +target_include_directories(yogacore + PUBLIC + $ + $)