[Git][ghc/ghc][wip/24286] 3 commits: testsuite: Teach testsuite driver about c++ sources
Zubin (@wz1000)
gitlab at gitlab.haskell.org
Mon Jan 8 10:57:44 UTC 2024
Zubin pushed to branch wip/24286 at Glasgow Haskell Compiler / GHC
Commits:
d70ecb11 by Zubin Duggal at 2024-01-08T16:27:33+05:30
testsuite: Teach testsuite driver about c++ sources
- - - - -
3544f10b by Zubin Duggal at 2024-01-08T16:27:33+05:30
driver: Set -DPROFILING when compiling C++ sources with profiling
Fixes #24286
- - - - -
2853e8b4 by Zubin Duggal at 2024-01-08T16:27:33+05:30
testsuite: rename objcpp -> objcxx
To avoid confusion with C Pre Processsor
- - - - -
8 changed files:
- compiler/GHC/Driver/Session.hs
- compiler/GHC/Platform/Ways.hs
- testsuite/driver/testglobals.py
- testsuite/driver/testlib.py
- testsuite/tests/driver/Makefile
- + testsuite/tests/driver/T24286.cpp
- testsuite/tests/driver/all.T
- testsuite/tests/driver/objc/all.T
Changes:
=====================================
compiler/GHC/Driver/Session.hs
=====================================
@@ -438,7 +438,8 @@ opt_c :: DynFlags -> [String]
opt_c dflags = concatMap (wayOptc (targetPlatform dflags)) (ways dflags)
++ toolSettings_opt_c (toolSettings dflags)
opt_cxx :: DynFlags -> [String]
-opt_cxx dflags= toolSettings_opt_cxx $ toolSettings dflags
+opt_cxx dflags = concatMap (wayOptcxx (targetPlatform dflags)) (ways dflags)
+ ++ toolSettings_opt_cxx (toolSettings dflags)
opt_a :: DynFlags -> [String]
opt_a dflags= toolSettings_opt_a $ toolSettings dflags
opt_l :: DynFlags -> [String]
=====================================
compiler/GHC/Platform/Ways.hs
=====================================
@@ -31,6 +31,7 @@ module GHC.Platform.Ways
, wayGeneralFlags
, wayUnsetGeneralFlags
, wayOptc
+ , wayOptcxx
, wayOptl
, wayOptP
, wayDesc
@@ -177,6 +178,9 @@ wayOptc _ WayDebug = []
wayOptc _ WayDyn = []
wayOptc _ WayProf = ["-DPROFILING"]
+wayOptcxx :: Platform -> Way -> [String]
+wayOptcxx = wayOptc -- Use the same flags as C
+
-- | Pass these options to linker when enabling this way
wayOptl :: Platform -> Way -> [String]
wayOptl _ (WayCustom {}) = []
=====================================
testsuite/driver/testglobals.py
=====================================
@@ -399,10 +399,11 @@ class TestOptions:
# Does this test use a literate (.lhs) file?
self.literate = False
- # Does this test use a .c, .m or .mm file?
+ # Does this test use a .c, .cpp, .m or .mm file?
self.c_src = False
+ self.cxx_src = False
self.objc_src = False
- self.objcpp_src = False
+ self.objcxx_src = False
# Does this test use a .cmm file?
self.cmm_src = False
=====================================
testsuite/driver/testlib.py
=====================================
@@ -299,6 +299,13 @@ def req_c( name, opts ):
# JS backend doesn't support C (yet)
js_skip(name, opts)
+def req_cxx( name, opts ):
+ """
+ Mark a test as requiring C++ source file support
+ """
+ # JS backend doesn't support C (yet)
+ js_skip(name, opts)
+
def req_cmm( name, opts ):
"""
Mark a test as requiring Cmm support
@@ -953,11 +960,15 @@ def c_src( name, opts ):
opts.c_src = True
req_c (name, opts)
+def cxx_src( name, opts ):
+ opts.cxx_src = True
+ req_cxx (name, opts)
+
def objc_src( name, opts ):
opts.objc_src = True
-def objcpp_src( name, opts ):
- opts.objcpp_src = True
+def objcxx_src( name, opts ):
+ opts.objcxx_src = True
def cmm_src( name, opts ):
opts.cmm_src = True
@@ -1948,8 +1959,9 @@ async def simple_build(name: Union[TestName, str],
# Required by GHC 7.3+, harmless for earlier versions:
if (getTestOpts().c_src or
+ getTestOpts().cxx_src or
getTestOpts().objc_src or
- getTestOpts().objcpp_src):
+ getTestOpts().objcxx_src):
extra_hc_opts += ' -no-hs-main '
if getTestOpts().compile_cmd_prefix == '':
@@ -2922,9 +2934,11 @@ def add_hs_lhs_suffix(name: str) -> Path:
return add_suffix(name, 'c')
elif getTestOpts().cmm_src:
return add_suffix(name, 'cmm')
+ elif getTestOpts().cxx_src:
+ return add_suffix(name, 'cpp')
elif getTestOpts().objc_src:
return add_suffix(name, 'm')
- elif getTestOpts().objcpp_src:
+ elif getTestOpts().objcxx_src:
return add_suffix(name, 'mm')
elif getTestOpts().literate:
return add_suffix(name, 'lhs')
=====================================
testsuite/tests/driver/Makefile
=====================================
@@ -808,5 +808,3 @@ T23339B:
"$(TEST_HC)" -tmpdir "$(PWD)/tmp" $(TEST_HC_OPTS) -v0 T23339B.hs -finfo-table-map
# Check that the file is kept and is the right one
find . -name "*.c" -exec cat {} \; | grep "init__ip_init"
-
-
=====================================
testsuite/tests/driver/T24286.cpp
=====================================
@@ -0,0 +1,7 @@
+#if !defined(PROFILING)
+#error PROFILING flag not set for C++ files, see #24286
+#endif
+
+int main() {
+ return 0;
+}
=====================================
testsuite/tests/driver/all.T
=====================================
@@ -326,3 +326,4 @@ test('T23339', req_c, makefile_test, [])
test('T23339B', [extra_files(['T23339.hs']), req_c], makefile_test, [])
test('T23613', normal, compile_and_run, ['-this-unit-id=foo'])
test('T23944', [unless(have_dynamic(), skip), extra_files(['T23944A.hs'])], multimod_compile, ['T23944 T23944A', '-fprefer-byte-code -fbyte-code -fno-code -dynamic-too -fwrite-interface'])
+test('T24286', [cxx_src, unless(have_profiling(), skip), extra_files(['T24286.cpp'])], compile, ['-prof -no-hs-main'])
=====================================
testsuite/tests/driver/objc/all.T
=====================================
@@ -12,8 +12,8 @@ test('objc-hi',
expect_fail_for(['ghci']) ],
compile_and_run, ['-framework Foundation'])
-test('objcpp-hi',
+test('objcxx-hi',
[ skip_if_not_osx,
- objcpp_src,
+ objcxx_src,
expect_fail_for(['ghci']) ],
compile_and_run, ['-framework Foundation -lc++'])
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/5363f9be974f15e646766839b5976ef4fb971af0...2853e8b480787041df4635ebf7ae6c203132272e
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/5363f9be974f15e646766839b5976ef4fb971af0...2853e8b480787041df4635ebf7ae6c203132272e
You're receiving this email because of your account on gitlab.haskell.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-commits/attachments/20240108/1dff9884/attachment-0001.html>
More information about the ghc-commits
mailing list