@@ -353,8 +353,7 @@ add_custom_command(OUTPUT "${Halide_BINARY_DIR}/include/Halide.h"
353
353
DEPENDS build_halide_h "${LICENSE_PATH} " ${HEADER_FILES}
354
354
WORKING_DIRECTORY "${CMAKE_CURRENT_LIST_DIR} "
355
355
VERBATIM )
356
- add_custom_target (HalideIncludes ALL
357
- DEPENDS "${Halide_BINARY_DIR} /include/Halide.h" )
356
+ add_custom_target (HalideIncludes ALL DEPENDS "${Halide_BINARY_DIR} /include/Halide.h" )
358
357
359
358
##
360
359
# Define the Halide library target.
@@ -369,10 +368,8 @@ add_library(Halide::Halide ALIAS Halide)
369
368
370
369
target_link_libraries (Halide PRIVATE Halide::LLVM)
371
370
target_link_libraries (Halide PUBLIC Halide::LanguageOptions)
372
- target_compile_definitions (Halide
373
- PRIVATE
374
- $<$<STREQUAL :$<TARGET_PROPERTY:TYPE >,STATIC_LIBRARY>:Halide_STATIC_DEFINE>
375
- $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:WITH_INTROSPECTION>)
371
+ target_compile_definitions (Halide PRIVATE $<$<STREQUAL :$<TARGET_PROPERTY:TYPE >,STATIC_LIBRARY>:Halide_STATIC_DEFINE>)
372
+ target_compile_features (Halide PUBLIC cxx_std_11)
376
373
377
374
include (TargetExportScript)
378
375
## TODO: implement something similar for Windows/link.exe
@@ -386,57 +383,94 @@ set_target_properties(Halide PROPERTIES
386
383
VERSION ${Halide_VERSION}
387
384
SOVERSION ${Halide_VERSION_MAJOR} )
388
385
386
+ target_include_directories (Halide INTERFACE "$<BUILD_INTERFACE:${Halide_BINARY_DIR} /include>" )
389
387
add_dependencies (Halide HalideIncludes)
390
388
389
+ option (Halide_WITH_INTROSPECTION "Enable use of debugging symbols for default Func, Var, etc. names" ON )
390
+ if (Halide_WITH_INTROSPECTION)
391
+ target_compile_definitions (Halide PRIVATE WITH_INTROSPECTION)
392
+ endif ()
393
+
391
394
if (TARGET wabt-obj)
392
395
target_link_libraries (Halide PRIVATE wabt-obj)
393
396
target_compile_definitions (Halide PRIVATE WITH_WABT)
394
397
endif ()
395
398
396
- ##
397
- # Include paths for libHalide
398
- ##
399
-
400
- set (Halide_INCLUDE_PATH "$<BUILD_INTERFACE:${Halide_BINARY_DIR} /include>" )
401
- target_include_directories (Halide INTERFACE ${Halide_INCLUDE_PATH} )
402
-
403
399
##
404
400
# Set compiler options for libHalide
405
401
##
406
402
407
- target_compile_options (Halide
408
- PRIVATE
409
- $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wall>
410
- $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wno-unused-function >
411
- $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wcast-qual>
412
- $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wignored-qualifiers>
403
+ target_compile_options (
404
+ Halide
405
+ PRIVATE
406
+ $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wall >
407
+ $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wcast-qual>
408
+ $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wignored-qualifiers>
413
409
414
- $<$<COMPILE_LANG_AND_ID:CXX,GNU,Clang,AppleClang>:-Woverloaded-virtual>
415
- $<$<COMPILE_LANG_AND_ID:CXX,GNU>:-Wsuggest-override>
416
- $<$<COMPILE_LANG_AND_ID:CXX,Clang,AppleClang>:-Winconsistent-missing-override>
417
- $<$<COMPILE_LANG_AND_ID:CXX,Clang,AppleClang>:-Winconsistent-missing-destructor-override>
410
+ $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wno-c++98-compat-pedantic>
411
+ $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wno-c++98-compat>
412
+ $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wno-cast-align>
413
+ $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wno-comma>
414
+ $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wno-covered-switch-default>
415
+ $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wno-deprecated-declarations>
416
+ $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wno-documentation-unknown-command >
417
+ $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wno-documentation>
418
+ $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wno-double-promotion>
419
+ $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wno-exit-time-destructors>
420
+ $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wno-float-conversion>
421
+ $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wno-float-equal >
422
+ $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wno-global -constructors>
423
+ $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wno-implicit-float-conversion>
424
+ $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wno-implicit-int-conversion>
425
+ $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wno-implicit-int-float-conversion>
426
+ $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wno-missing-field-initializers>
427
+ $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wno-missing-prototypes>
428
+ $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wno-nonportable-system -include -path >
429
+ $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wno-old-style-cast>
430
+ $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wno-reserved-id-macro> # can't have an underscore followed by a capital letter
431
+ $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wno-return-std-move-in-c++11>
432
+ $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wno-shadow-field-in-constructor>
433
+ $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wno-shadow-field>
434
+ $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wno-shadow>
435
+ $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wno-shorten-64-to-32>
436
+ $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wno-sign-conversion>
437
+ $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wno-switch-enum>
438
+ $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wno-undef>
439
+ $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wno-undefined-func-template>
440
+ $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wno-unused-function>
441
+ $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wno-unused-macros >
442
+ $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wno-unused-member-function>
443
+ $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wno-unused-parameter>
444
+ $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wno-unused-template>
418
445
419
- $<$<CXX_COMPILER_ID:MSVC >:/W3>
420
- $<$<CXX_COMPILER_ID:MSVC >:/wd4018> # disable "signed/unsigned mismatch"
421
- $<$<CXX_COMPILER_ID:MSVC >:/wd4503> # disable "decorated name length exceeded, name was truncated"
422
- $<$<CXX_COMPILER_ID:MSVC >:/wd4267> # disable "conversion from 'size_t' to 'int', possible loss of data"
423
- $<$<CXX_COMPILER_ID:MSVC >:/wd4800> # forcing value to bool 'true' or 'false' (performance warning)
424
- $<$<CXX_COMPILER_ID:MSVC >:/wd4244> # 4244: conversion, possible loss of data
425
- $<$<CXX_COMPILER_ID:MSVC >:/wd4267> # 4267: conversion, possible loss of data
426
- $<$<CXX_COMPILER_ID:MSVC >:/wd4800> # 4800: BOOL -> true or false
427
- $<$<CXX_COMPILER_ID:MSVC >:/wd4996> # 4996: compiler encountered deprecated declaration
446
+ $<$<COMPILE_LANG_AND_ID:CXX,GNU,Clang,AppleClang>:-Woverloaded-virtual>
447
+ $<$<COMPILE_LANG_AND_ID:CXX,GNU>:-Wsuggest-override>
448
+ $<$<COMPILE_LANG_AND_ID:CXX,Clang,AppleClang>:-Winconsistent-missing-override>
449
+ $<$<COMPILE_LANG_AND_ID:CXX,Clang,AppleClang>:-Winconsistent-missing-destructor-override>
428
450
429
- # Injected from recent LLVM:
430
- $<$<CXX_COMPILER_ID:MSVC >:/wd4141> # 'inline' used more than once
431
- $<$<CXX_COMPILER_ID:MSVC >:/wd4146> # unary minus applied to unsigned type
432
- $<$<CXX_COMPILER_ID:MSVC >:/wd4291> # No matching operator delete found
451
+ $<$<CXX_COMPILER_ID:MSVC >:/W3>
452
+ $<$<CXX_COMPILER_ID:MSVC >:/wd4018> # disable "signed/unsigned mismatch"
453
+ $<$<CXX_COMPILER_ID:MSVC >:/wd4503> # disable "decorated name length exceeded, name was truncated"
454
+ $<$<CXX_COMPILER_ID:MSVC >:/wd4267> # disable "conversion from 'size_t' to 'int', possible loss of data"
455
+ $<$<CXX_COMPILER_ID:MSVC >:/wd4800> # forcing value to bool 'true' or 'false' (performance warning)
456
+ $<$<CXX_COMPILER_ID:MSVC >:/wd4244> # 4244: conversion, possible loss of data
457
+ $<$<CXX_COMPILER_ID:MSVC >:/wd4267> # 4267: conversion, possible loss of data
458
+ $<$<CXX_COMPILER_ID:MSVC >:/wd4800> # 4800: BOOL -> true or false
459
+ $<$<CXX_COMPILER_ID:MSVC >:/wd4996> # 4996: compiler encountered deprecated declaration
433
460
434
- # We could expose the /MP flag to all targets, but that might end up saturating the build
435
- # since multiple MSBuild projects might get built in parallel, each of which compiling their
436
- # source files in parallel; the Halide library itself is a "knot" point of the build graph,
437
- # so compiling its files in parallel should not oversubscribe the system
438
- $<$<CXX_COMPILER_ID:MSVC >:/MP>
439
- )
461
+ # Injected from recent LLVM:
462
+ $<$<CXX_COMPILER_ID:MSVC >:/wd4141> # 'inline' used more than once
463
+ $<$<CXX_COMPILER_ID:MSVC >:/wd4146> # unary minus applied to unsigned type
464
+ $<$<CXX_COMPILER_ID:MSVC >:/wd4291> # No matching operator delete found
465
+ )
466
+
467
+ if (CMAKE_GENERATOR MATCHES "Visual Studio" )
468
+ # We could expose the /MP flag to all targets, but that might end up saturating the build
469
+ # since multiple MSBuild projects might get built in parallel, each of which compiling their
470
+ # source files in parallel; the Halide library itself is a "knot" point of the build graph,
471
+ # so compiling its files in parallel should not oversubscribe the system
472
+ target_compile_options (Halide PRIVATE $<$<CXX_COMPILER_ID:MSVC >:/MP>)
473
+ endif ()
440
474
441
475
target_compile_definitions (Halide
442
476
PRIVATE
0 commit comments