Skip to content

Commit 088487f

Browse files
committed
Merge branch 'param' into iteration
2 parents 6e8986b + 4197de8 commit 088487f

File tree

6 files changed

+70
-38
lines changed

6 files changed

+70
-38
lines changed

CMakeLists.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ endif("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
7575
set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};${PROJECT_SOURCE_DIR}/cmake")
7676

7777
include(SearchTools)
78+
include(AddYggInterface)
7879
find_package_python(REQUIRED COMPONENTS Interpreter VERBOSE)
7980

8081
option(BUILD_CXX "Build CXX library & executable." ON)
@@ -318,7 +319,6 @@ if(WITH_YGGDRASIL)
318319
if(YggInterface_FOUND)
319320
set(BUILD_WITH_YGGINTERFACE OFF)
320321
else()
321-
include(AddYggInterface)
322322
set(YGGDRASIL_ARGS)
323323
set(SKBUILD_ISOLATED)
324324
if(SKBUILD)
@@ -349,14 +349,14 @@ if(WITH_YGGDRASIL)
349349
${YGGDRASIL_ARGS}
350350
)
351351
transfer_interface_properties(
352-
yggPhoto DEST_PREFIX ePhoto_
352+
yggPhoto DEST_PREFIX ePhoto_ VERBOSE
353353
EXCLUDE_REGEX_LINK_LIBRARIES "Python::Python"
354354
DESTLIST_LINK_LIBRARIES ePhoto_PRIVATE_LIBRARIES_Python
355355
PROPERTIES SOURCES INCLUDE_DIRECTORIES COMPILE_OPTIONS
356356
LINK_LIBRARIES
357357
)
358358
transfer_interface_properties(
359-
yggPhoto++ DEST_PREFIX ePhoto_
359+
yggPhoto++ DEST_PREFIX ePhoto_ VERBOSE
360360
PROPERTIES SOURCES INCLUDE_DIRECTORIES COMPILE_OPTIONS
361361
)
362362
# TODO: Try building YggInterface::CXX in ePhotosynthesis?

cmake/AddYggInterface.cmake

Lines changed: 42 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -653,6 +653,8 @@ function(add_yggdrasil_interfaces_backwards)
653653
find_package_python(COMPONENTS Interpreter NumPy Development)
654654
if(Python_FOUND)
655655
list(APPEND C_DEPENDENCIES Python)
656+
list(APPEND C_INCLUDE_DIRECTORIES
657+
${Python_INCLUDE_DIRS} ${Python_NumPy_INCLUDE_DIRS})
656658
if(ARGS_EXCLUDE_PYTHON)
657659
list(APPEND C_PUBLIC_LIBRARIES Python::NumPy)
658660
else()
@@ -1057,6 +1059,12 @@ function(import_yggdrasil_interface_library LANGUAGE)
10571059
INCLUDE_PREFIXES I
10581060
REMOVE_PREFIX
10591061
)
1062+
# sysconfig on newer versions includes relative paths
1063+
select_flags(
1064+
INCLUDE_DIRECTORIES FLAGS ${INCLUDE_DIRECTORIES}
1065+
INCLUDE_PREFIXES /
1066+
EXCLUDE_FLAG_CHAR
1067+
)
10601068
select_flags(
10611069
COMPILE_DEFINITIONS FLAGS ${YGG_CCFLAGS}
10621070
INCLUDE_PREFIXES D
@@ -1074,11 +1082,19 @@ function(import_yggdrasil_interface_library LANGUAGE)
10741082
)
10751083
set(LINK_LIBRARIES)
10761084
foreach(lib ${LINKED_LIBRARIES})
1077-
if((NOT lib MATCHES "^ygg")
1078-
AND (NOT (ARGS_EXCLUDE_PYTHONLIB AND (lib MATCHES "^python"))))
1085+
set(IDX_LIBRARY -1)
1086+
if(lib MATCHES "^ygg")
1087+
string(FIND ${LIBRARY_NAME} ${lib} IDX_LIBRARY)
1088+
endif()
1089+
if((IDX_LIBRARY EQUAL -1)
1090+
AND (NOT (ARGS_EXCLUDE_PYTHONLIB AND (lib MATCHES "^python"))))
10791091
find_library(${lib} ${lib} HINTS ${LIBRARY_DIRECTORIES})
10801092
if(${lib} STREQUAL "${lib}-NOTFOUND")
1081-
message(WARNING "Could not find yggdrasil dependency \"${lib}\"")
1093+
if(lib MATCHES "^ygg")
1094+
message(ERROR "Could not find yggdrasil dependency \"${lib}\"")
1095+
else()
1096+
message(WARNING "Could not find yggdrasil dependency \"${lib}\"")
1097+
endif()
10821098
else()
10831099
list(APPEND LINK_LIBRARIES ${${lib}})
10841100
endif()
@@ -1146,18 +1162,29 @@ function(import_yggdrasil_interface_library LANGUAGE)
11461162
endfunction()
11471163

