From 2ad89593848147cd57fa1edd1ee3ee11fb68fe27 Mon Sep 17 00:00:00 2001 From: Steven Johnson Date: Mon, 15 Aug 2022 15:21:51 -0700 Subject: [PATCH 1/9] Export HalidePythonExtensionHelpers.cmake for installs --- ...sionHelpers.cmake => HalidePythonExtensionHelpers.cmake} | 6 +++--- packaging/CMakeLists.txt | 1 + packaging/common/HalideHelpersConfig.cmake | 1 + python_bindings/test/generators/CMakeLists.txt | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) rename cmake/{PythonExtensionHelpers.cmake => HalidePythonExtensionHelpers.cmake} (97%) diff --git a/cmake/PythonExtensionHelpers.cmake b/cmake/HalidePythonExtensionHelpers.cmake similarity index 97% rename from cmake/PythonExtensionHelpers.cmake rename to cmake/HalidePythonExtensionHelpers.cmake index 1433f6557a73..61a9f5dc597b 100644 --- a/cmake/PythonExtensionHelpers.cmake +++ b/cmake/HalidePythonExtensionHelpers.cmake @@ -28,7 +28,7 @@ set(_STUB_DIR "${Halide_SOURCE_DIR}/python_bindings/stub") # suffixed with "_stub" for Stub extensions. (TODO: this is unsatisfyingly hackish; better suggestions # would be welcome.) -function(target_export_single_symbol TARGET SYMBOL) +function(_target_export_single_symbol TARGET SYMBOL) configure_file("${_STUB_DIR}/ext.ldscript.apple.in" "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}.ldscript.apple") configure_file("${_STUB_DIR}/ext.ldscript.linux.in" "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}.ldscript") target_export_script( @@ -86,7 +86,7 @@ function(add_python_aot_extension TARGET) Python3_add_library(${TARGET} MODULE ${abi_flags} ${${TARGET}.py.cpp}) target_link_libraries(${TARGET} PRIVATE aot_${TARGET}) set_target_properties(${TARGET} PROPERTIES OUTPUT_NAME ${ARG_FUNCTION_NAME}) - target_export_single_symbol(${TARGET} ${ARG_FUNCTION_NAME}) + _target_export_single_symbol(${TARGET} ${ARG_FUNCTION_NAME}) endfunction() function(add_python_stub_extension TARGET) @@ -119,5 +119,5 @@ function(add_python_stub_extension TARGET) "HALIDE_PYSTUB_MODULE_NAME=${ARG_MODULE}") target_link_libraries(${TARGET} PRIVATE Halide::PyStubs ${ARG_LINK_LIBRARIES}) set_target_properties(${TARGET} PROPERTIES OUTPUT_NAME ${ARG_MODULE}) - target_export_single_symbol(${TARGET} ${ARG_MODULE}) + _target_export_single_symbol(${TARGET} ${ARG_MODULE}) endfunction() diff --git a/packaging/CMakeLists.txt b/packaging/CMakeLists.txt index 56c0f770e57f..77d28ed78407 100644 --- a/packaging/CMakeLists.txt +++ b/packaging/CMakeLists.txt @@ -198,6 +198,7 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/HalideHelpersConfigVersion.cmake ${Halide_SOURCE_DIR}/cmake/HalideGeneratorHelpers.cmake ${Halide_SOURCE_DIR}/cmake/HalideTargetHelpers.cmake + ${Halide_SOURCE_DIR}/cmake/PythonExtensionHelpers.cmake DESTINATION ${Halide_INSTALL_HELPERSDIR} COMPONENT Halide_Development) diff --git a/packaging/common/HalideHelpersConfig.cmake b/packaging/common/HalideHelpersConfig.cmake index 739c465fdd55..013abb4fe09b 100644 --- a/packaging/common/HalideHelpersConfig.cmake +++ b/packaging/common/HalideHelpersConfig.cmake @@ -10,3 +10,4 @@ find_dependency(Threads) include(${CMAKE_CURRENT_LIST_DIR}/Halide-Interfaces.cmake) include(${CMAKE_CURRENT_LIST_DIR}/HalideTargetHelpers.cmake) include(${CMAKE_CURRENT_LIST_DIR}/HalideGeneratorHelpers.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/HalidePythonExtensionHelpers.cmake) diff --git a/python_bindings/test/generators/CMakeLists.txt b/python_bindings/test/generators/CMakeLists.txt index 8fcfb0734601..c552fdfcd257 100644 --- a/python_bindings/test/generators/CMakeLists.txt +++ b/python_bindings/test/generators/CMakeLists.txt @@ -1,4 +1,4 @@ -include(PythonExtensionHelpers) +include(HalidePythonExtensionHelpers) set(GENERATORS addconstant From 6cea627ec7f5ba67e153cb689c2d9de8417a269f Mon Sep 17 00:00:00 2001 From: Steven Johnson Date: Mon, 15 Aug 2022 16:01:18 -0700 Subject: [PATCH 2/9] oops --- packaging/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/CMakeLists.txt b/packaging/CMakeLists.txt index 77d28ed78407..5fb9365b8297 100644 --- a/packaging/CMakeLists.txt +++ b/packaging/CMakeLists.txt @@ -198,7 +198,7 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/HalideHelpersConfigVersion.cmake ${Halide_SOURCE_DIR}/cmake/HalideGeneratorHelpers.cmake ${Halide_SOURCE_DIR}/cmake/HalideTargetHelpers.cmake - ${Halide_SOURCE_DIR}/cmake/PythonExtensionHelpers.cmake + ${Halide_SOURCE_DIR}/cmake/HalidePythonExtensionHelpers.cmake DESTINATION ${Halide_INSTALL_HELPERSDIR} COMPONENT Halide_Development) From 24def7ced5ea9ff808d0dcb24defc87bda64e1dc Mon Sep 17 00:00:00 2001 From: Steven Johnson Date: Mon, 15 Aug 2022 16:37:47 -0700 Subject: [PATCH 3/9] fixes --- cmake/HalidePythonExtensionHelpers.cmake | 10 +++++++--- packaging/CMakeLists.txt | 1 + packaging/common/HalideHelpersConfig.cmake | 1 + python_bindings/stub/ext.ldscript.apple.in | 1 - python_bindings/stub/ext.ldscript.linux.in | 4 ---- 5 files changed, 9 insertions(+), 8 deletions(-) delete mode 100644 python_bindings/stub/ext.ldscript.apple.in delete mode 100644 python_bindings/stub/ext.ldscript.linux.in diff --git a/cmake/HalidePythonExtensionHelpers.cmake b/cmake/HalidePythonExtensionHelpers.cmake index 61a9f5dc597b..1a1e70f570d6 100644 --- a/cmake/HalidePythonExtensionHelpers.cmake +++ b/cmake/HalidePythonExtensionHelpers.cmake @@ -29,8 +29,12 @@ set(_STUB_DIR "${Halide_SOURCE_DIR}/python_bindings/stub") # would be welcome.) function(_target_export_single_symbol TARGET SYMBOL) - configure_file("${_STUB_DIR}/ext.ldscript.apple.in" "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}.ldscript.apple") - configure_file("${_STUB_DIR}/ext.ldscript.linux.in" "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}.ldscript") + file(WRITE + "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}.ldscript.apple" + "_${SYMBOL}\n") + file(WRITE + "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}.ldscript" + "{ global: ${SYMBOL}; local: *; };\n") target_export_script( ${TARGET} APPLE_LD "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}.ldscript.apple" @@ -86,7 +90,7 @@ function(add_python_aot_extension TARGET) Python3_add_library(${TARGET} MODULE ${abi_flags} ${${TARGET}.py.cpp}) target_link_libraries(${TARGET} PRIVATE aot_${TARGET}) set_target_properties(${TARGET} PROPERTIES OUTPUT_NAME ${ARG_FUNCTION_NAME}) - _target_export_single_symbol(${TARGET} ${ARG_FUNCTION_NAME}) + _target_export_single_symbol(${TARGET} PyInit_${ARG_FUNCTION_NAME}) endfunction() function(add_python_stub_extension TARGET) diff --git a/packaging/CMakeLists.txt b/packaging/CMakeLists.txt index 5fb9365b8297..5982ee532b4c 100644 --- a/packaging/CMakeLists.txt +++ b/packaging/CMakeLists.txt @@ -199,6 +199,7 @@ install(FILES ${Halide_SOURCE_DIR}/cmake/HalideGeneratorHelpers.cmake ${Halide_SOURCE_DIR}/cmake/HalideTargetHelpers.cmake ${Halide_SOURCE_DIR}/cmake/HalidePythonExtensionHelpers.cmake + ${Halide_SOURCE_DIR}/cmake/TargetExportScript.cmake DESTINATION ${Halide_INSTALL_HELPERSDIR} COMPONENT Halide_Development) diff --git a/packaging/common/HalideHelpersConfig.cmake b/packaging/common/HalideHelpersConfig.cmake index 013abb4fe09b..12fc03556a50 100644 --- a/packaging/common/HalideHelpersConfig.cmake +++ b/packaging/common/HalideHelpersConfig.cmake @@ -11,3 +11,4 @@ include(${CMAKE_CURRENT_LIST_DIR}/Halide-Interfaces.cmake) include(${CMAKE_CURRENT_LIST_DIR}/HalideTargetHelpers.cmake) include(${CMAKE_CURRENT_LIST_DIR}/HalideGeneratorHelpers.cmake) include(${CMAKE_CURRENT_LIST_DIR}/HalidePythonExtensionHelpers.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/TargetExportScript.cmake) diff --git a/python_bindings/stub/ext.ldscript.apple.in b/python_bindings/stub/ext.ldscript.apple.in deleted file mode 100644 index 90695315ccd6..000000000000 --- a/python_bindings/stub/ext.ldscript.apple.in +++ /dev/null @@ -1 +0,0 @@ -_PyInit_${SYMBOL} diff --git a/python_bindings/stub/ext.ldscript.linux.in b/python_bindings/stub/ext.ldscript.linux.in deleted file mode 100644 index b426c20b08b8..000000000000 --- a/python_bindings/stub/ext.ldscript.linux.in +++ /dev/null @@ -1,4 +0,0 @@ -{ -global: PyInit_${SYMBOL}; -local: *; -}; From c5d5b2d3c05c8f8d1a086c78aeba716565807d6a Mon Sep 17 00:00:00 2001 From: Steven Johnson Date: Mon, 15 Aug 2022 16:59:31 -0700 Subject: [PATCH 4/9] Fix broken code in target_export_script() --- cmake/TargetExportScript.cmake | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/cmake/TargetExportScript.cmake b/cmake/TargetExportScript.cmake index 36e53558aff6..ba623b4b4553 100644 --- a/cmake/TargetExportScript.cmake +++ b/cmake/TargetExportScript.cmake @@ -19,19 +19,19 @@ function(target_export_script TARGET) endif () ## More linkers support the GNU syntax (ld, lld, gold), so try it first. - check_linker_flag(CXX "LINKER:--version-script=${ARG_GNU_LD}" LINKER_HAS_FLAG_VERSION_SCRIPT) - + set(VERSION_SCRIPT_FLAG "LINKER:--version-script=${ARG_GNU_LD}") + check_linker_flag(CXX "${VERSION_SCRIPT_FLAG}" LINKER_HAS_FLAG_VERSION_SCRIPT) if (LINKER_HAS_FLAG_VERSION_SCRIPT) - target_link_options(${TARGET} PRIVATE "${version_script}") + target_link_options(${TARGET} PRIVATE "${VERSION_SCRIPT_FLAG}") set_property(TARGET ${TARGET} APPEND PROPERTY LINK_DEPENDS "${ARG_GNU_LD}") return() endif () ## The Apple linker expects a different flag. - check_linker_flag(CXX "LINKER:-exported_symbols_list,${ARG_APPLE_LD}" LINKER_HAS_FLAG_EXPORTED_SYMBOLS_LIST) - + set(EXPORTED_SYMBOLS_FLAG "LINKER:-exported_symbols_list,${ARG_APPLE_LD}") + check_linker_flag(CXX "${EXPORTED_SYMBOLS_FLAG}" LINKER_HAS_FLAG_EXPORTED_SYMBOLS_LIST) if (LINKER_HAS_FLAG_EXPORTED_SYMBOLS_LIST) - target_link_options(${TARGET} PRIVATE "${exported_symbols_list}") + target_link_options(${TARGET} PRIVATE "${EXPORTED_SYMBOLS_FLAG}") set_property(TARGET ${TARGET} APPEND PROPERTY LINK_DEPENDS "${ARG_APPLE_LD}") return() endif () From 442ffc5150dbecaa80ac758a9964f6c0583b8fa0 Mon Sep 17 00:00:00 2001 From: Steven Johnson Date: Mon, 15 Aug 2022 17:08:19 -0700 Subject: [PATCH 5/9] oops #2 --- cmake/HalidePythonExtensionHelpers.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/HalidePythonExtensionHelpers.cmake b/cmake/HalidePythonExtensionHelpers.cmake index 1a1e70f570d6..daa948a1f422 100644 --- a/cmake/HalidePythonExtensionHelpers.cmake +++ b/cmake/HalidePythonExtensionHelpers.cmake @@ -90,7 +90,7 @@ function(add_python_aot_extension TARGET) Python3_add_library(${TARGET} MODULE ${abi_flags} ${${TARGET}.py.cpp}) target_link_libraries(${TARGET} PRIVATE aot_${TARGET}) set_target_properties(${TARGET} PROPERTIES OUTPUT_NAME ${ARG_FUNCTION_NAME}) - _target_export_single_symbol(${TARGET} PyInit_${ARG_FUNCTION_NAME}) + _target_export_single_symbol(${TARGET} "PyInit_${ARG_FUNCTION_NAME}") endfunction() function(add_python_stub_extension TARGET) @@ -123,5 +123,5 @@ function(add_python_stub_extension TARGET) "HALIDE_PYSTUB_MODULE_NAME=${ARG_MODULE}") target_link_libraries(${TARGET} PRIVATE Halide::PyStubs ${ARG_LINK_LIBRARIES}) set_target_properties(${TARGET} PROPERTIES OUTPUT_NAME ${ARG_MODULE}) - _target_export_single_symbol(${TARGET} ${ARG_MODULE}) + _target_export_single_symbol(${TARGET} "PyInit_${ARG_MODULE}") endfunction() From 0800ed702748a7c5666e8a1e820cbf12e6eae5b5 Mon Sep 17 00:00:00 2001 From: Steven Johnson Date: Mon, 15 Aug 2022 17:19:30 -0700 Subject: [PATCH 6/9] Add WITH_SOABI to stubs as well as AOT --- cmake/HalidePythonExtensionHelpers.cmake | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/cmake/HalidePythonExtensionHelpers.cmake b/cmake/HalidePythonExtensionHelpers.cmake index daa948a1f422..9a95dc22c9c0 100644 --- a/cmake/HalidePythonExtensionHelpers.cmake +++ b/cmake/HalidePythonExtensionHelpers.cmake @@ -107,13 +107,23 @@ function(add_python_stub_extension TARGET) set(ARG_MODULE "${TARGET}_stub") endif () + # Take the native-code output of the Generator, add the Python-Extension + # code (to make it callable from Python), and build it into the AOT Extension we need. + if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.17) + # Add soabi info (like cpython-310-x86_64-linux-gnu) + # when CMake is new enough to know how to do it. + set(abi_flags WITH_SOABI) + else () + set(abi_flags "") + endif () + # Produce a Stub Extension for the same Generator: # Compiling PyStub.cpp, then linking with the generator's .o file, PyStubImpl.o, # plus the same libHalide being used by halide.so. # # Note that we set HALIDE_PYSTUB_MODULE_NAME to $*_stub (e.g. foo_stub) but # set HALIDE_PYSTUB_GENERATOR_NAME to the unadorned name of the Generator. - Python3_add_library(${TARGET} MODULE ${_STUB_DIR}/PyStub.cpp ${ARG_SOURCES}) + Python3_add_library(${TARGET} MODULE ${abi_flags} ${_STUB_DIR}/PyStub.cpp ${ARG_SOURCES}) set_target_properties(${TARGET} PROPERTIES CXX_VISIBILITY_PRESET hidden VISIBILITY_INLINES_HIDDEN ON From 3f1599acbefce976ddaa19fe23b253d620525d47 Mon Sep 17 00:00:00 2001 From: Steven Johnson Date: Tue, 16 Aug 2022 10:30:53 -0700 Subject: [PATCH 7/9] More fixes --- apps/CMakePresets.json | 178 +++++++++++++++++++++-- cmake/HalidePythonExtensionHelpers.cmake | 30 +--- cmake/TargetExportScript.cmake | 2 + 3 files changed, 177 insertions(+), 33 deletions(-) diff --git a/apps/CMakePresets.json b/apps/CMakePresets.json index 788ffeb0b6e1..7fa0ec43b2f0 100644 --- a/apps/CMakePresets.json +++ b/apps/CMakePresets.json @@ -7,7 +7,7 @@ }, "configurePresets": [ { - "name": "default", + "name": "base", "hidden": true, "binaryDir": "build/${presetName}", "installDir": "install/${presetName}" @@ -15,35 +15,195 @@ { "name": "ci", "hidden": true, - "inherits": "default", - "toolchainFile": "${sourceDir}/../cmake/toolchain.${presetName}.cmake", + "inherits": "base", + "toolchainFile": "${sourceDir}/cmake/toolchain.${presetName}.cmake", "cacheVariables": { "CMAKE_BUILD_TYPE": "RelWithDebInfo" } }, + { + "name": "windows-only", + "hidden": true, + "condition": { + "type": "equals", + "lhs": "${hostSystemName}", + "rhs": "Windows" + } + }, + { + "name": "vcpkg", + "hidden": true, + "toolchainFile": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake" + }, + { + "name": "vs2019", + "hidden": true, + "inherits": [ + "vcpkg", + "windows-only" + ], + "generator": "Visual Studio 16 2019", + "toolset": "host=x64" + }, + { + "name": "debug", + "inherits": "base", + "displayName": "Debug", + "description": "Debug build with no special settings", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Debug" + } + }, + { + "name": "release", + "inherits": "base", + "displayName": "Release", + "description": "Release build with no special settings", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Release" + } + }, + { + "name": "debian-debug", + "inherits": "debug", + "displayName": "Debian (Debug)", + "description": "Debug build assuming Debian-provided dependencies", + "cacheVariables": { + "Halide_SHARED_LLVM": "ON" + } + }, + { + "name": "debian-release", + "inherits": "debian-debug", + "displayName": "Debian (Release)", + "description": "Release build assuming Debian-provided dependencies", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Release" + } + }, + { + "name": "win32", + "inherits": [ + "vs2019", + "base" + ], + "displayName": "Win32 (Visual Studio)", + "description": "Visual Studio-based Win32 build with vcpkg dependencies.", + "architecture": "Win32" + }, + { + "name": "win64", + "inherits": [ + "vs2019", + "base" + ], + "displayName": "Win64 (Visual Studio)", + "description": "Visual Studio-based x64 build with vcpkg dependencies.", + "architecture": "x64" + }, + { + "name": "package", + "hidden": true, + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Release", + "LLVM_DIR": "$env{LLVM_DIR}", + "Clang_DIR": "$env{Clang_DIR}", + "LLD_DIR": "$env{LLD_DIR}", + "WITH_TESTS": "NO", + "WITH_TUTORIALS": "NO", + "WITH_DOCS": "YES", + "WITH_UTILS": "NO", + "WITH_PYTHON_BINDINGS": "NO", + "CMAKE_INSTALL_DATADIR": "share/Halide" + } + }, + { + "name": "package-windows", + "inherits": [ + "package", + "vs2019" + ], + "displayName": "Package ZIP for Windows", + "description": "Build for packaging Windows shared libraries.", + "binaryDir": "${sourceDir}/build", + "cacheVariables": { + "BUILD_SHARED_LIBS": "YES", + "CMAKE_INSTALL_BINDIR": "bin/$", + "CMAKE_INSTALL_LIBDIR": "lib/$", + "Halide_INSTALL_CMAKEDIR": "lib/cmake/Halide", + "Halide_INSTALL_HELPERSDIR": "lib/cmake/HalideHelpers" + } + }, + { + "name": "package-unix-shared", + "inherits": "package", + "displayName": "Package UNIX shared libs", + "description": "Build for packaging UNIX shared libraries.", + "binaryDir": "shared-Release", + "cacheVariables": { + "BUILD_SHARED_LIBS": "YES" + } + }, + { + "name": "package-unix-static", + "inherits": "package", + "displayName": "Package UNIX static libs", + "description": "Build for packaging UNIX static libraries.", + "binaryDir": "static-Release", + "cacheVariables": { + "BUILD_SHARED_LIBS": "NO", + "Halide_BUNDLE_LLVM": "YES" + } + }, { "name": "linux-x64-asan", "inherits": "ci", "displayName": "ASAN (Linux x64)", "description": "Build everything with ASAN enabled", "cacheVariables": { - "LLVM_ROOT": "$penv{LLVM_ROOT}", - "ENABLE_APPS_BGU": "OFF" + "LLVM_ROOT": "$penv{LLVM_ROOT}" } } ], "buildPresets": [ + { + "name": "debug", + "configurePreset": "debug", + "displayName": "Debug", + "description": "Debug build with no special settings" + }, + { + "name": "release", + "configurePreset": "release", + "displayName": "Release", + "description": "Release build with no special settings" + }, { "name": "linux-x64-asan", "configurePreset": "linux-x64-asan", "displayName": "ASAN (Linux x64)", - "description": "Build everything with ASAN enabled", - "environment": { - "ASAN_OPTIONS": "detect_leaks=0:detect_container_overflow=0" - } + "description": "Build everything with ASAN enabled" } ], "testPresets": [ + { + "name": "debug", + "configurePreset": "debug", + "displayName": "Debug", + "description": "Test everything with Debug build", + "output": { + "outputOnFailure": true + } + }, + { + "name": "release", + "configurePreset": "release", + "displayName": "Release", + "description": "Test everything with Release build", + "output": { + "outputOnFailure": true + } + }, { "name": "linux-x64-asan", "configurePreset": "linux-x64-asan", diff --git a/cmake/HalidePythonExtensionHelpers.cmake b/cmake/HalidePythonExtensionHelpers.cmake index 9a95dc22c9c0..4996c351a683 100644 --- a/cmake/HalidePythonExtensionHelpers.cmake +++ b/cmake/HalidePythonExtensionHelpers.cmake @@ -1,5 +1,7 @@ -include(HalideGeneratorHelpers) -include(TargetExportScript) +cmake_minimum_required(VERSION 3.22) + +include(${CMAKE_CURRENT_LIST_DIR}/HalideGeneratorHelpers.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/TargetExportScript.cmake) set(_STUB_DIR "${Halide_SOURCE_DIR}/python_bindings/stub") @@ -77,17 +79,7 @@ function(add_python_aot_extension TARGET) PARAMS ${ARG_PARAMS} TARGETS cmake) - # Take the native-code output of the Generator, add the Python-Extension - # code (to make it callable from Python), and build it into the AOT Extension we need. - if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.17) - # Add soabi info (like cpython-310-x86_64-linux-gnu) - # when CMake is new enough to know how to do it. - set(abi_flags WITH_SOABI) - else () - set(abi_flags "") - endif () - - Python3_add_library(${TARGET} MODULE ${abi_flags} ${${TARGET}.py.cpp}) + Python3_add_library(${TARGET} MODULE WITH_SOABI ${${TARGET}.py.cpp}) target_link_libraries(${TARGET} PRIVATE aot_${TARGET}) set_target_properties(${TARGET} PROPERTIES OUTPUT_NAME ${ARG_FUNCTION_NAME}) _target_export_single_symbol(${TARGET} "PyInit_${ARG_FUNCTION_NAME}") @@ -107,23 +99,13 @@ function(add_python_stub_extension TARGET) set(ARG_MODULE "${TARGET}_stub") endif () - # Take the native-code output of the Generator, add the Python-Extension - # code (to make it callable from Python), and build it into the AOT Extension we need. - if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.17) - # Add soabi info (like cpython-310-x86_64-linux-gnu) - # when CMake is new enough to know how to do it. - set(abi_flags WITH_SOABI) - else () - set(abi_flags "") - endif () - # Produce a Stub Extension for the same Generator: # Compiling PyStub.cpp, then linking with the generator's .o file, PyStubImpl.o, # plus the same libHalide being used by halide.so. # # Note that we set HALIDE_PYSTUB_MODULE_NAME to $*_stub (e.g. foo_stub) but # set HALIDE_PYSTUB_GENERATOR_NAME to the unadorned name of the Generator. - Python3_add_library(${TARGET} MODULE ${abi_flags} ${_STUB_DIR}/PyStub.cpp ${ARG_SOURCES}) + Python3_add_library(${TARGET} MODULE WITH_SOABI ${_STUB_DIR}/PyStub.cpp ${ARG_SOURCES}) set_target_properties(${TARGET} PROPERTIES CXX_VISIBILITY_PRESET hidden VISIBILITY_INLINES_HIDDEN ON diff --git a/cmake/TargetExportScript.cmake b/cmake/TargetExportScript.cmake index ba623b4b4553..812d0790d3ab 100644 --- a/cmake/TargetExportScript.cmake +++ b/cmake/TargetExportScript.cmake @@ -1,3 +1,5 @@ +cmake_minimum_required(VERSION 3.22) + include(CheckLinkerFlag) function(target_export_script TARGET) From 1cd5558de84abfa51353565ac6f3d6c52a4df54b Mon Sep 17 00:00:00 2001 From: Steven Johnson Date: Tue, 16 Aug 2022 11:04:26 -0700 Subject: [PATCH 8/9] Update CMakePresets.json --- apps/CMakePresets.json | 121 +---------------------------------------- 1 file changed, 2 insertions(+), 119 deletions(-) diff --git a/apps/CMakePresets.json b/apps/CMakePresets.json index 7fa0ec43b2f0..617283064b57 100644 --- a/apps/CMakePresets.json +++ b/apps/CMakePresets.json @@ -9,42 +9,17 @@ { "name": "base", "hidden": true, - "binaryDir": "build/${presetName}", - "installDir": "install/${presetName}" + "binaryDir": "build/apps/${presetName}" }, { "name": "ci", "hidden": true, "inherits": "base", - "toolchainFile": "${sourceDir}/cmake/toolchain.${presetName}.cmake", + "toolchainFile": "${sourceDir}/../cmake/toolchain.${presetName}.cmake", "cacheVariables": { "CMAKE_BUILD_TYPE": "RelWithDebInfo" } }, - { - "name": "windows-only", - "hidden": true, - "condition": { - "type": "equals", - "lhs": "${hostSystemName}", - "rhs": "Windows" - } - }, - { - "name": "vcpkg", - "hidden": true, - "toolchainFile": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake" - }, - { - "name": "vs2019", - "hidden": true, - "inherits": [ - "vcpkg", - "windows-only" - ], - "generator": "Visual Studio 16 2019", - "toolset": "host=x64" - }, { "name": "debug", "inherits": "base", @@ -63,98 +38,6 @@ "CMAKE_BUILD_TYPE": "Release" } }, - { - "name": "debian-debug", - "inherits": "debug", - "displayName": "Debian (Debug)", - "description": "Debug build assuming Debian-provided dependencies", - "cacheVariables": { - "Halide_SHARED_LLVM": "ON" - } - }, - { - "name": "debian-release", - "inherits": "debian-debug", - "displayName": "Debian (Release)", - "description": "Release build assuming Debian-provided dependencies", - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Release" - } - }, - { - "name": "win32", - "inherits": [ - "vs2019", - "base" - ], - "displayName": "Win32 (Visual Studio)", - "description": "Visual Studio-based Win32 build with vcpkg dependencies.", - "architecture": "Win32" - }, - { - "name": "win64", - "inherits": [ - "vs2019", - "base" - ], - "displayName": "Win64 (Visual Studio)", - "description": "Visual Studio-based x64 build with vcpkg dependencies.", - "architecture": "x64" - }, - { - "name": "package", - "hidden": true, - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Release", - "LLVM_DIR": "$env{LLVM_DIR}", - "Clang_DIR": "$env{Clang_DIR}", - "LLD_DIR": "$env{LLD_DIR}", - "WITH_TESTS": "NO", - "WITH_TUTORIALS": "NO", - "WITH_DOCS": "YES", - "WITH_UTILS": "NO", - "WITH_PYTHON_BINDINGS": "NO", - "CMAKE_INSTALL_DATADIR": "share/Halide" - } - }, - { - "name": "package-windows", - "inherits": [ - "package", - "vs2019" - ], - "displayName": "Package ZIP for Windows", - "description": "Build for packaging Windows shared libraries.", - "binaryDir": "${sourceDir}/build", - "cacheVariables": { - "BUILD_SHARED_LIBS": "YES", - "CMAKE_INSTALL_BINDIR": "bin/$", - "CMAKE_INSTALL_LIBDIR": "lib/$", - "Halide_INSTALL_CMAKEDIR": "lib/cmake/Halide", - "Halide_INSTALL_HELPERSDIR": "lib/cmake/HalideHelpers" - } - }, - { - "name": "package-unix-shared", - "inherits": "package", - "displayName": "Package UNIX shared libs", - "description": "Build for packaging UNIX shared libraries.", - "binaryDir": "shared-Release", - "cacheVariables": { - "BUILD_SHARED_LIBS": "YES" - } - }, - { - "name": "package-unix-static", - "inherits": "package", - "displayName": "Package UNIX static libs", - "description": "Build for packaging UNIX static libraries.", - "binaryDir": "static-Release", - "cacheVariables": { - "BUILD_SHARED_LIBS": "NO", - "Halide_BUNDLE_LLVM": "YES" - } - }, { "name": "linux-x64-asan", "inherits": "ci", From e04ddd6a534001d9accf5bc97ca553f6766838cb Mon Sep 17 00:00:00 2001 From: Steven Johnson Date: Tue, 16 Aug 2022 11:06:57 -0700 Subject: [PATCH 9/9] Update CMakePresets.json --- apps/CMakePresets.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/CMakePresets.json b/apps/CMakePresets.json index 617283064b57..ad199c5e594c 100644 --- a/apps/CMakePresets.json +++ b/apps/CMakePresets.json @@ -9,7 +9,7 @@ { "name": "base", "hidden": true, - "binaryDir": "build/apps/${presetName}" + "binaryDir": "${sourceDir}/../build/apps/${presetName}" }, { "name": "ci",