Skip to content

Commit c38173a

Browse files
remove as many cmake macros as I could, also fix a few small Android issues
1 parent 164cbf6 commit c38173a

File tree

4 files changed

+107
-160
lines changed

4 files changed

+107
-160
lines changed

include/nbl/nblpack.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,11 @@
99
// in between!
1010

1111
// byte-align structures
12-
#if defined(_MSC_VER) || defined(__GNUC__) || defined (__clang__)
12+
#if defined(_MSC_VER) || defined(__GNUC__) || defined(__clang__)
1313
# ifdef _MSC_VER
1414
# pragma warning(disable: 4103)
15+
# elif defined(__clang__)
16+
# pragma clang diagnostic ignored "-Wpragma-pack"
1517
# endif
1618
# pragma pack( push, packing )
1719
# pragma pack( 1 )

include/nbl/system/CStdoutLoggerAndroid.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33

44
#include "nbl/system/IThreadsafeLogger.h"
55

6-
#ifdef _NBL_PLATFORM_ANDROID_
76
namespace nbl::system
87
{
98

9+
#ifdef _NBL_PLATFORM_ANDROID_
1010
class CStdoutLoggerAndroid : public IThreadsafeLogger
1111
{
1212
public:
@@ -15,8 +15,8 @@ class CStdoutLoggerAndroid : public IThreadsafeLogger
1515
private:
1616
void threadsafeLog_impl(const std::string_view& fmt, E_LOG_LEVEL logLevel, va_list args) override;
1717
};
18+
#endif
1819

1920
}
2021

21-
#endif
2222
#endif

src/nbl/CMakeLists.txt

Lines changed: 99 additions & 154 deletions
Original file line numberDiff line numberDiff line change
@@ -399,115 +399,6 @@ set(COMMON_INCLUDE_DIRS
399399
$<TARGET_PROPERTY:jpeg-static,BINARY_DIR> #for dynamically generated jconfig.h
400400
)
401401

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-
511402
# just gather all the header files and later put them into project so it's easy to search for things using IDE
512403
file(GLOB_RECURSE NABLA_HEADERS_PRIV1 "*.h")
513404
file(GLOB_RECURSE NABLA_HEADERS_PRIV2 "${NBL_ROOT_PATH}/src/nbl/*.h")
@@ -549,44 +440,113 @@ if (ANDROID)
549440
)
550441
endif()
551442

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)
553444
set_property(TARGET Nabla PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
554445

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
555465
if(ANDROID AND NOT "${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows") # OpenSSL can't be built for Android platform using windows OS host
556466
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")
557469
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
564505
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+
)
566516
endif()
567517
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)
577521
endif()
578522

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}
584529
)
585-
if (NOT ANDROID)
586-
target_link_libraries(Nabla INTERFACE $<$<CONFIG:DEBUG>:-lunwind>)
587-
endif()
588530
endif()
589531

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
590550
target_include_directories(Nabla PUBLIC
591551
${CMAKE_CURRENT_BINARY_DIR}/include
592552
${NBL_ROOT_PATH}/include
@@ -602,31 +562,14 @@ target_include_directories(Nabla PUBLIC
602562

603563
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
604564
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()
611565

612-
if (NBL_COMPILE_WITH_CUDA)
613-
target_include_directories(Nabla PUBLIC ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES})
614-
endif()
615566

616567
target_compile_definitions(Nabla
617568
PRIVATE _NBL_STATIC_LIB_ EGL_STATIC SPIRV_CROSS_EXCEPTIONS_TO_ASSERTIONS
618-
PUBLIC UNW_LOCAL_ONLY
619569
INTERFACE _NBL_PCH_IGNORE_PRIVATE_HEADERS
620570
)
621571

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
630573
glue_source_definitions(Nabla _NBL_SOURCE_DEFINITIONS_)
631574
set(_NBL_DEFINE_FILE_WRAPPER_ ${CMAKE_CURRENT_BINARY_DIR}/include/define.h)
632575

@@ -643,7 +586,8 @@ add_custom_command(
643586
add_custom_target(generate_nabla_header DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/include/nabla.h")
644587
add_dependencies(Nabla generate_nabla_header)
645588

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)
647591
target_compile_options(Nabla PUBLIC /bigobj)
648592
endif()
649593

@@ -667,17 +611,18 @@ nbl_install_headers("${CMAKE_CURRENT_BINARY_DIR}/include/nabla.h" "${CMAKE_CURRE
667611
nbl_install_headers("${NABLA_HEADERS_PUBLIC}" "${NBL_ROOT_PATH}/include")
668612
nbl_install_config_header(BuildConfigOptions.h)
669613

614+
# TODO: @AnastazIuk change macros to functions! https://github.com/buildaworldnet/IrrlichtBAW/issues/311
670615
macro(nbl_install_program _TRGT)
671616
install(PROGRAMS $<TARGET_FILE:${_TRGT}> DESTINATION lib CONFIGURATIONS Release)
672617
install(PROGRAMS $<TARGET_FILE:${_TRGT}> DESTINATION debug/lib CONFIGURATIONS Debug)
673618
install(PROGRAMS $<TARGET_FILE:${_TRGT}> DESTINATION relwithdebinfo/lib CONFIGURATIONS RelWithDebInfo)
674619
endmacro()
675-
676620
macro(nbl_install_lib _TRGT)
677621
install(TARGETS ${_TRGT} ARCHIVE DESTINATION lib CONFIGURATIONS Release)
678622
install(TARGETS ${_TRGT} ARCHIVE DESTINATION debug/lib CONFIGURATIONS Debug)
679623
install(TARGETS ${_TRGT} ARCHIVE DESTINATION relwithdebinfo/lib CONFIGURATIONS RelWithDebInfo)
680624
endmacro()
625+
681626
# Install main lib
682627
set_target_properties(Nabla PROPERTIES DEBUG_POSTFIX _debug)
683628
set_target_properties(Nabla PROPERTIES RELWITHDEBINFO_POSTFIX _relwithdebinfo)

src/nbl/system/CStdoutLoggerAndroid.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
#include "nbl/system/CStdoutLoggerAndroid.h"
22

3+
using namespace nbl::system;
4+
35
#ifdef _NBL_PLATFORM_ANDROID_
46
#include <android/log.h>
57

6-
using namespace nbl::system;
7-
8-
void CStdoutLoggerAndroid::threadsafeLog_impl(const std::string_view& fmt, E_LOG_LEVEL logLevel, va_list args) override
8+
void CStdoutLoggerAndroid::threadsafeLog_impl(const std::string_view& fmt, E_LOG_LEVEL logLevel, va_list args)
99
{
1010
auto nativeLogLevel = ANDROID_LOG_UNKNOWN;
1111
switch (logLevel)

0 commit comments

Comments
 (0)