* Set the NOMINMAX macro for msbuild targets
* Set the NOMINMAX macro for CMake based builds.
* Get rid of #ifdefs and #undefs for min and max
* Use <PreprocessorDefinitions> to add the NOMINMAX macro, rather than <AdditionalOptions>
* Missed one <AdditionalOptions> blob.
Co-authored-by: Max Golovanov <maxgolov@microsoft.com>
* Enable Warning as Error on GCC and Clang builds for symmetry with Windows.
* Fix -Wreorder issues in HttpClient_Curl.hpp
* Default assign variables using in-class initializer per CppStandardGuidelines C.48
* Disable -Wtype-limits on clang in parity with MSVC
* Handle GCC separately from Clang for manipulating the warning state.
* Undo a clang-format change.
* Exec is used on non-Apple platforms, however this means that the method fires -Wunused-function on Apple platforms. Locally supress that warning.
* Suppress missing field initializer warning around tm, as I'm not 100% what the most correct fix is here.
* Avoid multi-line comment continuation in -Wcomment
* GCC throws -Wunknown-pragmas on #pragma clang, surround invocations with #ifdef __clang__
* Remove unused local variable, as it's not necessary for the test.
* Suppress -Wobjc-missing-super warnings in third_party code.
* Fix a -Wformat-security warning by treating the message string as an argument.
* Fix error: comparison between ‘const enum Microsoft::Applications::Events::EventProperty::<unnamed>’ and ‘const enum evt_prop_t’ [-Werror=enum-compare]
* Rather than %@, use %s for c-style strings.
* The two types here aren't safely default comparable, cast to underlying types.
* Rather than raising an exception directly, call ODWLogger raiseException
* Wrap #pragma warning with _MSC_VER ifdefs.
* No need for an NSString when NSException prefers a string literal.
* Fix -Wreorder issues in HttpResponseDecoderTests
* Fix error: 'ShadowBondSplicer::addRecord' hides overloaded virtual function [-Werror,-Woverloaded-virtual] by renaming the helper to addCsRecord
* Fix unused local variable warnings by removing the unused locals.
* Fix error: local variable 'output' will be copied despite being returned by name [-Werror,-Wreturn-std-move]. Note that this won't be necessary with guaranteed NVRO in C++17, yay!
* Remove unused locals in MetaStatsTests::GenerateStartEvent
* Fix -Wswitch error on non-Android.
* Fix error: comparison between signed and unsigned integer expressions [-Werror=sign-compare] in OfflineStorageTests_Room.cpp
* More unsigned-signed comparison warning fixes.
* howMany is used in a lambda capture, but clang thinks it isn't used. Odd.
* The unused-lambda-capture warning appears to be a Clang9 bug, don't disable this warning for GCC
* More signed-unsigned comparison fixes.
* Fix signed-unsigned comparison warning in TransmissionPolicyManagerTests. Used long long since that's the return type of std::chrono::duration::milliseconds::count()
* Don't need the long long, default int is fine.
* Fix -wsign-compare in TransmitProfilesTests.cpp
* Missed assigning isAborted to false, std::atomic<T> will zero init its details, but not the T (until C++20).
* Fix -Wdeprecated-copy by defining the copy and move constructors for the Variant type.
* Add copy and move c'tors and assignment operators to the GUID_t type.
* Add copy and move constructors and assignment operators on time_ticks_t
* Fix -Wformat-truncation on GCC 9.3.0 in Pal.cpp by suppressing the warning on this line. This appears to be a false positive.
* INSTANTIATE_TEST_CASE_P is deprecated, using INSTANTIATE_TEST_SUITE_P
* Clang also defines __GNUC__, so since this warning is a GCC only issue suppress the warning when !defined __clang__
* Missed closing #endif in PAL.cpp
* Some versions of GTest deprecate INSTANTIATE_TEST_CASE_P and others do not, the 1DS SDK should unify on a single version of GTest that's part of the repo, or via a package manager. That's not going to be part of this changelist, so simply suppress this warning.
Co-authored-by: Max Golovanov <maxgolov@microsoft.com>
Context:
As part of Apple Silicon release, latest XCode version allows to run iOS arm64 simulators. This change allows build-ios.sh build script to generate 1DS SDK static library than can be used to link into products targeting iOS arm simulator.
* Enable ARC for Apple builds
Make sysinfo_utils_apple ARC-compliant and set the appropriate compiler flags in CMakeLists.txt when building Apple.
* Update sysinfo_utils_apple.mm
* Change HttpClient_iOS to HttpClient_Apple and use on Mac
* Update modules
* Fix merge issue
* Seaparate iOS network information impl
* Properly scope Mac NetworkInformationImpl in CmakeLists.txt
* Create a BUILD_APPLE_HTTP build option
* Wrap BUILD_APPLE_HTTP option in a platform check
Adds a build-ios.sh that is basically a watered down version of build.sh and threads iOS build logic through various CMakeLists.txt files. Also includes a preliminary dummy HttpClient_iOS.mm.
Initial implementation of the build system that uses docker for various Linux distros.
More distros can be added by implementing a corresponding docker file under /docker/ dir.
We can reuse this approach for "Windows Core" builds and qemu-arm(32|64) builds as well.
Going forward the same approach can be used for Android builds: no need to setup the tools
locally, container would deploy all the tools needed for a build script to run to completion.
Docker-based build script infra is going to be hosted on MS Azure VSO / OneBranch (CDPx).
Related work items: #1035556
there are debug-only stubs and other NULL-object pattern implementations, where having a param name helps
to navigate thru code better. The parameter in this case is not unused or forgotten, but intentionally not used.
Reducing / disabling non-essential features and setting various build flags to optimize for small size.
x5 times size reduction.
Functional changes to common core SDK:
* Had to rename IStorage to IDataStorage, as IStorage is a macro defined in Windows SDK.
* Had to refactor user analytics feature storage (SDK UUID / install id) to utilize plain text file rather than FIFO ..
FIFO storage is a legacy structure, bloatware, had to be deprecated and removed going forward anyways.
It wasn't even present in v1 Aria SDK, but somehow slipped thru into v3..
Features excluded from lightweight SDK:
* JSON
* ZLIB
* ECS client
* SQLite DB (only ram queue, no offline storage)
* Transmit Profiles
Related work items: #1550785
What's done:
* Cleaned-up all clang compiler warnings during library build
* PAL Device ID GUID
* PAL appId
Further TODO:
* BVT for Mac
* Verify all header-only APIs for warnings
* Guidance on custom HTTP provider - Edge team should handle this
* Possibly use our own sqlite3 instead of OS, as very old OS X dyn sqlite3 might be too old
Related work items: #1470816