From 6c5bd6d790ae0bd24708b2e19e1002d00734761c Mon Sep 17 00:00:00 2001 From: Andrei Shikov Date: Wed, 16 Mar 2022 01:47:05 -0700 Subject: [PATCH] Hermes executor migration to CMake Summary: Adds CMake files to configure hermes-executor build, with the same setup as we have in Android.mk Changelog: [Internal] - CMake build config for hermes executor Reviewed By: cortinico Differential Revision: D34811909 fbshipit-source-id: 2df6dbaf46131db87a25e26c83b38ba44f29d1d3 --- .../hermes/reactexecutor/CMakeLists.txt | 41 +++++++++++++++++++ .../jni/first-party/fbgloginit/CMakeLists.txt | 2 +- ReactCommon/hermes/executor/CMakeLists.txt | 29 +++++++++++++ ReactCommon/hermes/inspector/CMakeLists.txt | 32 +++++++++++++++ ReactCommon/react/debug/CMakeLists.txt | 3 +- 5 files changed, 104 insertions(+), 3 deletions(-) create mode 100644 ReactAndroid/src/main/java/com/facebook/hermes/reactexecutor/CMakeLists.txt create mode 100644 ReactCommon/hermes/executor/CMakeLists.txt create mode 100644 ReactCommon/hermes/inspector/CMakeLists.txt diff --git a/ReactAndroid/src/main/java/com/facebook/hermes/reactexecutor/CMakeLists.txt b/ReactAndroid/src/main/java/com/facebook/hermes/reactexecutor/CMakeLists.txt new file mode 100644 index 00000000000..c4d47fb0123 --- /dev/null +++ b/ReactAndroid/src/main/java/com/facebook/hermes/reactexecutor/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) +set(CMAKE_VERBOSE_MAKEFILE on) + +file(GLOB_RECURSE hermes_executor_SRC CONFIGURE_DEPENDS *.cpp) + +if(${CMAKE_BUILD_TYPE} MATCHES Debug) + set(HERMES_TARGET_SUFFIX debug) +else() + set(HERMES_TARGET_SUFFIX release) +endif() + +set(HERMES_TARGET_NAME hermes-executor-${HERMES_TARGET_SUFFIX}) + +add_library( + ${HERMES_TARGET_NAME} + SHARED + ${hermes_executor_SRC} +) +target_compile_options( + ${HERMES_TARGET_NAME} + PRIVATE + $<$:-DHERMES_ENABLE_DEBUGGER=1> + -fexceptions +) +target_include_directories(${HERMES_TARGET_NAME} PRIVATE .) +target_link_libraries( + ${HERMES_TARGET_NAME} + hermes-executor-common + jsireact + fb + fbjni + folly_json + hermes-engine::libhermes + jsi + reactnativejni +) diff --git a/ReactAndroid/src/main/jni/first-party/fbgloginit/CMakeLists.txt b/ReactAndroid/src/main/jni/first-party/fbgloginit/CMakeLists.txt index bc23ad95063..45ffd31f75f 100644 --- a/ReactAndroid/src/main/jni/first-party/fbgloginit/CMakeLists.txt +++ b/ReactAndroid/src/main/jni/first-party/fbgloginit/CMakeLists.txt @@ -10,6 +10,6 @@ add_compile_options(-fexceptions -fno-omit-frame-pointer) add_library(glog_init SHARED glog_init.cpp) -target_include_directories(yoga PUBLIC .) +target_include_directories(glog_init PUBLIC .) target_link_libraries(glog_init log glog) diff --git a/ReactCommon/hermes/executor/CMakeLists.txt b/ReactCommon/hermes/executor/CMakeLists.txt new file mode 100644 index 00000000000..a6d8bbac1dd --- /dev/null +++ b/ReactCommon/hermes/executor/CMakeLists.txt @@ -0,0 +1,29 @@ +# 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) +set(CMAKE_VERBOSE_MAKEFILE on) + +file(GLOB_RECURSE hermes_executor_SRC CONFIGURE_DEPENDS *.cpp) +add_library( + hermes-executor-common + STATIC + ${hermes_executor_SRC} +) +target_include_directories(hermes-executor-common PUBLIC .) +target_link_libraries(hermes-executor-common + jsireact + hermes-engine::libhermes + jsi + debug hermes-inspector +) + +if(${CMAKE_BUILD_TYPE} MATCHES Debug) + target_compile_options( + hermes-executor-common + PRIVATE + -DHERMES_ENABLE_DEBUGGER=1 + ) +endif() diff --git a/ReactCommon/hermes/inspector/CMakeLists.txt b/ReactCommon/hermes/inspector/CMakeLists.txt new file mode 100644 index 00000000000..679c916b9d2 --- /dev/null +++ b/ReactCommon/hermes/inspector/CMakeLists.txt @@ -0,0 +1,32 @@ +# 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) +set(CMAKE_VERBOSE_MAKEFILE on) + +file(GLOB hermesinspector_SRC CONFIGURE_DEPENDS *.cpp detail/*.cpp chrome/*.cpp) + +add_library(hermes-inspector + STATIC + ${hermesinspector_SRC}) + +target_compile_options( + hermes-inspector + PRIVATE + -DHERMES_ENABLE_DEBUGGER=1 + -DHERMES_INSPECTOR_FOLLY_KLUDGE=1 + -fexceptions +) + +target_include_directories(hermes-inspector PUBLIC ${REACT_COMMON_DIR}) +target_link_libraries(hermes-inspector + jsinspector + fb + fbjni + folly_futures + folly_json + glog + hermes-engine::libhermes + jsi) diff --git a/ReactCommon/react/debug/CMakeLists.txt b/ReactCommon/react/debug/CMakeLists.txt index 7c92d79cd9c..f4b205314a9 100644 --- a/ReactCommon/react/debug/CMakeLists.txt +++ b/ReactCommon/react/debug/CMakeLists.txt @@ -17,7 +17,6 @@ add_compile_options( file(GLOB react_debug_SRC CONFIGURE_DEPENDS *.cpp) add_library(react_debug SHARED ${react_debug_SRC}) -# TODO This should not be ../../.. but a proper variable -target_include_directories(react_debug PUBLIC ../../..) +target_include_directories(react_debug PUBLIC ${REACT_COMMON_DIR}) target_link_libraries(react_debug log folly_json)