Add Global CMake Build and OSS Tests (#1217)
Summary: Pull Request resolved: 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: db15a2a94b59fe78a49530fb55aa8da0426ce4df
This commit is contained in:
committed by
Facebook GitHub Bot
parent
53872e2521
commit
8adadf52bf
50
cmake/project-defaults.cmake
Normal file
50
cmake/project-defaults.cmake
Normal file
@@ -0,0 +1,50 @@
|
||||
# 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.
|
||||
|
||||
set(CMAKE_CXX_STANDARD 14)
|
||||
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
|
||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
add_compile_definitions($<$<CONFIG:DEBUG>:DEBUG>)
|
||||
|
||||
if(MSVC)
|
||||
|
||||
add_compile_options(
|
||||
# Don't omit frame pointers (e.g. for crash dumps)
|
||||
/Oy-
|
||||
# "Standard C++ exception handling" (C++ stack unwinding including extern c)
|
||||
/EHsc
|
||||
# Enable warnings and warnings as errors
|
||||
/W3
|
||||
/WX
|
||||
# Disable RTTI
|
||||
$<$<COMPILE_LANGUAGE:CXX>:/GR->
|
||||
# Use /O2 (Maximize Speed)
|
||||
$<$<CONFIG:RELEASE>:/O2>)
|
||||
|
||||
else()
|
||||
|
||||
add_compile_options(
|
||||
# Don't omit frame pointers (e.g. for crash dumps)
|
||||
-fno-omit-frame-pointer
|
||||
# Enable exception handling
|
||||
-fexceptions
|
||||
# Enable warnings and warnings as errors
|
||||
-Wall
|
||||
-Werror
|
||||
# Disable RTTI
|
||||
$<$<COMPILE_LANGUAGE:CXX>:-fno-rtti>
|
||||
# Use -O2 (prioritize speed)
|
||||
$<$<CONFIG:RELEASE>:-O2>
|
||||
# Enable separate sections per function/data item
|
||||
$<$<CONFIG:RELEASE>:-ffunction-sections>
|
||||
$<$<CONFIG:RELEASE>:-fdata-sections>)
|
||||
|
||||
add_link_options(
|
||||
# Discard unused sections
|
||||
$<$<CONFIG:RELEASE>:$<$<CXX_COMPILER_ID:Clang,GNU>:-Wl,--gc-sections>>
|
||||
$<$<CONFIG:RELEASE>:$<$<CXX_COMPILER_ID:AppleClang>:-Wl,-dead_strip>>)
|
||||
|
||||
endif()
|
10
cmake/yoga-config.cmake.in
Normal file
10
cmake/yoga-config.cmake.in
Normal file
@@ -0,0 +1,10 @@
|
||||
# Copyright (c) Facebook, Inc. and its affiliates.
|
||||
#
|
||||
# This source code is licensed under the MIT license found in the
|
||||
# LICENSE file in the root directory of this source tree.
|
||||
|
||||
@PACKAGE_INIT@
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/yogaTargets.cmake")
|
||||
|
||||
check_required_components(yoga)
|
Reference in New Issue
Block a user