From a770afdd3196e242b4938dfb2cbec3b5666593b2 Mon Sep 17 00:00:00 2001 From: Victor Cebollada Date: Fri, 17 Jan 2020 07:36:58 +0000 Subject: [PATCH] MS Windows - Fix compile errors when debug is enabled. * Builds with VCPKG Change-Id: I209c6e4d4ec470595dc75d60965cd3ca76ecc394 Signed-off-by: Victor Cebollada --- README.md | 11 ++++ build/tizen/CMakeLists.txt | 5 ++ dali/integration-api/core-enumerations.h | 3 + dali/integration-api/debug.cpp | 13 ++-- dali/integration-api/debug.h | 6 +- dali/integration-api/file.list | 2 +- dali/integration-api/trace.h | 2 +- .../common/{demangler.cpp => demangler-unix.cpp} | 76 ++++++---------------- dali/internal/event/common/demangler-windows.cpp | 49 ++++++++++++++ dali/internal/event/common/demangler.h | 14 +--- dali/internal/event/common/type-registry-impl.cpp | 4 +- dali/internal/file-unix.list | 11 ++++ dali/internal/file-windows.list | 11 ++++ dali/internal/file.list | 2 - dali/public-api/common/dali-common.h | 4 ++ 15 files changed, 127 insertions(+), 86 deletions(-) rename dali/internal/event/common/{demangler.cpp => demangler-unix.cpp} (60%) create mode 100644 dali/internal/event/common/demangler-windows.cpp create mode 100644 dali/internal/file-unix.list create mode 100644 dali/internal/file-windows.list diff --git a/README.md b/README.md index 17972bc..b78598d 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ * [NON-SMACK Targets](#non-smack-targets) * [SMACK enabled Targets](#smack-enabled-targets) * [DEBUG Builds](#debug-builds) + * [3. Building for MS Windows](#3-building-for-ms-windows) # Build Instructions @@ -91,3 +92,13 @@ See the README.md in dali-core/automated-tests. $ gbs build -A [TARGET_ARCH] --define "%enable_debug 1" +## 3. Building for MS Windows + +Third party dependencies are built using vcpkg. Instructions on how to install vcpkg can be found in the +vcpkg-script folder in the windows-dependencies repository. + +- Download the windows-dependencies repository from DaliHub + + $ git clone https://github.com/dalihub/windows-dependencies.git + +- Read the README.md and vcpkg-script/Readme.md files for more instructions on how to install and build the third-party dependencies. \ No newline at end of file diff --git a/build/tizen/CMakeLists.txt b/build/tizen/CMakeLists.txt index b41d996..1fea1cc 100644 --- a/build/tizen/CMakeLists.txt +++ b/build/tizen/CMakeLists.txt @@ -135,6 +135,11 @@ INCLUDE( ${ROOT_SRC_DIR}/dali/internal/file.list ) INCLUDE( ${ROOT_SRC_DIR}/dali/integration-api/file.list ) INCLUDE( ${ROOT_SRC_DIR}/dali/public-api/file.list ) INCLUDE( ${ROOT_SRC_DIR}/dali/devel-api/file.list ) +IF( UNIX ) + INCLUDE( ${ROOT_SRC_DIR}/dali/internal/file-unix.list ) +ELSEIF( WIN32 ) + INCLUDE( ${ROOT_SRC_DIR}/dali/internal/file-windows.list ) +ENDIF() INCLUDE( ${ROOT_SRC_DIR}/doc/file.list ) SET(LIBTYPE SHARED) diff --git a/dali/integration-api/core-enumerations.h b/dali/integration-api/core-enumerations.h index 24299f4..e11dc63 100644 --- a/dali/integration-api/core-enumerations.h +++ b/dali/integration-api/core-enumerations.h @@ -23,6 +23,9 @@ #include #include +#undef FALSE +#undef TRUE + namespace Dali { diff --git a/dali/integration-api/debug.cpp b/dali/integration-api/debug.cpp index b9b5044..84c9cdf 100644 --- a/dali/integration-api/debug.cpp +++ b/dali/integration-api/debug.cpp @@ -61,7 +61,7 @@ namespace Integration namespace Log { -thread_local LogFunction gthreadLocalLogFunction = NULL; +thread_local LogFunction gthreadLocalLogFunction = nullptr; /* Forward declarations */ std::string FormatToString(const char *format, ...); @@ -92,7 +92,7 @@ void InstallLogFunction(const LogFunction& logFunction) void UninstallLogFunction() { - gthreadLocalLogFunction = NULL; + gthreadLocalLogFunction = nullptr; } #ifdef DEBUG_ENABLED @@ -101,11 +101,11 @@ void UninstallLogFunction() Filter* Filter::gRender = Filter::New(Debug::Concise, false, "LOG_RENDER"); Filter* Filter::gResource = Filter::New(Debug::Concise, false, "LOG_RESOURCE"); Filter* Filter::gGLResource = Filter::New(Debug::Concise, false, "LOG_GL_RESOURCE"); -Filter* Filter::gObject = NULL; +Filter* Filter::gObject = nullptr; Filter* Filter::gImage = Filter::New(Debug::Concise, false, "LOG_IMAGE"); Filter* Filter::gModel = Filter::New(Debug::Concise, false, "LOG_MODEL"); -Filter* Filter::gNode = NULL; -Filter* Filter::gElement = NULL; +Filter* Filter::gNode = nullptr; +Filter* Filter::gElement = nullptr; Filter* Filter::gActor = Filter::New(Debug::Concise, false, "LOG_ACTOR"); Filter* Filter::gShader = Filter::New(Debug::Concise, false, "LOG_SHADER"); @@ -179,7 +179,7 @@ void Filter::Log(LogLevel level, const char* format, ...) if( mTraceEnabled ) { - char *buffer = NULL; + char *buffer = nullptr; int numChars = asprintf( &buffer, " %-*c %s", mNesting, ':', format ); if( numChars >= 0 ) // No error { @@ -226,7 +226,6 @@ TraceObj::~TraceObj() #endif // DEBUG_ENABLED - std::string ArgListToString(const char *format, va_list args) { std::string str; // empty string diff --git a/dali/integration-api/debug.h b/dali/integration-api/debug.h index 807c0d0..d1313a8 100755 --- a/dali/integration-api/debug.h +++ b/dali/integration-api/debug.h @@ -142,7 +142,7 @@ DALI_CORE_API void UninstallLogFunction(); /** * Provides unfiltered logging for global warning level messages */ -#define DALI_LOG_WARNING(format, ...) Dali::Integration::Log::LogMessage(Dali::Integration::Log::DebugWarning, "%s " format, __PRETTY_FUNCTION__, ## __VA_ARGS__) +#define DALI_LOG_WARNING(format, ...) Dali::Integration::Log::LogMessage(Dali::Integration::Log::DebugWarning, "%s " format, ASSERT_LOCATION, ## __VA_ARGS__) #else // DEBUG_ENABLED @@ -354,10 +354,10 @@ public: #define DALI_LOG_TRACE_METHOD_FMT(filter, format, ...) \ - Dali::Integration::Log::TraceObj debugTraceObj(filter, "%s: " format, __PRETTY_FUNCTION__, ## __VA_ARGS__) + Dali::Integration::Log::TraceObj debugTraceObj(filter, "%s: " format, ASSERT_LOCATION, ## __VA_ARGS__) #define DALI_LOG_TRACE_METHOD(filter) \ - Dali::Integration::Log::TraceObj debugTraceObj(filter, __PRETTY_FUNCTION__) + Dali::Integration::Log::TraceObj debugTraceObj(filter, ASSERT_LOCATION) #else // DEBUG_ENABLED diff --git a/dali/integration-api/file.list b/dali/integration-api/file.list index e03ced4..a6d44bf 100644 --- a/dali/integration-api/file.list +++ b/dali/integration-api/file.list @@ -1,7 +1,7 @@ # Set the source directory SET( platform_abstraction_src_dir ${ROOT_SRC_DIR}/dali/integration-api ) -# Add platform abstraction headers here +# Add platform abstraction source files here SET( platform_abstraction_src_files ${platform_abstraction_src_dir}/bitmap.cpp ${platform_abstraction_src_dir}/core.cpp diff --git a/dali/integration-api/trace.h b/dali/integration-api/trace.h index c884a71..fe9a3bd 100644 --- a/dali/integration-api/trace.h +++ b/dali/integration-api/trace.h @@ -198,7 +198,7 @@ namespace * Used for function tracing. It logs tracing of the fuction from start to end. */ #define DALI_TRACE_FUNCTION( filter ) \ - Dali::Integration::Trace::Tracer logTraceFunction( filter, __PRETTY_FUNCTION__ ); + Dali::Integration::Trace::Tracer logTraceFunction( filter, ASSERT_LOCATION ); /** * Used for scope tracing. It logs tracing around a scope. diff --git a/dali/internal/event/common/demangler.cpp b/dali/internal/event/common/demangler-unix.cpp similarity index 60% rename from dali/internal/event/common/demangler.cpp rename to dali/internal/event/common/demangler-unix.cpp index 5a2caed..07a63a1 100644 --- a/dali/internal/event/common/demangler.cpp +++ b/dali/internal/event/common/demangler-unix.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * Copyright (c) 2019 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,47 +15,12 @@ * */ -// -// gcc and clang minimal demangling -// Both follow Itanium C++ ABI -// -// We only decode namespaces and class typeid names for simplicity as its all we need. -// -// From http://mentorembedded.github.io/cxx-abi/abi.html#mangling-structure -// -// ::= N [] E -// ::= N [] E -// -// ::= -// ::= -// ::= -// ::= -// ::= # empty -// ::= -// ::= -// -// ::=