@@ -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)
11461162endfunction ()
11471163
11481164function (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)
11511172endfunction ()
11521173
11531174function (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)
11891216endfunction ()
11901217
11911218function (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)
12151245endfunction ()
12161246
12171247function (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)
0 commit comments