[libcxx] r287690 - Attempt to fix stdint/cstdint modules try 2
Eric Fiselier via cfe-commits
cfe-commits at lists.llvm.org
Tue Nov 22 12:05:20 PST 2016
Author: ericwf
Date: Tue Nov 22 14:05:19 2016
New Revision: 287690
URL: http://llvm.org/viewvc/llvm-project?rev=287690&view=rev
Log:
Attempt to fix stdint/cstdint modules try 2
Added:
libcxx/trunk/test/libcxx/modules/cinttypes_exports.sh.cpp
libcxx/trunk/test/libcxx/modules/cstdint_exports.sh.cpp
libcxx/trunk/test/libcxx/modules/inttypes_h_exports.sh.cpp
libcxx/trunk/test/libcxx/modules/stdint_h_exports.sh.cpp
Modified:
libcxx/trunk/include/module.modulemap
libcxx/trunk/test/libcxx/test/config.py
Modified: libcxx/trunk/include/module.modulemap
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/module.modulemap?rev=287690&r1=287689&r2=287690&view=diff
==============================================================================
--- libcxx/trunk/include/module.modulemap (original)
+++ libcxx/trunk/include/module.modulemap Tue Nov 22 14:05:19 2016
@@ -45,7 +45,13 @@ module std [system] {
// <stddef.h>'s __need_* macros require textual inclusion.
textual header "stddef.h"
}
- // FIXME: <stdint.h> is missing.
+ module stdint_h {
+ header "stdint.h"
+ export *
+ // FIXME: This module only exists on OS X and for some reason the
+ // wildcard above doesn't export it.
+ export Darwin.C.stdint
+ }
module stdio_h {
// <stdio.h>'s __need_* macros require textual inclusion.
textual header "stdio.h"
@@ -158,6 +164,7 @@ module std [system] {
}
module cstdint {
header "cstdint"
+ export depr.stdint_h
export *
}
module cstdio {
Added: libcxx/trunk/test/libcxx/modules/cinttypes_exports.sh.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/libcxx/modules/cinttypes_exports.sh.cpp?rev=287690&view=auto
==============================================================================
--- libcxx/trunk/test/libcxx/modules/cinttypes_exports.sh.cpp (added)
+++ libcxx/trunk/test/libcxx/modules/cinttypes_exports.sh.cpp Tue Nov 22 14:05:19 2016
@@ -0,0 +1,21 @@
+//===----------------------------------------------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// REQUIRES: modules-support
+
+// Test that <cinttypes> re-exports <cstdint>
+
+// RUN: %build_module
+
+#include <cinttypes>
+
+int main() {
+ int8_t x; ((void)x);
+ std::int8_t y; ((void)y);
+}
Added: libcxx/trunk/test/libcxx/modules/cstdint_exports.sh.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/libcxx/modules/cstdint_exports.sh.cpp?rev=287690&view=auto
==============================================================================
--- libcxx/trunk/test/libcxx/modules/cstdint_exports.sh.cpp (added)
+++ libcxx/trunk/test/libcxx/modules/cstdint_exports.sh.cpp Tue Nov 22 14:05:19 2016
@@ -0,0 +1,21 @@
+//===----------------------------------------------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// REQUIRES: modules-support
+
+// Test that <cstdint> re-exports <stdint.h>
+
+// RUN: %build_module
+
+#include <cstdint>
+
+int main() {
+ int8_t x; ((void)x);
+ std::int8_t y; ((void)y);
+}
Added: libcxx/trunk/test/libcxx/modules/inttypes_h_exports.sh.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/libcxx/modules/inttypes_h_exports.sh.cpp?rev=287690&view=auto
==============================================================================
--- libcxx/trunk/test/libcxx/modules/inttypes_h_exports.sh.cpp (added)
+++ libcxx/trunk/test/libcxx/modules/inttypes_h_exports.sh.cpp Tue Nov 22 14:05:19 2016
@@ -0,0 +1,20 @@
+//===----------------------------------------------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// REQUIRES: modules-support
+
+// Test that intypes.h re-exports stdint.h
+
+// RUN: %build_module
+
+#include <inttypes.h>
+
+int main() {
+ int8_t x; ((void)x);
+}
Added: libcxx/trunk/test/libcxx/modules/stdint_h_exports.sh.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/libcxx/modules/stdint_h_exports.sh.cpp?rev=287690&view=auto
==============================================================================
--- libcxx/trunk/test/libcxx/modules/stdint_h_exports.sh.cpp (added)
+++ libcxx/trunk/test/libcxx/modules/stdint_h_exports.sh.cpp Tue Nov 22 14:05:19 2016
@@ -0,0 +1,20 @@
+//===----------------------------------------------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// REQUIRES: modules-support
+
+// Test that int8_t and the like are exported from stdint.h not inttypes.h
+
+// RUN: %build_module
+
+#include <stdint.h>
+
+int main() {
+ int8_t x; ((void)x);
+}
Modified: libcxx/trunk/test/libcxx/test/config.py
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/libcxx/test/config.py?rev=287690&r1=287689&r2=287690&view=diff
==============================================================================
--- libcxx/trunk/test/libcxx/test/config.py (original)
+++ libcxx/trunk/test/libcxx/test/config.py Tue Nov 22 14:05:19 2016
@@ -65,7 +65,8 @@ class Configuration(object):
self.cxx_library_root = None
self.cxx_runtime_root = None
self.abi_library_root = None
- self.module_cache_path = None
+ self.enable_modules = False
+ self.modules_flags = None
self.env = {}
self.use_target = False
self.use_system_cxx_lib = False
@@ -725,9 +726,12 @@ class Configuration(object):
self.cxx.compile_flags += ['-O0']
def configure_modules(self):
- supports_modules = self.cxx.hasCompileFlag('-fmodules')
- enable_modules = self.get_lit_bool('enable_modules', False)
- if enable_modules and not supports_modules:
+ modules_flags = ['-fmodules']
+ if platform.system() != 'Darwin':
+ modules_flags += ['-Xclang', '-fmodules-local-submodule-visibility']
+ supports_modules = self.cxx.hasCompileFlag(modules_flags)
+ self.enable_modules = self.get_lit_bool('enable_modules', False)
+ if self.enable_modules and not supports_modules:
self.lit_config.fatal(
'-fmodules is enabled but not supported by the compiler')
if not supports_modules:
@@ -739,11 +743,11 @@ class Configuration(object):
if os.path.isdir(module_cache):
shutil.rmtree(module_cache)
os.makedirs(module_cache)
- self.module_cache_path = module_cache
- if enable_modules:
+ self.modules_flags = modules_flags + \
+ ['-fmodules-cache-path=' + module_cache]
+ if self.enable_modules:
self.config.available_features.add('-fmodules')
- self.cxx.compile_flags += ['-fmodules',
- '-fmodules-cache-path=' + module_cache]
+ self.cxx.compile_flags += self.modules_flags
def configure_substitutions(self):
sub = self.config.substitutions
@@ -759,12 +763,6 @@ class Configuration(object):
sub.append(('%link_flags', link_flags_str))
sub.append(('%all_flags', all_flags))
- module_flags = None
- if not self.module_cache_path is None:
- module_flags = '-fmodules -fmodules-cache-path=' \
- + self.module_cache_path + ' '
-
-
# Add compile and link shortcuts
compile_str = (self.cxx.path + ' -o %t.o %s -c ' + flags_str
+ compile_flags_str)
@@ -774,8 +772,11 @@ class Configuration(object):
build_str = self.cxx.path + ' -o %t.exe %s ' + all_flags
sub.append(('%compile', compile_str))
sub.append(('%link', link_str))
- if not module_flags is None:
- sub.append(('%build_module', build_str + ' ' + module_flags))
+ if self.enable_modules:
+ sub.append(('%build_module', build_str))
+ elif self.modules_flags is not None:
+ modules_str = ' '.join(self.modules_flags) + ' '
+ sub.append(('%build_module', build_str + ' ' + modules_str))
sub.append(('%build', build_str))
# Configure exec prefix substitutions.
exec_env_str = 'env ' if len(self.env) != 0 else ''
@@ -788,7 +789,7 @@ class Configuration(object):
sub.append(('%exec', exec_str))
# Configure run shortcut
sub.append(('%run', exec_str + ' %t.exe'))
- # Configure not program substitions
+ # Configure not program substitutions
not_py = os.path.join(self.libcxx_src_root, 'utils', 'not', 'not.py')
not_str = '%s %s' % (sys.executable, not_py)
sub.append(('not', not_str))
More information about the cfe-commits
mailing list