@@ -404,6 +404,29 @@ target_sources(
404404 # keep-sorted end
405405)
406406
407+ # LLVM sources live in their own object library so they can have a separate PCH.
408+ add_library (
409+ Halide_LLVM_srcs OBJECT
410+ # keep-sorted start case=no
411+ CodeGen_ARM.cpp
412+ CodeGen_Hexagon.cpp
413+ CodeGen_Internal.cpp
414+ CodeGen_LLVM.cpp
415+ CodeGen_Posix.cpp
416+ CodeGen_PowerPC.cpp
417+ CodeGen_PTX_Dev.cpp
418+ CodeGen_RISCV.cpp
419+ CodeGen_WebAssembly.cpp
420+ CodeGen_X86.cpp
421+ HexagonOffload.cpp
422+ JITModule.cpp
423+ LLVM_Output.cpp
424+ LLVM_Runtime_Linker.cpp
425+ Module.cpp
426+ WasmExecutor.cpp
427+ # keep-sorted end
428+ )
429+
407430set (C_TEMPLATE_FILES
408431 CodeGen_C_prologue
409432 CodeGen_C_vectors
@@ -575,13 +598,14 @@ if (Halide_WASM_BACKEND STREQUAL "wabt")
575598 find_package (wabt REQUIRED )
576599 _Halide_pkgdep (wabt )
577600
578- target_link_libraries ( Halide PRIVATE wabt::wabt )
579- target_compile_definitions ( Halide PRIVATE WITH_WABT )
601+ target_compile_definitions ( Halide_LLVM_srcs PRIVATE WITH_WABT )
602+ target_link_libraries ( Halide_LLVM_srcs PRIVATE wabt::wabt )
580603elseif (Halide_WASM_BACKEND STREQUAL "V8" )
581604 find_package (V8 REQUIRED )
582605 _Halide_pkgdep (V8 )
583- target_compile_definitions (Halide PRIVATE WITH_V8 )
584- target_link_libraries (Halide PRIVATE V8::V8 )
606+
607+ target_compile_definitions (Halide_LLVM_srcs PRIVATE WITH_V8 )
608+ target_link_libraries (Halide_LLVM_srcs PRIVATE V8::V8 )
585609elseif (Halide_WASM_BACKEND)
586610 message (FATAL_ERROR "Unknown Halide_WASM_BACKEND `${Halide_WASM_BACKEND} `" )
587611endif ()
@@ -670,38 +694,17 @@ if (NOT MSVC)
670694 set_source_files_properties (Util.cpp PROPERTIES SKIP_PRECOMPILE_HEADERS ON )
671695endif ()
672696
673- # LLVM sources live in their own object library so they can have a separate PCH.
674- add_library (Halide_LLVM_srcs OBJECT
675- CodeGen_ARM.cpp
676- CodeGen_Hexagon.cpp
677- CodeGen_Internal.cpp
678- CodeGen_LLVM.cpp
679- CodeGen_Posix.cpp
680- CodeGen_PowerPC.cpp
681- CodeGen_PTX_Dev.cpp
682- CodeGen_RISCV.cpp
683- CodeGen_WebAssembly.cpp
684- CodeGen_X86.cpp
685- HexagonOffload.cpp
686- JITModule.cpp
687- LLVM_Output.cpp
688- LLVM_Runtime_Linker.cpp
689- Module.cpp
690- WasmExecutor.cpp
691- )
692-
693697target_compile_features (Halide_LLVM_srcs PRIVATE cxx_std_17 )
694698set_target_properties (Halide_LLVM_srcs PROPERTIES POSITION_INDEPENDENT_CODE ON )
695699
696700# Mirror compile flags from the main Halide target.
697- target_include_directories (Halide_LLVM_srcs PRIVATE
698- "$<TARGET_PROPERTY :Halide ,INCLUDE_DIRECTORIES >"
699- )
700- target_compile_definitions (Halide_LLVM_srcs PRIVATE
701+ target_compile_definitions (
702+ Halide_LLVM_srcs PRIVATE
701703 "$<TARGET_PROPERTY :Halide ,COMPILE_DEFINITIONS >"
702704 "$<$<STREQUAL :$<TARGET_PROPERTY :Halide ,TYPE >,SHARED_LIBRARY >:Halide_EXPORTS >"
703705)
704- target_compile_options (Halide_LLVM_srcs PRIVATE
706+ target_compile_options (
707+ Halide_LLVM_srcs PRIVATE
705708 "$<TARGET_PROPERTY :Halide ,COMPILE_OPTIONS >"
706709)
707710
@@ -716,7 +719,7 @@ if (NOT MSVC)
716719 target_precompile_headers (Halide_LLVM_srcs PRIVATE Halide_llvm_pch.h )
717720endif ()
718721
719- target_sources (Halide PRIVATE $< TARGET_OBJECTS : Halide_LLVM_srcs > )
722+ target_link_libraries (Halide PRIVATE Halide_LLVM_srcs )
720723
721724##
722725# Add autoschedulers to the build.
0 commit comments