microsoft / mso Goto Github PK
View Code? Open in Web Editor NEWMicrosoft Open C++ Library
License: MIT License
Microsoft Open C++ Library
License: MIT License
Add necessary CMake logic to generate an Android linkable library and unit tests.
Perhaps unsurprising since APEX tooling is so different:
~/Development ❯❯❯ cd Mso
~/D/Mso ❯❯❯ mkdir build
~/D/Mso ❯❯❯ cd build
~/D/M/build ❯❯❯ cmake ..
-- The CXX compiler identification is AppleClang 11.0.3.11030032
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Liblet platform: WIN32
-- Liblet test runner: GTEST
-- Enable testing: ON
-- Enable includes checks: ON
-- The C compiler identification is AppleClang 11.0.3.11030032
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Found PythonInterp: /usr/bin/python (found version "2.7.16")
-- Defining liblet Mso::compilerAdapters
-- Defining liblet Mso::comUtil
-- Defining liblet Mso::cppExtensions
-- Defining liblet Mso::cppType
-- Defining liblet Mso::crash
-- Defining liblet Mso::debugAssertApi
-- Defining liblet Mso::eventWaitHandle
-- Defining liblet Mso::functional
-- Defining liblet Mso::memoryApi
-- Defining liblet Mso::motifCpp
-- Defining liblet Mso::oacr
-- Defining liblet Mso::oacr_posix
-- Defining liblet Mso::object
-- Defining liblet Mso::platformAdapters
-- Defining liblet Mso::platform_posix
-- Defining liblet Mso::smartPtr
-- Defining liblet Mso::tagUtils
All targets: compilerAdapters;comUtil;cppExtensions;cppType;crash;debugAssertApi;eventWaitHandle;functional;memoryApi;motifCpp;oacr;oacr_posix;object;platformAdapters;platform_posix;smartPtr;tagUtils;compilerAdapters_verify_includes;compilerAdapters_verify_includes_custom;compilerAdapters_verify_includes;compilerAdapters_verify_includes_custom;comUtil_verify_includes;comUtil_verify_includes_custom;comUtil_verify_includes;comUtil_verify_includes_custom;cppExtensions_verify_includes;cppExtensions_verify_includes_custom;cppExtensions_verify_includes;cppExtensions_verify_includes_custom;cppType_verify_includes;cppType_verify_includes_custom;cppType_verify_includes;cppType_verify_includes_custom;crash_verify_includes;crash_verify_includes_custom;crash_verify_includes;crash_verify_includes_custom;debugAssertApi_verify_includes;debugAssertApi_verify_includes_custom;debugAssertApi_verify_includes;debugAssertApi_verify_includes_custom;eventWaitHandle_verify_includes;eventWaitHandle_verify_includes_custom;eventWaitHandle_verify_includes;eventWaitHandle_verify_includes_custom;eventWaitHandle_tests;functional_verify_includes;functional_verify_includes_custom;functional_verify_includes;functional_verify_includes_custom;functional_tests;memoryApi_verify_includes;memoryApi_verify_includes_custom;memoryApi_verify_includes;memoryApi_verify_includes_custom;motifCpp_verify_includes;motifCpp_verify_includes_custom;motifCpp_verify_includes;motifCpp_verify_includes_custom;oacr_verify_includes;oacr_verify_includes_custom;oacr_verify_includes;oacr_verify_includes_custom;object_verify_includes;object_verify_includes_custom;object_verify_includes;object_verify_includes_custom;object_tests;platformAdapters_verify_includes;platformAdapters_verify_includes_custom;platformAdapters_verify_includes;platformAdapters_verify_includes_custom;smartPtr_verify_includes;smartPtr_verify_includes_custom;smartPtr_verify_includes;smartPtr_verify_includes_custom;tagUtils_verify_includes;tagUtils_verify_includes_custom;tagUtils_verify_includes;tagUtils_verify_includes_custom;gmock;gmock_main;gmock;gmock_main;gtest;gtest_main;gtest;gtest_main
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/benbader/Development/Mso/build
~/D/M/build ❯❯❯ make
make[1]: Entering directory '/Users/benbader/Development/Mso/build'
make[2]: Entering directory '/Users/benbader/Development/Mso/build'
Scanning dependencies of target gtest
make[2]: Leaving directory '/Users/benbader/Development/Mso/build'
make[2]: Entering directory '/Users/benbader/Development/Mso/build'
[ 1%] Building CXX object _deps/googletest-build/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o
[ 1%] Linking CXX static library ../../../lib/libgtest.a
make[2]: Leaving directory '/Users/benbader/Development/Mso/build'
[ 1%] Built target gtest
make[2]: Entering directory '/Users/benbader/Development/Mso/build'
Scanning dependencies of target gmock
make[2]: Leaving directory '/Users/benbader/Development/Mso/build'
make[2]: Entering directory '/Users/benbader/Development/Mso/build'
[ 1%] Building CXX object _deps/googletest-build/googlemock/CMakeFiles/gmock.dir/src/gmock-all.cc.o
[ 2%] Linking CXX static library ../../../lib/libgmock.a
make[2]: Leaving directory '/Users/benbader/Development/Mso/build'
[ 2%] Built target gmock
make[2]: Entering directory '/Users/benbader/Development/Mso/build'
Scanning dependencies of target gmock_main
make[2]: Leaving directory '/Users/benbader/Development/Mso/build'
make[2]: Entering directory '/Users/benbader/Development/Mso/build'
[ 3%] Building CXX object _deps/googletest-build/googlemock/CMakeFiles/gmock_main.dir/src/gmock_main.cc.o
[ 4%] Linking CXX static library ../../../lib/libgmock_main.a
make[2]: Leaving directory '/Users/benbader/Development/Mso/build'
[ 4%] Built target gmock_main
make[2]: Entering directory '/Users/benbader/Development/Mso/build'
Scanning dependencies of target gtest_main
make[2]: Leaving directory '/Users/benbader/Development/Mso/build'
make[2]: Entering directory '/Users/benbader/Development/Mso/build'
[ 5%] Building CXX object _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o
[ 6%] Linking CXX static library ../../../lib/libgtest_main.a
make[2]: Leaving directory '/Users/benbader/Development/Mso/build'
[ 6%] Built target gtest_main
make[2]: Entering directory '/Users/benbader/Development/Mso/build'
Scanning dependencies of target compilerAdapters
make[2]: Leaving directory '/Users/benbader/Development/Mso/build'
make[2]: Entering directory '/Users/benbader/Development/Mso/build'
[ 7%] Building CXX object libs/compilerAdapters/CMakeFiles/compilerAdapters.dir/__/__/tools/cmake/empty.cpp.o
[ 7%] Linking CXX static library libcompilerAdapters.a
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: libcompilerAdapters.a(empty.cpp.o) has no symbols
warning: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: warning for library: libcompilerAdapters.a the table of contents is empty (no object file members in the library define global symbols)
make[2]: Leaving directory '/Users/benbader/Development/Mso/build'
[ 7%] Built target compilerAdapters
make[2]: Entering directory '/Users/benbader/Development/Mso/build'
Scanning dependencies of target compilerAdapters_verify_includes
make[2]: Leaving directory '/Users/benbader/Development/Mso/build'
make[2]: Entering directory '/Users/benbader/Development/Mso/build'
[ 8%] Building CXX object libs/compilerAdapters/include/CMakeFiles/compilerAdapters_verify_includes.dir/verify/compilerFeatures.h.cpp.o
[ 9%] Building CXX object libs/compilerAdapters/include/CMakeFiles/compilerAdapters_verify_includes.dir/verify/compilerWarnings.h.cpp.o
[ 10%] Building CXX object libs/compilerAdapters/include/CMakeFiles/compilerAdapters_verify_includes.dir/verify/compilerWarnings_impl.h.cpp.o
[ 11%] Building CXX object libs/compilerAdapters/include/CMakeFiles/compilerAdapters_verify_includes.dir/verify/cppMacros.h.cpp.o
[ 12%] Building CXX object libs/compilerAdapters/include/CMakeFiles/compilerAdapters_verify_includes.dir/verify/cppMacrosDebug.h.cpp.o
[ 12%] Building CXX object libs/compilerAdapters/include/CMakeFiles/compilerAdapters_verify_includes.dir/verify/declspecDefinitions.h.cpp.o
[ 13%] Building CXX object libs/compilerAdapters/include/CMakeFiles/compilerAdapters_verify_includes.dir/verify/functionDecorations.h.cpp.o
[ 14%] Building CXX object libs/compilerAdapters/include/CMakeFiles/compilerAdapters_verify_includes.dir/verify/intrinsics.h.cpp.o
[ 15%] Building CXX object libs/compilerAdapters/include/CMakeFiles/compilerAdapters_verify_includes.dir/verify/linker.h.cpp.o
In file included from /Users/benbader/Development/Mso/build/libs/compilerAdapters/include/verify/linker.h.cpp:1:
/Users/benbader/Development/Mso/libs/compilerAdapters/include/compilerAdapters/linker.h:36:2: error: Unknown Platform!
#error Unknown Platform!
^
/Users/benbader/Development/Mso/libs/compilerAdapters/include/compilerAdapters/linker.h:59:2: error: Unknown Platform!
#error Unknown Platform!
^
2 errors generated.
make[2]: *** [libs/compilerAdapters/include/CMakeFiles/compilerAdapters_verify_includes.dir/build.make:167: libs/compilerAdapters/include/CMakeFiles/compilerAdapters_verify_includes.dir/verify/linker.h.cpp.o] Error 1
make[2]: Leaving directory '/Users/benbader/Development/Mso/build'
make[1]: *** [CMakeFiles/Makefile2:1269: libs/compilerAdapters/include/CMakeFiles/compilerAdapters_verify_includes.dir/all] Error 2
make[1]: Leaving directory '/Users/benbader/Development/Mso/build'
make: *** [Makefile:141: all] Error 2
Something about an undefined platform. It's been long enough since I've been inside of MSFT that I don't feel confident trying to guess what needs to happen. Possibly just defining _M_X64
?
...also, kudos on getting some of this stuff out into the open! I was just waxing lyrical about RefCountedObject
tonight when I learned about this repo. It makes me happy to see it again.
Adds support for building on Linux environments using the GCC compiler collection.
Reference environment:
When MSO_LIBLET_PLATFORM is set to WIN32 or WINRT, developers need a way to configure the target machine architecture: x86, x64, or arm.
They can set the necessary environment variables using vcvarsall/vcvars32/vcvars64, but the CMake scripts don't account for machine architecture when configuring the compiler or linker, nor when placing/naming files.
Editorconfig is not specific to a particular IDE, and is therefore a better choice, assuming it can do what we need.
These are both super valuable for cross-thread eventing. We should port them over.
There are a few places in code where the unreachable-code warning has been suppressed to make windows builds work. Remove this suppression, and address the underlying issue.
Mso has debug-only code in headers and C++ files, yet there is no way to tell Mso to build in debug mode. This is typically done by setting CMAKE_BUILD_TYPE = Debug.
Use Gradle as the entry point tool / framework for Android builds.
Ideally, this should enable Gradle to invoke the existing CMake definitions.
See:
Along with TCntPtr, my favorite bits of MSO were the futures and the IDispatchQueue family. It would be lovely to see these here - particularly as I see they were opened for use in ReactHost elsewhere. Thanks again.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.