Re: [PATCH] D16545: [libcxxabi] Enable testing for static libc++abi
rmaprath added a comment. Works great. Thanks! http://reviews.llvm.org/D16545 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: [PATCH] D16545: [libcxxabi] Enable testing for static libc++abi
bcraig added a comment. In http://reviews.llvm.org/D16545#444869, @bcraig wrote: > In http://reviews.llvm.org/D16545#444854, @rmaprath wrote: > > > Perhaps you forgot to commit that file? > > > Hrm, you're right, it didn't go in. I'll get it in tomorrow morning. Should be in now. r271388. http://reviews.llvm.org/D16545 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: [PATCH] D16545: [libcxxabi] Enable testing for static libc++abi
bcraig added a comment. In http://reviews.llvm.org/D16545#444854, @rmaprath wrote: > Hmmm, it looks like part of this patch didn't go in? I cannot see the changes > in the `libcxxabi/CMakeLists.txt` file in the repo. > > I was hoping this would enable me to run the `libc++abi` tests on in-tree > static builds, but I still can't. > > Perhaps you forgot to commit that file? Hrm, you're right, it didn't go in. I'll get it in tomorrow morning. http://reviews.llvm.org/D16545 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: [PATCH] D16545: [libcxxabi] Enable testing for static libc++abi
rmaprath added a subscriber: rmaprath. rmaprath added a comment. Hmmm, it looks like part of this patch didn't go in? I cannot see the changes in the `libcxxab/CMakeLists.txt` file in the repo. I was hoping this would enable me to run the `libc++abi` tests on in-tree static builds, but I still can't. Perhaps you forgot to commit that file? http://reviews.llvm.org/D16545 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: [PATCH] D16545: [libcxxabi] Enable testing for static libc++abi
bcraig closed this revision. bcraig added a comment. r266729 http://reviews.llvm.org/D16545 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: [PATCH] D16545: [libcxxabi] Enable testing for static libc++abi
bcraig updated this revision to Diff 54110. bcraig marked an inline comment as done. bcraig added a comment. EricWF's feedback. I plan on submitting this tomorrow morning. http://reviews.llvm.org/D16545 Files: CMakeLists.txt test/CMakeLists.txt test/libcxxabi/test/config.py test/lit.site.cfg.in Index: test/lit.site.cfg.in === --- test/lit.site.cfg.in +++ test/lit.site.cfg.in @@ -14,6 +14,8 @@ config.target_info = "@LIBCXXABI_TARGET_INFO@" config.executor = "@LIBCXXABI_EXECUTOR@" config.thread_atexit= "@LIBCXXABI_HAS_CXA_THREAD_ATEXIT_IMPL@" +config.libcxxabi_shared = "@LIBCXXABI_ENABLE_SHARED@" +config.enable_shared= "@LIBCXX_ENABLE_SHARED@" # Let the main config do the real work. lit_config.load_config(config, "@LIBCXXABI_SOURCE_DIR@/test/lit.cfg") Index: test/libcxxabi/test/config.py === --- test/libcxxabi/test/config.py +++ test/libcxxabi/test/config.py @@ -68,13 +68,3 @@ def configure_compile_flags_rtti(self): pass - -# TODO(ericwf): Remove this. This is a hack for OS X. -# libc++ *should* export all of the symbols found in libc++abi on OS X. -# For this reason LibcxxConfiguration will not link libc++abi in OS X. -# However __cxa_throw_bad_new_array_length doesn't get exported into libc++ -# yet so we still need to explicitly link libc++abi. -# See PR22654. -def configure_link_flags_abi_library(self): -self.cxx.link_flags += ['-lc++abi'] - Index: test/CMakeLists.txt === --- test/CMakeLists.txt +++ test/CMakeLists.txt @@ -6,7 +6,12 @@ endif() endmacro() +if (NOT DEFINED LIBCXX_ENABLE_SHARED) + set(LIBCXX_ENABLE_SHARED ON) +endif() + pythonize_bool(LLVM_BUILD_32_BITS) +pythonize_bool(LIBCXX_ENABLE_SHARED) pythonize_bool(LIBCXXABI_ENABLE_SHARED) pythonize_bool(LIBCXXABI_ENABLE_THREADS) pythonize_bool(LIBCXXABI_USE_LLVM_UNWINDER) @@ -22,7 +27,12 @@ ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg @ONLY) -set(LIBCXXABI_TEST_DEPS cxxabi_shared) +if (LIBCXXABI_ENABLE_SHARED) + set(LIBCXXABI_TEST_DEPS cxxabi_shared) +else() + set(LIBCXXABI_TEST_DEPS cxxabi_static) +endif() + if (NOT LIBCXXABI_BUILT_STANDALONE) list(APPEND LIBCXXABI_TEST_DEPS cxx) endif() Index: CMakeLists.txt === --- CMakeLists.txt +++ CMakeLists.txt @@ -116,9 +116,9 @@ option(LIBCXXABI_ENABLE_WERROR "Fail and stop if a warning is triggered." OFF) option(LIBCXXABI_USE_LLVM_UNWINDER "Build and use the LLVM unwinder." OFF) option(LIBCXXABI_ENABLE_THREADS "Build with threads enabled" ON) -set(LIBCXXABI_GCC_TOOLCHAIN "" CACHE STRING "GCC toolchain for cross compiling.") -set(LIBCXXABI_SYSROOT "" CACHE STRING "Sysroot for cross compiling.") -set(LIBCXXABI_LIBCXX_LIBRARY_PATH "" CACHE STRING "The path to libc++ library.") +set(LIBCXXABI_GCC_TOOLCHAIN "" CACHE PATH "GCC toolchain for cross compiling.") +set(LIBCXXABI_SYSROOT "" CACHE PATH "Sysroot for cross compiling.") +set(LIBCXXABI_LIBCXX_LIBRARY_PATH "" CACHE PATH "The path to libc++ library.") # Default to building a shared library so that the default options still test # the libc++abi that is being built. There are two problems with testing a @@ -182,6 +182,13 @@ set(LIBCXXABI_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}) set(LIBCXXABI_LIBRARY_DIR ${CMAKE_BINARY_DIR}/lib${LIBCXXABI_LIBDIR_SUFFIX}) +# By default, for non-standalone builds, libcxx and libcxxabi share a library +# directory. +if (NOT LIBCXXABI_LIBCXX_LIBRARY_PATH) + set(LIBCXXABI_LIBCXX_LIBRARY_PATH "${LIBCXXABI_LIBRARY_DIR}" CACHE PATH + "The path to libc++ library.") +endif () + #=== # Setup Compiler Flags #=== @@ -338,14 +345,16 @@ # soname, etc... add_subdirectory(src) -if(NOT LIBCXXABI_ENABLE_SHARED) - # TODO: Fix the libc++ cmake files so that libc++abi can be statically linked. - # As it is now, libc++ will prefer linking against a dynamic libc++abi in the - # system library paths over a static libc++abi in the out directory. This - # would test the system library rather than the one we just built, which isn't - # very helpful. - message(WARNING "The libc++abi tests are currently only valid when " - "LIBCXXABI_ENABLE_SHARED is on, no check target will be " +if (LIBCXXABI_BUILT_STANDALONE AND NOT LIBCXXABI_ENABLE_SHARED) + # We can't reasonably test the system C++ library with a static libc++abi. + # We either need to be able to replace libc++abi at run time (with a shared + # libc++abi), or we need to be able to replace the C++ runtime (with a non- + # standalone build). + message(WARNING "The libc++abi tests aren't valid when l
Re: [PATCH] D16545: [libcxxabi] Enable testing for static libc++abi
EricWF accepted this revision. EricWF added a comment. This revision is now accepted and ready to land. This part LGTM. Sorry about the delay. Comment at: CMakeLists.txt:187 @@ +186,3 @@ +if (NOT LIBCXXABI_LIBCXX_LIBRARY_PATH) + set(LIBCXXABI_LIBCXX_LIBRARY_PATH "${LIBCXXABI_LIBRARY_DIR}" CACHE PATH + "The path to libc++ library.") This variable should still probably be re-set even if it's given on the command line. By doing that you update the type and help text for the variable in the cache. http://reviews.llvm.org/D16545 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: [PATCH] D16545: [libcxxabi] Enable testing for static libc++abi
bcraig added a comment. ping http://reviews.llvm.org/D16545 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: [PATCH] D16545: [libcxxabi] Enable testing for static libc++abi
bcraig added a comment. ping http://reviews.llvm.org/D16545 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: [PATCH] D16545: [libcxxabi] Enable testing for static libc++abi
bcraig added a comment. ping http://reviews.llvm.org/D16545 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: [PATCH] D16545: [libcxxabi] Enable testing for static libc++abi
bcraig marked an inline comment as done. bcraig added a comment. http://reviews.llvm.org/D16545 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: [PATCH] D16545: [libcxxabi] Enable testing for static libc++abi
bcraig updated this revision to Diff 48112. bcraig added a comment. Addressed EricWF's feedback. http://reviews.llvm.org/D16545 Files: CMakeLists.txt test/CMakeLists.txt test/libcxxabi/test/config.py test/lit.site.cfg.in Index: test/lit.site.cfg.in === --- test/lit.site.cfg.in +++ test/lit.site.cfg.in @@ -13,6 +13,8 @@ config.enable_32bit = "@LLVM_BUILD_32_BITS@" config.target_info = "@LIBCXXABI_TARGET_INFO@" config.executor = "@LIBCXXABI_EXECUTOR@" +config.libcxxabi_shared = "@LIBCXXABI_ENABLE_SHARED@" +config.enable_shared= "@LIBCXX_ENABLE_SHARED@" # Let the main config do the real work. lit_config.load_config(config, "@LIBCXXABI_SOURCE_DIR@/test/lit.cfg") Index: test/libcxxabi/test/config.py === --- test/libcxxabi/test/config.py +++ test/libcxxabi/test/config.py @@ -63,13 +63,3 @@ def configure_compile_flags_rtti(self): pass - -# TODO(ericwf): Remove this. This is a hack for OS X. -# libc++ *should* export all of the symbols found in libc++abi on OS X. -# For this reason LibcxxConfiguration will not link libc++abi in OS X. -# However __cxa_throw_bad_new_array_length doesn't get exported into libc++ -# yet so we still need to explicitly link libc++abi. -# See PR22654. -def configure_link_flags_abi_library(self): -self.cxx.link_flags += ['-lc++abi'] - Index: test/CMakeLists.txt === --- test/CMakeLists.txt +++ test/CMakeLists.txt @@ -6,7 +6,12 @@ endif() endmacro() +if (NOT DEFINED LIBCXX_ENABLE_SHARED) + set(LIBCXX_ENABLE_SHARED ON) +endif() + pythonize_bool(LLVM_BUILD_32_BITS) +pythonize_bool(LIBCXX_ENABLE_SHARED) pythonize_bool(LIBCXXABI_ENABLE_SHARED) pythonize_bool(LIBCXXABI_ENABLE_THREADS) pythonize_bool(LIBCXXABI_USE_LLVM_UNWINDER) @@ -21,7 +26,12 @@ ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg @ONLY) -set(LIBCXXABI_TEST_DEPS cxxabi_shared) +if (LIBCXXABI_ENABLE_SHARED) + set(LIBCXXABI_TEST_DEPS cxxabi_shared) +else() + set(LIBCXXABI_TEST_DEPS cxxabi_static) +endif() + if (NOT LIBCXXABI_BUILT_STANDALONE) list(APPEND LIBCXXABI_TEST_DEPS cxx) endif() Index: CMakeLists.txt === --- CMakeLists.txt +++ CMakeLists.txt @@ -116,9 +116,8 @@ option(LIBCXXABI_ENABLE_WERROR "Fail and stop if a warning is triggered." OFF) option(LIBCXXABI_USE_LLVM_UNWINDER "Build and use the LLVM unwinder." OFF) option(LIBCXXABI_ENABLE_THREADS "Build with threads enabled" ON) -set(LIBCXXABI_GCC_TOOLCHAIN "" CACHE STRING "GCC toolchain for cross compiling.") -set(LIBCXXABI_SYSROOT "" CACHE STRING "Sysroot for cross compiling.") -set(LIBCXXABI_LIBCXX_LIBRARY_PATH "" CACHE STRING "The path to libc++ library.") +set(LIBCXXABI_GCC_TOOLCHAIN "" CACHE PATH "GCC toolchain for cross compiling.") +set(LIBCXXABI_SYSROOT "" CACHE PATH "Sysroot for cross compiling.") # Default to building a shared library so that the default options still test # the libc++abi that is being built. There are two problems with testing a @@ -182,6 +181,13 @@ set(LIBCXXABI_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}) set(LIBCXXABI_LIBRARY_DIR ${CMAKE_BINARY_DIR}/lib${LIBCXXABI_LIBDIR_SUFFIX}) +# By default, for non-standalone builds, libcxx and libcxxabi share a library +# directory. +if (NOT LIBCXXABI_LIBCXX_LIBRARY_PATH) + set(LIBCXXABI_LIBCXX_LIBRARY_PATH "${LIBCXXABI_LIBRARY_DIR}" CACHE PATH + "The path to libc++ library.") +endif () + #=== # Setup Compiler Flags #=== @@ -338,14 +344,16 @@ # soname, etc... add_subdirectory(src) -if(NOT LIBCXXABI_ENABLE_SHARED) - # TODO: Fix the libc++ cmake files so that libc++abi can be statically linked. - # As it is now, libc++ will prefer linking against a dynamic libc++abi in the - # system library paths over a static libc++abi in the out directory. This - # would test the system library rather than the one we just built, which isn't - # very helpful. - message(WARNING "The libc++abi tests are currently only valid when " - "LIBCXXABI_ENABLE_SHARED is on, no check target will be " +if (LIBCXXABI_BUILT_STANDALONE AND NOT LIBCXXABI_ENABLE_SHARED) + # We can't reasonably test the system C++ library with a static libc++abi. + # We either need to be able to replace libc++abi at run time (with a shared + # libc++abi), or we need to be able to replace the C++ runtime (with a non- + # standalone build). + message(WARNING "The libc++abi tests aren't valid when libc++abi is built " + "standalone (i.e. outside of llvm/projects/libcxxabi ) and " + "is built without a shared library. Either build a sha
Re: [PATCH] D16545: [libcxxabi] Enable testing for static libc++abi
EricWF added inline comments. Comment at: test/CMakeLists.txt:10 @@ -9,2 +9,3 @@ pythonize_bool(LLVM_BUILD_32_BITS) +pythonize_bool(LIBCXX_ENABLE_SHARED) pythonize_bool(LIBCXXABI_ENABLE_SHARED) This seems wrong for out of tree builds because LIBCXX_ENABLE_SHARED will not be defined and will result in the default "False". http://reviews.llvm.org/D16545 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: [PATCH] D16545: [libcxxabi] Enable testing for static libc++abi
bcraig added a comment. ping http://reviews.llvm.org/D16545 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: [PATCH] D16545: [libcxxabi] Enable testing for static libc++abi
bcraig added a comment. ping http://reviews.llvm.org/D16545 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D16545: [libcxxabi] Enable testing for static libc++abi
bcraig created this revision. bcraig added reviewers: mclow.lists, jroelofs, EricWF. bcraig added a subscriber: cfe-commits. This change leverages framework changes made in libcxx. See those changes for more details. (http://reviews.llvm.org/D16544) Some Mac specific logic for testing against libc++abi had to be moved from libcxxabi's config.py, as it was overriding choices made in libcxx's config.py. That logic is now in libcxx's target_info.py. http://reviews.llvm.org/D16545 Files: CMakeLists.txt test/CMakeLists.txt test/libcxxabi/test/config.py test/lit.site.cfg.in Index: test/lit.site.cfg.in === --- test/lit.site.cfg.in +++ test/lit.site.cfg.in @@ -13,6 +13,8 @@ config.enable_32bit = "@LLVM_BUILD_32_BITS@" config.target_info = "@LIBCXXABI_TARGET_INFO@" config.executor = "@LIBCXXABI_EXECUTOR@" +config.libcxxabi_shared = "@LIBCXXABI_ENABLE_SHARED@" +config.enable_shared= "@LIBCXX_ENABLE_SHARED@" # Let the main config do the real work. lit_config.load_config(config, "@LIBCXXABI_SOURCE_DIR@/test/lit.cfg") Index: test/libcxxabi/test/config.py === --- test/libcxxabi/test/config.py +++ test/libcxxabi/test/config.py @@ -63,13 +63,3 @@ def configure_compile_flags_rtti(self): pass - -# TODO(ericwf): Remove this. This is a hack for OS X. -# libc++ *should* export all of the symbols found in libc++abi on OS X. -# For this reason LibcxxConfiguration will not link libc++abi in OS X. -# However __cxa_throw_bad_new_array_length doesn't get exported into libc++ -# yet so we still need to explicitly link libc++abi. -# See PR22654. -def configure_link_flags_abi_library(self): -self.cxx.link_flags += ['-lc++abi'] - Index: test/CMakeLists.txt === --- test/CMakeLists.txt +++ test/CMakeLists.txt @@ -7,6 +7,7 @@ endmacro() pythonize_bool(LLVM_BUILD_32_BITS) +pythonize_bool(LIBCXX_ENABLE_SHARED) pythonize_bool(LIBCXXABI_ENABLE_SHARED) pythonize_bool(LIBCXXABI_ENABLE_THREADS) pythonize_bool(LIBCXXABI_USE_LLVM_UNWINDER) @@ -21,7 +22,12 @@ ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg @ONLY) -set(LIBCXXABI_TEST_DEPS cxxabi_shared) +if (LIBCXXABI_ENABLE_SHARED) + set(LIBCXXABI_TEST_DEPS cxxabi_shared) +else() + set(LIBCXXABI_TEST_DEPS cxxabi_static) +endif() + if (NOT LIBCXXABI_BUILT_STANDALONE) list(APPEND LIBCXXABI_TEST_DEPS cxx) endif() Index: CMakeLists.txt === --- CMakeLists.txt +++ CMakeLists.txt @@ -116,9 +116,8 @@ option(LIBCXXABI_ENABLE_WERROR "Fail and stop if a warning is triggered." OFF) option(LIBCXXABI_USE_LLVM_UNWINDER "Build and use the LLVM unwinder." OFF) option(LIBCXXABI_ENABLE_THREADS "Build with threads enabled" ON) -set(LIBCXXABI_GCC_TOOLCHAIN "" CACHE STRING "GCC toolchain for cross compiling.") -set(LIBCXXABI_SYSROOT "" CACHE STRING "Sysroot for cross compiling.") -set(LIBCXXABI_LIBCXX_LIBRARY_PATH "" CACHE STRING "The path to libc++ library.") +set(LIBCXXABI_GCC_TOOLCHAIN "" CACHE PATH "GCC toolchain for cross compiling.") +set(LIBCXXABI_SYSROOT "" CACHE PATH "Sysroot for cross compiling.") # Default to building a shared library so that the default options still test # the libc++abi that is being built. There are two problems with testing a @@ -182,6 +181,13 @@ set(LIBCXXABI_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}) set(LIBCXXABI_LIBRARY_DIR ${CMAKE_BINARY_DIR}/lib${LIBCXXABI_LIBDIR_SUFFIX}) +# By default, for non-standalone builds, libcxx and libcxxabi share a library +# directory. +if (NOT LIBCXXABI_LIBCXX_LIBRARY_PATH) + set(LIBCXXABI_LIBCXX_LIBRARY_PATH "${LIBCXXABI_LIBRARY_DIR}" CACHE PATH + "The path to libc++ library.") +endif () + #=== # Setup Compiler Flags #=== @@ -338,14 +344,16 @@ # soname, etc... add_subdirectory(src) -if(NOT LIBCXXABI_ENABLE_SHARED) - # TODO: Fix the libc++ cmake files so that libc++abi can be statically linked. - # As it is now, libc++ will prefer linking against a dynamic libc++abi in the - # system library paths over a static libc++abi in the out directory. This - # would test the system library rather than the one we just built, which isn't - # very helpful. - message(WARNING "The libc++abi tests are currently only valid when " - "LIBCXXABI_ENABLE_SHARED is on, no check target will be " +if (LIBCXXABI_BUILT_STANDALONE AND NOT LIBCXXABI_ENABLE_SHARED) + # We can't reasonably test the system C++ library with a static libc++abi. + # We either need to be able to replace libc++abi at run time (with a shared + # libc++abi), or we need to be able to replace the C++ runtime (with a