@@ -399,115 +399,6 @@ set(COMMON_INCLUDE_DIRS
399
399
$< TARGET_PROPERTY:jpeg-static,BINARY_DIR> #for dynamically generated jconfig.h
400
400
)
401
401
402
- # TODO: Change all MACROS into FUNCTIONS (if possible, need to clarify variable scoping rules)
403
- macro (nbl_target_link_zlib _trgt )
404
- add_dependencies (zlibstatic zlib_copy )
405
- add_dependencies (${_trgt} zlibstatic )
406
- target_link_libraries (${_trgt} INTERFACE zlibstatic )
407
-
408
- target_link_libraries (${_trgt} INTERFACE
409
- $< $< CONFIG:Debug> :${ZLIB_LIBRARY_DEBUG} >
410
- $< $< CONFIG:Release> :${ZLIB_LIBRARY_RELEASE} >
411
- $< $< CONFIG:RelWithDebInfo> :${ZLIB_LIBRARY_RELWITHDEBINFO} >
412
- )
413
-
414
- target_include_directories (${_trgt} PUBLIC $< TARGET_PROPERTY:zlibstatic,BINARY_DIR> /copy_source )
415
- endmacro ()
416
-
417
- # PSTL
418
- macro (nbl_target_link_oneDPL _trgt )
419
- add_dependencies (${_trgt} oneDPL )
420
- target_include_directories (${_trgt} PUBLIC ${ONETBB_INSTALL_DIR} /include )
421
- target_include_directories (${_trgt} PUBLIC ${ONEDPL_INSTALL_DIR} /include )
422
-
423
- target_link_libraries (${_trgt} INTERFACE
424
- tbb tbbmalloc tbbmalloc_proxy
425
- )
426
- endmacro ()
427
-
428
- #Parallel hashmap
429
- macro (nbl_target_include_parallel_hashmap _trgt )
430
- target_include_directories (${_trgt} PUBLIC ${THIRD_PARTY_SOURCE_DIR} /parallel-hashmap/parallel_hashmap )
431
- endmacro ()
432
-
433
- macro (nbl_target_link_openssl _trgt )
434
- if (ANDROID AND NOT "${CMAKE_HOST_SYSTEM_NAME} " STREQUAL "Windows" ) # OpenSSL can't be built for Android platform using windows OS host
435
- target_link_libraries (${_trgt} INTERFACE
436
- "$<TARGET_PROPERTY:OpenSSL,INTERFACE_LINK_LIBRARIES>"
437
- )
438
-
439
- target_include_directories (${_trgt} PUBLIC "$<TARGET_PROPERTY:OpenSSL,BINARY_DIR>/build/include" )
440
- endif ()
441
- endmacro ()
442
- macro (nbl_target_link_shaderc _trgt )
443
- add_dependencies (${_trgt} shaderc )
444
- target_link_libraries (${_trgt} INTERFACE
445
- shaderc
446
- )
447
- target_include_directories (${_trgt} PUBLIC ${THIRD_PARTY_SOURCE_DIR} /shaderc/libshaderc/include )
448
- endmacro ()
449
- macro (nbl_target_link_libjpeg_turbo _trgt )
450
- add_dependencies (${_trgt} jpeg-static )
451
- target_link_libraries (${_trgt} INTERFACE
452
- jpeg-static
453
- )
454
- target_include_directories (${_trgt} PUBLIC ${THIRD_PARTY_SOURCE_DIR} /libjpeg-turbo )
455
- endmacro ()
456
- macro (nbl_target_link_libpng _trgt )
457
- add_dependencies (${_trgt} png_static )
458
- target_link_libraries (${_trgt} INTERFACE
459
- png_static
460
- )
461
- target_include_directories (${_trgt} PUBLIC ${THIRD_PARTY_SOURCE_DIR} /libpng )
462
- endmacro ()
463
- macro (nbl_target_link_openexr _trgt )
464
- add_dependencies (${_trgt} OpenEXR::IlmImf )
465
- target_link_libraries (${_trgt} INTERFACE
466
- OpenEXR::IlmImf
467
- )
468
- target_include_directories (${_trgt} PUBLIC ${THIRD_PARTY_SOURCE_DIR} /openexr/OpenEXR/IlmImf
469
- ${_trgt} PUBLIC ${THIRD_PARTY_SOURCE_DIR} /openexr/IlmBase/Half
470
- ${_trgt} PUBLIC ${THIRD_PARTY_SOURCE_DIR} /openexr/IlmBase/Iex
471
- ${_trgt} PUBLIC ${THIRD_PARTY_SOURCE_DIR} /openexr/IlmBase/IexMath
472
- ${_trgt} PUBLIC ${THIRD_PARTY_SOURCE_DIR} /openexr/IlmBase/Imath
473
- ${_trgt} PUBLIC ${THIRD_PARTY_SOURCE_DIR} /openexr/IlmBase/IlmThread
474
- )
475
- endmacro ()
476
- macro (nbl_target_link_gli _trgt )
477
- add_dependencies (${_trgt} gli )
478
- target_link_libraries (${_trgt} INTERFACE
479
- gli
480
- )
481
- target_include_directories (${_trgt} PUBLIC ${THIRD_PARTY_SOURCE_DIR} /gli )
482
- endmacro ()
483
- macro (nbl_target_link_spirv_tools _trgt )
484
- add_dependencies (${_trgt} SPIRV )
485
- add_dependencies (${_trgt} SPIRV-Tools )
486
- add_dependencies (${_trgt} SPIRV-Tools-opt )
487
- target_link_libraries (${_trgt} INTERFACE
488
- SPIRV SPIRV-Tools SPIRV-Tools-opt
489
- )
490
- target_include_directories (${_trgt} PUBLIC BEFORE
491
- ${THIRD_PARTY_SOURCE_DIR} /SPIRV-Tools/include
492
- )
493
- endmacro ()
494
- macro (nbl_target_link_volk _trgt )
495
- target_link_libraries (${_trgt} PUBLIC volk )
496
- endmacro ()
497
- macro (nbl_target_link_EGL _trgt )
498
- target_link_libraries (${_trgt} PRIVATE egl )
499
- endmacro ()
500
-
501
- # simdjson
502
- macro (nbl_target_link_simdjson _trgt )
503
- add_dependencies (${_trgt} simdjson )
504
- target_link_libraries (${_trgt} INTERFACE
505
- simdjson
506
- )
507
- target_include_directories (${_trgt} PUBLIC ${THIRD_PARTY_SOURCE_DIR} /simdjson )
508
- set_target_properties (simdjson PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>" )
509
- endmacro ()
510
-
511
402
# just gather all the header files and later put them into project so it's easy to search for things using IDE
512
403
file (GLOB_RECURSE NABLA_HEADERS_PRIV1 "*.h" )
513
404
file (GLOB_RECURSE NABLA_HEADERS_PRIV2 "${NBL_ROOT_PATH} /src/nbl/*.h" )
@@ -549,44 +440,113 @@ if (ANDROID)
549
440
)
550
441
endif ()
551
442
552
- #TODO maybe make a macro to do this (note: it's also used in common.cmake)
443
+ #TODO maybe make a macro/function to do this (note: it's also used in common.cmake)
553
444
set_property (TARGET Nabla PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>" )
554
445
446
+
447
+ ## Set up 3rdparty deps
448
+ # Parallel Hashmap
449
+ target_include_directories (Nabla PUBLIC ${THIRD_PARTY_SOURCE_DIR} /parallel-hashmap/parallel_hashmap )
450
+ # oneDPL for clang C++17 parallelism
451
+ if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" )
452
+ add_dependencies (Nabla oneDPL )
453
+ target_include_directories (Nabla PUBLIC ${ONETBB_INSTALL_DIR} /include )
454
+ target_include_directories (Nabla PUBLIC ${ONEDPL_INSTALL_DIR} /include )
455
+ target_link_libraries (Nabla INTERFACE tbb tbbmalloc tbbmalloc_proxy )
456
+ endif ()
457
+
458
+ if (UNIX )
459
+ target_link_libraries (Nabla INTERFACE
460
+ ${CMAKE_THREAD_LIBS_INIT}
461
+ ${CMAKE_DL_LIBS}
462
+ )
463
+ endif ()
464
+ # OpenSSL
555
465
if (ANDROID AND NOT "${CMAKE_HOST_SYSTEM_NAME} " STREQUAL "Windows" ) # OpenSSL can't be built for Android platform using windows OS host
556
466
add_dependencies (Nabla openssl_build )
467
+ target_link_libraries (Nabla INTERFACE "$<TARGET_PROPERTY:OpenSSL,INTERFACE_LINK_LIBRARIES>" )
468
+ target_include_directories (Nabla PUBLIC "$<TARGET_PROPERTY:OpenSSL,BINARY_DIR>/build/include" )
557
469
endif ()
558
- target_include_directories (Nabla PUBLIC "${THIRD_PARTY_SOURCE_DIR} /Vulkan-Headers/include" )
559
- nbl_target_link_openssl (Nabla )
560
- nbl_target_link_zlib (Nabla )
561
- nbl_target_link_shaderc (Nabla )
562
- nbl_target_link_libjpeg_turbo (Nabla )
563
- nbl_target_link_libpng (Nabla )
470
+ # zlib
471
+ add_dependencies (zlibstatic zlib_copy )
472
+ add_dependencies (Nabla zlibstatic )
473
+ target_link_libraries (Nabla INTERFACE zlibstatic )
474
+ target_link_libraries (Nabla INTERFACE
475
+ $< $< CONFIG:Debug> :${ZLIB_LIBRARY_DEBUG} >
476
+ $< $< CONFIG:Release> :${ZLIB_LIBRARY_RELEASE} >
477
+ $< $< CONFIG:RelWithDebInfo> :${ZLIB_LIBRARY_RELWITHDEBINFO} >
478
+ )
479
+ target_include_directories (Nabla PUBLIC $< TARGET_PROPERTY:zlibstatic,BINARY_DIR> /copy_source )
480
+
481
+ # shaderc
482
+ add_dependencies (Nabla shaderc )
483
+ target_link_libraries (Nabla INTERFACE shaderc )
484
+ target_include_directories (Nabla PUBLIC ${THIRD_PARTY_SOURCE_DIR} /shaderc/libshaderc/include )
485
+ # spirv tools
486
+ add_dependencies (Nabla SPIRV )
487
+ add_dependencies (Nabla SPIRV-Tools )
488
+ add_dependencies (Nabla SPIRV-Tools-opt )
489
+ target_link_libraries (Nabla INTERFACE SPIRV SPIRV-Tools SPIRV-Tools-opt )
490
+ target_include_directories (Nabla PUBLIC BEFORE ${THIRD_PARTY_SOURCE_DIR} /SPIRV-Tools/include )
491
+ # simdjson
492
+ add_dependencies (Nabla simdjson )
493
+ target_link_libraries (Nabla INTERFACE simdjson )
494
+ target_include_directories (Nabla PUBLIC ${THIRD_PARTY_SOURCE_DIR} /simdjson )
495
+ set_target_properties (simdjson PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>" )
496
+ # libjpeg
497
+ add_dependencies (Nabla jpeg-static )
498
+ target_link_libraries (Nabla INTERFACE jpeg-static )
499
+ target_include_directories (Nabla PUBLIC ${THIRD_PARTY_SOURCE_DIR} /libjpeg-turbo )
500
+ # libpng
501
+ add_dependencies (Nabla png_static )
502
+ target_link_libraries (Nabla INTERFACE png_static )
503
+ target_include_directories (Nabla PUBLIC ${THIRD_PARTY_SOURCE_DIR} /libpng )
504
+ # OpenEXR
564
505
if (_NBL_COMPILE_WITH_OPEN_EXR_ )
565
- nbl_target_link_openexr (Nabla )
506
+ add_dependencies (Nabla OpenEXR::IlmImf )
507
+ target_link_libraries (Nabla INTERFACE OpenEXR::IlmImf )
508
+ target_include_directories (
509
+ Nabla PUBLIC ${THIRD_PARTY_SOURCE_DIR} /openexr/OpenEXR/IlmImf
510
+ Nabla PUBLIC ${THIRD_PARTY_SOURCE_DIR} /openexr/IlmBase/Half
511
+ Nabla PUBLIC ${THIRD_PARTY_SOURCE_DIR} /openexr/IlmBase/Iex
512
+ Nabla PUBLIC ${THIRD_PARTY_SOURCE_DIR} /openexr/IlmBase/IexMath
513
+ Nabla PUBLIC ${THIRD_PARTY_SOURCE_DIR} /openexr/IlmBase/Imath
514
+ Nabla PUBLIC ${THIRD_PARTY_SOURCE_DIR} /openexr/IlmBase/IlmThread
515
+ )
566
516
endif ()
567
517
if (_NBL_COMPILE_WITH_GLI_ )
568
- nbl_target_link_gli (Nabla )
569
- endif ()
570
- nbl_target_include_parallel_hashmap (Nabla )
571
- nbl_target_link_spirv_tools (Nabla )
572
- nbl_target_link_volk (Nabla )
573
- nbl_target_link_EGL (Nabla )
574
- nbl_target_link_simdjson (Nabla )
575
- if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" )
576
- nbl_target_link_oneDPL (Nabla )
518
+ add_dependencies (Nabla gli )
519
+ target_link_libraries (Nabla INTERFACE gli )
520
+ target_include_directories (Nabla PUBLIC ${THIRD_PARTY_SOURCE_DIR} /gli )
577
521
endif ()
578
522
579
- #target_link_libraries(Nabla INTERFACE ${OPENGL_gl_LIBRARY})
580
- if (UNIX )
581
- target_link_libraries (Nabla INTERFACE
582
- ${CMAKE_THREAD_LIBS_INIT}
583
- ${CMAKE_DL_LIBS}
523
+ # Linux Display Systems
524
+ if (UNIX AND NOT ANDROID AND NOT APPLE )
525
+ target_include_directories (Nabla PUBLIC
526
+ ${X11_INCLUDE_DIR}
527
+ X11_Xrandr_INCLUDE_PATH
528
+ ${X11_xf86vmode_INCLUDE_PATH}
584
529
)
585
- if (NOT ANDROID )
586
- target_link_libraries (Nabla INTERFACE $< $< CONFIG:DEBUG> :-lunwind> )
587
- endif ()
588
530
endif ()
589
531
532
+ # Vulkan
533
+ target_include_directories (Nabla PUBLIC "${THIRD_PARTY_SOURCE_DIR} /Vulkan-Headers/include" )
534
+ target_link_libraries (Nabla PUBLIC volk )
535
+ if (WIN32 )
536
+ target_compile_definitions (Nabla PRIVATE VK_USE_PLATFORM_WIN32_KHR )
537
+ endif ()
538
+ # CUDA
539
+ if (NBL_COMPILE_WITH_CUDA )
540
+ target_include_directories (Nabla PUBLIC ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES} )
541
+ endif ()
542
+ # OpenGL (EGL)
543
+ target_link_libraries (Nabla PRIVATE egl )
544
+ if (ANDROID )
545
+ target_compile_definitions (Nabla PUBLIC $< $< BOOL:${OpenGL_EGL_FOUND} > :WL_EGL_PLATFORM> )
546
+ endif ()
547
+
548
+
549
+ # Include dirs for self
590
550
target_include_directories (Nabla PUBLIC
591
551
${CMAKE_CURRENT_BINARY_DIR} /include
592
552
${NBL_ROOT_PATH} /include
@@ -602,31 +562,14 @@ target_include_directories(Nabla PUBLIC
602
562
603
563
target_include_directories (Nabla PUBLIC ${NBL_ROOT_PATH} /src ${NBL_ROOT_PATH} /source/Nabla ${NBL_ROOT_PATH} /src/3rdparty ) # this should be PRIVATE, but things from /src (or /source) are sometimes included in things in /include and so examples have to put source dirs into theirs Include Path
604
564
target_include_directories (Nabla PRIVATE ${CMAKE_BINARY_DIR} /include )
605
- if (UNIX AND NOT ANDROID AND NOT APPLE )
606
- target_include_directories (Nabla PUBLIC
607
- ${X11_INCLUDE_DIR}
608
- X11_Xrandr_INCLUDE_PATH
609
- ${X11_xf86vmode_INCLUDE_PATH} )
610
- endif ()
611
565
612
- if (NBL_COMPILE_WITH_CUDA )
613
- target_include_directories (Nabla PUBLIC ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES} )
614
- endif ()
615
566
616
567
target_compile_definitions (Nabla
617
568
PRIVATE _NBL_STATIC_LIB_ EGL_STATIC SPIRV_CROSS_EXCEPTIONS_TO_ASSERTIONS
618
- PUBLIC UNW_LOCAL_ONLY
619
569
INTERFACE _NBL_PCH_IGNORE_PRIVATE_HEADERS
620
570
)
621
571
622
- if (WIN32 )
623
- target_compile_definitions (Nabla PRIVATE VK_USE_PLATFORM_WIN32_KHR )
624
- endif ()
625
-
626
- if (ANDROID )
627
- target_compile_definitions (Nabla PUBLIC $< $< BOOL:${OpenGL_EGL_FOUND} > :WL_EGL_PLATFORM> )
628
- endif ()
629
-
572
+ # generate definitions out to a header
630
573
glue_source_definitions (Nabla _NBL_SOURCE_DEFINITIONS_ )
631
574
set (_NBL_DEFINE_FILE_WRAPPER_ ${CMAKE_CURRENT_BINARY_DIR} /include/define.h )
632
575
@@ -643,7 +586,8 @@ add_custom_command(
643
586
add_custom_target (generate_nabla_header DEPENDS "${CMAKE_CURRENT_BINARY_DIR} /include/nabla.h" )
644
587
add_dependencies (Nabla generate_nabla_header )
645
588
646
- if (MSVC ) #on MSVC it won't compile without this option!
589
+ #on MSVC it won't compile without this option!
590
+ if (MSVC )
647
591
target_compile_options (Nabla PUBLIC /bigobj )
648
592
endif ()
649
593
@@ -667,17 +611,18 @@ nbl_install_headers("${CMAKE_CURRENT_BINARY_DIR}/include/nabla.h" "${CMAKE_CURRE
667
611
nbl_install_headers ("${NABLA_HEADERS_PUBLIC} " "${NBL_ROOT_PATH} /include" )
668
612
nbl_install_config_header (BuildConfigOptions.h )
669
613
614
+ # TODO: @AnastazIuk change macros to functions! https://github.com/buildaworldnet/IrrlichtBAW/issues/311
670
615
macro (nbl_install_program _TRGT )
671
616
install (PROGRAMS $< TARGET_FILE:${_TRGT} > DESTINATION lib CONFIGURATIONS Release )
672
617
install (PROGRAMS $< TARGET_FILE:${_TRGT} > DESTINATION debug/lib CONFIGURATIONS Debug )
673
618
install (PROGRAMS $< TARGET_FILE:${_TRGT} > DESTINATION relwithdebinfo/lib CONFIGURATIONS RelWithDebInfo )
674
619
endmacro ()
675
-
676
620
macro (nbl_install_lib _TRGT )
677
621
install (TARGETS ${_TRGT} ARCHIVE DESTINATION lib CONFIGURATIONS Release )
678
622
install (TARGETS ${_TRGT} ARCHIVE DESTINATION debug/lib CONFIGURATIONS Debug )
679
623
install (TARGETS ${_TRGT} ARCHIVE DESTINATION relwithdebinfo/lib CONFIGURATIONS RelWithDebInfo )
680
624
endmacro ()
625
+
681
626
# Install main lib
682
627
set_target_properties (Nabla PROPERTIES DEBUG_POSTFIX _debug )
683
628
set_target_properties (Nabla PROPERTIES RELWITHDEBINFO_POSTFIX _relwithdebinfo )
0 commit comments