From 00aa24622b969ef090afaba845ea88f86df45284 Mon Sep 17 00:00:00 2001 From: Alex Reinking Date: Tue, 8 Sep 2020 13:36:00 -0700 Subject: [PATCH 01/10] Select changes from refactor/autoschedulers for packaging. Also includes a handful of style normalizations that will be distracting while reviewing that PR... --- CMakeLists.txt | 12 ++--- apps/CMakeLists.txt | 8 +-- cmake/HalideTargetHelpers.cmake | 20 +++---- dependencies/wasm/CMakeLists.txt | 2 +- packaging/CMakeLists.txt | 9 ++-- packaging/HalideConfig.cmake | 26 +++++---- python_bindings/stub/CMakeLists.txt | 2 +- src/CMakeLists.txt | 17 +++--- src/runtime/CMakeLists.txt | 11 ++-- test/correctness/CMakeLists.txt | 81 ++++++++++++++--------------- test/generator/CMakeLists.txt | 12 ++--- tools/package-windows.bat | 4 ++ tutorial/CMakeLists.txt | 4 +- 13 files changed, 98 insertions(+), 110 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8c6f8f8f386e..ffeb3a9eb746 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,6 +10,9 @@ enable_testing() # Make our custom helpers available throughout the project via include(). list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/cmake) include(HalideTargetHelpers) +include(HalideGeneratorHelpers) +include(MakeShellPath) +include(CMakeDependentOption) # Build Halide as a shared lib by default, but still honor command-line settings. if (NOT DEFINED BUILD_SHARED_LIBS) @@ -25,7 +28,7 @@ endif () # Windows has file name length restrictions and lacks an RPATH mechanism. # We work around this by setting a path max and putting all exes / dlls in # the same output directory. -if (${CMAKE_SYSTEM_NAME} MATCHES "Windows") +if (CMAKE_SYSTEM_NAME MATCHES "Windows") set(CMAKE_OBJECT_PATH_MAX 260) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin") @@ -53,13 +56,6 @@ add_subdirectory(dependencies) add_subdirectory(src) add_subdirectory(tools) -## -# Add helper functions to the build -## - -include(HalideGeneratorHelpers) -include(MakeShellPath) - ## # Add tests, apps, tutorials, etc. if we're not being imported into another CMake project. ## diff --git a/apps/CMakeLists.txt b/apps/CMakeLists.txt index abce49d8b569..53ea697cda23 100644 --- a/apps/CMakeLists.txt +++ b/apps/CMakeLists.txt @@ -43,14 +43,10 @@ function(add_app_test NAME) endif () set(cmakeDefinitionOpts - # TODO: enable verbose here temporarily, to try to track down flaky Windows failures - "-DCMAKE_VERBOSE_MAKEFILE=ON" "-DCMAKE_PREFIX_PATH=${HALIDE_DIR}" "-DCMAKE_BUILD_TYPE=$" - "-DLLVM_DIR=${LLVM_DIR}") - if (NOT "${Halide_TARGET}" STREQUAL "") - list(APPEND cmakeDefinitionOpts "-DHalide_TARGET=${Halide_TARGET}") - endif () + "-DLLVM_DIR=${LLVM_DIR}" + "-DHalide_TARGET=${Halide_TARGET}") add_test(NAME ${NAME} COMMAND ${CMAKE_CTEST_COMMAND} diff --git a/cmake/HalideTargetHelpers.cmake b/cmake/HalideTargetHelpers.cmake index 8e69dae6a717..37d1bfb50816 100644 --- a/cmake/HalideTargetHelpers.cmake +++ b/cmake/HalideTargetHelpers.cmake @@ -1,13 +1,3 @@ -## -# Cache variable to control the global target for add_halide_library. -## - -if (NOT "$ENV{HL_TARGET}" STREQUAL "") - set(Halide_TARGET "$ENV{HL_TARGET}" CACHE STRING "The target to use when compiling AOT tests") -else () - set(Halide_TARGET "" CACHE STRING "The target to use when compiling AOT tests") -endif () - ## # Utilities for manipulating Halide target triples ## @@ -54,3 +44,13 @@ if (NOT Halide_CMAKE_TARGET) _Halide_cmake_target(Halide_CMAKE_TARGET) message(STATUS "Halide detected active CMake target `${Halide_CMAKE_TARGET}`") endif () + +## +# Cache variable to control the global target for add_halide_library. +## + +if (NOT "$ENV{HL_TARGET}" STREQUAL "") + set(Halide_TARGET "$ENV{HL_TARGET}" CACHE STRING "The target to use when compiling AOT tests") +else () + set(Halide_TARGET "${Halide_CMAKE_TARGET}" CACHE STRING "The target to use when compiling AOT tests") +endif () diff --git a/dependencies/wasm/CMakeLists.txt b/dependencies/wasm/CMakeLists.txt index 1806db503b76..63ef0587c36e 100644 --- a/dependencies/wasm/CMakeLists.txt +++ b/dependencies/wasm/CMakeLists.txt @@ -33,7 +33,7 @@ if (WITH_WABT) set(BUILD_LIBWASM OFF) FetchContent_MakeAvailable(wabt) - set_target_properties(wabt PROPERTIES POSITION_INDEPENDENT_CODE TRUE) + set_target_properties(wabt PROPERTIES POSITION_INDEPENDENT_CODE ON) # TODO: we want to require unique prefixes to include these files, to avoid ambiguity; # this means we have to prefix with "wabt-src/...", which is less bad than other alternatives, diff --git a/packaging/CMakeLists.txt b/packaging/CMakeLists.txt index 6c9705615fc9..110d914620ef 100644 --- a/packaging/CMakeLists.txt +++ b/packaging/CMakeLists.txt @@ -15,23 +15,20 @@ set(HALIDE_INSTALL_CMAKEDIR # TODO(#4053): add autoschedulers when refactored -# Sends Debug -> Debug, Release/MinSizeRel/RelWithDebInfo -> Release -set(CONFIG_DIR $,Debug,Release>) - install(TARGETS Halide Halide_Generator Halide_RunGenMain EXPORT Halide_Targets RUNTIME - DESTINATION ${CMAKE_INSTALL_BINDIR}/${CONFIG_DIR} + DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT Halide_Runtime LIBRARY - DESTINATION ${CMAKE_INSTALL_LIBDIR}/${CONFIG_DIR} + DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Halide_Runtime NAMELINK_COMPONENT Halide_Development ARCHIVE - DESTINATION ${CMAKE_INSTALL_LIBDIR}/${CONFIG_DIR} + DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Halide_Development INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) diff --git a/packaging/HalideConfig.cmake b/packaging/HalideConfig.cmake index 857d2d2c6472..9ee50f1d2fb5 100644 --- a/packaging/HalideConfig.cmake +++ b/packaging/HalideConfig.cmake @@ -62,20 +62,18 @@ macro(_Halide_include TYPE CAUSE) include("${CMAKE_CURRENT_LIST_DIR}/Halide-Targets-${TYPE}.cmake") if (NOT ${CMAKE_FIND_PACKAGE_NAME}_both) - # In CMake <= 3.17, ALIAS targets may not refer to non-global targets. - # this means that multiple different versions of Halide may not be used - # in a single project via find_package until 3.18 - if (CMAKE_VERSION VERSION_LESS 3.18) - set_target_properties(Halide::${TYPE}::Halide - Halide::${TYPE}::Generator - Halide::${TYPE}::RunGenMain - PROPERTIES - IMPORTED_GLOBAL TRUE) - endif () - - add_library(Halide::Halide ALIAS Halide::${TYPE}::Halide) - add_library(Halide::Generator ALIAS Halide::${TYPE}::Generator) - add_library(Halide::RunGenMain ALIAS Halide::${TYPE}::RunGenMain) + foreach (target IN ITEMS Halide Generator RunGenMain) + if (NOT TARGET Halide::${TYPE}::${target}) + continue() + endif () + if (CMAKE_VERSION VERSION_LESS 3.18) + # In CMake <= 3.17, ALIAS targets may not refer to non-global targets, so we + # are forced to promote here. This means that multiple different versions of + # Halide may not be used in a single project via find_package until 3.18 + set_target_properties(Halide::${TYPE}::${target} PROPERTIES IMPORTED_GLOBAL TRUE) + endif () + add_library(Halide::${target} ALIAS Halide::${TYPE}::${target}) + endforeach () endif () endmacro() diff --git a/python_bindings/stub/CMakeLists.txt b/python_bindings/stub/CMakeLists.txt index 49c9d6837664..fedfda44e3df 100644 --- a/python_bindings/stub/CMakeLists.txt +++ b/python_bindings/stub/CMakeLists.txt @@ -7,7 +7,7 @@ if (NOT TARGET Halide::PyStubs) set_target_properties(Halide_PyStubs PROPERTIES EXPORT_NAME PyStubs VISIBILITY_INLINES_HIDDEN TRUE - POSITION_INDEPENDENT_CODE TRUE) + POSITION_INDEPENDENT_CODE ON) endif () include(${CMAKE_CURRENT_LIST_DIR}/AddHalideGeneratorPython.cmake) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 8ba65b41e58e..adf028c2040e 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -359,10 +359,8 @@ add_custom_command(OUTPUT "${Halide_BINARY_DIR}/include/Halide.h" DEPENDS build_halide_h "${LICENSE_PATH}" ${HEADER_FILES} WORKING_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}" VERBATIM) -add_custom_target( - HalideIncludes - ALL - DEPENDS "${Halide_BINARY_DIR}/include/Halide.h") +add_custom_target(HalideIncludes ALL + DEPENDS "${Halide_BINARY_DIR}/include/Halide.h") ## # Define the Halide library target. @@ -379,7 +377,10 @@ target_link_libraries(Halide PRIVATE Halide::LLVM) target_link_libraries(Halide PUBLIC Halide::LanguageOptions) target_compile_definitions(Halide PRIVATE $<$>:Halide_STATIC_DEFINE>) -set_target_properties(Halide PROPERTIES POSITION_INDEPENDENT_CODE ON) +set_target_properties(Halide PROPERTIES + POSITION_INDEPENDENT_CODE ON + VERSION ${Halide_VERSION} + SOVERSION ${Halide_VERSION_MAJOR}) add_dependencies(Halide HalideIncludes) @@ -456,12 +457,6 @@ target_compile_options(Halide # source files in parallel; the Halide library itself is a "knot" point of the build graph, # so compiling its files in parallel should not oversubscribe the system $<$:/MP> - - # To compile LLVM headers, the following was taken from LLVM CMake files: - # Disable sized deallocation if the flag is supported. MSVC fails to compile - # the operator new overload in LLVM/IR/Function.h and Instruction.h otherwise. - # See LLVM PR: 23513 (https://llvm.org/bugs/show_bug.cgi?id=23513) - $<$:/Zc:sizedDealloc-> ) target_compile_definitions(Halide diff --git a/src/runtime/CMakeLists.txt b/src/runtime/CMakeLists.txt index 81022f8a096c..91a59716e63e 100644 --- a/src/runtime/CMakeLists.txt +++ b/src/runtime/CMakeLists.txt @@ -1,3 +1,7 @@ +if (NOT CMAKE_GENERATOR MATCHES "Make|Ninja") + message(STATUS "Notice: ${CMAKE_GENERATOR} does not support depfile dependencies. Incremental builds may fail.") +endif () + # Keep these lists in alphabetical order. set(RUNTIME_CPP aarch64_cpu_features @@ -151,8 +155,8 @@ foreach (i IN LISTS RUNTIME_CPP) foreach (j IN ITEMS 32 64) # -fpic needs special treatment; see below on windows 64bits set(fpic -fpic) - if (${j} EQUAL 32) - if (${i} MATCHES "windows_.*") + if (j EQUAL 32) + if (i MATCHES "windows_.*") # win32 uses the stdcall calling convention, which is x86-specific set(TARGET "i386-unknown-unknown-unknown") else () @@ -160,7 +164,7 @@ foreach (i IN LISTS RUNTIME_CPP) set(TARGET "le32-unknown-nacl-unknown") endif () else () - if (${i} MATCHES "windows_.*") + if (i MATCHES "windows_.*") # must omit -fpic, otherwise clang will complain with the following: # clang : error : unsupported option '-fpic' for target 'x86_64-pc-windows-msvc' set(fpic "") @@ -195,7 +199,6 @@ foreach (i IN LISTS RUNTIME_CPP) list(APPEND clang_flags -MD -MF "$") set(dep_args DEPFILE "${CMAKE_CURRENT_BINARY_DIR}/${basename}.d") elseif (NOT CMAKE_GENERATOR MATCHES "Make") - message(STATUS "Notice: ${CMAKE_GENERATOR} does not support depfile dependencies. Incremental builds may fail.") set(dep_args "") endif () diff --git a/test/correctness/CMakeLists.txt b/test/correctness/CMakeLists.txt index 6f54a8bfebcb..f82c777170fa 100644 --- a/test/correctness/CMakeLists.txt +++ b/test/correctness/CMakeLists.txt @@ -345,44 +345,43 @@ tests(GROUPS correctness target_link_libraries(correctness_image_io PRIVATE Halide::ImageIO) # Tests which use external funcs need to enable exports. -foreach (TEST IN ITEMS - correctness_async - correctness_atomics - correctness_c_function - correctness_compute_at_split_rvar - correctness_concat - correctness_custom_lowering_pass - correctness_extern_bounds_inference - correctness_extern_consumer - correctness_extern_consumer_tiled - correctness_extern_error - correctness_extern_output_expansion - correctness_extern_partial - correctness_extern_producer - correctness_extern_reorder_storage - correctness_extern_sort - correctness_extern_stage - correctness_extern_stage_on_device - correctness_handle - correctness_image_of_lists - correctness_lazy_convolution - correctness_loop_invariant_extern_calls - correctness_make_struct - correctness_many_small_extern_stages - correctness_memoize - correctness_memoize_cloned - correctness_multiple_outputs_extern - correctness_non_nesting_extern_bounds_query - correctness_parallel_fork - correctness_pipeline_set_jit_externs_func - correctness_process_some_tiles - correctness_side_effects - correctness_skip_stages - correctness_skip_stages_external_array_functions - correctness_sliding_backwards - correctness_sliding_over_guard_with_if - correctness_sliding_reduction - correctness_sliding_window - correctness_storage_folding) - set_target_properties(${TEST} PROPERTIES ENABLE_EXPORTS TRUE) -endforeach () +set_target_properties(correctness_async + correctness_atomics + correctness_c_function + correctness_compute_at_split_rvar + correctness_concat + correctness_custom_lowering_pass + correctness_extern_bounds_inference + correctness_extern_consumer + correctness_extern_consumer_tiled + correctness_extern_error + correctness_extern_output_expansion + correctness_extern_partial + correctness_extern_producer + correctness_extern_reorder_storage + correctness_extern_sort + correctness_extern_stage + correctness_extern_stage_on_device + correctness_handle + correctness_image_of_lists + correctness_lazy_convolution + correctness_loop_invariant_extern_calls + correctness_make_struct + correctness_many_small_extern_stages + correctness_memoize + correctness_memoize_cloned + correctness_multiple_outputs_extern + correctness_non_nesting_extern_bounds_query + correctness_parallel_fork + correctness_pipeline_set_jit_externs_func + correctness_process_some_tiles + correctness_side_effects + correctness_skip_stages + correctness_skip_stages_external_array_functions + correctness_sliding_backwards + correctness_sliding_over_guard_with_if + correctness_sliding_reduction + correctness_sliding_window + correctness_storage_folding + PROPERTIES ENABLE_EXPORTS TRUE) + diff --git a/test/generator/CMakeLists.txt b/test/generator/CMakeLists.txt index b1738085dae7..342659232b3e 100644 --- a/test/generator/CMakeLists.txt +++ b/test/generator/CMakeLists.txt @@ -5,7 +5,7 @@ function(halide_define_aot_test NAME) set(options OMIT_DEFAULT_GENERATOR) set(oneValueArgs FUNCTION_NAME) - set(multiValueArgs GEN_DEPS EXTRA_LIBS ENABLE_IF FEATURES PARAMS TARGET) + set(multiValueArgs GEN_DEPS EXTRA_LIBS ENABLE_IF FEATURES PARAMS GEN_TARGET) cmake_parse_arguments(args "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) if (args_ENABLE_IF AND NOT (${args_ENABLE_IF})) @@ -21,7 +21,7 @@ function(halide_define_aot_test NAME) add_halide_library(${NAME} FROM "${NAME}.generator" PARAMS "${args_PARAMS}" - TARGETS "${args_TARGET}" + TARGETS "${args_GEN_TARGET}" FUNCTION_NAME "${args_FUNCTION_NAME}" FEATURES "${args_FEATURES}") list(APPEND DEPS ${NAME} ${NAME}.runtime) @@ -323,7 +323,7 @@ set(metadata_tester_params array_outputs8.size=2 array_outputs9.size=2) -halide_define_aot_test(metadata_tester +halide_define_aot_test(metadata_tester EXTRA_LIBS metadata_tester_ucon PARAMS ${metadata_tester_params}) add_halide_library(metadata_tester_ucon @@ -341,7 +341,7 @@ halide_define_aot_test(msan FEATURES msan) halide_define_aot_test(multitarget # Multitarget doesn't apply to WASM ENABLE_IF NOT ${USING_WASM} - TARGET cmake cmake-no_bounds_query + GEN_TARGET cmake-no_bounds_query cmake FEATURES c_plus_plus_name_mangling FUNCTION_NAME HalideTest::multitarget) @@ -349,7 +349,7 @@ halide_define_aot_test(multitarget # nested_externs_generator.cpp halide_define_aot_test(nested_externs OMIT_DEFAULT_GENERATOR - EXTRA_LIBS + EXTRA_LIBS nested_externs_root nested_externs_inner nested_externs_combine @@ -404,7 +404,7 @@ halide_define_aot_test(user_context_insanity FEATURES user_context) # variable_num_threads_aottest.cpp # variable_num_threads_generator.cpp -halide_define_aot_test(variable_num_threads +halide_define_aot_test(variable_num_threads # Requires threading support, not yet available for wasm tests ENABLE_IF NOT ${USING_WASM}) diff --git a/tools/package-windows.bat b/tools/package-windows.bat index 1d1bd8f98b2d..f0db288b4e52 100644 --- a/tools/package-windows.bat +++ b/tools/package-windows.bat @@ -12,6 +12,8 @@ cmake -G "Visual Studio 16 2019" -Thost=x64 -A x64 ^ -DCMAKE_TOOLCHAIN_FILE=%VCPKG_ROOT%/scripts/buildsystems/vcpkg.cmake ^ -DWITH_TESTS=NO -DWITH_APPS=NO -DWITH_TUTORIALS=NO ^ -DWITH_DOCS=YES -DWITH_UTILS=NO -DWITH_PYTHON_BINDINGS=NO ^ + "-DCMAKE_INSTALL_BINDIR=bin/$" "-DCMAKE_INSTALL_LIBDIR=lib/$" ^ + "-DHALIDE_INSTALL_CMAKEDIR=lib" ^ -S . -B build/shared if %errorlevel% neq 0 goto return @@ -33,6 +35,8 @@ cmake -G "Visual Studio 16 2019" -Thost=x64 -A x64 ^ -DCMAKE_TOOLCHAIN_FILE=%VCPKG_ROOT%/scripts/buildsystems/vcpkg.cmake ^ -DWITH_TESTS=NO -DWITH_APPS=NO -DWITH_TUTORIALS=NO ^ -DWITH_DOCS=YES -DWITH_UTILS=NO -DWITH_PYTHON_BINDINGS=NO ^ + "-DCMAKE_INSTALL_BINDIR=bin/$" "-DCMAKE_INSTALL_LIBDIR=lib/$" ^ + "-DHALIDE_INSTALL_CMAKEDIR=lib" ^ -S . -B build/static if %errorlevel% neq 0 goto return diff --git a/tutorial/CMakeLists.txt b/tutorial/CMakeLists.txt index 2febe673aa68..1ee71b060a58 100644 --- a/tutorial/CMakeLists.txt +++ b/tutorial/CMakeLists.txt @@ -19,11 +19,11 @@ function(add_tutorial source_file) ENVIRONMENT "HL_TARGET=${Halide_TARGET};HL_JIT_TARGET=${Halide_TARGET}" LABELS tutorial) - if (${args_WITH_IMAGE_IO}) + if (args_WITH_IMAGE_IO) target_link_libraries(${name} PRIVATE Halide::ImageIO) endif () - if (${args_WITH_OPENMP}) + if (args_WITH_OPENMP) if (TARGET OpenMP::OpenMP_CXX) target_link_libraries(${name} PRIVATE OpenMP::OpenMP_CXX) else () From fe4533f0d5714cff5f13f60d13c3480f7625ccca Mon Sep 17 00:00:00 2001 From: Alex Reinking Date: Tue, 8 Sep 2020 13:44:24 -0700 Subject: [PATCH 02/10] Merge Linux and macOS package scripts. Keep zsh. --- packaging/{Linux.cmake => Unix.cmake} | 4 +-- packaging/macOS.cmake | 9 ------ tools/package-linux.sh | 31 ------------------- tools/package-unix.sh | 28 +++++++++++++++++ tools/{package-macos.zsh => package-unix.zsh} | 8 +++-- 5 files changed, 35 insertions(+), 45 deletions(-) rename packaging/{Linux.cmake => Unix.cmake} (80%) delete mode 100644 packaging/macOS.cmake delete mode 100755 tools/package-linux.sh create mode 100644 tools/package-unix.sh rename tools/{package-macos.zsh => package-unix.zsh} (78%) mode change 100755 => 100644 diff --git a/packaging/Linux.cmake b/packaging/Unix.cmake similarity index 80% rename from packaging/Linux.cmake rename to packaging/Unix.cmake index e8917509c038..892e4162bf66 100644 --- a/packaging/Linux.cmake +++ b/packaging/Unix.cmake @@ -4,8 +4,8 @@ set(CPACK_COMPONENTS_HALIDE_RUNTIME Halide_Runtime) set(CPACK_COMPONENTS_HALIDE_DEVELOPMENT Halide_Development) set(CPACK_INSTALL_CMAKE_PROJECTS - static-Debug Halide ALL / - shared-Debug Halide ALL / +# static-Debug Halide ALL / +# shared-Debug Halide ALL / static-Release Halide ALL / shared-Release Halide ALL / ) diff --git a/packaging/macOS.cmake b/packaging/macOS.cmake deleted file mode 100644 index c68e0ef109a4..000000000000 --- a/packaging/macOS.cmake +++ /dev/null @@ -1,9 +0,0 @@ -include("shared-Release/CPackConfig.cmake") - -set(CPACK_COMPONENTS_HALIDE_RUNTIME Halide_Runtime) -set(CPACK_COMPONENTS_HALIDE_DEVELOPMENT Halide_Development) - -set(CPACK_INSTALL_CMAKE_PROJECTS - static-Release Halide ALL / - shared-Release Halide ALL / - ) diff --git a/tools/package-linux.sh b/tools/package-linux.sh deleted file mode 100755 index 2e87ec2bfd30..000000000000 --- a/tools/package-linux.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash - -DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")"/.. >/dev/null 2>&1 && pwd)" - -[ -z "$LLVM_DIR" ] && echo "Must set specific LLVM_DIR for packaging" && exit - -# shellcheck disable=SC2154 -[ -z "$Clang_DIR" ] && echo "Must set specific Clang_DIR for packaging" && exit - -# shellcheck disable=SC2034 -flag_shared="-DBUILD_SHARED_LIBS=YES" - -# shellcheck disable=SC2034 -flag_static="-DBUILD_SHARED_LIBS=NO" - -for ty in shared static; do - for cfg in Debug Release; do - flag_name=flag_$ty - cmake -G Ninja -DCMAKE_BUILD_TYPE=$cfg ${!flag_name} \ - -DLLVM_DIR="$LLVM_DIR" -DClang_DIR="$Clang_DIR" \ - -DWITH_TESTS=NO -DWITH_APPS=NO -DWITH_TUTORIALS=NO \ - -DWITH_DOCS=YES -DWITH_UTILS=NO -DWITH_PYTHON_BINDINGS=NO \ - -S "$DIR" -B "$DIR/build/$ty-$cfg" - cmake --build "$DIR/build/$ty-$cfg" - done -done - -( - cd "$DIR/build" || exit - cpack --config "$DIR/packaging/Linux.cmake" -) diff --git a/tools/package-unix.sh b/tools/package-unix.sh new file mode 100644 index 000000000000..6cbedb514d4c --- /dev/null +++ b/tools/package-unix.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")"/.. >/dev/null 2>&1 && pwd)" + +[ -z "$LLVM_DIR" ] && echo "Must set specific LLVM_DIR for packaging" && exit +[ -z "$Clang_DIR" ] && echo "Must set specific Clang_DIR for packaging" && exit + +cmake -G Ninja -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_SHARED_LIBS=NO -DHalide_BUNDLE_LLVM=YES \ + -DLLVM_DIR="$LLVM_DIR" -DClang_DIR="$Clang_DIR" \ + -DWITH_TESTS=NO -DWITH_APPS=NO -DWITH_TUTORIALS=NO \ + -DWITH_DOCS=YES -DWITH_UTILS=NO -DWITH_PYTHON_BINDINGS=NO \ + -S "$DIR" -B "$DIR/build/static-Release" + +cmake -G Ninja -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_SHARED_LIBS=YES \ + -DLLVM_DIR="$LLVM_DIR" -DClang_DIR="$Clang_DIR" \ + -DWITH_TESTS=NO -DWITH_APPS=NO -DWITH_TUTORIALS=NO \ + -DWITH_DOCS=YES -DWITH_UTILS=NO -DWITH_PYTHON_BINDINGS=NO \ + -S "$DIR" -B "$DIR/build/shared-Release" + +cmake --build "$DIR/build/static-Release" +cmake --build "$DIR/build/shared-Release" + +( + cd "$DIR/build" || exit + cpack --config "$DIR/packaging/Unix.cmake" +) diff --git a/tools/package-macos.zsh b/tools/package-unix.zsh old mode 100755 new mode 100644 similarity index 78% rename from tools/package-macos.zsh rename to tools/package-unix.zsh index 0f4795afe457..e44dcfd0b7e4 --- a/tools/package-macos.zsh +++ b/tools/package-unix.zsh @@ -5,13 +5,15 @@ DIR="$(cd "$(dirname "${(%):-%N}")"/.. >/dev/null 2>&1 && pwd)" [ -z "$LLVM_DIR" ] && echo "Must set specific LLVM_DIR for packaging" && exit [ -z "$Clang_DIR" ] && echo "Must set specific Clang_DIR for packaging" && exit -cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=NO \ +cmake -G Ninja -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_SHARED_LIBS=NO -DHalide_BUNDLE_LLVM=YES \ -DLLVM_DIR="$LLVM_DIR" -DClang_DIR="$Clang_DIR" \ -DWITH_TESTS=NO -DWITH_APPS=NO -DWITH_TUTORIALS=NO \ -DWITH_DOCS=YES -DWITH_UTILS=NO -DWITH_PYTHON_BINDINGS=NO \ -S "$DIR" -B "$DIR/build/static-Release" -cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=YES \ +cmake -G Ninja -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_SHARED_LIBS=YES \ -DLLVM_DIR="$LLVM_DIR" -DClang_DIR="$Clang_DIR" \ -DWITH_TESTS=NO -DWITH_APPS=NO -DWITH_TUTORIALS=NO \ -DWITH_DOCS=YES -DWITH_UTILS=NO -DWITH_PYTHON_BINDINGS=NO \ @@ -22,5 +24,5 @@ cmake --build "$DIR/build/shared-Release" ( cd "$DIR/build" || exit - cpack --config "$DIR/packaging/macOS.cmake" + cpack --config "$DIR/packaging/Unix.cmake" ) From eac0e093d3555e476df657275616d6d0061ffc66 Mon Sep 17 00:00:00 2001 From: Alex Reinking Date: Tue, 8 Sep 2020 14:22:52 -0700 Subject: [PATCH 03/10] Comment disabled debug builds --- packaging/Unix.cmake | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packaging/Unix.cmake b/packaging/Unix.cmake index 892e4162bf66..db10f5181a9d 100644 --- a/packaging/Unix.cmake +++ b/packaging/Unix.cmake @@ -4,8 +4,10 @@ set(CPACK_COMPONENTS_HALIDE_RUNTIME Halide_Runtime) set(CPACK_COMPONENTS_HALIDE_DEVELOPMENT Halide_Development) set(CPACK_INSTALL_CMAKE_PROJECTS -# static-Debug Halide ALL / -# shared-Debug Halide ALL / + # We don't package debug binaries on Unix systems. Our developers + # don't use them and LLVM in debug mode is next to unusable, too. + # static-Debug Halide ALL / + # shared-Debug Halide ALL / static-Release Halide ALL / shared-Release Halide ALL / ) From 61c361f9df94bcd062916b020dded5260620c1e3 Mon Sep 17 00:00:00 2001 From: Alex Reinking Date: Tue, 8 Sep 2020 14:42:58 -0700 Subject: [PATCH 04/10] Set Halide version to LLVM trunk version. --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ffeb3a9eb746..a51d352c4aa1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.16) -project(Halide VERSION 10.0.0) +project(Halide VERSION 12.0.0) enable_testing() From 9d6ab961c85e263bcf8025b25575f477ec40fc97 Mon Sep 17 00:00:00 2001 From: Alex Reinking Date: Tue, 8 Sep 2020 17:25:36 -0700 Subject: [PATCH 05/10] Rework package scripts to take arguments --- packaging/Unix.cmake | 13 ------- tools/package-unix.sh | 74 ++++++++++++++++++++++++++++----------- tools/package-unix.zsh | 28 --------------- tools/package-windows.bat | 63 ++++++++++++++++++++++----------- 4 files changed, 96 insertions(+), 82 deletions(-) delete mode 100644 packaging/Unix.cmake delete mode 100644 tools/package-unix.zsh diff --git a/packaging/Unix.cmake b/packaging/Unix.cmake deleted file mode 100644 index db10f5181a9d..000000000000 --- a/packaging/Unix.cmake +++ /dev/null @@ -1,13 +0,0 @@ -include("shared-Release/CPackConfig.cmake") - -set(CPACK_COMPONENTS_HALIDE_RUNTIME Halide_Runtime) -set(CPACK_COMPONENTS_HALIDE_DEVELOPMENT Halide_Development) - -set(CPACK_INSTALL_CMAKE_PROJECTS - # We don't package debug binaries on Unix systems. Our developers - # don't use them and LLVM in debug mode is next to unusable, too. - # static-Debug Halide ALL / - # shared-Debug Halide ALL / - static-Release Halide ALL / - shared-Release Halide ALL / - ) diff --git a/tools/package-unix.sh b/tools/package-unix.sh index 6cbedb514d4c..7e8f66b911dc 100644 --- a/tools/package-unix.sh +++ b/tools/package-unix.sh @@ -1,28 +1,60 @@ #!/bin/bash -DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")"/.. >/dev/null 2>&1 && pwd)" +halide_source="$1" +halide_build_root="$2" [ -z "$LLVM_DIR" ] && echo "Must set specific LLVM_DIR for packaging" && exit [ -z "$Clang_DIR" ] && echo "Must set specific Clang_DIR for packaging" && exit +[ -z "$halide_source" ] && echo "Usage: $0 " && exit +[ -z "$halide_build_root" ] && echo "Usage: $0 " && exit -cmake -G Ninja -DCMAKE_BUILD_TYPE=Release \ - -DBUILD_SHARED_LIBS=NO -DHalide_BUNDLE_LLVM=YES \ - -DLLVM_DIR="$LLVM_DIR" -DClang_DIR="$Clang_DIR" \ - -DWITH_TESTS=NO -DWITH_APPS=NO -DWITH_TUTORIALS=NO \ - -DWITH_DOCS=YES -DWITH_UTILS=NO -DWITH_PYTHON_BINDINGS=NO \ - -S "$DIR" -B "$DIR/build/static-Release" - -cmake -G Ninja -DCMAKE_BUILD_TYPE=Release \ +cmake -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ -DBUILD_SHARED_LIBS=YES \ - -DLLVM_DIR="$LLVM_DIR" -DClang_DIR="$Clang_DIR" \ - -DWITH_TESTS=NO -DWITH_APPS=NO -DWITH_TUTORIALS=NO \ - -DWITH_DOCS=YES -DWITH_UTILS=NO -DWITH_PYTHON_BINDINGS=NO \ - -S "$DIR" -B "$DIR/build/shared-Release" - -cmake --build "$DIR/build/static-Release" -cmake --build "$DIR/build/shared-Release" - -( - cd "$DIR/build" || exit - cpack --config "$DIR/packaging/Unix.cmake" -) + -DLLVM_DIR="$LLVM_DIR" \ + -DClang_DIR="$Clang_DIR" \ + -DWITH_TESTS=NO \ + -DWITH_APPS=NO \ + -DWITH_TUTORIALS=NO \ + -DWITH_DOCS=YES \ + -DWITH_UTILS=NO \ + -DWITH_PYTHON_BINDINGS=NO \ + -S "$halide_source" \ + -B "$halide_build_root/shared-Release" + +cmake -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_SHARED_LIBS=NO \ + -DHalide_BUNDLE_LLVM=YES \ + -DLLVM_DIR="$LLVM_DIR" \ + -DClang_DIR="$Clang_DIR" \ + -DWITH_TESTS=NO \ + -DWITH_APPS=NO \ + -DWITH_TUTORIALS=NO \ + -DWITH_DOCS=YES \ + -DWITH_UTILS=NO \ + -DWITH_PYTHON_BINDINGS=NO \ + -S "$halide_source" \ + -B "$halide_build_root/static-Release" + +cmake --build "$halide_build_root/shared-Release" +cmake --build "$halide_build_root/static-Release" + +cd "$halide_build_root" || exit +cat <release.cmake +include("shared-Release/CPackConfig.cmake") + +set(CPACK_COMPONENTS_HALIDE_RUNTIME Halide_Runtime) +set(CPACK_COMPONENTS_HALIDE_DEVELOPMENT Halide_Development) + +set(CPACK_INSTALL_CMAKE_PROJECTS + # We don't package debug binaries on Unix systems. Our developers + # don't use them and LLVM in debug mode is next to unusable, too. + # static-Debug Halide ALL / + # shared-Debug Halide ALL / + static-Release Halide ALL / + shared-Release Halide ALL / + ) +EOM + +cpack --config release.cmake diff --git a/tools/package-unix.zsh b/tools/package-unix.zsh deleted file mode 100644 index e44dcfd0b7e4..000000000000 --- a/tools/package-unix.zsh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/zsh - -DIR="$(cd "$(dirname "${(%):-%N}")"/.. >/dev/null 2>&1 && pwd)" - -[ -z "$LLVM_DIR" ] && echo "Must set specific LLVM_DIR for packaging" && exit -[ -z "$Clang_DIR" ] && echo "Must set specific Clang_DIR for packaging" && exit - -cmake -G Ninja -DCMAKE_BUILD_TYPE=Release \ - -DBUILD_SHARED_LIBS=NO -DHalide_BUNDLE_LLVM=YES \ - -DLLVM_DIR="$LLVM_DIR" -DClang_DIR="$Clang_DIR" \ - -DWITH_TESTS=NO -DWITH_APPS=NO -DWITH_TUTORIALS=NO \ - -DWITH_DOCS=YES -DWITH_UTILS=NO -DWITH_PYTHON_BINDINGS=NO \ - -S "$DIR" -B "$DIR/build/static-Release" - -cmake -G Ninja -DCMAKE_BUILD_TYPE=Release \ - -DBUILD_SHARED_LIBS=YES \ - -DLLVM_DIR="$LLVM_DIR" -DClang_DIR="$Clang_DIR" \ - -DWITH_TESTS=NO -DWITH_APPS=NO -DWITH_TUTORIALS=NO \ - -DWITH_DOCS=YES -DWITH_UTILS=NO -DWITH_PYTHON_BINDINGS=NO \ - -S "$DIR" -B "$DIR/build/shared-Release" - -cmake --build "$DIR/build/static-Release" -cmake --build "$DIR/build/shared-Release" - -( - cd "$DIR/build" || exit - cpack --config "$DIR/packaging/Unix.cmake" -) diff --git a/tools/package-windows.bat b/tools/package-windows.bat index f0db288b4e52..ecf23f25ec97 100644 --- a/tools/package-windows.bat +++ b/tools/package-windows.bat @@ -1,6 +1,17 @@ @echo off -pushd %~dp0\.. +set halide_source="%~1" +set halide_build_root="%~2" + +if "%halide_source%" == "" ( + echo Usage: %~0 "" "" + goto return +) + +if "%halide_build_root%" == "" ( + echo Usage: %~0 "" "" + goto return +) if not exist "%VCPKG_ROOT%\.vcpkg-root" ( echo Must define VCPKG_ROOT to be the root of the VCPKG install @@ -9,35 +20,48 @@ if not exist "%VCPKG_ROOT%\.vcpkg-root" ( REM Ninja Multi-Config in 3.18 has some sort of bug. Very disappointing. cmake -G "Visual Studio 16 2019" -Thost=x64 -A x64 ^ - -DCMAKE_TOOLCHAIN_FILE=%VCPKG_ROOT%/scripts/buildsystems/vcpkg.cmake ^ - -DWITH_TESTS=NO -DWITH_APPS=NO -DWITH_TUTORIALS=NO ^ - -DWITH_DOCS=YES -DWITH_UTILS=NO -DWITH_PYTHON_BINDINGS=NO ^ - "-DCMAKE_INSTALL_BINDIR=bin/$" "-DCMAKE_INSTALL_LIBDIR=lib/$" ^ + "-DCMAKE_TOOLCHAIN_FILE=%VCPKG_ROOT%/scripts/buildsystems/vcpkg.cmake" ^ + -DBUILD_SHARED_LIBS=YES ^ + -DWITH_TESTS=NO ^ + -DWITH_APPS=NO ^ + -DWITH_TUTORIALS=NO ^ + -DWITH_DOCS=YES ^ + -DWITH_UTILS=NO ^ + -DWITH_PYTHON_BINDINGS=NO ^ + "-DCMAKE_INSTALL_BINDIR=bin/$" ^ + "-DCMAKE_INSTALL_LIBDIR=lib/$" ^ "-DHALIDE_INSTALL_CMAKEDIR=lib" ^ - -S . -B build/shared + -S "%halide_source%" ^ + -B "%halide_build_root%/shared" if %errorlevel% neq 0 goto return -cmake --build build/shared --config Debug -cmake --build build/shared --config Release +REM We don't distribute Debug binaries because they aren't useful +REM cmake --build %halide_build_root%/shared --config Debug +cmake --build "%halide_build_root%/shared" --config Release -pushd build\shared -cpack -C "Debug;Release" +pushd "%halide_build_root%\shared" +cpack -C "Release" popd REM REM REM REM REM REM REM REM REM REM REM REM REM REM REM REM REM REM REM REM -:static - REM Ninja Multi-Config in 3.18 has some sort of bug. Very disappointing. cmake -G "Visual Studio 16 2019" -Thost=x64 -A x64 ^ - -DBUILD_SHARED_LIBS=NO -DHalide_BUNDLE_LLVM=YES ^ - -DCMAKE_TOOLCHAIN_FILE=%VCPKG_ROOT%/scripts/buildsystems/vcpkg.cmake ^ - -DWITH_TESTS=NO -DWITH_APPS=NO -DWITH_TUTORIALS=NO ^ - -DWITH_DOCS=YES -DWITH_UTILS=NO -DWITH_PYTHON_BINDINGS=NO ^ - "-DCMAKE_INSTALL_BINDIR=bin/$" "-DCMAKE_INSTALL_LIBDIR=lib/$" ^ + "-DCMAKE_TOOLCHAIN_FILE=%VCPKG_ROOT%/scripts/buildsystems/vcpkg.cmake" ^ + -DBUILD_SHARED_LIBS=NO ^ + -DHalide_BUNDLE_LLVM=YES ^ + -DWITH_TESTS=NO ^ + -DWITH_APPS=NO ^ + -DWITH_TUTORIALS=NO ^ + -DWITH_DOCS=YES ^ + -DWITH_UTILS=NO ^ + -DWITH_PYTHON_BINDINGS=NO ^ + "-DCMAKE_INSTALL_BINDIR=bin/$" ^ + "-DCMAKE_INSTALL_LIBDIR=lib/$" ^ "-DHALIDE_INSTALL_CMAKEDIR=lib" ^ - -S . -B build/static + -S "%halide_source%" ^ + -B "%halide_build_root%/static" if %errorlevel% neq 0 goto return @@ -45,8 +69,7 @@ REM LLVM Debug + Halide exceeds the COFF 4GB limit!! REM cmake --build build/static --config Debug cmake --build build/static --config Release -pushd build\static -REM cpack -C "Debug;Release" +pushd "%halide_build_root%\static" cpack -C "Release" popd From e97209dd7e7aa5a31ac62c86412538948e6a11a0 Mon Sep 17 00:00:00 2001 From: Alex Reinking Date: Tue, 8 Sep 2020 17:38:13 -0700 Subject: [PATCH 06/10] Fix static build path in package-windows.bat --- tools/package-windows.bat | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/package-windows.bat b/tools/package-windows.bat index ecf23f25ec97..bc9e16630f63 100644 --- a/tools/package-windows.bat +++ b/tools/package-windows.bat @@ -66,8 +66,8 @@ cmake -G "Visual Studio 16 2019" -Thost=x64 -A x64 ^ if %errorlevel% neq 0 goto return REM LLVM Debug + Halide exceeds the COFF 4GB limit!! -REM cmake --build build/static --config Debug -cmake --build build/static --config Release +REM cmake --build "%halide_build_root%/static" --config Debug +cmake --build "%halide_build_root%/static" --config Release pushd "%halide_build_root%\static" cpack -C "Release" From 3cea79d99dc1e90c8402401309d0b040415522d5 Mon Sep 17 00:00:00 2001 From: Alex Reinking Date: Tue, 8 Sep 2020 18:02:12 -0700 Subject: [PATCH 07/10] fix perms --- tools/package-unix.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 tools/package-unix.sh diff --git a/tools/package-unix.sh b/tools/package-unix.sh old mode 100644 new mode 100755 From 1f73e4ae881cca42793a0666cff5c647eecbcefb Mon Sep 17 00:00:00 2001 From: Alex Reinking Date: Tue, 8 Sep 2020 18:18:14 -0700 Subject: [PATCH 08/10] Consolidate all packaging logic into packaging/CMakeLists.txt --- doc/CMakeLists.txt | 8 ------ packaging/CMakeLists.txt | 17 +++++++++++-- src/CMakeLists.txt | 1 - tools/test-packaging-linux.sh | 46 ---------------------------------- tools/test-packaging-macos.zsh | 33 ------------------------ 5 files changed, 15 insertions(+), 90 deletions(-) delete mode 100755 tools/test-packaging-linux.sh delete mode 100755 tools/test-packaging-macos.zsh diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index e6b38267b8b7..918b2dfae86b 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -31,11 +31,3 @@ doxygen_add_docs(doc "${Halide_SOURCE_DIR}/test" ALL COMMENT "Generate HTML documentation") - -## -# Installation -## - -include(GNUInstallDirs) -set(CMAKE_INSTALL_DOCDIR ${CMAKE_INSTALL_DATAROOTDIR}/doc/${PROJECT_NAME}) -install(DIRECTORY ${Halide_BINARY_DIR}/doc/html/ TYPE DOC) \ No newline at end of file diff --git a/packaging/CMakeLists.txt b/packaging/CMakeLists.txt index 110d914620ef..34d8d3504a45 100644 --- a/packaging/CMakeLists.txt +++ b/packaging/CMakeLists.txt @@ -9,6 +9,17 @@ set(HALIDE_INSTALL_CMAKEDIR "${CMAKE_INSTALL_LIBDIR}/cmake/Halide" CACHE STRING "Path to Halide cmake files") +## +# Optional dependencies +## + +set(optional_dependencies "") +foreach (target IN ITEMS wabt) + if (TARGET ${target}) + list(APPEND optional_dependencies ${target}) + endif () +endforeach () + ## # Main library exports ## @@ -33,7 +44,7 @@ install(TARGETS Halide Halide_Generator Halide_RunGenMain INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) -install(TARGETS Halide_LLVM +install(TARGETS Halide_LLVM ${optional_dependencies} EXPORT Halide_Targets) install(TARGETS Halide_Tools Halide_ImageIO Halide_LanguageOptions @@ -140,7 +151,9 @@ install(FILES # Documentation ## -# See /doc/CMakeLists.txt. This way, special install logic isn't needed. +if (WITH_DOCS) + install(DIRECTORY ${Halide_BINARY_DIR}/doc/html/ TYPE DOC) +endif () ## # Actual packaging diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index adf028c2040e..ffa4bcae27ee 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -387,7 +387,6 @@ add_dependencies(Halide HalideIncludes) if (TARGET wabt) target_link_libraries(Halide PRIVATE wabt) target_compile_definitions(Halide PRIVATE WITH_WABT) - install(TARGETS wabt EXPORT Halide_Targets) endif () ## diff --git a/tools/test-packaging-linux.sh b/tools/test-packaging-linux.sh deleted file mode 100755 index d071afdeb4a1..000000000000 --- a/tools/test-packaging-linux.sh +++ /dev/null @@ -1,46 +0,0 @@ -#!/bin/bash - -DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")"/.. >/dev/null 2>&1 && pwd)" - -FLAGS=( - "-DWITH_TESTS=NO" - "-DWITH_TUTORIALS=NO" - "-DWITH_PYTHON_BINDINGS=NO" - "-DWITH_APPS=YES" - "-DWITH_DOCS=NO" - "-DWITH_UTILS=NO" -) - -if [ -n "$LLVM_DIR" ]; then - FLAGS+=("-DLLVM_DIR=$LLVM_DIR") - if [ -n "$Clang_DIR" ]; then - FLAGS+=("-DClang_DIR=$Clang_DIR") - else - FLAGS+=("-DClang_DIR=$LLVM_DIR/../clang") - fi -fi - -Halide_static="-DBUILD_SHARED_LIBS=NO" -Halide_shared="-DBUILD_SHARED_LIBS=YES" - -LLVM_static="" -LLVM_bundled="-DHalide_BUNDLE_LLVM=YES" -LLVM_shared="-DHalide_SHARED_LLVM=YES" - -for HL in static shared; do - for LLVM in static bundled shared; do - if [ "$HL|$LLVM" == "shared|bundled" ]; then - continue - fi - - Halide_flags_var="Halide_$HL" - LLVM_flags_var="LLVM_$LLVM" - build_dir="$DIR/build/release-$HL-$LLVM" - - echo HL=$HL LLVM=$LLVM - cmake -G Ninja -DCMAKE_BUILD_TYPE=Release "${FLAGS[@]}" "${!Halide_flags_var}" "${!LLVM_flags_var}" -S "$DIR" -B "$build_dir" - cmake --build "$build_dir" && (cd "$build_dir" && ctest -R conv_layer) - echo - echo - done -done diff --git a/tools/test-packaging-macos.zsh b/tools/test-packaging-macos.zsh deleted file mode 100755 index 4cd28ef45c23..000000000000 --- a/tools/test-packaging-macos.zsh +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/zsh - -DIR="$(cd "$(dirname "${(%):-%N}")"/.. >/dev/null 2>&1 && pwd)" - -[ -z "$LLVM_DIR" ] && echo "Must set specific LLVM_DIR for packaging" && exit -[ -z "$Clang_DIR" ] && echo "Must set specific Clang_DIR for packaging" && exit - -FLAGS="-DWITH_TESTS=NO -DWITH_TUTORIALS=NO -DWITH_PYTHON_BINDINGS=NO -DWITH_APPS=YES -DWITH_DOCS=NO -DWITH_UTILS=NO -DLLVM_DIR=$LLVM_DIR -DClang_DIR=$Clang_DIR" - -Halide_static="-DBUILD_SHARED_LIBS=NO" -Halide_shared="-DBUILD_SHARED_LIBS=YES" - -LLVM_static="" -LLVM_bundled="-DHalide_BUNDLE_LLVM=YES" -LLVM_shared="-DHalide_SHARED_LLVM=YES" - -for HL in static shared; do - for LLVM in static bundled shared; do - if [[ "$HL|$LLVM" == "shared|bundled" ]]; then - continue - fi - - Halide_flags_var=Halide_$HL - LLVM_flags_var=LLVM_$LLVM - build_dir="$DIR/build/release-$HL-$LLVM" - - echo HL=$HL LLVM=$LLVM - cmake -G Ninja -DCMAKE_BUILD_TYPE=Release ${=FLAGS} ${(P)Halide_flags_var} ${(P)LLVM_flags_var} -S "$DIR" -B ${build_dir} - cmake --build ${build_dir} && (cd ${build_dir} && ctest -R bgu) - echo - echo - done -done From ac9665493d0cb553165933cd5b70026660ff247a Mon Sep 17 00:00:00 2001 From: Alex Reinking Date: Tue, 8 Sep 2020 18:32:43 -0700 Subject: [PATCH 09/10] Add arch option to package-windows.bat --- tools/package-windows.bat | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/tools/package-windows.bat b/tools/package-windows.bat index bc9e16630f63..0d221db3aabb 100644 --- a/tools/package-windows.bat +++ b/tools/package-windows.bat @@ -2,14 +2,20 @@ set halide_source="%~1" set halide_build_root="%~2" +set halide_arch="%~3" if "%halide_source%" == "" ( - echo Usage: %~0 "" "" + echo Usage: %~0 "" "" [Win32,x64,ARM,ARM64] goto return ) if "%halide_build_root%" == "" ( - echo Usage: %~0 "" "" + echo Usage: %~0 "" "" [Win32,x64,ARM,ARM64] + goto return +) + +if "%halide_arch%" == "" ( + echo Usage: %~0 "" "" [Win32,x64,ARM,ARM64] goto return ) @@ -19,7 +25,7 @@ if not exist "%VCPKG_ROOT%\.vcpkg-root" ( ) REM Ninja Multi-Config in 3.18 has some sort of bug. Very disappointing. -cmake -G "Visual Studio 16 2019" -Thost=x64 -A x64 ^ +cmake -G "Visual Studio 16 2019" -Thost=x64 -A "%halide_arch%" ^ "-DCMAKE_TOOLCHAIN_FILE=%VCPKG_ROOT%/scripts/buildsystems/vcpkg.cmake" ^ -DBUILD_SHARED_LIBS=YES ^ -DWITH_TESTS=NO ^ @@ -47,7 +53,7 @@ popd REM REM REM REM REM REM REM REM REM REM REM REM REM REM REM REM REM REM REM REM REM Ninja Multi-Config in 3.18 has some sort of bug. Very disappointing. -cmake -G "Visual Studio 16 2019" -Thost=x64 -A x64 ^ +cmake -G "Visual Studio 16 2019" -Thost=x64 -A "%halide_arch%" ^ "-DCMAKE_TOOLCHAIN_FILE=%VCPKG_ROOT%/scripts/buildsystems/vcpkg.cmake" ^ -DBUILD_SHARED_LIBS=NO ^ -DHalide_BUNDLE_LLVM=YES ^ From f042212e10f50365d4a77ec6047cadb96b204db5 Mon Sep 17 00:00:00 2001 From: Alex Reinking Date: Tue, 8 Sep 2020 23:31:46 -0700 Subject: [PATCH 10/10] Use LLVM_DIR and Clang_DIR in package-windows.bat --- tools/package-windows.bat | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/tools/package-windows.bat b/tools/package-windows.bat index 0d221db3aabb..0299ebcdbf5d 100644 --- a/tools/package-windows.bat +++ b/tools/package-windows.bat @@ -4,6 +4,21 @@ set halide_source="%~1" set halide_build_root="%~2" set halide_arch="%~3" +if not exist "%VCPKG_ROOT%\.vcpkg-root" ( + echo Must define VCPKG_ROOT to be the root of the VCPKG install + goto return +) + +if not exist "%LLVM_DIR%\LLVMConfig.cmake" ( + echo Must set specific LLVM_DIR for packaging + goto return +) + +if not exist "%Clang_DIR%\ClangConfig.cmake" ( + echo Must set specific Clang_DIR for packaging + goto return +) + if "%halide_source%" == "" ( echo Usage: %~0 "" "" [Win32,x64,ARM,ARM64] goto return @@ -19,14 +34,11 @@ if "%halide_arch%" == "" ( goto return ) -if not exist "%VCPKG_ROOT%\.vcpkg-root" ( - echo Must define VCPKG_ROOT to be the root of the VCPKG install - goto return -) - REM Ninja Multi-Config in 3.18 has some sort of bug. Very disappointing. cmake -G "Visual Studio 16 2019" -Thost=x64 -A "%halide_arch%" ^ "-DCMAKE_TOOLCHAIN_FILE=%VCPKG_ROOT%/scripts/buildsystems/vcpkg.cmake" ^ + "-DLLVM_DIR=%LLVM_DIR%" ^ + "-DClang_DIR=%Clang_DIR%" ^ -DBUILD_SHARED_LIBS=YES ^ -DWITH_TESTS=NO ^ -DWITH_APPS=NO ^ @@ -55,6 +67,8 @@ REM REM REM REM REM REM REM REM REM REM REM REM REM REM REM REM REM REM REM REM REM Ninja Multi-Config in 3.18 has some sort of bug. Very disappointing. cmake -G "Visual Studio 16 2019" -Thost=x64 -A "%halide_arch%" ^ "-DCMAKE_TOOLCHAIN_FILE=%VCPKG_ROOT%/scripts/buildsystems/vcpkg.cmake" ^ + "-DLLVM_DIR=%LLVM_DIR%" ^ + "-DClang_DIR=%Clang_DIR%" ^ -DBUILD_SHARED_LIBS=NO ^ -DHalide_BUNDLE_LLVM=YES ^ -DWITH_TESTS=NO ^