Skip to content

Commit 35f652b

Browse files
committed
Check for YggdrasilRapidJSON cmake config before using the local copy
Import importlib submodules (subpackages?) directly
1 parent 1c3f722 commit 35f652b

File tree

3 files changed

+11
-16
lines changed

3 files changed

+11
-16
lines changed

CMakeLists.txt

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,6 @@ endif()
77

88
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/ygg_options.cmake)
99

10-
if (NOT DEFAULT_RAPIDJSON_INCLUDE_DIRS)
11-
cmake_path(APPEND CMAKE_CURRENT_SOURCE_DIR rapidjson include
12-
OUTPUT_VARIABLE DEFAULT_RAPIDJSON_INCLUDE_DIRS)
13-
endif()
14-
1510
find_package(
1611
${PYTHON_PREFIX} COMPONENTS
1712
Interpreter Development.Module NumPy REQUIRED)

cmake/ygg_options.cmake

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ endif()
88
set(YGGDRASIL_IS_SUBPROJECT ON)
99

1010
if (NOT PROJECT_NAME)
11-
cmake_minimum_required(VERSION 3.16)
11+
cmake_minimum_required(VERSION 3.5)
1212
endif()
1313
set(CMAKE_VERBOSE_MAKEFILE ON)
1414
if (POLICY CMP0048)
@@ -58,8 +58,13 @@ set(CMAKE_CXX_STANDARD 14)
5858
set(CMAKE_CXX_STANDARD_REQUIRED ON)
5959

6060
if (NOT DEFAULT_RAPIDJSON_INCLUDE_DIRS)
61-
cmake_path(APPEND CMAKE_CURRENT_SOURCE_DIR rapidjson include
62-
OUTPUT_VARIABLE DEFAULT_RAPIDJSON_INCLUDE_DIRS)
61+
find_package(YggdrasilRapidJSON)
62+
if(YggdrasilRapidJSON_FOUND)
63+
set(DEFAULT_RAPIDJSON_INCLUDE_DIRS YggdrasilRapidJSON_INCLUDE_DIRS)
64+
else()
65+
cmake_path(APPEND CMAKE_CURRENT_SOURCE_DIR rapidjson include
66+
OUTPUT_VARIABLE DEFAULT_RAPIDJSON_INCLUDE_DIRS)
67+
endif()
6368
endif()
6469

6570
option(YGGDRASIL_DONT_MANAGE_PYTHON_GIL "Disable any handling of the Python GIL" OFF)

rapidjson.cpp

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6725,16 +6725,12 @@ normalize(PyObject*, PyObject* args, PyObject* kwargs)
67256725

67266726
static PyObject*
67276727
get_submodule_spec(PyObject* name, PyObject* path) {
6728-
PyObject *importlib = NULL, *machinery = NULL, *util = NULL,
6728+
PyObject *machinery = NULL, *util = NULL,
67296729
*args = NULL, *kwargs = NULL, *spec = NULL,
67306730
*ExtensionFileLoader = NULL, *spec_from_loader_func = NULL,
67316731
*loader = NULL, *ModuleSpecCls = NULL;
6732-
importlib = PyImport_ImportModule("importlib");
6733-
if (importlib == NULL)
6734-
goto cleanup;
6735-
machinery = PyObject_GetAttrString(importlib, "machinery");
6736-
util = PyObject_GetAttrString(importlib, "util");
6737-
Py_CLEAR(importlib);
6732+
util = PyImport_ImportModule("importlib.util");
6733+
machinery = PyImport_ImportModule("importlib.machinery");
67386734
if (machinery == NULL || util == NULL)
67396735
goto cleanup;
67406736
#ifdef MAKE_SUBMODULE_VIA_PYTHON
@@ -6798,7 +6794,6 @@ get_submodule_spec(PyObject* name, PyObject* path) {
67986794
Py_XDECREF(spec_from_loader_func);
67996795
Py_XDECREF(loader);
68006796
Py_XDECREF(ModuleSpecCls);
6801-
Py_XDECREF(importlib);
68026797
Py_XDECREF(machinery);
68036798
Py_XDECREF(util);
68046799
Py_XDECREF(args);

0 commit comments

Comments
 (0)