11481164
function(remove_flag_prefix FLAG PREFIX OUTPUT_VARIABLE)
1149-
string(REGEX REPLACE "^[\/\-]${PREFIX}" "" ${OUTPUT_VARIABLE} ${FLAG})
1165+
set(oneValueArgs PREFIX_REGEX)
1166+
cmake_parse_arguments(ARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
1167+
if(NOT ARGS_PREFIX_REGEX)
1168+
set(ARGS_PREFIX_REGEX "^[\/\-]${PREFIX}")
1169+
endif()
1170+
string(REGEX REPLACE ${ARGS_PREFIX_REGEX} "" ${OUTPUT_VARIABLE} ${FLAG})
11501171
set(${OUTPUT_VARIABLE} ${${OUTPUT_VARIABLE}} PARENT_SCOPE)
11511172
endfunction()
11521173

11531174
function(flag_matches FLAG PREFIX)
1154-
set(options REMOVE_PREFIX)
1175+
set(options REMOVE_PREFIX EXCLUDE_FLAG_CHAR)
11551176
set(oneValueArgs OUTPUT_VARIABLE)
11561177
cmake_parse_arguments(ARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
1157-
string(REGEX MATCH "^[\/\-]${PREFIX}" RESULT ${FLAG})
1178+
if(ARGS_EXCLUDE_FLAG_CHAR)
1179+
set(PREFIX_REGEX "^${PREFIX}")
1180+
else()
1181+
set(PREFIX_REGEX "^[\/\-]${PREFIX}")
1182+
endif()
1183+
string(REGEX MATCH ${PREFIX_REGEX} RESULT ${FLAG})
11581184
if(ARGS_OUTPUT_VARIABLE)
11591185
if(ARGS_REMOVE_PREFIX AND RESULT)
1160-
remove_flag_prefix(${FLAG} ${PREFIX} RESULT)
1186+
remove_flag_prefix(${FLAG} ${PREFIX} RESULT
1187+
PREFIX_REGEX ${PREFIX_REGEX})
11611188
endif()
11621189
set(${ARGS_OUTPUT_VARIABLE} ${RESULT} PARENT_SCOPE)
11631190
elseif(NOT RESULT)
@@ -1189,14 +1216,17 @@ function(find_flag OUTPUT_VARIABLE)
11891216
endfunction()
11901217

11911218
function(flag_matches_any FLAG)
1192-
set(options REMOVE_PREFIX)
1219+
set(options REMOVE_PREFIX EXCLUDE_FLAG_CHAR)
11931220
set(oneValueArgs OUTPUT_VARIABLE)
11941221
set(multiValueArgs PREFIXES)
11951222
cmake_parse_arguments(ARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
11961223
set(FLAG_ARGS)
11971224
if(ARGS_REMOVE_PREFIX)
11981225
list(APPEND FLAG_ARGS REMOVE_PREFIX)
11991226
endif()
1227+
if(ARGS_EXCLUDE_FLAG_CHAR)
1228+
list(APPEND FLAG_ARGS EXCLUDE_FLAG_CHAR)
1229+
endif()
12001230
foreach(prefix ${ARGS_PREFIXES})
12011231
set(iRESULT)
12021232
flag_matches(${FLAG} ${prefix} OUTPUT_VARIABLE iRESULT ${FLAG_ARGS})
@@ -1215,14 +1245,17 @@ function(flag_matches_any FLAG)
12151245
endfunction()
12161246

12171247
function(select_flags OUTPUT_VARIABLE)
1218-
set(options REMOVE_PREFIX)
1248+
set(options REMOVE_PREFIX EXCLUDE_FLAG_CHAR)
12191249
set(multiValueArgs FLAGS INCLUDE_PREFIXES EXCLUDE_PREFIXES)
12201250
cmake_parse_arguments(ARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
12211251
set(${OUTPUT_VARIABLE})
12221252
set(FLAG_ARGS)
12231253
if(ARGS_REMOVE_PREFIX)
12241254
list(APPEND FLAG_ARGS REMOVE_PREFIX)
12251255
endif()
1256+
if(ARGS_EXCLUDE_FLAG_CHAR)
1257+
list(APPEND FLAG_ARGS EXCLUDE_FLAG_CHAR)
1258+
endif()
12261259
foreach(flag ${ARGS_FLAGS})
12271260
set(iINCLUDE)
12281261
set(iEXCLUDE)

recipe/bld_cpp.bat

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,17 @@ set CONFIGURATION=Release
44
mkdir conda_build
55
cd conda_build
66

7-
rem Call cmake
8-
rem -GNinja ^
9-
rem -D CMAKE_BUILD_TYPE=%CONFIGURATION% ^
10-
rem -D CMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
117
cmake -G "Ninja" ^
128
-D CMAKE_VERBOSE_MAKEFILE:BOOL=ON ^
139
-D WITH_YGGDRASIL:BOOL=ON ^
14-
-D "Python_EXECUTABLE:FILEPATH=%PYTHON%" ..
10+
-D "Python_EXECUTABLE:FILEPATH=%PYTHON%" ^
11+
..
1512
if errorlevel 1 exit 1
1613

1714
rem Build all, run tests, then install
1815
cmake --build . --config %CONFIGURATION%
1916
cmake --install .
2017

21-
rem Using ninja
22-
rem ninja all
23-
rem ninja install
24-
2518
rem Run tests
2619
if errorlevel 1 exit 1
2720
ctest -C "%Configuration%" -V

recipe/build_cpp.sh

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,20 @@
11
#!/bin/sh
22
set -euo pipefail
33

4-
# Using cmake
54
if [ ! -d conda_build ]; then
65
mkdir conda_build
76
fi
87
cd conda_build
9-
# -D CMAKE_BUILD_TYPE=Release \
10-
# -D CMAKE_INSTALL_PREFIX=$PREFIX \
118
cmake ${CMAKE_ARGS} \
12-
-D CMAKE_VERBOSE_MAKEFILE:BOOL=ON \
13-
-D WITH_YGGDRASIL:BOOL=ON ..
9+
-G "Ninja" \
10+
-D CMAKE_VERBOSE_MAKEFILE:BOOL=ON \
11+
-D WITH_YGGDRASIL:BOOL=ON \
12+
..
1413

1514
# Build all, run tests, then install
1615
cmake --build . --config Release
1716
ctest -V
18-
cmake --install .
1917

20-
# Make all, run tests, then install
21-
# make all VERBOSE=1
22-
# ctest -V
23-
# make install
18+
cmake --install .
2419

2520
cd ..

recipe/conda_build_config.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
c_stdlib:
2+
- sysroot # [linux]
3+
- macosx_deployment_target # [osx]
4+
- vs # [win]
5+
c_stdlib_version:
6+
- 2.17 # [linux]
7+
- 11 # [osx]

recipe/meta.yaml

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,17 @@ outputs:
3131
license_file: LICENSE.md
3232
requirements:
3333
build:
34-
- cmake
34+
- cmake # [build_platform != target_platform]
3535
- cross-python_{{ target_platform }} # [build_platform != target_platform]
36-
- make # [unix]
37-
- ninja # [win]
36+
- ninja # [build_platform != target_platform]
3837
- python # [build_platform != target_platform]
38+
- {{ stdlib('c') }}
3939
- {{ compiler('c') }}
4040
- {{ compiler('cxx') }}
4141
- yggdrasil
4242
host:
43+
- cmake
44+
- ninja
4345
- python
4446
- sundials >=5.7.0
4547
- yggdrasil
@@ -70,19 +72,21 @@ outputs:
7072
license_file: LICENSE.md
7173
requirements:
7274
build:
73-
- cmake
75+
- cmake # [build_platform != target_platform]
7476
- cross-python_{{ target_platform }} # [build_platform != target_platform]
75-
- make # [unix]
76-
- ninja # [win]
77+
- ninja # [build_platform != target_platform]
7778
- python # [build_platform != target_platform]
7879
- scikit-build-core
7980
- setuptools_scm
81+
- {{ stdlib('c') }}
8082
- {{ compiler('c') }}
8183
- {{ compiler('cxx') }}
8284
- yggdrasil
8385
host:
86+
- cmake
8487
- libboost-devel >=1.36.0
8588
- libboost-python-devel >=1.36.0
89+
- ninja
8690
- python
8791
- scikit-build-core
8892
- setuptools_scm
@@ -96,7 +100,7 @@ outputs:
96100
- yggdrasil
97101
test:
98102
imports:
99-
- pyPhotosynthesis
103+
- ePhotosynthesis
100104

101105

102106
about:

0 commit comments

Comments
 (0)