mirror of
https://github.com/JakeHillion/object-introspection.git
synced 2024-09-19 11:09:05 +01:00
add portability.h (#386)
Summary: Spin around our open/closed source checks. Previously we defined `OSS_ENABLE` in open source builds. This change defines `OI_META_INTERNAL` instead. This is nicer, as external users don't have to do anything special to get a working build. Use this new macro to define a boolean constant in a new header `Portability.h`. This is inspired by Folly, and makes the internal build easier - definitions in Buck2 have to propagate up from a dependency instead of down from one. Annoyingly we can't use `if constexpr` for a lot of the previous `#ifdef` blocks as we conditionally include the headers. Longer term we could fix this by exposing a header interface but no source, allowing these to build but not be compiled in. For now I did something weird: I defined a function style macro in `Portability.h` based on the compile time macro. This forces you to have included `Portability.h` before using it to ensure the definition is everywhere. Open to feedback as I haven't seen anyone else do this. Reviewed By: tyroguru Differential Revision: D50000454
This commit is contained in:
parent
9cef2c82d9
commit
67739840fe
@ -9,8 +9,6 @@ set(CMAKE_CXX_STANDARD 20)
|
|||||||
set(CMAKE_CXX_STANDARD_REQUIRED True)
|
set(CMAKE_CXX_STANDARD_REQUIRED True)
|
||||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake")
|
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake")
|
||||||
|
|
||||||
add_compile_definitions(OSS_ENABLE)
|
|
||||||
|
|
||||||
include(FetchContent)
|
include(FetchContent)
|
||||||
set(FETCHCONTENT_QUIET FALSE)
|
set(FETCHCONTENT_QUIET FALSE)
|
||||||
|
|
||||||
|
@ -23,9 +23,10 @@
|
|||||||
|
|
||||||
#include "oi/Descs.h"
|
#include "oi/Descs.h"
|
||||||
#include "oi/OICodeGen.h"
|
#include "oi/OICodeGen.h"
|
||||||
|
#include "oi/Portability.h"
|
||||||
#include "oi/Serialize.h"
|
#include "oi/Serialize.h"
|
||||||
|
|
||||||
#ifndef OSS_ENABLE
|
#if OI_PORTABILITY_META_INTERNAL()
|
||||||
#include "object-introspection/internal/GobsService.h"
|
#include "object-introspection/internal/GobsService.h"
|
||||||
#include "object-introspection/internal/ManifoldCache.h"
|
#include "object-introspection/internal/ManifoldCache.h"
|
||||||
#endif
|
#endif
|
||||||
@ -163,7 +164,7 @@ INSTANTIATE_ARCHIVE(std::map<std::string, PaddingInfo>)
|
|||||||
|
|
||||||
// Upload all contents of cache for this request
|
// Upload all contents of cache for this request
|
||||||
bool OICache::upload([[maybe_unused]] const irequest& req) {
|
bool OICache::upload([[maybe_unused]] const irequest& req) {
|
||||||
#ifndef OSS_ENABLE
|
#if OI_PORTABILITY_META_INTERNAL()
|
||||||
if (!isEnabled() || downloadedRemote || !enableUpload)
|
if (!isEnabled() || downloadedRemote || !enableUpload)
|
||||||
return true;
|
return true;
|
||||||
std::vector<std::filesystem::path> files;
|
std::vector<std::filesystem::path> files;
|
||||||
@ -197,7 +198,7 @@ bool OICache::upload([[maybe_unused]] const irequest& req) {
|
|||||||
|
|
||||||
// Try to fetch contents of cache
|
// Try to fetch contents of cache
|
||||||
bool OICache::download([[maybe_unused]] const irequest& req) {
|
bool OICache::download([[maybe_unused]] const irequest& req) {
|
||||||
#ifndef OSS_ENABLE
|
#if OI_PORTABILITY_META_INTERNAL()
|
||||||
if (!isEnabled() || !enableDownload)
|
if (!isEnabled() || !enableDownload)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
@ -244,7 +245,7 @@ std::string OICache::generateRemoteHash(const irequest& req) {
|
|||||||
|
|
||||||
std::string remote_cache_id = *buildID + "/" + req.func + "/" + req.arg +
|
std::string remote_cache_id = *buildID + "/" + req.func + "/" + req.arg +
|
||||||
"/" + generatorConfig.toString();
|
"/" + generatorConfig.toString();
|
||||||
#ifndef OSS_ENABLE
|
#if OI_PORTABILITY_META_INTERNAL()
|
||||||
auto version_pair = ObjectIntrospection::GobsService::getOidRpmVersions();
|
auto version_pair = ObjectIntrospection::GobsService::getOidRpmVersions();
|
||||||
remote_cache_id += "/" + version_pair.first + "/" + version_pair.second;
|
remote_cache_id += "/" + version_pair.first + "/" + version_pair.second;
|
||||||
#endif
|
#endif
|
||||||
|
@ -13,7 +13,6 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
#include <folly/init/Init.h>
|
|
||||||
#include <gflags/gflags.h>
|
#include <gflags/gflags.h>
|
||||||
#include <glog/logging.h>
|
#include <glog/logging.h>
|
||||||
|
|
||||||
@ -37,9 +36,14 @@ extern "C" {
|
|||||||
#include "oi/OIDebugger.h"
|
#include "oi/OIDebugger.h"
|
||||||
#include "oi/OIOpts.h"
|
#include "oi/OIOpts.h"
|
||||||
#include "oi/PaddingHunter.h"
|
#include "oi/PaddingHunter.h"
|
||||||
|
#include "oi/Portability.h"
|
||||||
#include "oi/TimeUtils.h"
|
#include "oi/TimeUtils.h"
|
||||||
#include "oi/TreeBuilder.h"
|
#include "oi/TreeBuilder.h"
|
||||||
|
|
||||||
|
#if OI_PORTABILITY_META_INTERNAL()
|
||||||
|
#include <folly/init/Init.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace oi::detail {
|
namespace oi::detail {
|
||||||
|
|
||||||
/* Global for signal handling */
|
/* Global for signal handling */
|
||||||
@ -480,7 +484,8 @@ int main(int argc, char* argv[]) {
|
|||||||
bool dumpDataSegment = false;
|
bool dumpDataSegment = false;
|
||||||
|
|
||||||
metrics::Tracing _("main");
|
metrics::Tracing _("main");
|
||||||
#ifndef OSS_ENABLE
|
|
||||||
|
#if OI_PORTABILITY_META_INTERNAL()
|
||||||
folly::InitOptions init;
|
folly::InitOptions init;
|
||||||
init.useGFlags(false);
|
init.useGFlags(false);
|
||||||
init.removeFlags(false);
|
init.removeFlags(false);
|
||||||
|
@ -51,11 +51,12 @@ extern "C" {
|
|||||||
#include "oi/Metrics.h"
|
#include "oi/Metrics.h"
|
||||||
#include "oi/OILexer.h"
|
#include "oi/OILexer.h"
|
||||||
#include "oi/PaddingHunter.h"
|
#include "oi/PaddingHunter.h"
|
||||||
|
#include "oi/Portability.h"
|
||||||
#include "oi/Syscall.h"
|
#include "oi/Syscall.h"
|
||||||
#include "oi/type_graph/DrgnParser.h"
|
#include "oi/type_graph/DrgnParser.h"
|
||||||
#include "oi/type_graph/TypeGraph.h"
|
#include "oi/type_graph/TypeGraph.h"
|
||||||
|
|
||||||
#ifndef OSS_ENABLE
|
#if OI_PORTABILITY_META_INTERNAL()
|
||||||
#include "object-introspection/internal/GobsService.h"
|
#include "object-introspection/internal/GobsService.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -2147,7 +2148,7 @@ bool OIDebugger::compileCode() {
|
|||||||
if (cache.isEnabled()) {
|
if (cache.isEnabled()) {
|
||||||
// try to download cache artifacts if present
|
// try to download cache artifacts if present
|
||||||
if (!downloadCache()) {
|
if (!downloadCache()) {
|
||||||
#ifndef OSS_ENABLE
|
#if OI_PORTABILITY_META_INTERNAL()
|
||||||
// Send a request to the GOBS service
|
// Send a request to the GOBS service
|
||||||
char buf[PATH_MAX];
|
char buf[PATH_MAX];
|
||||||
const std::string procpath =
|
const std::string procpath =
|
||||||
|
32
oi/Portability.h
Normal file
32
oi/Portability.h
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
namespace oi::detail {
|
||||||
|
|
||||||
|
#ifdef OI_META_INTERNAL
|
||||||
|
|
||||||
|
#define OI_PORTABILITY_META_INTERNAL() 1
|
||||||
|
static constexpr bool kIsMetaInternal = true;
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#define OI_PORTABILITY_META_INTERNAL() 0
|
||||||
|
static constexpr bool kIsMetaInternal = false;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
} // namespace oi::detail
|
Loading…
Reference in New Issue
Block a user