You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
(1) |
Apr
(1) |
May
|
Jun
(1) |
Jul
|
Aug
(10) |
Sep
|
Oct
|
Nov
|
Dec
(3) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
(1) |
Feb
(2) |
Mar
(3) |
Apr
(2) |
May
(10) |
Jun
(2) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
(3) |
Dec
|
2008 |
Jan
(6) |
Feb
(4) |
Mar
(5) |
Apr
(2) |
May
(1) |
Jun
(1) |
Jul
(4) |
Aug
(6) |
Sep
(2) |
Oct
(9) |
Nov
(1) |
Dec
(4) |
2009 |
Jan
(9) |
Feb
(2) |
Mar
(2) |
Apr
(2) |
May
(6) |
Jun
(18) |
Jul
(33) |
Aug
(39) |
Sep
(33) |
Oct
(24) |
Nov
(23) |
Dec
(22) |
2010 |
Jan
(29) |
Feb
(32) |
Mar
(51) |
Apr
(17) |
May
(31) |
Jun
(21) |
Jul
(32) |
Aug
(28) |
Sep
(35) |
Oct
(27) |
Nov
(11) |
Dec
(13) |
2011 |
Jan
(14) |
Feb
(13) |
Mar
(27) |
Apr
(27) |
May
(28) |
Jun
(20) |
Jul
(43) |
Aug
(52) |
Sep
(66) |
Oct
(61) |
Nov
(11) |
Dec
(8) |
2012 |
Jan
(20) |
Feb
(30) |
Mar
(38) |
Apr
(21) |
May
(33) |
Jun
(21) |
Jul
(25) |
Aug
(9) |
Sep
(24) |
Oct
(42) |
Nov
(27) |
Dec
(41) |
2013 |
Jan
(20) |
Feb
(35) |
Mar
(156) |
Apr
(298) |
May
(258) |
Jun
(201) |
Jul
(105) |
Aug
(60) |
Sep
(193) |
Oct
(245) |
Nov
(280) |
Dec
(194) |
2014 |
Jan
(63) |
Feb
(202) |
Mar
(200) |
Apr
(23) |
May
(53) |
Jun
(105) |
Jul
(18) |
Aug
(26) |
Sep
(110) |
Oct
(187) |
Nov
(97) |
Dec
(74) |
2015 |
Jan
(45) |
Feb
(55) |
Mar
(116) |
Apr
(116) |
May
(193) |
Jun
(164) |
Jul
(50) |
Aug
(111) |
Sep
(98) |
Oct
(71) |
Nov
(103) |
Dec
(63) |
2016 |
Jan
(33) |
Feb
(101) |
Mar
(182) |
Apr
(139) |
May
(140) |
Jun
(103) |
Jul
(165) |
Aug
(286) |
Sep
(208) |
Oct
(127) |
Nov
(97) |
Dec
(54) |
2017 |
Jan
(64) |
Feb
(335) |
Mar
(202) |
Apr
(212) |
May
(139) |
Jun
(127) |
Jul
(294) |
Aug
(154) |
Sep
(170) |
Oct
(152) |
Nov
(156) |
Dec
(62) |
2018 |
Jan
(168) |
Feb
(237) |
Mar
(196) |
Apr
(174) |
May
(174) |
Jun
(161) |
Jul
(127) |
Aug
(88) |
Sep
(149) |
Oct
(66) |
Nov
(52) |
Dec
(135) |
2019 |
Jan
(146) |
Feb
(126) |
Mar
(104) |
Apr
(58) |
May
(60) |
Jun
(28) |
Jul
(197) |
Aug
(129) |
Sep
(141) |
Oct
(148) |
Nov
(63) |
Dec
(100) |
2020 |
Jan
(74) |
Feb
(37) |
Mar
(59) |
Apr
(154) |
May
(194) |
Jun
(133) |
Jul
(313) |
Aug
(197) |
Sep
(49) |
Oct
(162) |
Nov
(143) |
Dec
(57) |
2021 |
Jan
(120) |
Feb
(107) |
Mar
(314) |
Apr
(157) |
May
(524) |
Jun
(169) |
Jul
(72) |
Aug
(133) |
Sep
(135) |
Oct
(146) |
Nov
(198) |
Dec
(325) |
2022 |
Jan
(409) |
Feb
(249) |
Mar
(138) |
Apr
(95) |
May
(102) |
Jun
(221) |
Jul
(66) |
Aug
(120) |
Sep
(192) |
Oct
(131) |
Nov
(53) |
Dec
(171) |
2023 |
Jan
(357) |
Feb
(82) |
Mar
(168) |
Apr
(218) |
May
(196) |
Jun
(86) |
Jul
(115) |
Aug
(49) |
Sep
(190) |
Oct
(102) |
Nov
(45) |
Dec
(76) |
2024 |
Jan
(86) |
Feb
(50) |
Mar
(324) |
Apr
(209) |
May
(197) |
Jun
(232) |
Jul
(194) |
Aug
(247) |
Sep
(219) |
Oct
(266) |
Nov
(328) |
Dec
(304) |
2025 |
Jan
(191) |
Feb
(115) |
Mar
(137) |
Apr
(32) |
May
(126) |
Jun
(403) |
Jul
(213) |
Aug
(175) |
Sep
|
Oct
|
Nov
|
Dec
|
From: <sv...@op...> - 2024-07-24 09:12:16
|
Author: manx Date: Wed Jul 24 11:12:10 2024 New Revision: 21271 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21271 Log: Merged revision(s) 21269 from trunk/OpenMPT: [Var] Add configure.ac and m4 svn:mime-type. ........ Modified: branches/OpenMPT-1.31/ (props changed) |
Author: manx Date: Wed Jul 24 11:11:45 2024 New Revision: 21270 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21270 Log: [Var] Fix svn:mime-type for various files. Modified: trunk/OpenMPT/build/autotools/ax_cxx_compile_stdcxx.m4 (props changed) trunk/OpenMPT/contrib/fuzzing/fuzz-secondary3.sh (props changed) trunk/OpenMPT/contrib/fuzzing/fuzz.cpp (props changed) trunk/OpenMPT/contrib/libmodplug-0.8.8.5/Makefile.am (props changed) trunk/OpenMPT/contrib/libmodplug-0.8.8.5/m4/ax_cxx_compile_stdcxx.m4 (props changed) trunk/OpenMPT/contrib/libmodplug-0.8.9.0/Makefile.am (props changed) trunk/OpenMPT/contrib/libmodplug-0.8.9.0/m4/ax_cxx_compile_stdcxx.m4 (props changed) trunk/OpenMPT/doc/string_types.md (props changed) trunk/OpenMPT/include/pugixml/LICENSE.md (props changed) trunk/OpenMPT/soundlib/Load_etx.cpp (contents, props changed) trunk/OpenMPT/soundlib/MODTools.h (props changed) trunk/OpenMPT/src/mpt/io/base.hpp (props changed) trunk/OpenMPT/src/mpt/io/io.hpp (props changed) trunk/OpenMPT/src/mpt/io/io_span.hpp (props changed) trunk/OpenMPT/src/mpt/io/io_stdstream.hpp (props changed) trunk/OpenMPT/src/mpt/io/io_virtual_wrapper.hpp (props changed) trunk/OpenMPT/src/mpt/io_read/callbackstream.hpp (props changed) trunk/OpenMPT/src/mpt/io_read/filecursor.hpp (props changed) trunk/OpenMPT/src/mpt/io_read/filecursor_callbackstream.hpp (props changed) trunk/OpenMPT/src/mpt/io_read/filecursor_filename_traits.hpp (props changed) trunk/OpenMPT/src/mpt/io_read/filecursor_memory.hpp (props changed) trunk/OpenMPT/src/mpt/io_read/filecursor_stdstream.hpp (props changed) trunk/OpenMPT/src/mpt/io_read/filecursor_traits_filedata.hpp (props changed) trunk/OpenMPT/src/mpt/io_read/filecursor_traits_memory.hpp (props changed) trunk/OpenMPT/src/mpt/io_read/filedata.hpp (props changed) trunk/OpenMPT/src/mpt/io_read/filedata_base.hpp (props changed) trunk/OpenMPT/src/mpt/io_read/filedata_base_buffered.hpp (props changed) trunk/OpenMPT/src/mpt/io_read/filedata_base_seekable.hpp (props changed) trunk/OpenMPT/src/mpt/io_read/filedata_base_unseekable.hpp (props changed) trunk/OpenMPT/src/mpt/io_read/filedata_callbackstream.hpp (props changed) trunk/OpenMPT/src/mpt/io_read/filedata_memory.hpp (props changed) trunk/OpenMPT/src/mpt/io_read/filedata_stdstream.hpp (props changed) trunk/OpenMPT/src/mpt/io_read/filereader.hpp (props changed) trunk/OpenMPT/src/mpt/io_write/buffer.hpp (props changed) trunk/OpenMPT/src/openmpt/all/BuildSettings.hpp (props changed) trunk/OpenMPT/src/openmpt/base/Endian.hpp (props changed) trunk/OpenMPT/src/openmpt/base/FlagSet.hpp (props changed) trunk/OpenMPT/src/openmpt/base/Types.hpp (props changed) trunk/OpenMPT/src/openmpt/logging/Logger.hpp (props changed) trunk/OpenMPT/src/openmpt/random/ModPlug.hpp (props changed) trunk/OpenMPT/src/openmpt/soundbase/Copy.hpp (props changed) trunk/OpenMPT/src/openmpt/soundbase/CopyMix.hpp (props changed) trunk/OpenMPT/src/openmpt/soundbase/Dither.hpp (props changed) trunk/OpenMPT/src/openmpt/soundbase/DitherModPlug.hpp (props changed) trunk/OpenMPT/src/openmpt/soundbase/DitherNone.hpp (props changed) trunk/OpenMPT/src/openmpt/soundbase/DitherSimple.hpp (props changed) trunk/OpenMPT/src/openmpt/soundbase/MixSample.hpp (props changed) trunk/OpenMPT/src/openmpt/soundbase/MixSampleConvert.hpp (props changed) trunk/OpenMPT/src/openmpt/soundbase/SampleClip.hpp (props changed) trunk/OpenMPT/src/openmpt/soundbase/SampleClipFixedPoint.hpp (props changed) trunk/OpenMPT/src/openmpt/soundbase/SampleConvert.hpp (props changed) trunk/OpenMPT/src/openmpt/soundbase/SampleConvertFixedPoint.hpp (props changed) trunk/OpenMPT/src/openmpt/soundbase/SampleDecode.hpp (props changed) trunk/OpenMPT/src/openmpt/soundbase/SampleEncode.hpp (props changed) trunk/OpenMPT/src/openmpt/soundbase/SampleFormat.hpp (props changed) trunk/OpenMPT/src/openmpt/sounddevice/SoundDevice.hpp (props changed) trunk/OpenMPT/src/openmpt/sounddevice/SoundDeviceASIO.hpp (props changed) trunk/OpenMPT/src/openmpt/sounddevice/SoundDeviceBase.hpp (props changed) trunk/OpenMPT/src/openmpt/sounddevice/SoundDeviceBuffer.hpp (props changed) trunk/OpenMPT/src/openmpt/sounddevice/SoundDeviceCallback.hpp (props changed) trunk/OpenMPT/src/openmpt/sounddevice/SoundDeviceDirectSound.hpp (props changed) trunk/OpenMPT/src/openmpt/sounddevice/SoundDeviceManager.hpp (props changed) trunk/OpenMPT/src/openmpt/sounddevice/SoundDevicePortAudio.hpp (props changed) trunk/OpenMPT/src/openmpt/sounddevice/SoundDevicePulseSimple.hpp (props changed) trunk/OpenMPT/src/openmpt/sounddevice/SoundDevicePulseaudio.hpp (props changed) trunk/OpenMPT/src/openmpt/sounddevice/SoundDeviceRtAudio.hpp (props changed) trunk/OpenMPT/src/openmpt/sounddevice/SoundDeviceUtilities.hpp (props changed) trunk/OpenMPT/src/openmpt/sounddevice/SoundDeviceWaveout.hpp (props changed) Modified: trunk/OpenMPT/soundlib/Load_etx.cpp ============================================================================== --- trunk/OpenMPT/soundlib/Load_etx.cpp Wed Jul 24 11:11:22 2024 (r21269) +++ trunk/OpenMPT/soundlib/Load_etx.cpp Wed Jul 24 11:11:45 2024 (r21270) @@ -1,177 +1,177 @@ -/* - * Load_etx.cpp - * ------------ - * Purpose: EasyTrax (ETX) module loader - * Notes : (currently none) - * Authors: OpenMPT Devs - * The OpenMPT source code is released under the BSD license. Read LICENSE for more details. - */ - - -#include "stdafx.h" -#include "Loaders.h" - -OPENMPT_NAMESPACE_BEGIN - -struct ETXFileHeader -{ - char magic[14]; // 'EASYTRAX 1.0\x01\x00' - uint8 tempo; - uint8 lastPattern; - uint32le orderlistOffset; - uint32le patternsOffset; - uint32le sampleHeadersOffset; - uint32le sampleDataOffset; - - bool IsValid() const - { - return !memcmp(magic, "EASYTRAX 1.0\x01\x00", 14) - && tempo > 0 - && lastPattern <= 127 - && orderlistOffset >= 32 && orderlistOffset < 0x80'0000 - && patternsOffset >= 32 && patternsOffset < 0x80'0000 - && sampleHeadersOffset >= 32 && sampleHeadersOffset < 0x80'0000 - && sampleDataOffset >= 32 && sampleDataOffset < 0x80'0000; - } - - uint32 GetHeaderMinimumAdditionalSize() const - { - return 1024; // Order list - } -}; - -MPT_BINARY_STRUCT(ETXFileHeader, 32) - - -struct ETXSampleHeader -{ - char name[13]; - uint32le offset; // Relative to fileHeader.sampleDataOffset - uint32le length; - uint32le loopStart; // 0xFFFFFFFF if no loop - uint32le sampleRate; - int8 transpose; - int8 finetune; - uint8 zero; - - void ConvertToMPT(ModSample &mptSmp) const - { - mptSmp.Initialize(); - mptSmp.nC5Speed = sampleRate; - mptSmp.nLength = length; - if(loopStart != uint32_max) - { - mptSmp.nLoopStart = loopStart; - mptSmp.nLoopEnd = mptSmp.nLength; - mptSmp.uFlags.set(CHN_LOOP); - } - mptSmp.Transpose((transpose * 100 + finetune) / 1200.0); - } -}; - -MPT_BINARY_STRUCT(ETXSampleHeader, 32) - - -CSoundFile::ProbeResult CSoundFile::ProbeFileHeaderETX(MemoryFileReader file, const uint64 *pfilesize) -{ - ETXFileHeader fileHeader; - if(!file.ReadStruct(fileHeader)) - return ProbeWantMoreData; - if(!fileHeader.IsValid()) - return ProbeFailure; - return ProbeAdditionalSize(file, pfilesize, fileHeader.GetHeaderMinimumAdditionalSize()); -} - - -bool CSoundFile::ReadETX(FileReader &file, ModLoadingFlags loadFlags) -{ - ETXFileHeader fileHeader; - file.Rewind(); - if(!file.ReadStruct(fileHeader) || !fileHeader.IsValid()) - return false; - if(!file.CanRead(fileHeader.GetHeaderMinimumAdditionalSize())) - return false; - if(loadFlags == onlyVerifyHeader) - return true; - - InitializeGlobals(MOD_TYPE_S3M, 4); - m_SongFlags.set(SONG_IMPORTED); - m_playBehaviour.reset(kST3EffectMemory); - m_nMinPeriod = 218; // Highest possible sample playback rate appears to be 65535 Hz - m_nSamples = 128; - Order().SetDefaultTempoInt(fileHeader.tempo); - Order().SetDefaultSpeed(6); - - if(!file.Seek(fileHeader.orderlistOffset)) - return false; - ReadOrderFromFile<uint8>(Order(), file, 1024, 0xFF); - for(ORDERINDEX ord = 0; ord < Order().size(); ord++) - { - if(Order()[ord] == Order().GetInvalidPatIndex()) - Order().resize(ord); - else if(Order()[ord] > 127) - return false; - } - - if(!file.Seek(fileHeader.patternsOffset)) - return false; - Patterns.ResizeArray(fileHeader.lastPattern + 1); - for(PATTERNINDEX pat = 0; pat < Patterns.Size(); pat++) - { - if(!(loadFlags & loadPatternData) || !file.CanRead(1024) || !Patterns.Insert(pat, 64)) - break; - - auto m = Patterns[pat].begin(); - for(ROWINDEX row = 0; row < Patterns[pat].GetNumRows(); row++) - { - for(CHANNELINDEX chn = 0; chn < 4; chn++, m++) - { - const auto [note, vol, instr, unused] = file.ReadArray<uint8, 4>(); - MPT_UNUSED_VARIABLE(unused); - if(note == 0xFF && !chn) - { - if(!Patterns[pat].WriteEffect(EffectWriter(CMD_PATTERNBREAK, 0).Row(std::max(row, ROWINDEX(1)) - 1))) - { - Patterns[pat].Resize(row, false); - break; - } - } else if(note == 0xFE) - { - m->SetEffectCommand(CMD_VOLUMEDOWN_ETX, vol); - } else if(note > 0 && note <= 96) - { - m->note = NOTE_MIDDLEC - 24 + note; - m->instr = instr + 1; - m->SetVolumeCommand(VOLCMD_VOLUME, static_cast<ModCommand::VOL>((std::min(vol, uint8(127)) + 1u) / 2u)); - } - } - } - } - - if(!file.Seek(fileHeader.sampleHeadersOffset)) - return false; - FileReader sampleHeaderChunk = file.ReadChunk(128 * sizeof(ETXSampleHeader)); - for(SAMPLEINDEX smp = 1; smp <= m_nSamples; smp++) - { - ETXSampleHeader sampleHeader; - sampleHeaderChunk.ReadStruct(sampleHeader); - sampleHeader.ConvertToMPT(Samples[smp]); - m_szNames[smp] = mpt::String::ReadBuf(mpt::String::maybeNullTerminated, sampleHeader.name); - if(loadFlags & loadSampleData) - { - if(!file.Seek(fileHeader.sampleDataOffset + sampleHeader.offset)) - return false; - SampleIO(SampleIO::_8bit, SampleIO::mono, SampleIO::littleEndian, SampleIO::unsignedPCM) - .ReadSample(Samples[smp], file); - } - } - - m_modFormat.formatName = UL_("EasyTrax"); - m_modFormat.type = UL_("etx"); - m_modFormat.charset = mpt::Charset::CP437; - - return true; -} - - -OPENMPT_NAMESPACE_END +/* + * Load_etx.cpp + * ------------ + * Purpose: EasyTrax (ETX) module loader + * Notes : (currently none) + * Authors: OpenMPT Devs + * The OpenMPT source code is released under the BSD license. Read LICENSE for more details. + */ + + +#include "stdafx.h" +#include "Loaders.h" + +OPENMPT_NAMESPACE_BEGIN + +struct ETXFileHeader +{ + char magic[14]; // 'EASYTRAX 1.0\x01\x00' + uint8 tempo; + uint8 lastPattern; + uint32le orderlistOffset; + uint32le patternsOffset; + uint32le sampleHeadersOffset; + uint32le sampleDataOffset; + + bool IsValid() const + { + return !memcmp(magic, "EASYTRAX 1.0\x01\x00", 14) + && tempo > 0 + && lastPattern <= 127 + && orderlistOffset >= 32 && orderlistOffset < 0x80'0000 + && patternsOffset >= 32 && patternsOffset < 0x80'0000 + && sampleHeadersOffset >= 32 && sampleHeadersOffset < 0x80'0000 + && sampleDataOffset >= 32 && sampleDataOffset < 0x80'0000; + } + + uint32 GetHeaderMinimumAdditionalSize() const + { + return 1024; // Order list + } +}; + +MPT_BINARY_STRUCT(ETXFileHeader, 32) + + +struct ETXSampleHeader +{ + char name[13]; + uint32le offset; // Relative to fileHeader.sampleDataOffset + uint32le length; + uint32le loopStart; // 0xFFFFFFFF if no loop + uint32le sampleRate; + int8 transpose; + int8 finetune; + uint8 zero; + + void ConvertToMPT(ModSample &mptSmp) const + { + mptSmp.Initialize(); + mptSmp.nC5Speed = sampleRate; + mptSmp.nLength = length; + if(loopStart != uint32_max) + { + mptSmp.nLoopStart = loopStart; + mptSmp.nLoopEnd = mptSmp.nLength; + mptSmp.uFlags.set(CHN_LOOP); + } + mptSmp.Transpose((transpose * 100 + finetune) / 1200.0); + } +}; + +MPT_BINARY_STRUCT(ETXSampleHeader, 32) + + +CSoundFile::ProbeResult CSoundFile::ProbeFileHeaderETX(MemoryFileReader file, const uint64 *pfilesize) +{ + ETXFileHeader fileHeader; + if(!file.ReadStruct(fileHeader)) + return ProbeWantMoreData; + if(!fileHeader.IsValid()) + return ProbeFailure; + return ProbeAdditionalSize(file, pfilesize, fileHeader.GetHeaderMinimumAdditionalSize()); +} + + +bool CSoundFile::ReadETX(FileReader &file, ModLoadingFlags loadFlags) +{ + ETXFileHeader fileHeader; + file.Rewind(); + if(!file.ReadStruct(fileHeader) || !fileHeader.IsValid()) + return false; + if(!file.CanRead(fileHeader.GetHeaderMinimumAdditionalSize())) + return false; + if(loadFlags == onlyVerifyHeader) + return true; + + InitializeGlobals(MOD_TYPE_S3M, 4); + m_SongFlags.set(SONG_IMPORTED); + m_playBehaviour.reset(kST3EffectMemory); + m_nMinPeriod = 218; // Highest possible sample playback rate appears to be 65535 Hz + m_nSamples = 128; + Order().SetDefaultTempoInt(fileHeader.tempo); + Order().SetDefaultSpeed(6); + + if(!file.Seek(fileHeader.orderlistOffset)) + return false; + ReadOrderFromFile<uint8>(Order(), file, 1024, 0xFF); + for(ORDERINDEX ord = 0; ord < Order().size(); ord++) + { + if(Order()[ord] == Order().GetInvalidPatIndex()) + Order().resize(ord); + else if(Order()[ord] > 127) + return false; + } + + if(!file.Seek(fileHeader.patternsOffset)) + return false; + Patterns.ResizeArray(fileHeader.lastPattern + 1); + for(PATTERNINDEX pat = 0; pat < Patterns.Size(); pat++) + { + if(!(loadFlags & loadPatternData) || !file.CanRead(1024) || !Patterns.Insert(pat, 64)) + break; + + auto m = Patterns[pat].begin(); + for(ROWINDEX row = 0; row < Patterns[pat].GetNumRows(); row++) + { + for(CHANNELINDEX chn = 0; chn < 4; chn++, m++) + { + const auto [note, vol, instr, unused] = file.ReadArray<uint8, 4>(); + MPT_UNUSED_VARIABLE(unused); + if(note == 0xFF && !chn) + { + if(!Patterns[pat].WriteEffect(EffectWriter(CMD_PATTERNBREAK, 0).Row(std::max(row, ROWINDEX(1)) - 1))) + { + Patterns[pat].Resize(row, false); + break; + } + } else if(note == 0xFE) + { + m->SetEffectCommand(CMD_VOLUMEDOWN_ETX, vol); + } else if(note > 0 && note <= 96) + { + m->note = NOTE_MIDDLEC - 24 + note; + m->instr = instr + 1; + m->SetVolumeCommand(VOLCMD_VOLUME, static_cast<ModCommand::VOL>((std::min(vol, uint8(127)) + 1u) / 2u)); + } + } + } + } + + if(!file.Seek(fileHeader.sampleHeadersOffset)) + return false; + FileReader sampleHeaderChunk = file.ReadChunk(128 * sizeof(ETXSampleHeader)); + for(SAMPLEINDEX smp = 1; smp <= m_nSamples; smp++) + { + ETXSampleHeader sampleHeader; + sampleHeaderChunk.ReadStruct(sampleHeader); + sampleHeader.ConvertToMPT(Samples[smp]); + m_szNames[smp] = mpt::String::ReadBuf(mpt::String::maybeNullTerminated, sampleHeader.name); + if(loadFlags & loadSampleData) + { + if(!file.Seek(fileHeader.sampleDataOffset + sampleHeader.offset)) + return false; + SampleIO(SampleIO::_8bit, SampleIO::mono, SampleIO::littleEndian, SampleIO::unsignedPCM) + .ReadSample(Samples[smp], file); + } + } + + m_modFormat.formatName = UL_("EasyTrax"); + m_modFormat.type = UL_("etx"); + m_modFormat.charset = mpt::Charset::CP437; + + return true; +} + + +OPENMPT_NAMESPACE_END |
From: <sv...@op...> - 2024-07-24 09:11:34
|
Author: manx Date: Wed Jul 24 11:11:22 2024 New Revision: 21269 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21269 Log: [Var] Add configure.ac and m4 svn:mime-type. Modified: trunk/OpenMPT/ (props changed) |
From: <sv...@op...> - 2024-07-23 21:10:39
|
Author: sagamusix Date: Tue Jul 23 23:10:25 2024 New Revision: 21268 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21268 Log: [Ref] Silence more cppcheck warnings. Modified: trunk/OpenMPT/mptrack/View_ins.cpp trunk/OpenMPT/mptrack/View_pat.cpp trunk/OpenMPT/mptrack/View_smp.cpp trunk/OpenMPT/mptrack/Vstplug.cpp Modified: trunk/OpenMPT/mptrack/View_ins.cpp ============================================================================== --- trunk/OpenMPT/mptrack/View_ins.cpp Tue Jul 23 21:28:11 2024 (r21267) +++ trunk/OpenMPT/mptrack/View_ins.cpp Tue Jul 23 23:10:25 2024 (r21268) @@ -236,6 +236,7 @@ } +// cppcheck-suppress duplInheritedMember void CViewInstrument::OnSetFocus(CWnd *pOldWnd) { CModScrollView::OnSetFocus(pOldWnd); Modified: trunk/OpenMPT/mptrack/View_pat.cpp ============================================================================== --- trunk/OpenMPT/mptrack/View_pat.cpp Tue Jul 23 21:28:11 2024 (r21267) +++ trunk/OpenMPT/mptrack/View_pat.cpp Tue Jul 23 23:10:25 2024 (r21268) @@ -766,6 +766,7 @@ } +// cppcheck-suppress duplInheritedMember void CViewPattern::OnSetFocus(CWnd *pOldWnd) { CModScrollView::OnSetFocus(pOldWnd); Modified: trunk/OpenMPT/mptrack/View_smp.cpp ============================================================================== --- trunk/OpenMPT/mptrack/View_smp.cpp Tue Jul 23 21:28:11 2024 (r21267) +++ trunk/OpenMPT/mptrack/View_smp.cpp Tue Jul 23 23:10:25 2024 (r21268) @@ -443,6 +443,7 @@ } +// cppcheck-suppress duplInheritedMember void CViewSample::OnSetFocus(CWnd *pOldWnd) { CModScrollView::OnSetFocus(pOldWnd); Modified: trunk/OpenMPT/mptrack/Vstplug.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Vstplug.cpp Tue Jul 23 21:28:11 2024 (r21267) +++ trunk/OpenMPT/mptrack/Vstplug.cpp Tue Jul 23 23:10:25 2024 (r21268) @@ -742,7 +742,7 @@ #elif MPT_OS_GENERIC_UNIX extensions += "*."; extensions += type.unixType; -#else +#elif !defined(CPPCHECK) #error Platform-specific code missing #endif extensions += "|"; |
From: <sv...@op...> - 2024-07-23 19:28:19
|
Author: sagamusix Date: Tue Jul 23 21:28:11 2024 New Revision: 21267 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21267 Log: [Fix] When restoring keyboard focus, avoid setting it to disabled controls (https://bugs.openmpt.org/view.php?id=1800). [Mod] Forget previous keyboard focus inside tab when switching between tabs (https://bugs.openmpt.org/view.php?id=1800). [Fix] When switching from sample to OPL slot, make sure that we have a valid keyboard focus (https://bugs.openmpt.org/view.php?id=1799). Modified: trunk/OpenMPT/mptrack/Globals.cpp trunk/OpenMPT/mptrack/Globals.h trunk/OpenMPT/mptrack/View_smp.cpp Modified: trunk/OpenMPT/mptrack/Globals.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Globals.cpp Tue Jul 23 21:12:28 2024 (r21266) +++ trunk/OpenMPT/mptrack/Globals.cpp Tue Jul 23 21:28:11 2024 (r21267) @@ -30,7 +30,7 @@ static void RestoreLastFocusItem(HWND parent, HWND &lastFocusItem) { - if(lastFocusItem && ::IsChild(parent, lastFocusItem)) + if(lastFocusItem && ::IsChild(parent, lastFocusItem) && ::IsWindowEnabled(lastFocusItem)) ::SetFocus(lastFocusItem); else if(HWND firstWnd = ::GetTopWindow(parent)) ::SetFocus(lastFocusItem = firstWnd); @@ -113,7 +113,7 @@ switch(wParam) { case CTRLMSG_SETVIEWWND: - m_hWndView = (HWND)lParam; + m_hWndView = reinterpret_cast<HWND>(lParam); break; case CTRLMSG_ACTIVATEPAGE: @@ -365,6 +365,7 @@ { m_nActiveDlg = page; pDlg = m_Pages[static_cast<size_t>(page)]; + pDlg->ForgetLastFocusItem(); } else // Ctrl window is not created yet - creating one. { m_nActiveDlg = Page::Unknown; @@ -405,7 +406,8 @@ pMainFrm->SetXInfoText(_T("")); pDlg->ShowWindow(SW_SHOW); static_cast<CChildFrame *>(GetParentFrame())->SetSplitterHeight(pDlg->GetSplitPosRef()); - if (m_hWndMDI) ::PostMessage(m_hWndMDI, WM_MOD_CHANGEVIEWCLASS, (WPARAM)lParam, (LPARAM)pDlg); + if(m_hWndMDI) + ::PostMessage(m_hWndMDI, WM_MOD_CHANGEVIEWCLASS, (WPARAM)lParam, (LPARAM)pDlg); return true; } Modified: trunk/OpenMPT/mptrack/Globals.h ============================================================================== --- trunk/OpenMPT/mptrack/Globals.h Tue Jul 23 21:12:28 2024 (r21266) +++ trunk/OpenMPT/mptrack/Globals.h Tue Jul 23 21:28:11 2024 (r21267) @@ -63,6 +63,7 @@ virtual Setting<LONG> &GetSplitPosRef() = 0; void SaveLastFocusItem(HWND hwnd); + void ForgetLastFocusItem() { m_lastFocusItem = nullptr; } void RestoreLastFocusItem(); afx_msg void OnEditCut() { if (m_hWndView) ::SendMessage(m_hWndView, WM_COMMAND, ID_EDIT_CUT, 0); } Modified: trunk/OpenMPT/mptrack/View_smp.cpp ============================================================================== --- trunk/OpenMPT/mptrack/View_smp.cpp Tue Jul 23 21:12:28 2024 (r21266) +++ trunk/OpenMPT/mptrack/View_smp.cpp Tue Jul 23 21:28:11 2024 (r21267) @@ -421,28 +421,25 @@ } return; } + const bool hadFocus = m_oplEditor && m_oplEditor->IsChild(GetFocus()); CSoundFile &sndFile = GetDocument()->GetSoundFile(); - ModSample &sample = sndFile.GetSample(m_nSample); - if(sample.uFlags[CHN_ADLIB]) + if(!m_oplEditor) { - if(!m_oplEditor) + try { - try - { - m_oplEditor = std::make_unique<OPLInstrDlg>(*this, sndFile); - } catch(mpt::out_of_memory e) - { - mpt::delete_out_of_memory(e); - } - } - if(m_oplEditor) + m_oplEditor = std::make_unique<OPLInstrDlg>(*this, sndFile); + } catch(mpt::out_of_memory e) { - m_oplEditor->SetPatch(sample.adlib); - m_oplEditor->EnableWindow(TRUE); - auto size = m_oplEditor->GetMinimumSize(); - m_oplEditor->SetWindowPos(nullptr, -m_nScrollPosX, -m_nScrollPosY, std::max(size.cx, m_rcClient.right), std::max(size.cy, m_rcClient.bottom), SWP_NOZORDER | SWP_NOACTIVATE | SWP_SHOWWINDOW); + mpt::delete_out_of_memory(e); + return; } } + m_oplEditor->SetPatch(sndFile.GetSample(m_nSample).adlib); + m_oplEditor->EnableWindow(TRUE); + auto size = m_oplEditor->GetMinimumSize(); + m_oplEditor->SetWindowPos(nullptr, -m_nScrollPosX, -m_nScrollPosY, std::max(size.cx, m_rcClient.right), std::max(size.cy, m_rcClient.bottom), SWP_NOZORDER | SWP_NOACTIVATE | SWP_SHOWWINDOW); + if(!hadFocus) + m_oplEditor->GetTopWindow()->SetFocus(); } |
From: <sv...@op...> - 2024-07-23 19:12:40
|
Author: sagamusix Date: Tue Jul 23 21:12:28 2024 New Revision: 21266 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21266 Log: [Ref] Silence cppcheck false-positives. Modified: trunk/OpenMPT/mptrack/View_ins.h trunk/OpenMPT/mptrack/View_pat.h trunk/OpenMPT/mptrack/View_smp.h Modified: trunk/OpenMPT/mptrack/View_ins.h ============================================================================== --- trunk/OpenMPT/mptrack/View_ins.h Tue Jul 23 20:02:36 2024 (r21265) +++ trunk/OpenMPT/mptrack/View_ins.h Tue Jul 23 21:12:28 2024 (r21266) @@ -195,6 +195,7 @@ protected: //{{AFX_MSG(CViewInstrument) afx_msg BOOL OnEraseBkgnd(CDC *) { return TRUE; } + // cppcheck-suppress duplInheritedMember afx_msg void OnSetFocus(CWnd *pOldWnd); afx_msg void OnSize(UINT nType, int cx, int cy); // cppcheck-suppress duplInheritedMember Modified: trunk/OpenMPT/mptrack/View_pat.h ============================================================================== --- trunk/OpenMPT/mptrack/View_pat.h Tue Jul 23 20:02:36 2024 (r21265) +++ trunk/OpenMPT/mptrack/View_pat.h Tue Jul 23 21:12:28 2024 (r21266) @@ -410,6 +410,7 @@ afx_msg void OnLButtonDblClk(UINT, CPoint); afx_msg void OnRButtonDown(UINT, CPoint); afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar *pScrollBar); + // cppcheck-suppress duplInheritedMember afx_msg void OnSetFocus(CWnd *pOldWnd); afx_msg void OnKillFocus(CWnd *pNewWnd); afx_msg void OnEditCut(); Modified: trunk/OpenMPT/mptrack/View_smp.h ============================================================================== --- trunk/OpenMPT/mptrack/View_smp.h Tue Jul 23 20:02:36 2024 (r21265) +++ trunk/OpenMPT/mptrack/View_smp.h Tue Jul 23 21:12:28 2024 (r21266) @@ -174,6 +174,7 @@ protected: //{{AFX_MSG(CViewSample) afx_msg BOOL OnEraseBkgnd(CDC *) { return TRUE; } + // cppcheck-suppress duplInheritedMember afx_msg void OnSetFocus(CWnd *pOldWnd); afx_msg void OnSize(UINT nType, int cx, int cy); afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpncsp); |
From: <sv...@op...> - 2024-07-23 18:02:44
|
Author: sagamusix Date: Tue Jul 23 20:02:36 2024 New Revision: 21265 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21265 Log: [Imp] Note Properties: For XM, automatically round to the 16 available panning positions. Modified: trunk/OpenMPT/mptrack/EffectInfo.cpp trunk/OpenMPT/mptrack/EffectInfo.h trunk/OpenMPT/mptrack/PatternEditorDialogs.cpp Modified: trunk/OpenMPT/mptrack/EffectInfo.cpp ============================================================================== --- trunk/OpenMPT/mptrack/EffectInfo.cpp Tue Jul 23 13:33:06 2024 (r21264) +++ trunk/OpenMPT/mptrack/EffectInfo.cpp Tue Jul 23 20:02:36 2024 (r21265) @@ -996,25 +996,29 @@ bool EffectInfo::GetVolCmdInfo(UINT ndx, CString *s, ModCommand::VOL *prangeMin, ModCommand::VOL *prangeMax) const { - if (s) s->Empty(); - if (prangeMin) *prangeMin = 0; - if (prangeMax) *prangeMax = 0; - if (ndx >= std::size(gVolCmdInfo)) return false; - if (s) - { + if(s) + s->Empty(); + if(prangeMin) + *prangeMin = 0; + if(prangeMax) + *prangeMax = 0; + if(ndx >= std::size(gVolCmdInfo)) + return false; + if(s) s->Format(_T("%c: %s"), sndFile.GetModSpecifications().GetVolEffectLetter(GetVolCmdFromIndex(ndx)), gVolCmdInfo[ndx].name); - } - if ((prangeMin) && (prangeMax)) + if(prangeMin && prangeMax) { switch(gVolCmdInfo[ndx].volCmd) { case VOLCMD_VOLUME: - case VOLCMD_PANNING: *prangeMax = 64; break; - + case VOLCMD_PANNING: + *prangeMax = (sndFile.GetType() & MOD_TYPE_XM) ? 15 : 64; + break; default: *prangeMax = (sndFile.GetType() & MOD_TYPE_XM) ? 15 : 9; + break; } } return (sndFile.GetType() & gVolCmdInfo[ndx].supportedFormats); @@ -1114,5 +1118,24 @@ return true; } + // Map an effect value to slider position +UINT EffectInfo::MapVolumeToPos(VolumeCommand cmd, ModCommand::VOL param) const +{ + if(cmd == VOLCMD_PANNING && sndFile.GetType() == MOD_TYPE_XM) + return param / 4u; + else + return param; +} + + +// Map slider position to an effect value +ModCommand::VOL EffectInfo::MapPosToVolume(VolumeCommand cmd, UINT pos) const +{ + if(cmd == VOLCMD_PANNING && sndFile.GetType() == MOD_TYPE_XM) + return static_cast<ModCommand::VOL>(std::min(pos * 4u, 64u)); + else + return static_cast<ModCommand::VOL>(std::min(pos, 64u)); +} + OPENMPT_NAMESPACE_END Modified: trunk/OpenMPT/mptrack/EffectInfo.h ============================================================================== --- trunk/OpenMPT/mptrack/EffectInfo.h Tue Jul 23 13:33:06 2024 (r21264) +++ trunk/OpenMPT/mptrack/EffectInfo.h Tue Jul 23 20:02:36 2024 (r21265) @@ -62,6 +62,10 @@ bool GetVolCmdInfo(UINT ndx, CString *s, ModCommand::VOL *prangeMin = nullptr, ModCommand::VOL *prangeMax = nullptr) const; // Get effect name and parameter description bool GetVolCmdParamInfo(const ModCommand &m, CString *s) const; + // Map an effect value to slider position + UINT MapVolumeToPos(VolumeCommand cmd, ModCommand::VOL param) const; + // Map slider position to an effect value + ModCommand::VOL MapPosToVolume(VolumeCommand cmd, UINT pos) const; }; OPENMPT_NAMESPACE_END Modified: trunk/OpenMPT/mptrack/PatternEditorDialogs.cpp ============================================================================== --- trunk/OpenMPT/mptrack/PatternEditorDialogs.cpp Tue Jul 23 13:33:06 2024 (r21264) +++ trunk/OpenMPT/mptrack/PatternEditorDialogs.cpp Tue Jul 23 20:02:36 2024 (r21265) @@ -598,7 +598,7 @@ sldVolParam.EnableWindow(TRUE); sldVolParam.SetRange(rangeMin, rangeMax); Limit(m->vol, rangeMin, rangeMax); - sldVolParam.SetPos(m->vol); + sldVolParam.SetPos(effectInfo.MapVolumeToPos(m->volcmd, m->vol)); } else { // Why does this not update the display at all? @@ -714,7 +714,7 @@ newVolCmd = effectInfo.GetVolCmdFromIndex(static_cast<UINT>(cbnVolCmd.GetItemData(n))); } - newVol = static_cast<ModCommand::VOL>(sldVolParam.GetPos()); + newVol = effectInfo.MapPosToVolume(newVolCmd, sldVolParam.GetPos()); const bool volCmdChanged = m->volcmd != newVolCmd; if(volCmdChanged || m->vol != newVol) @@ -1447,7 +1447,7 @@ bool update = false; // Volume slider - if(bar == reinterpret_cast<CScrollBar *>(&m_volSlider)) + if(bar->m_hWnd == m_volSlider.m_hWnd) { uint16 pos = static_cast<uint16>(m_volSlider.GetPos()); PrepareUndo(); @@ -1458,7 +1458,7 @@ } } // Pan slider - if(bar == reinterpret_cast<CScrollBar *>(&m_panSlider)) + if(bar->m_hWnd == m_panSlider.m_hWnd) { uint16 pos = static_cast<uint16>(m_panSlider.GetPos()); PrepareUndo(); |
From: <sv...@op...> - 2024-07-23 11:33:13
|
Author: manx Date: Tue Jul 23 13:33:06 2024 New Revision: 21264 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21264 Log: [Fix] mptTime: Fix typo. Modified: trunk/OpenMPT/common/mptTime.cpp trunk/OpenMPT/common/mptTime.h Modified: trunk/OpenMPT/common/mptTime.cpp ============================================================================== --- trunk/OpenMPT/common/mptTime.cpp Tue Jul 23 11:35:35 2024 (r21263) +++ trunk/OpenMPT/common/mptTime.cpp Tue Jul 23 13:33:06 2024 (r21264) @@ -17,7 +17,7 @@ #include "mptStringBuffer.h" -#if MPT_CXX_AT_LEAST(20) && !defined(MPT_LIBCXX_QUIRK_NO_CHRONO) && !defined(MPT_LIBCXX_QUIRK_NO_CHRONO_DATE) && !(defined(MOGPLUG_TRACKER) && defined(MPT_LIBCXX_QUIRK_CHRONO_DATE_NO_ZONED_TIME)) +#if MPT_CXX_AT_LEAST(20) && !defined(MPT_LIBCXX_QUIRK_NO_CHRONO) && !defined(MPT_LIBCXX_QUIRK_NO_CHRONO_DATE) && !(defined(MODPLUG_TRACKER) && defined(MPT_LIBCXX_QUIRK_CHRONO_DATE_NO_ZONED_TIME)) #include <chrono> #endif Modified: trunk/OpenMPT/common/mptTime.h ============================================================================== --- trunk/OpenMPT/common/mptTime.h Tue Jul 23 11:35:35 2024 (r21263) +++ trunk/OpenMPT/common/mptTime.h Tue Jul 23 13:33:06 2024 (r21264) @@ -175,7 +175,7 @@ } // namespace nochrono -#if MPT_CXX_AT_LEAST(20) && !defined(MPT_LIBCXX_QUIRK_NO_CHRONO) && !defined(MPT_LIBCXX_QUIRK_NO_CHRONO_DATE) && !(defined(MOGPLUG_TRACKER) && defined(MPT_LIBCXX_QUIRK_CHRONO_DATE_NO_ZONED_TIME)) +#if MPT_CXX_AT_LEAST(20) && !defined(MPT_LIBCXX_QUIRK_NO_CHRONO) && !defined(MPT_LIBCXX_QUIRK_NO_CHRONO_DATE) && !(defined(MODPLUG_TRACKER) && defined(MPT_LIBCXX_QUIRK_CHRONO_DATE_NO_ZONED_TIME)) using Unix = std::chrono::system_clock::time_point; |
From: <sv...@op...> - 2024-07-23 09:35:47
|
Author: manx Date: Tue Jul 23 11:35:35 2024 New Revision: 21263 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21263 Log: [Fix] mptTime: Work-around missing std::chrono::zoned_time with Wine Integration in C++20 mode with libstdc++ before 13. Modified: trunk/OpenMPT/common/mptTime.cpp trunk/OpenMPT/common/mptTime.h Modified: trunk/OpenMPT/common/mptTime.cpp ============================================================================== --- trunk/OpenMPT/common/mptTime.cpp Tue Jul 23 11:35:20 2024 (r21262) +++ trunk/OpenMPT/common/mptTime.cpp Tue Jul 23 11:35:35 2024 (r21263) @@ -17,7 +17,7 @@ #include "mptStringBuffer.h" -#if MPT_CXX_AT_LEAST(20) && !defined(MPT_LIBCXX_QUIRK_NO_CHRONO) && !defined(MPT_LIBCXX_QUIRK_NO_CHRONO_DATE) +#if MPT_CXX_AT_LEAST(20) && !defined(MPT_LIBCXX_QUIRK_NO_CHRONO) && !defined(MPT_LIBCXX_QUIRK_NO_CHRONO_DATE) && !(defined(MOGPLUG_TRACKER) && defined(MPT_LIBCXX_QUIRK_CHRONO_DATE_NO_ZONED_TIME)) #include <chrono> #endif Modified: trunk/OpenMPT/common/mptTime.h ============================================================================== --- trunk/OpenMPT/common/mptTime.h Tue Jul 23 11:35:20 2024 (r21262) +++ trunk/OpenMPT/common/mptTime.h Tue Jul 23 11:35:35 2024 (r21263) @@ -175,7 +175,7 @@ } // namespace nochrono -#if MPT_CXX_AT_LEAST(20) && !defined(MPT_LIBCXX_QUIRK_NO_CHRONO) && !defined(MPT_LIBCXX_QUIRK_NO_CHRONO_DATE) +#if MPT_CXX_AT_LEAST(20) && !defined(MPT_LIBCXX_QUIRK_NO_CHRONO) && !defined(MPT_LIBCXX_QUIRK_NO_CHRONO_DATE) && !(defined(MOGPLUG_TRACKER) && defined(MPT_LIBCXX_QUIRK_CHRONO_DATE_NO_ZONED_TIME)) using Unix = std::chrono::system_clock::time_point; |
From: <sv...@op...> - 2024-07-23 09:35:32
|
Author: manx Date: Tue Jul 23 11:35:20 2024 New Revision: 21262 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21262 Log: [Imp] mpt/base/detect_quirks.hpp: Add MPT_LIBCXX_QUIRK_CHRONO_DATE_NO_ZONED_TIME for libstdc++ before 13. Modified: trunk/OpenMPT/src/mpt/base/detect_quirks.hpp Modified: trunk/OpenMPT/src/mpt/base/detect_quirks.hpp ============================================================================== --- trunk/OpenMPT/src/mpt/base/detect_quirks.hpp Tue Jul 23 10:14:45 2024 (r21261) +++ trunk/OpenMPT/src/mpt/base/detect_quirks.hpp Tue Jul 23 11:35:20 2024 (r21262) @@ -289,7 +289,9 @@ #define MPT_LIBCXX_QUIRK_CHRONO_TZ_MEMLEAK #endif #endif - +#if MPT_LIBCXX_GNU_BEFORE(13) +#define MPT_LIBCXX_QUIRK_CHRONO_DATE_NO_ZONED_TIME +#endif #if MPT_MSVC_AT_LEAST(2022, 6) && MPT_MSVC_BEFORE(2022, 7) // std::chrono triggers ICE in VS2022 17.6.0, see <https://developercommunity.visualstudio.com/t/INTERNAL-COMPILER-ERROR-when-compiling-s/10366948>. #define MPT_LIBCXX_QUIRK_CHRONO_DATE_BROKEN_ZONED_TIME |
From: <sv...@op...> - 2024-07-23 08:14:51
|
Author: manx Date: Tue Jul 23 10:14:45 2024 New Revision: 21261 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21261 Log: [Mod] OpenMPT: Version is now 1.32.00.20 Modified: trunk/OpenMPT/common/versionNumber.h Modified: trunk/OpenMPT/common/versionNumber.h ============================================================================== --- trunk/OpenMPT/common/versionNumber.h Tue Jul 23 10:14:15 2024 (r21260) +++ trunk/OpenMPT/common/versionNumber.h Tue Jul 23 10:14:45 2024 (r21261) @@ -18,6 +18,6 @@ #define VER_MAJORMAJOR 1 #define VER_MAJOR 32 #define VER_MINOR 00 -#define VER_MINORMINOR 19 +#define VER_MINORMINOR 20 OPENMPT_NAMESPACE_END |
From: <sv...@op...> - 2024-07-23 08:14:22
|
Author: manx Date: Tue Jul 23 10:14:15 2024 New Revision: 21260 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21260 Log: [Imp] build: Wine Integration: Enable C++23 and C23 if available. Fixes <https://bugs.openmpt.org/view.php?id=1803> partially. Modified: trunk/OpenMPT/build/wine/native_support.mk trunk/OpenMPT/build/wine/wine_wrapper.mk Modified: trunk/OpenMPT/build/wine/native_support.mk ============================================================================== --- trunk/OpenMPT/build/wine/native_support.mk Tue Jul 23 09:20:30 2024 (r21259) +++ trunk/OpenMPT/build/wine/native_support.mk Tue Jul 23 10:14:15 2024 (r21260) @@ -79,10 +79,37 @@ MPT_TRY_PULSEAUDIO?=1 MPT_TRY_RTAUDIO?=1 -CPPFLAGS += $(MPT_ARCH_TARGET) -Icommon -Isrc -Iinclude/nlohmann-json/include -Iinclude -CXXFLAGS += $(MPT_ARCH_TARGET) -std=gnu++17 -fpermissive -fPIC -fvisibility=hidden -CFLAGS += $(MPT_ARCH_TARGET) -std=c99 -fPIC -fvisibility=hidden -LDFLAGS += $(MPT_ARCH_TARGET) +CPPFLAGS += $(MPT_ARCH_TARGET) +CXXFLAGS += $(MPT_ARCH_TARGET) +CFLAGS += $(MPT_ARCH_TARGET) +LDFLAGS += $(MPT_ARCH_TARGET) +LDLIBS += +ARFLAGS += + +ifeq ($(shell printf '\n' > build/wine/empty.cpp ; if $(CXX) -std=gnu++23 -c build/wine/empty.cpp -o build/wine/empty.out > /dev/null 2>&1 ; then echo 'gnu++23' ; fi ), gnu++23) +CXXFLAGS += -std=gnu++23 +else ifeq ($(shell printf '\n' > build/wine/empty.cpp ; if $(CXX) -std=gnu++20 -c build/wine/empty.cpp -o build/wine/empty.out > /dev/null 2>&1 ; then echo 'gnu++20' ; fi ), gnu++20) +CXXFLAGS += -std=gnu++20 +else +CXXFLAGS += -std=gnu++17 +endif + +ifeq ($(shell printf '\n' > build/wine/empty.c ; if $(CC) -std=c23 -c build/wine/empty.c -o build/wine/empty.out > /dev/null 2>&1 ; then echo 'c23' ; fi ), c23) +CFLAGS += -std=c23 +else ifeq ($(shell printf '\n' > build/wine/empty.c ; if $(CC) -std=c18 -c build/wine/empty.c -o build/wine/empty.out > /dev/null 2>&1 ; then echo 'c18' ; fi ), c18) +CFLAGS += -std=c18 +else ifeq ($(shell printf '\n' > build/wine/empty.c ; if $(CC) -std=c17 -c build/wine/empty.c -o build/wine/empty.out > /dev/null 2>&1 ; then echo 'c17' ; fi ), c17) +CFLAGS += -std=c17 +else ifeq ($(shell printf '\n' > build/wine/empty.c ; if $(CC) -std=c11 -c build/wine/empty.c -o build/wine/empty.out > /dev/null 2>&1 ; then echo 'c11' ; fi ), c11) +CFLAGS += -std=c11 +else +CFLAGS += -std=c99 +endif + +CPPFLAGS += -Icommon -Isrc -Iinclude/nlohmann-json/include -Iinclude +CXXFLAGS += -fpermissive -fPIC -fvisibility=hidden +CFLAGS += -fPIC -fvisibility=hidden +LDFLAGS += LDLIBS += -lm -lpthread ARFLAGS += Modified: trunk/OpenMPT/build/wine/wine_wrapper.mk ============================================================================== --- trunk/OpenMPT/build/wine/wine_wrapper.mk Tue Jul 23 09:20:30 2024 (r21259) +++ trunk/OpenMPT/build/wine/wine_wrapper.mk Tue Jul 23 10:14:15 2024 (r21260) @@ -76,11 +76,38 @@ MPT_ARCH_TARGET:=-m$(MPT_ARCH_BITS) endif -CPPFLAGS += $(MPT_ARCH_TARGET) -DMPT_WINEGCC -Icommon -CXXFLAGS += $(MPT_ARCH_TARGET) -std=gnu++17 -fpermissive -fPIC -fvisibility=hidden -CFLAGS += $(MPT_ARCH_TARGET) -std=gnu99 -fPIC -fvisibility=hidden -LDFLAGS += $(MPT_ARCH_TARGET) -LDLIBS += -lm +CPPFLAGS += $(MPT_ARCH_TARGET) +CXXFLAGS += $(MPT_ARCH_TARGET) +CFLAGS += $(MPT_ARCH_TARGET) +LDFLAGS += $(MPT_ARCH_TARGET) +LDLIBS += +ARFLAGS += + +ifeq ($(shell printf '\n' > build/wine/empty.cpp ; if $(WINEGXX) -std=gnu++23 -c build/wine/empty.cpp -o build/wine/empty.out > /dev/null 2>&1 ; then echo 'gnu++23' ; fi ), gnu++23) +CXXFLAGS += -std=gnu++23 +else ifeq ($(shell printf '\n' > build/wine/empty.cpp ; if $(WINEGXX) -std=gnu++20 -c build/wine/empty.cpp -o build/wine/empty.out > /dev/null 2>&1 ; then echo 'gnu++20' ; fi ), gnu++20) +CXXFLAGS += -std=gnu++20 +else +CXXFLAGS += -std=gnu++17 +endif + +ifeq ($(shell printf '\n' > build/wine/empty.c ; if $(WINEGXX) -std=gnu23 -c build/wine/empty.c -o build/wine/empty.out > /dev/null 2>&1 ; then echo 'gnu' ; fi ), gnu23) +CFLAGS += -std=gnu23 +else ifeq ($(shell printf '\n' > build/wine/empty.c ; if $(WINEGXX) -std=gnu18 -c build/wine/empty.c -o build/wine/empty.out > /dev/null 2>&1 ; then echo 'gnu18' ; fi ), gnu18) +CFLAGS += -std=gnu18 +else ifeq ($(shell printf '\n' > build/wine/empty.c ; if $(WINEGXX) -std=gnu17 -c build/wine/empty.c -o build/wine/empty.out > /dev/null 2>&1 ; then echo 'gnu17' ; fi ), gnu17) +CFLAGS += -std=gnu17 +else ifeq ($(shell printf '\n' > build/wine/empty.c ; if $(WINEGXX) -std=gnu11 -c build/wine/empty.c -o build/wine/empty.out > /dev/null 2>&1 ; then echo 'gnu11' ; fi ), gnu11) +CFLAGS += -std=gnu11 +else +CFLAGS += -std=gnu99 +endif + +CPPFLAGS += -DMPT_WINEGCC -Icommon +CXXFLAGS += -fpermissive -fPIC -fvisibility=hidden +CFLAGS += -fPIC -fvisibility=hidden +LDFLAGS += +LDLIBS += -lm ARFLAGS += CXXFLAGS += -Os |
From: <sv...@op...> - 2024-07-23 07:20:43
|
Author: manx Date: Tue Jul 23 09:20:30 2024 New Revision: 21259 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21259 Log: [Mod] build: cppcheck: Get C and C++ standard versions from commandline. Modified: trunk/OpenMPT/build/auto/cppcheck_openmpt.sh Modified: trunk/OpenMPT/build/auto/cppcheck_openmpt.sh ============================================================================== --- trunk/OpenMPT/build/auto/cppcheck_openmpt.sh Tue Jul 23 08:58:23 2024 (r21258) +++ trunk/OpenMPT/build/auto/cppcheck_openmpt.sh Tue Jul 23 09:20:30 2024 (r21259) @@ -8,7 +8,9 @@ CPPCHECK_DEFINES="-DMODPLUG_TRACKER -DMPT_BUILD_MSVC -DMPT_BUILD_MSVC_STATIC" -case ${1} in +CPPCHECK_STD=${1} + +case ${2} in win32W) CPPCHECK_PLATFORM="--platform=win32W -D_WIN32 -DWIN32 -D_UNICODE -DUNICODE -D_WINDOWS -DWINDOWS -D_MFC_VER" ;; @@ -23,7 +25,7 @@ ;; esac -CPPCHECK_OPTIONS=${2} +CPPCHECK_OPTIONS=${3} CPPCHECK_FILES="common/ soundbase/ sounddev/ sounddsp/ soundlib/ test/ unarchiver/ mptrack/ pluginBridge/" @@ -32,6 +34,6 @@ echo "Platform: $CPPCHECK_PLATFORM" echo "Checking config ..." -cppcheck -j $NPROC -DCPPCHECK -DMPT_CPPCHECK_CUSTOM $CPPCHECK_PLATFORM --std=c11 --std=c++17 --library=windows.cfg --library=microsoft_atl.cfg --library=mfc.cfg --library=build/cppcheck/mfc-extras.cfg --library=build/cppcheck/nlohmann-json.cfg --suppressions-list=build/cppcheck/nlohmann-json.suppressions.txt --suppressions-list=build/cppcheck/r8brain.suppressions.txt --enable=warning --inline-suppr --template='{file}:{line}: warning: {severity}: {message} [{id}]' --suppress=missingIncludeSystem --suppress=uninitMemberVar $CPPCHECK_OPTIONS $CPPCHECK_DEFINES $CPPCHECK_INCLUDES --check-level=exhaustive --check-config --suppress=unmatchedSuppression $CPPCHECK_FILES +cppcheck -j $NPROC -DCPPCHECK -DMPT_CPPCHECK_CUSTOM $CPPCHECK_PLATFORM $CPPCHECK_STD --library=windows.cfg --library=microsoft_atl.cfg --library=mfc.cfg --library=build/cppcheck/mfc-extras.cfg --library=build/cppcheck/nlohmann-json.cfg --suppressions-list=build/cppcheck/nlohmann-json.suppressions.txt --suppressions-list=build/cppcheck/r8brain.suppressions.txt --enable=warning --inline-suppr --template='{file}:{line}: warning: {severity}: {message} [{id}]' --suppress=missingIncludeSystem --suppress=uninitMemberVar $CPPCHECK_OPTIONS $CPPCHECK_DEFINES $CPPCHECK_INCLUDES --check-level=exhaustive --check-config --suppress=unmatchedSuppression $CPPCHECK_FILES echo "Checking C++ ..." -cppcheck -j $NPROC -DCPPCHECK -DMPT_CPPCHECK_CUSTOM $CPPCHECK_PLATFORM --std=c11 --std=c++17 --library=windows.cfg --library=microsoft_atl.cfg --library=mfc.cfg --library=build/cppcheck/mfc-extras.cfg --library=build/cppcheck/nlohmann-json.cfg --suppressions-list=build/cppcheck/nlohmann-json.suppressions.txt --suppressions-list=build/cppcheck/r8brain.suppressions.txt --enable=warning --inline-suppr --template='{file}:{line}: warning: {severity}: {message} [{id}]' --suppress=missingIncludeSystem --suppress=uninitMemberVar $CPPCHECK_OPTIONS $CPPCHECK_DEFINES $CPPCHECK_INCLUDES --check-level=exhaustive $CPPCHECK_FILES +cppcheck -j $NPROC -DCPPCHECK -DMPT_CPPCHECK_CUSTOM $CPPCHECK_PLATFORM $CPPCHECK_STD --library=windows.cfg --library=microsoft_atl.cfg --library=mfc.cfg --library=build/cppcheck/mfc-extras.cfg --library=build/cppcheck/nlohmann-json.cfg --suppressions-list=build/cppcheck/nlohmann-json.suppressions.txt --suppressions-list=build/cppcheck/r8brain.suppressions.txt --enable=warning --inline-suppr --template='{file}:{line}: warning: {severity}: {message} [{id}]' --suppress=missingIncludeSystem --suppress=uninitMemberVar $CPPCHECK_OPTIONS $CPPCHECK_DEFINES $CPPCHECK_INCLUDES --check-level=exhaustive $CPPCHECK_FILES |
From: <sv...@op...> - 2024-07-23 06:58:35
|
Author: manx Date: Tue Jul 23 08:58:23 2024 New Revision: 21258 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21258 Log: [Imp] build: Makefile: cppcheck: Honor STDCXX and STC options. Modified: trunk/OpenMPT/Makefile Modified: trunk/OpenMPT/Makefile ============================================================================== --- trunk/OpenMPT/Makefile Tue Jul 23 07:37:43 2024 (r21257) +++ trunk/OpenMPT/Makefile Tue Jul 23 08:58:23 2024 (r21258) @@ -1044,7 +1044,21 @@ endif CPPCHECK_FLAGS += -j $(NUMTHREADS) -CPPCHECK_FLAGS += --std=c11 --std=c++17 +ifneq ($(STDC),) +CPPCHECK_FLAGS += --std=$(STDC) +else +#CPPCHECK_FLAGS += --std=c23 +#CPPCHECK_FLAGS += --std=c18 +#CPPCHECK_FLAGS += --std=c17 +CPPCHECK_FLAGS += --std=c11 +endif +ifneq ($(STDCXX),) +CPPCHECK_FLAGS += --std=$(STDCXX) +else +#CPPCHECK_FLAGS += --std=c++23 +#CPPCHECK_FLAGS += --std=c++20 +CPPCHECK_FLAGS += --std=c++17 +endif CPPCHECK_FLAGS += --quiet CPPCHECK_FLAGS += --enable=warning --inline-suppr --template='{file}:{line}: warning: {severity}: {message} [{id}]' CPPCHECK_FLAGS += --check-level=exhaustive |
From: <sv...@op...> - 2024-07-23 05:37:55
|
Author: manx Date: Tue Jul 23 07:37:43 2024 New Revision: 21257 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21257 Log: [Fix build: Android: LLVM and Clang versions are just random numbers in Android NDK. r25 and r26 do not support C++23. Modified: trunk/OpenMPT/build/android_ndk/Android.mk trunk/OpenMPT/build/android_ndk/Application.mk Modified: trunk/OpenMPT/build/android_ndk/Android.mk ============================================================================== --- trunk/OpenMPT/build/android_ndk/Android.mk Mon Jul 22 22:52:42 2024 (r21256) +++ trunk/OpenMPT/build/android_ndk/Android.mk Tue Jul 23 07:37:43 2024 (r21257) @@ -29,11 +29,11 @@ else ifeq ($(NDK_MAJOR),25) # clang 14 LOCAL_CFLAGS += -std=c18 -LOCAL_CPPFLAGS += -std=c++23 +LOCAL_CPPFLAGS += -std=c++20 else ifeq ($(NDK_MAJOR),26) # clang 17 LOCAL_CFLAGS += -std=c18 -LOCAL_CPPFLAGS += -std=c++23 +LOCAL_CPPFLAGS += -std=c++20 else ifeq ($(NDK_MAJOR),27) # clang 18 LOCAL_CFLAGS += -std=c23 Modified: trunk/OpenMPT/build/android_ndk/Application.mk ============================================================================== --- trunk/OpenMPT/build/android_ndk/Application.mk Mon Jul 22 22:52:42 2024 (r21256) +++ trunk/OpenMPT/build/android_ndk/Application.mk Tue Jul 23 07:37:43 2024 (r21257) @@ -22,11 +22,11 @@ else ifeq ($(NDK_MAJOR),25) # clang 14 APP_CFLAGS := -std=c18 -APP_CPPFLAGS := -std=c++23 -fexceptions -frtti +APP_CPPFLAGS := -std=c++20 -fexceptions -frtti else ifeq ($(NDK_MAJOR),26) # clang 17 APP_CFLAGS := -std=c18 -APP_CPPFLAGS := -std=c++23 -fexceptions -frtti +APP_CPPFLAGS := -std=c++20 -fexceptions -frtti else ifeq ($(NDK_MAJOR),27) # clang 18 APP_CFLAGS := -std=c23 |
From: <sv...@op...> - 2024-07-22 20:52:56
|
Author: sagamusix Date: Mon Jul 22 22:52:42 2024 New Revision: 21256 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21256 Log: [Fix] Fix various keyboard focus issues when switching between upper and lower half of editor views or switching to another application and back (https://bugs.openmpt.org/view.php?id=1799, https://bugs.openmpt.org/view.php?id=1800). [Fix] Don't allow to set keyboard focus to the tree view via keyboard shortcut if it is hidden (https://bugs.openmpt.org/view.php?id=1802). Modified: trunk/OpenMPT/mptrack/Ctrl_pat.cpp trunk/OpenMPT/mptrack/Globals.cpp trunk/OpenMPT/mptrack/Globals.h trunk/OpenMPT/mptrack/MainFrm.cpp trunk/OpenMPT/mptrack/Mainfrm.h trunk/OpenMPT/mptrack/View_ins.cpp trunk/OpenMPT/mptrack/View_pat.cpp trunk/OpenMPT/mptrack/View_smp.cpp trunk/OpenMPT/mptrack/WindowMessages.h trunk/OpenMPT/mptrack/mptrack.rc trunk/OpenMPT/mptrack/view_com.cpp Modified: trunk/OpenMPT/mptrack/Ctrl_pat.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Ctrl_pat.cpp Mon Jul 22 21:12:48 2024 (r21255) +++ trunk/OpenMPT/mptrack/Ctrl_pat.cpp Mon Jul 22 22:52:42 2024 (r21256) @@ -453,7 +453,7 @@ SetDlgItemInt(IDC_EDIT_SPACING, static_cast<UINT>(lParam)); break; - case CTRLMSG_SETFOCUS: + case CTRLMSG_PAT_SETORDERLISTFOCUS: GetParentFrame()->SetActiveView(&m_parent); m_OrderList.SetFocus(); break; Modified: trunk/OpenMPT/mptrack/Globals.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Globals.cpp Mon Jul 22 21:12:48 2024 (r21255) +++ trunk/OpenMPT/mptrack/Globals.cpp Mon Jul 22 22:52:42 2024 (r21256) @@ -28,6 +28,17 @@ OPENMPT_NAMESPACE_BEGIN +static void RestoreLastFocusItem(HWND parent, HWND &lastFocusItem) +{ + if(lastFocusItem && ::IsChild(parent, lastFocusItem)) + ::SetFocus(lastFocusItem); + else if(HWND firstWnd = ::GetTopWindow(parent)) + ::SetFocus(lastFocusItem = firstWnd); + else + ::SetFocus(parent); +} + + ///////////////////////////////////////////////////////////////////////////// // CModControlDlg @@ -37,7 +48,7 @@ #if !defined(MPT_BUILD_RETRO) ON_MESSAGE(WM_DPICHANGED, &CModControlDlg::OnDPIChanged) #endif - ON_MESSAGE(WM_MOD_UNLOCKCONTROLS, &CModControlDlg::OnUnlockControls) + ON_MESSAGE(WM_MOD_UNLOCKCONTROLS, &CModControlDlg::OnUnlockControls) ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTW, 0, 0xFFFF, &CModControlDlg::OnToolTipText) ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTA, 0, 0xFFFF, &CModControlDlg::OnToolTipText) //}}AFX_MSG_MAP @@ -83,6 +94,20 @@ } +void CModControlDlg::SaveLastFocusItem(HWND hwnd) +{ + MPT_ASSERT(::IsChild(m_hWnd, hwnd)); + if(hwnd) + m_lastFocusItem = hwnd; +} + + +void CModControlDlg::RestoreLastFocusItem() +{ + OPENMPT_NAMESPACE::RestoreLastFocusItem(*this, m_lastFocusItem); +} + + LRESULT CModControlDlg::OnModCtrlMsg(WPARAM wParam, LPARAM lParam) { switch(wParam) @@ -101,7 +126,7 @@ case CTRLMSG_SETFOCUS: GetParentFrame()->SetActiveView(&m_parent); - SetFocus(); + RestoreLastFocusItem(); break; } return 0; @@ -110,19 +135,21 @@ LRESULT CModControlDlg::SendViewMessage(UINT uMsg, LPARAM lParam) const { - if (m_hWndView) return ::SendMessage(m_hWndView, WM_MOD_VIEWMSG, uMsg, lParam); + if(m_hWndView) + return ::SendMessage(m_hWndView, WM_MOD_VIEWMSG, uMsg, lParam); return 0; } BOOL CModControlDlg::PostViewMessage(UINT uMsg, LPARAM lParam) const { - if (m_hWndView) return ::PostMessage(m_hWndView, WM_MOD_VIEWMSG, uMsg, lParam); + if(m_hWndView) + return ::PostMessage(m_hWndView, WM_MOD_VIEWMSG, uMsg, lParam); return FALSE; } -INT_PTR CModControlDlg::OnToolHitTest(CPoint point, TOOLINFO* pTI) const +INT_PTR CModControlDlg::OnToolHitTest(CPoint point, TOOLINFO *pTI) const { INT_PTR nHit = CDialog::OnToolHitTest(point, pTI); if ((nHit >= 0) && (pTI)) @@ -137,11 +164,13 @@ } -BOOL CModControlDlg::OnToolTipText(UINT nID, NMHDR* pNMHDR, LRESULT* pResult) +BOOL CModControlDlg::OnToolTipText(UINT nID, NMHDR *pNMHDR, LRESULT *pResult) { CChildFrame *pChildFrm = (CChildFrame *)GetParentFrame(); - if (pChildFrm) return pChildFrm->OnToolTipText(nID, pNMHDR, pResult); - if (pResult) *pResult = 0; + if(pChildFrm) + return pChildFrm->OnToolTipText(nID, pNMHDR, pResult); + if(pResult) + *pResult = 0; return FALSE; } @@ -191,18 +220,17 @@ ON_WM_SIZE() ON_WM_DESTROY() ON_WM_SETFOCUS() - ON_NOTIFY(TCN_SELCHANGE, IDC_TABCTRL1, &CModControlView::OnTabSelchange) - ON_MESSAGE(WM_MOD_ACTIVATEVIEW, &CModControlView::OnActivateModView) - ON_MESSAGE(WM_MOD_CTRLMSG, &CModControlView::OnModCtrlMsg) - ON_MESSAGE(WM_MOD_GETTOOLTIPTEXT, &CModControlView::OnGetToolTipText) - ON_MESSAGE(WM_MOD_MDIDEACTIVATE, &CModControlView::OnSaveFocusItem) - ON_COMMAND(ID_EDIT_CUT, &CModControlView::OnEditCut) - ON_COMMAND(ID_EDIT_COPY, &CModControlView::OnEditCopy) - ON_COMMAND(ID_EDIT_PASTE, &CModControlView::OnEditPaste) - ON_COMMAND(ID_EDIT_MIXPASTE, &CModControlView::OnEditMixPaste) - ON_COMMAND(ID_EDIT_MIXPASTE_ITSTYLE, &CModControlView::OnEditMixPasteITStyle) - ON_COMMAND(ID_EDIT_FIND, &CModControlView::OnEditFind) - ON_COMMAND(ID_EDIT_FINDNEXT, &CModControlView::OnEditFindNext) + ON_NOTIFY(TCN_SELCHANGE, IDC_TABCTRL1, &CModControlView::OnTabSelchange) + ON_MESSAGE(WM_MOD_ACTIVATEVIEW, &CModControlView::OnActivateModView) + ON_MESSAGE(WM_MOD_CTRLMSG, &CModControlView::OnModCtrlMsg) + ON_MESSAGE(WM_MOD_GETTOOLTIPTEXT, &CModControlView::OnGetToolTipText) + ON_COMMAND(ID_EDIT_CUT, &CModControlView::OnEditCut) + ON_COMMAND(ID_EDIT_COPY, &CModControlView::OnEditCopy) + ON_COMMAND(ID_EDIT_PASTE, &CModControlView::OnEditPaste) + ON_COMMAND(ID_EDIT_MIXPASTE, &CModControlView::OnEditMixPaste) + ON_COMMAND(ID_EDIT_MIXPASTE_ITSTYLE, &CModControlView::OnEditMixPasteITStyle) + ON_COMMAND(ID_EDIT_FIND, &CModControlView::OnEditFind) + ON_COMMAND(ID_EDIT_FINDNEXT, &CModControlView::OnEditFindNext) //}}AFX_MSG_MAP END_MESSAGE_MAP() @@ -222,18 +250,10 @@ } -LRESULT CModControlView::OnSaveFocusItem(WPARAM, LPARAM) +void CModControlView::OnSetFocus(CWnd *pOldWnd) { - // Ugly workaround for focus issue in upper view (https://bugs.openmpt.org/view.php?id=1795) - m_oldWnd = ::GetFocus(); - return 0; -} - - -void CModControlView::OnSetFocus(CWnd* pOldWnd) -{ - if(m_oldWnd && ::IsChild(m_hWnd, m_oldWnd)) - ::SetFocus(m_oldWnd); + if(CModControlDlg *activeDlg = GetCurrentControlDlg()) + activeDlg->RestoreLastFocusItem(); CView::OnSetFocus(pOldWnd); } @@ -554,12 +574,13 @@ ON_WM_DESTROY() ON_WM_MOUSEWHEEL() ON_WM_MOUSEHWHEEL() + ON_WM_SETFOCUS() #if !defined(MPT_BUILD_RETRO) ON_MESSAGE(WM_DPICHANGED, &CModScrollView::OnDPIChanged) #endif - ON_MESSAGE(WM_MOD_VIEWMSG, &CModScrollView::OnReceiveModViewMsg) - ON_MESSAGE(WM_MOD_DRAGONDROPPING, &CModScrollView::OnDragonDropping) - ON_MESSAGE(WM_MOD_UPDATEPOSITION, &CModScrollView::OnUpdatePosition) + ON_MESSAGE(WM_MOD_VIEWMSG, &CModScrollView::OnReceiveModViewMsg) + ON_MESSAGE(WM_MOD_DRAGONDROPPING, &CModScrollView::OnDragonDropping) + ON_MESSAGE(WM_MOD_UPDATEPOSITION, &CModScrollView::OnUpdatePosition) //}}AFX_MSG_MAP END_MESSAGE_MAP() @@ -591,7 +612,23 @@ } -void CModScrollView::OnUpdate(CView* pView, LPARAM lHint, CObject*pHint) +void CModScrollView::SaveLastFocusItem(HWND hwnd) +{ + MPT_ASSERT(::IsChild(m_hWnd, hwnd)); + if(hwnd) + m_lastFocusItem = hwnd; +} + + +void CModScrollView::OnSetFocus(CWnd *pOldWnd) +{ + if(m_lastFocusItem && ::IsChild(m_hWnd, m_lastFocusItem)) + ::SetFocus(m_lastFocusItem); + CScrollView::OnSetFocus(pOldWnd); +} + + +void CModScrollView::OnUpdate(CView *pView, LPARAM lHint, CObject *pHint) { if (pView != this) UpdateView(UpdateHint::FromLPARAM(lHint), pHint); } @@ -608,7 +645,7 @@ case VIEWMSG_SETFOCUS: case VIEWMSG_SETACTIVE: GetParentFrame()->SetActiveView(this); - SetFocus(); + RestoreLastFocusItem(*this, m_lastFocusItem); break; } return 0; Modified: trunk/OpenMPT/mptrack/Globals.h ============================================================================== --- trunk/OpenMPT/mptrack/Globals.h Mon Jul 22 21:12:48 2024 (r21255) +++ trunk/OpenMPT/mptrack/Globals.h Mon Jul 22 22:52:42 2024 (r21256) @@ -42,6 +42,7 @@ CSoundFile &m_sndFile; CModControlView &m_parent; HWND m_hWndView = nullptr; + HWND m_lastFocusItem = nullptr; LONG m_nLockCount = 0; int m_nDPIx = 0, m_nDPIy = 0; // Cached DPI settings BOOL m_bInitialized = FALSE; @@ -61,6 +62,9 @@ bool IsLocked() const { return (m_nLockCount > 0); } virtual Setting<LONG> &GetSplitPosRef() = 0; + void SaveLastFocusItem(HWND hwnd); + void RestoreLastFocusItem(); + afx_msg void OnEditCut() { if (m_hWndView) ::SendMessage(m_hWndView, WM_COMMAND, ID_EDIT_CUT, 0); } afx_msg void OnEditCopy() { if (m_hWndView) ::SendMessage(m_hWndView, WM_COMMAND, ID_EDIT_COPY, 0); } afx_msg void OnEditPaste() { if (m_hWndView) ::SendMessage(m_hWndView, WM_COMMAND, ID_EDIT_PASTE, 0); } @@ -88,7 +92,7 @@ //{{AFX_MSG(CModControlDlg) afx_msg void OnSize(UINT nType, int cx, int cy); afx_msg LRESULT OnUnlockControls(WPARAM, LPARAM) { if (m_nLockCount > 0) m_nLockCount--; return 0; } - afx_msg BOOL OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult); + afx_msg BOOL OnToolTipText(UINT, NMHDR *pNMHDR, LRESULT *pResult); afx_msg LRESULT OnDPIChanged(WPARAM = 0, LPARAM = 0); //}}AFX_MSG DECLARE_MESSAGE_MAP() @@ -125,7 +129,6 @@ Page m_nActiveDlg = Page::Unknown; int m_nInstrumentChanged = -1; HWND m_hWndView = nullptr, m_hWndMDI = nullptr; - HWND m_oldWnd = nullptr; protected: // create from serialization only CModControlView() = default; @@ -158,7 +161,6 @@ protected: //{{AFX_MSG(CModControlView) - afx_msg LRESULT OnSaveFocusItem(WPARAM, LPARAM); afx_msg void OnSetFocus(CWnd *pOldWnd); afx_msg void OnSize(UINT nType, int cx, int cy); afx_msg void OnDestroy(); @@ -189,6 +191,7 @@ { protected: HWND m_hWndCtrl = nullptr; + HWND m_lastFocusItem = nullptr; int m_nScrollPosX = 0, m_nScrollPosY = 0; int m_nScrollPosXfine = 0, m_nScrollPosYfine = 0; int m_nDPIx = 0, m_nDPIy = 0; // Cached DPI settings @@ -219,9 +222,12 @@ CModControlDlg *GetControlDlg() { return static_cast<CModControlView *>(CWnd::FromHandle(m_hWndCtrl))->GetCurrentControlDlg(); } + void SaveLastFocusItem(HWND hwnd); + protected: //{{AFX_MSG(CModScrollView) afx_msg void OnDestroy(); + afx_msg void OnSetFocus(CWnd *pOldWnd); afx_msg LRESULT OnReceiveModViewMsg(WPARAM wParam, LPARAM lParam); afx_msg BOOL OnMouseWheel(UINT fFlags, short zDelta, CPoint point); afx_msg void OnMouseHWheel(UINT fFlags, short zDelta, CPoint point); Modified: trunk/OpenMPT/mptrack/MainFrm.cpp ============================================================================== --- trunk/OpenMPT/mptrack/MainFrm.cpp Mon Jul 22 21:12:48 2024 (r21255) +++ trunk/OpenMPT/mptrack/MainFrm.cpp Mon Jul 22 22:52:42 2024 (r21256) @@ -147,23 +147,24 @@ // Globals OptionsPage CMainFrame::m_nLastOptionsPage = OPTIONS_PAGE_DEFAULT; -HHOOK CMainFrame::ghKbdHook = NULL; +HHOOK CMainFrame::ghKbdHook = nullptr; +HHOOK CMainFrame::g_focusHook = nullptr; // GDI -HICON CMainFrame::m_hIcon = NULL; -HFONT CMainFrame::m_hGUIFont = NULL; -HFONT CMainFrame::m_hFixedFont = NULL; -HPEN CMainFrame::penDarkGray = NULL; -HPEN CMainFrame::penGray99 = NULL; -HPEN CMainFrame::penHalfDarkGray = NULL; - -HCURSOR CMainFrame::curDragging = NULL; -HCURSOR CMainFrame::curArrow = NULL; -HCURSOR CMainFrame::curNoDrop = NULL; -HCURSOR CMainFrame::curNoDrop2 = NULL; -HCURSOR CMainFrame::curVSplit = NULL; +HICON CMainFrame::m_hIcon = nullptr; +HFONT CMainFrame::m_hGUIFont = nullptr; +HFONT CMainFrame::m_hFixedFont = nullptr; +HPEN CMainFrame::penDarkGray = nullptr; +HPEN CMainFrame::penGray99 = nullptr; +HPEN CMainFrame::penHalfDarkGray = nullptr; + +HCURSOR CMainFrame::curDragging = nullptr; +HCURSOR CMainFrame::curArrow = nullptr; +HCURSOR CMainFrame::curNoDrop = nullptr; +HCURSOR CMainFrame::curNoDrop2 = nullptr; +HCURSOR CMainFrame::curVSplit = nullptr; MODPLUGDIB *CMainFrame::bmpNotes = nullptr; -COLORREF CMainFrame::gcolrefVuMeter[NUM_VUMETER_PENS*2]; +COLORREF CMainFrame::gcolrefVuMeter[NUM_VUMETER_PENS * 2]; CInputHandler *CMainFrame::m_InputHandler = nullptr; @@ -232,6 +233,7 @@ // Setup Keyboard Hook ghKbdHook = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, AfxGetInstanceHandle(), GetCurrentThreadId()); + g_focusHook = SetWindowsHookEx(WH_CBT, FocusChangeProc, AfxGetInstanceHandle(), GetCurrentThreadId()); // Update the tree m_wndTree.Init(); @@ -348,18 +350,24 @@ #endif // Uninstall Keyboard Hook - if (ghKbdHook) + if(ghKbdHook) { UnhookWindowsHookEx(ghKbdHook); - ghKbdHook = NULL; + ghKbdHook = nullptr; + } + if(g_focusHook) + { + UnhookWindowsHookEx(g_focusHook); + g_focusHook = nullptr; } // Kill Timer - if (m_nTimer) + if(m_nTimer) { KillTimer(m_nTimer); m_nTimer = 0; } - if (shMidiIn) midiCloseDevice(); + if(shMidiIn) + midiCloseDevice(); // Delete bitmaps delete bmpNotes; bmpNotes = nullptr; @@ -557,6 +565,57 @@ } +LRESULT CALLBACK CMainFrame::FocusChangeProc(int code, WPARAM wParam, LPARAM lParam) +{ + // Hook to keep track of last focussed GUI item. This solves various focus issues when switching between + // CModControlDlg / CModScrollView via keyboard shortcuts, or when switching to another application and back. + // See https://bugs.openmpt.org/view.php?id=1795 / https://bugs.openmpt.org/view.php?id=1799 / https://bugs.openmpt.org/view.php?id=1800 + if(code != HCBT_SETFOCUS || !wParam || !lParam) + return CallNextHookEx(g_focusHook, code, wParam, lParam); + + const HWND mainWnd = CMainFrame::GetMainFrame()->GetSafeHwnd(); + HWND lostFocusWnd = reinterpret_cast<HWND>(lParam), gainFocusWnd = reinterpret_cast<HWND>(wParam); + CModControlDlg *parentCtrl = nullptr; + CModScrollView *parentScroll = nullptr; + do + { + // Does the window that lost focus belong to the upper or lower half of a module view? + auto wnd = CWnd::FromHandlePermanent(lostFocusWnd); + if(parentCtrl = dynamic_cast<CModControlDlg *>(wnd); parentCtrl != nullptr) + break; + else if(parentScroll = dynamic_cast<CModScrollView *>(wnd); parentScroll != nullptr) + break; + + lostFocusWnd = ::GetParent(lostFocusWnd); + } while(lostFocusWnd && lostFocusWnd != mainWnd); + + if(parentCtrl || parentScroll) + { + // Focus was lost inside an MDI view. Check if the new focus item inside the same view. + // If both are part of the same view, store the new focus item, otherwise the old one. + bool sameParent = false; + do + { + if((parentCtrl && gainFocusWnd == parentCtrl->m_hWnd) || (parentScroll && gainFocusWnd == parentScroll->m_hWnd)) + { + sameParent = true; + break; + } + + gainFocusWnd = ::GetParent(gainFocusWnd); + } while(gainFocusWnd && gainFocusWnd != mainWnd); + + HWND lastFocus = sameParent ? reinterpret_cast<HWND>(wParam) : reinterpret_cast<HWND>(lParam); + if(parentCtrl && parentCtrl->m_hWnd != lastFocus) + parentCtrl->SaveLastFocusItem(lastFocus); + else if(parentScroll && parentScroll->m_hWnd != lastFocus) + parentScroll->SaveLastFocusItem(lastFocus); + } + + return CallNextHookEx(g_focusHook, code, wParam, lParam); +} + + BOOL CMainFrame::PreTranslateMessage(MSG* pMsg) { if((pMsg->message == WM_RBUTTONDOWN) || (pMsg->message == WM_NCRBUTTONDOWN)) @@ -2554,6 +2613,8 @@ } case kcSwitchToInstrLibrary: + if(!m_wndTree.IsVisible()) + break; if(m_bModTreeHasFocus) SwitchToActiveView(); else Modified: trunk/OpenMPT/mptrack/Mainfrm.h ============================================================================== --- trunk/OpenMPT/mptrack/Mainfrm.h Mon Jul 22 21:12:48 2024 (r21255) +++ trunk/OpenMPT/mptrack/Mainfrm.h Mon Jul 22 22:52:42 2024 (r21256) @@ -144,7 +144,7 @@ // Globals static OptionsPage m_nLastOptionsPage; - static HHOOK ghKbdHook; + static HHOOK ghKbdHook, g_focusHook; // GDI static HICON m_hIcon; @@ -264,6 +264,7 @@ static HFONT &GetCommentsFont() { return m_hFixedFont; } static void UpdateAllViews(UpdateHint hint, CObject *pHint=NULL); static LRESULT CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam); + static LRESULT CALLBACK FocusChangeProc(int code, WPARAM wParam, LPARAM lParam); static CInputHandler *m_InputHandler; // Misc functions Modified: trunk/OpenMPT/mptrack/View_ins.cpp ============================================================================== --- trunk/OpenMPT/mptrack/View_ins.cpp Mon Jul 22 21:12:48 2024 (r21255) +++ trunk/OpenMPT/mptrack/View_ins.cpp Mon Jul 22 22:52:42 2024 (r21256) @@ -238,7 +238,7 @@ void CViewInstrument::OnSetFocus(CWnd *pOldWnd) { - CScrollView::OnSetFocus(pOldWnd); + CModScrollView::OnSetFocus(pOldWnd); SetCurrentInstrument(m_nInstrument, m_nEnv); } Modified: trunk/OpenMPT/mptrack/View_pat.cpp ============================================================================== --- trunk/OpenMPT/mptrack/View_pat.cpp Mon Jul 22 21:12:48 2024 (r21255) +++ trunk/OpenMPT/mptrack/View_pat.cpp Mon Jul 22 22:52:42 2024 (r21256) @@ -768,7 +768,7 @@ void CViewPattern::OnSetFocus(CWnd *pOldWnd) { - CScrollView::OnSetFocus(pOldWnd); + CModScrollView::OnSetFocus(pOldWnd); m_Status.set(psFocussed); InvalidateRow(); CModDoc *pModDoc = GetDocument(); @@ -3266,7 +3266,7 @@ void CViewPattern::OnSwitchToOrderList() { - PostCtrlMessage(CTRLMSG_SETFOCUS); + PostCtrlMessage(CTRLMSG_PAT_SETORDERLISTFOCUS); } Modified: trunk/OpenMPT/mptrack/View_smp.cpp ============================================================================== --- trunk/OpenMPT/mptrack/View_smp.cpp Mon Jul 22 21:12:48 2024 (r21255) +++ trunk/OpenMPT/mptrack/View_smp.cpp Mon Jul 22 22:52:42 2024 (r21256) @@ -448,7 +448,7 @@ void CViewSample::OnSetFocus(CWnd *pOldWnd) { - CScrollView::OnSetFocus(pOldWnd); + CModScrollView::OnSetFocus(pOldWnd); SetCurrentSample(m_nSample); } @@ -764,15 +764,6 @@ GetDocument()->GetSampleUndo().PrepareUndo(m_nSample, sundo_none, "Edit OPL Patch"); break; - case VIEWMSG_SETFOCUS: - case VIEWMSG_SETACTIVE: - GetParentFrame()->SetActiveView(this); - if(IsOPLInstrument() && m_oplEditor) - m_oplEditor->SetFocus(); - else - SetFocus(); - break; - default: return CModScrollView::OnModViewMsg(wParam, lParam); } Modified: trunk/OpenMPT/mptrack/WindowMessages.h ============================================================================== --- trunk/OpenMPT/mptrack/WindowMessages.h Mon Jul 22 21:12:48 2024 (r21255) +++ trunk/OpenMPT/mptrack/WindowMessages.h Mon Jul 22 22:52:42 2024 (r21256) @@ -70,6 +70,7 @@ CTRLMSG_PAT_LOOP, CTRLMSG_PAT_NEWPATTERN, CTRLMSG_PAT_SETSEQUENCE, + CTRLMSG_PAT_SETORDERLISTFOCUS, CTRLMSG_GETCURRENTINSTRUMENT, CTRLMSG_SETCURRENTINSTRUMENT, CTRLMSG_SETSPACING, Modified: trunk/OpenMPT/mptrack/mptrack.rc ============================================================================== --- trunk/OpenMPT/mptrack/mptrack.rc Mon Jul 22 21:12:48 2024 (r21255) +++ trunk/OpenMPT/mptrack/mptrack.rc Mon Jul 22 22:52:42 2024 (r21256) @@ -1567,7 +1567,7 @@ BEGIN CONTROL "Toolbar1",IDC_TOOLBAR1,"ToolbarWindow32",WS_GROUP | WS_TABSTOP | 0x4d,4,5,92,19 EDITTEXT IDC_EDIT_INSTRUMENT,97,7,33,12,ES_AUTOHSCROLL | ES_NUMBER - CONTROL "Spin1",IDC_SPIN_INSTRUMENT,"msctls_updown32",UDS_WRAP | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | WS_TABSTOP,121,8,11,11 + CONTROL "Spin1",IDC_SPIN_INSTRUMENT,"msctls_updown32",UDS_WRAP | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,121,8,11,11 EDITTEXT IDC_SAMPLE_NAME,141,7,151,12,ES_AUTOHSCROLL CTEXT "File",IDC_STATIC,299,7,35,12,SS_CENTERIMAGE,WS_EX_STATICEDGE EDITTEXT IDC_SAMPLE_FILENAME,334,7,105,12,ES_AUTOHSCROLL Modified: trunk/OpenMPT/mptrack/view_com.cpp ============================================================================== --- trunk/OpenMPT/mptrack/view_com.cpp Mon Jul 22 21:12:48 2024 (r21255) +++ trunk/OpenMPT/mptrack/view_com.cpp Mon Jul 22 22:52:42 2024 (r21256) @@ -127,9 +127,9 @@ } } GetClientRect(&rect); - m_ToolBar.Create(WS_CHILD|WS_VISIBLE|CCS_NOPARENTALIGN, rect, this, IDC_TOOLBAR_DETAILS); + m_ToolBar.Create(WS_CHILD | WS_VISIBLE | WS_TABSTOP | CCS_NOPARENTALIGN, rect, this, IDC_TOOLBAR_DETAILS); m_ToolBar.Init(CMainFrame::GetMainFrame()->m_MiscIcons, CMainFrame::GetMainFrame()->m_MiscIconsDisabled); - m_ItemList.Create(WS_CHILD | WS_VISIBLE | LVS_REPORT | LVS_SINGLESEL | LVS_EDITLABELS | LVS_NOSORTHEADER, rect, this, IDC_LIST_DETAILS); + m_ItemList.Create(WS_CHILD | WS_VISIBLE | WS_TABSTOP | LVS_REPORT | LVS_SINGLESEL | LVS_EDITLABELS | LVS_NOSORTHEADER, rect, this, IDC_LIST_DETAILS); m_ItemList.ModifyStyleEx(0, WS_EX_STATICEDGE); // Add ToolBar Buttons |
From: <sv...@op...> - 2024-07-22 19:13:00
|
Author: manx Date: Mon Jul 22 21:12:48 2024 New Revision: 21255 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21255 Log: [Imp] build: Android: Enable C++23 and C23 if available. Fixes <https://bugs.openmpt.org/view.php?id=1803> partially. Modified: trunk/OpenMPT/build/android_ndk/Android.mk trunk/OpenMPT/build/android_ndk/Application.mk Modified: trunk/OpenMPT/build/android_ndk/Android.mk ============================================================================== --- trunk/OpenMPT/build/android_ndk/Android.mk Mon Jul 22 21:09:41 2024 (r21254) +++ trunk/OpenMPT/build/android_ndk/Android.mk Mon Jul 22 21:12:48 2024 (r21255) @@ -7,40 +7,40 @@ LOCAL_MODULE := openmpt ifeq ($(NDK_MAJOR),) -LOCAL_CFLAGS += -std=c17 +LOCAL_CFLAGS += -std=c18 LOCAL_CPPFLAGS += -std=c++17 else ifeq ($(NDK_MAJOR),21) # clang 9 -LOCAL_CFLAGS += -std=c17 +LOCAL_CFLAGS += -std=c18 LOCAL_CPPFLAGS += -std=c++17 else ifeq ($(NDK_MAJOR),22) # clang 11 -LOCAL_CFLAGS += -std=c17 +LOCAL_CFLAGS += -std=c18 LOCAL_CPPFLAGS += -std=c++20 else ifeq ($(NDK_MAJOR),23) # clang 12 -LOCAL_CFLAGS += -std=c17 +LOCAL_CFLAGS += -std=c18 LOCAL_CPPFLAGS += -std=c++20 else ifeq ($(NDK_MAJOR),24) # clang 14 -LOCAL_CFLAGS += -std=c17 +LOCAL_CFLAGS += -std=c18 LOCAL_CPPFLAGS += -std=c++20 else ifeq ($(NDK_MAJOR),25) # clang 14 -LOCAL_CFLAGS += -std=c17 -LOCAL_CPPFLAGS += -std=c++20 +LOCAL_CFLAGS += -std=c18 +LOCAL_CPPFLAGS += -std=c++23 else ifeq ($(NDK_MAJOR),26) # clang 17 -LOCAL_CFLAGS += -std=c17 -LOCAL_CPPFLAGS += -std=c++20 +LOCAL_CFLAGS += -std=c18 +LOCAL_CPPFLAGS += -std=c++23 else ifeq ($(NDK_MAJOR),27) # clang 18 -LOCAL_CFLAGS += -std=c17 -LOCAL_CPPFLAGS += -std=c++20 +LOCAL_CFLAGS += -std=c23 +LOCAL_CPPFLAGS += -std=c++23 else -LOCAL_CFLAGS += -std=c17 -LOCAL_CPPFLAGS += -std=c++20 +LOCAL_CFLAGS += -std=c23 +LOCAL_CPPFLAGS += -std=c++23 endif endif Modified: trunk/OpenMPT/build/android_ndk/Application.mk ============================================================================== --- trunk/OpenMPT/build/android_ndk/Application.mk Mon Jul 22 21:09:41 2024 (r21254) +++ trunk/OpenMPT/build/android_ndk/Application.mk Mon Jul 22 21:12:48 2024 (r21255) @@ -1,39 +1,39 @@ ifeq ($(NDK_MAJOR),) -APP_CFLAGS := -std=c17 +APP_CFLAGS := -std=c18 APP_CPPFLAGS := -std=c++17 -fexceptions -frtti else ifeq ($(NDK_MAJOR),21) # clang 9 -APP_CFLAGS := -std=c17 +APP_CFLAGS := -std=c18 APP_CPPFLAGS := -std=c++17 -fexceptions -frtti else ifeq ($(NDK_MAJOR),22) # clang 11 -APP_CFLAGS := -std=c17 +APP_CFLAGS := -std=c18 APP_CPPFLAGS := -std=c++20 -fexceptions -frtti else ifeq ($(NDK_MAJOR),23) # clang 12 -APP_CFLAGS := -std=c17 +APP_CFLAGS := -std=c18 APP_CPPFLAGS := -std=c++20 -fexceptions -frtti else ifeq ($(NDK_MAJOR),24) # clang 14 -APP_CFLAGS := -std=c17 +APP_CFLAGS := -std=c18 APP_CPPFLAGS := -std=c++20 -fexceptions -frtti else ifeq ($(NDK_MAJOR),25) # clang 14 -APP_CFLAGS := -std=c17 -APP_CPPFLAGS := -std=c++20 -fexceptions -frtti +APP_CFLAGS := -std=c18 +APP_CPPFLAGS := -std=c++23 -fexceptions -frtti else ifeq ($(NDK_MAJOR),26) # clang 17 -APP_CFLAGS := -std=c17 -APP_CPPFLAGS := -std=c++20 -fexceptions -frtti +APP_CFLAGS := -std=c18 +APP_CPPFLAGS := -std=c++23 -fexceptions -frtti else ifeq ($(NDK_MAJOR),27) # clang 18 -APP_CFLAGS := -std=c17 -APP_CPPFLAGS := -std=c++20 -fexceptions -frtti +APP_CFLAGS := -std=c23 +APP_CPPFLAGS := -std=c++23 -fexceptions -frtti else -APP_CFLAGS := -std=c17 -APP_CPPFLAGS := -std=c++20 -fexceptions -frtti +APP_CFLAGS := -std=c23 +APP_CPPFLAGS := -std=c++23 -fexceptions -frtti endif endif |
From: <sv...@op...> - 2024-07-22 19:09:48
|
Author: manx Date: Mon Jul 22 21:09:41 2024 New Revision: 21254 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21254 Log: Merged revision(s) 21253 from trunk/OpenMPT: [Fix] build: Android: Also enable C++20 in Application.mk. ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/build/android_ndk/Application.mk Modified: branches/OpenMPT-1.31/build/android_ndk/Application.mk ============================================================================== --- branches/OpenMPT-1.31/build/android_ndk/Application.mk Mon Jul 22 21:09:12 2024 (r21253) +++ branches/OpenMPT-1.31/build/android_ndk/Application.mk Mon Jul 22 21:09:41 2024 (r21254) @@ -1,6 +1,42 @@ +ifeq ($(NDK_MAJOR),) APP_CFLAGS := -std=c17 APP_CPPFLAGS := -std=c++17 -fexceptions -frtti +else +ifeq ($(NDK_MAJOR),21) +# clang 9 +APP_CFLAGS := -std=c17 +APP_CPPFLAGS := -std=c++17 -fexceptions -frtti +else ifeq ($(NDK_MAJOR),22) +# clang 11 +APP_CFLAGS := -std=c17 +APP_CPPFLAGS := -std=c++20 -fexceptions -frtti +else ifeq ($(NDK_MAJOR),23) +# clang 12 +APP_CFLAGS := -std=c17 +APP_CPPFLAGS := -std=c++20 -fexceptions -frtti +else ifeq ($(NDK_MAJOR),24) +# clang 14 +APP_CFLAGS := -std=c17 +APP_CPPFLAGS := -std=c++20 -fexceptions -frtti +else ifeq ($(NDK_MAJOR),25) +# clang 14 +APP_CFLAGS := -std=c17 +APP_CPPFLAGS := -std=c++20 -fexceptions -frtti +else ifeq ($(NDK_MAJOR),26) +# clang 17 +APP_CFLAGS := -std=c17 +APP_CPPFLAGS := -std=c++20 -fexceptions -frtti +else ifeq ($(NDK_MAJOR),27) +# clang 18 +APP_CFLAGS := -std=c17 +APP_CPPFLAGS := -std=c++20 -fexceptions -frtti +else +APP_CFLAGS := -std=c17 +APP_CPPFLAGS := -std=c++20 -fexceptions -frtti +endif +endif + APP_LDFLAGS := APP_STL := c++_shared |
From: <sv...@op...> - 2024-07-22 19:09:24
|
Author: manx Date: Mon Jul 22 21:09:12 2024 New Revision: 21253 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21253 Log: [Fix] build: Android: Also enable C++20 in Application.mk. Modified: trunk/OpenMPT/build/android_ndk/Application.mk Modified: trunk/OpenMPT/build/android_ndk/Application.mk ============================================================================== --- trunk/OpenMPT/build/android_ndk/Application.mk Mon Jul 22 21:06:25 2024 (r21252) +++ trunk/OpenMPT/build/android_ndk/Application.mk Mon Jul 22 21:09:12 2024 (r21253) @@ -1,6 +1,42 @@ +ifeq ($(NDK_MAJOR),) APP_CFLAGS := -std=c17 APP_CPPFLAGS := -std=c++17 -fexceptions -frtti +else +ifeq ($(NDK_MAJOR),21) +# clang 9 +APP_CFLAGS := -std=c17 +APP_CPPFLAGS := -std=c++17 -fexceptions -frtti +else ifeq ($(NDK_MAJOR),22) +# clang 11 +APP_CFLAGS := -std=c17 +APP_CPPFLAGS := -std=c++20 -fexceptions -frtti +else ifeq ($(NDK_MAJOR),23) +# clang 12 +APP_CFLAGS := -std=c17 +APP_CPPFLAGS := -std=c++20 -fexceptions -frtti +else ifeq ($(NDK_MAJOR),24) +# clang 14 +APP_CFLAGS := -std=c17 +APP_CPPFLAGS := -std=c++20 -fexceptions -frtti +else ifeq ($(NDK_MAJOR),25) +# clang 14 +APP_CFLAGS := -std=c17 +APP_CPPFLAGS := -std=c++20 -fexceptions -frtti +else ifeq ($(NDK_MAJOR),26) +# clang 17 +APP_CFLAGS := -std=c17 +APP_CPPFLAGS := -std=c++20 -fexceptions -frtti +else ifeq ($(NDK_MAJOR),27) +# clang 18 +APP_CFLAGS := -std=c17 +APP_CPPFLAGS := -std=c++20 -fexceptions -frtti +else +APP_CFLAGS := -std=c17 +APP_CPPFLAGS := -std=c++20 -fexceptions -frtti +endif +endif + APP_LDFLAGS := APP_STL := c++_shared |
From: <sv...@op...> - 2024-07-22 19:06:37
|
Author: manx Date: Mon Jul 22 21:06:25 2024 New Revision: 21252 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21252 Log: [Imp] build: Makefile: Enable C++23 and C23 if available. Fixes <https://bugs.openmpt.org/view.php?id=1803> partially. Modified: trunk/OpenMPT/build/make/config-afl.mk trunk/OpenMPT/build/make/config-aocc.mk trunk/OpenMPT/build/make/config-clang.mk trunk/OpenMPT/build/make/config-djgpp.mk trunk/OpenMPT/build/make/config-emscripten.mk trunk/OpenMPT/build/make/config-gcc.mk trunk/OpenMPT/build/make/config-icx.mk trunk/OpenMPT/build/make/config-mingw-w64.mk trunk/OpenMPT/build/make/config-mingw.mk trunk/OpenMPT/build/make/config-mingw32crt.mk trunk/OpenMPT/build/make/config-standard.mk trunk/OpenMPT/build/make/config-unknown.mk Modified: trunk/OpenMPT/build/make/config-afl.mk ============================================================================== --- trunk/OpenMPT/build/make/config-afl.mk Mon Jul 22 20:49:19 2024 (r21251) +++ trunk/OpenMPT/build/make/config-afl.mk Mon Jul 22 21:06:25 2024 (r21252) @@ -14,9 +14,12 @@ ifneq ($(STDCXX),) CXXFLAGS_STDCXX = -std=$(STDCXX) -fexceptions -frtti -pthread -# We do not enable C++20 for fuzzer builds, because it prevents detecting -# shifting of signed values which changed from undefined to defined behaviour -# in C++20. As we still support C++17, we need to catch these problem cases. +# We do not enable C++20 or C++23 for fuzzer builds, because it prevents +# detecting shifting of signed values which changed from undefined to defined +# behaviour in C++20 and C++23. As we still support C++17, we need to catch +# these problem cases. +#else ifeq ($(shell printf '\n' > bin/empty.cpp ; if $(CXX) -std=c++23 -c bin/empty.cpp -o bin/empty.out > /dev/null 2>&1 ; then echo 'c++23' ; fi ), c++23) +#CXXFLAGS_STDCXX = -std=c++23 -fexceptions -frtti -pthread #else ifeq ($(shell printf '\n' > bin/empty.cpp ; if $(CXX) -std=c++20 -c bin/empty.cpp -o bin/empty.out > /dev/null 2>&1 ; then echo 'c++20' ; fi ), c++20) #CXXFLAGS_STDCXX = -std=c++20 -fexceptions -frtti -pthread else @@ -24,6 +27,10 @@ endif ifneq ($(STDC),) CFLAGS_STDC = -std=$(STDC) -pthread +else ifeq ($(shell printf '\n' > bin/empty.c ; if $(CC) -std=c23 -c bin/empty.c -o bin/empty.out > /dev/null 2>&1 ; then echo 'c23' ; fi ), c23) +CFLAGS_STDC = -std=c23 -pthread +else ifeq ($(shell printf '\n' > bin/empty.c ; if $(CC) -std=c18 -c bin/empty.c -o bin/empty.out > /dev/null 2>&1 ; then echo 'c18' ; fi ), c18) +CFLAGS_STDC = -std=c18 -pthread else ifeq ($(shell printf '\n' > bin/empty.c ; if $(CC) -std=c17 -c bin/empty.c -o bin/empty.out > /dev/null 2>&1 ; then echo 'c17' ; fi ), c17) CFLAGS_STDC = -std=c17 -pthread else Modified: trunk/OpenMPT/build/make/config-aocc.mk ============================================================================== --- trunk/OpenMPT/build/make/config-aocc.mk Mon Jul 22 20:49:19 2024 (r21251) +++ trunk/OpenMPT/build/make/config-aocc.mk Mon Jul 22 21:06:25 2024 (r21252) @@ -14,6 +14,8 @@ ifneq ($(STDCXX),) CXXFLAGS_STDCXX = -std=$(STDCXX) -fexceptions -frtti -pthread +else ifeq ($(shell printf '\n' > bin/empty.cpp ; if $(CXX) -std=c++23 -c bin/empty.cpp -o bin/empty.out > /dev/null 2>&1 ; then echo 'c++23' ; fi ), c++23) +CXXFLAGS_STDCXX = -std=c++23 -fexceptions -frtti -pthread else ifeq ($(shell printf '\n' > bin/empty.cpp ; if $(CXX) -std=c++20 -c bin/empty.cpp -o bin/empty.out > /dev/null 2>&1 ; then echo 'c++20' ; fi ), c++20) CXXFLAGS_STDCXX = -std=c++20 -fexceptions -frtti -pthread else @@ -21,6 +23,10 @@ endif ifneq ($(STDC),) CFLAGS_STDC = -std=$(STDC) -pthread +else ifeq ($(shell printf '\n' > bin/empty.c ; if $(CC) -std=c23 -c bin/empty.c -o bin/empty.out > /dev/null 2>&1 ; then echo 'c23' ; fi ), c23) +CFLAGS_STDC = -std=c23 -pthread +else ifeq ($(shell printf '\n' > bin/empty.c ; if $(CC) -std=c18 -c bin/empty.c -o bin/empty.out > /dev/null 2>&1 ; then echo 'c18' ; fi ), c18) +CFLAGS_STDC = -std=c18 -pthread else ifeq ($(shell printf '\n' > bin/empty.c ; if $(CC) -std=c17 -c bin/empty.c -o bin/empty.out > /dev/null 2>&1 ; then echo 'c17' ; fi ), c17) CFLAGS_STDC = -std=c17 -pthread else Modified: trunk/OpenMPT/build/make/config-clang.mk ============================================================================== --- trunk/OpenMPT/build/make/config-clang.mk Mon Jul 22 20:49:19 2024 (r21251) +++ trunk/OpenMPT/build/make/config-clang.mk Mon Jul 22 21:06:25 2024 (r21252) @@ -14,6 +14,8 @@ ifneq ($(STDCXX),) CXXFLAGS_STDCXX = -std=$(STDCXX) -fexceptions -frtti -pthread +else ifeq ($(shell printf '\n' > bin/empty.cpp ; if $(CXX) -std=c++23 -c bin/empty.cpp -o bin/empty.out > /dev/null 2>&1 ; then echo 'c++23' ; fi ), c++23) +CXXFLAGS_STDCXX = -std=c++23 -fexceptions -frtti -pthread else ifeq ($(shell printf '\n' > bin/empty.cpp ; if $(CXX) -std=c++20 -c bin/empty.cpp -o bin/empty.out > /dev/null 2>&1 ; then echo 'c++20' ; fi ), c++20) CXXFLAGS_STDCXX = -std=c++20 -fexceptions -frtti -pthread else @@ -21,6 +23,10 @@ endif ifneq ($(STDC),) CFLAGS_STDC = -std=$(STDC) -pthread +else ifeq ($(shell printf '\n' > bin/empty.c ; if $(CC) -std=c23 -c bin/empty.c -o bin/empty.out > /dev/null 2>&1 ; then echo 'c23' ; fi ), c23) +CFLAGS_STDC = -std=c23 -pthread +else ifeq ($(shell printf '\n' > bin/empty.c ; if $(CC) -std=c18 -c bin/empty.c -o bin/empty.out > /dev/null 2>&1 ; then echo 'c18' ; fi ), c18) +CFLAGS_STDC = -std=c18 -pthread else ifeq ($(shell printf '\n' > bin/empty.c ; if $(CC) -std=c17 -c bin/empty.c -o bin/empty.out > /dev/null 2>&1 ; then echo 'c17' ; fi ), c17) CFLAGS_STDC = -std=c17 -pthread else Modified: trunk/OpenMPT/build/make/config-djgpp.mk ============================================================================== --- trunk/OpenMPT/build/make/config-djgpp.mk Mon Jul 22 20:49:19 2024 (r21251) +++ trunk/OpenMPT/build/make/config-djgpp.mk Mon Jul 22 21:06:25 2024 (r21252) @@ -19,6 +19,8 @@ # mode, because otherwise DJGPP-specific headers/functions are unavailable. ifneq ($(STDCXX),) CXXFLAGS_STDCXX = -std=$(STDCXX) -fexceptions -frtti -fpermissive +else ifeq ($(shell printf '\n' > bin/empty.cpp ; if $(CXX) -std=gnu++23 -c bin/empty.cpp -o bin/empty.out > /dev/null 2>&1 ; then echo 'c++23' ; fi ), c++23) +CXXFLAGS_STDCXX = -std=gnu++23 -fexceptions -frtti -fpermissive else ifeq ($(shell printf '\n' > bin/empty.cpp ; if $(CXX) -std=gnu++20 -c bin/empty.cpp -o bin/empty.out > /dev/null 2>&1 ; then echo 'c++20' ; fi ), c++20) CXXFLAGS_STDCXX = -std=gnu++20 -fexceptions -frtti -fpermissive else @@ -26,6 +28,10 @@ endif ifneq ($(STDC),) CFLAGS_STDC = -std=$(STDC) +else ifeq ($(shell printf '\n' > bin/empty.c ; if $(CC) -std=gnu23 -c bin/empty.c -o bin/empty.out > /dev/null 2>&1 ; then echo 'c23' ; fi ), c23) +CFLAGS_STDC = -std=gnu23 +else ifeq ($(shell printf '\n' > bin/empty.c ; if $(CC) -std=gnu20 -c bin/empty.c -o bin/empty.out > /dev/null 2>&1 ; then echo 'c20' ; fi ), c20) +CFLAGS_STDC = -std=gnu20 else ifeq ($(shell printf '\n' > bin/empty.c ; if $(CC) -std=gnu17 -c bin/empty.c -o bin/empty.out > /dev/null 2>&1 ; then echo 'c17' ; fi ), c17) CFLAGS_STDC = -std=gnu17 else Modified: trunk/OpenMPT/build/make/config-emscripten.mk ============================================================================== --- trunk/OpenMPT/build/make/config-emscripten.mk Mon Jul 22 20:49:19 2024 (r21251) +++ trunk/OpenMPT/build/make/config-emscripten.mk Mon Jul 22 21:06:25 2024 (r21252) @@ -19,6 +19,8 @@ ifneq ($(STDCXX),) CXXFLAGS_STDCXX = -std=$(STDCXX) +else ifeq ($(shell printf '\n' > bin/empty.cpp ; if $(CXX) -std=c++23 -c bin/empty.cpp -o bin/empty.out > /dev/null 2>&1 ; then echo 'c++23' ; fi ), c++23) +CXXFLAGS_STDCXX = -std=c++23 else ifeq ($(shell printf '\n' > bin/empty.cpp ; if $(CXX) -std=c++20 -c bin/empty.cpp -o bin/empty.out > /dev/null 2>&1 ; then echo 'c++20' ; fi ), c++20) CXXFLAGS_STDCXX = -std=c++20 else @@ -26,6 +28,10 @@ endif ifneq ($(STDC),) CFLAGS_STDC = -std=$(STDC) +else ifeq ($(shell printf '\n' > bin/empty.c ; if $(CC) -std=c23 -c bin/empty.c -o bin/empty.out > /dev/null 2>&1 ; then echo 'c23' ; fi ), c23) +CFLAGS_STDC = -std=c23 +else ifeq ($(shell printf '\n' > bin/empty.c ; if $(CC) -std=c18 -c bin/empty.c -o bin/empty.out > /dev/null 2>&1 ; then echo 'c18' ; fi ), c18) +CFLAGS_STDC = -std=c18 else ifeq ($(shell printf '\n' > bin/empty.c ; if $(CC) -std=c17 -c bin/empty.c -o bin/empty.out > /dev/null 2>&1 ; then echo 'c17' ; fi ), c17) CFLAGS_STDC = -std=c17 else Modified: trunk/OpenMPT/build/make/config-gcc.mk ============================================================================== --- trunk/OpenMPT/build/make/config-gcc.mk Mon Jul 22 20:49:19 2024 (r21251) +++ trunk/OpenMPT/build/make/config-gcc.mk Mon Jul 22 21:06:25 2024 (r21252) @@ -14,6 +14,8 @@ ifneq ($(STDCXX),) CXXFLAGS_STDCXX = -std=$(STDCXX) -fexceptions -frtti -pthread +else ifeq ($(shell printf '\n' > bin/empty.cpp ; if $(CXX) -std=c++23 -c bin/empty.cpp -o bin/empty.out > /dev/null 2>&1 ; then echo 'c++23' ; fi ), c++23) +CXXFLAGS_STDCXX = -std=c++23 -fexceptions -frtti -pthread else ifeq ($(shell printf '\n' > bin/empty.cpp ; if $(CXX) -std=c++20 -c bin/empty.cpp -o bin/empty.out > /dev/null 2>&1 ; then echo 'c++20' ; fi ), c++20) CXXFLAGS_STDCXX = -std=c++20 -fexceptions -frtti -pthread else @@ -21,6 +23,10 @@ endif ifneq ($(STDC),) CFLAGS_STDC = -std=$(STDC) -pthread +else ifeq ($(shell printf '\n' > bin/empty.c ; if $(CC) -std=c23 -c bin/empty.c -o bin/empty.out > /dev/null 2>&1 ; then echo 'c23' ; fi ), c23) +CFLAGS_STDC = -std=c23 -pthread +else ifeq ($(shell printf '\n' > bin/empty.c ; if $(CC) -std=c18 -c bin/empty.c -o bin/empty.out > /dev/null 2>&1 ; then echo 'c18' ; fi ), c18) +CFLAGS_STDC = -std=c18 -pthread else ifeq ($(shell printf '\n' > bin/empty.c ; if $(CC) -std=c17 -c bin/empty.c -o bin/empty.out > /dev/null 2>&1 ; then echo 'c17' ; fi ), c17) CFLAGS_STDC = -std=c17 -pthread else Modified: trunk/OpenMPT/build/make/config-icx.mk ============================================================================== --- trunk/OpenMPT/build/make/config-icx.mk Mon Jul 22 20:49:19 2024 (r21251) +++ trunk/OpenMPT/build/make/config-icx.mk Mon Jul 22 21:06:25 2024 (r21252) @@ -14,6 +14,8 @@ ifneq ($(STDCXX),) CXXFLAGS_STDCXX = -std=$(STDCXX) -fexceptions -frtti -pthread +else ifeq ($(shell printf '\n' > bin/empty.cpp ; if $(CXX) -std=c++23 -c bin/empty.cpp -o bin/empty.out > /dev/null 2>&1 ; then echo 'c++23' ; fi ), c++23) +CXXFLAGS_STDCXX = -std=c++23 -fexceptions -frtti -pthread else ifeq ($(shell printf '\n' > bin/empty.cpp ; if $(CXX) -std=c++20 -c bin/empty.cpp -o bin/empty.out > /dev/null 2>&1 ; then echo 'c++20' ; fi ), c++20) CXXFLAGS_STDCXX = -std=c++20 -fexceptions -frtti -pthread else @@ -21,6 +23,10 @@ endif ifneq ($(STDC),) CFLAGS_STDC = -std=$(STDC) -pthread +else ifeq ($(shell printf '\n' > bin/empty.c ; if $(CC) -std=c23 -c bin/empty.c -o bin/empty.out > /dev/null 2>&1 ; then echo 'c23' ; fi ), c23) +CFLAGS_STDC = -std=c23 -pthread +else ifeq ($(shell printf '\n' > bin/empty.c ; if $(CC) -std=c18 -c bin/empty.c -o bin/empty.out > /dev/null 2>&1 ; then echo 'c18' ; fi ), c18) +CFLAGS_STDC = -std=c18 -pthread else ifeq ($(shell printf '\n' > bin/empty.c ; if $(CC) -std=c17 -c bin/empty.c -o bin/empty.out > /dev/null 2>&1 ; then echo 'c17' ; fi ), c17) CFLAGS_STDC = -std=c17 -pthread else Modified: trunk/OpenMPT/build/make/config-mingw-w64.mk ============================================================================== --- trunk/OpenMPT/build/make/config-mingw-w64.mk Mon Jul 22 20:49:19 2024 (r21251) +++ trunk/OpenMPT/build/make/config-mingw-w64.mk Mon Jul 22 21:06:25 2024 (r21252) @@ -38,6 +38,8 @@ ifneq ($(STDCXX),) CXXFLAGS_STDCXX = -std=$(STDCXX) -fexceptions -frtti +else ifeq ($(shell printf '\n' > bin/empty.cpp ; if $(CXX) -std=c++23 -c bin/empty.cpp -o bin/empty.out > /dev/null 2>&1 ; then echo 'c++23' ; fi ), c++23) +CXXFLAGS_STDCXX = -std=c++23 -fexceptions -frtti else ifeq ($(shell printf '\n' > bin/empty.cpp ; if $(CXX) -std=c++20 -c bin/empty.cpp -o bin/empty.out > /dev/null 2>&1 ; then echo 'c++20' ; fi ), c++20) CXXFLAGS_STDCXX = -std=c++20 -fexceptions -frtti else @@ -45,6 +47,10 @@ endif ifneq ($(STDC),) CFLAGS_STDC = -std=$(STDC) +else ifeq ($(shell printf '\n' > bin/empty.c ; if $(CC) -std=c23 -c bin/empty.c -o bin/empty.out > /dev/null 2>&1 ; then echo 'c23' ; fi ), c23) +CFLAGS_STDC = -std=c23 +else ifeq ($(shell printf '\n' > bin/empty.c ; if $(CC) -std=c18 -c bin/empty.c -o bin/empty.out > /dev/null 2>&1 ; then echo 'c18' ; fi ), c18) +CFLAGS_STDC = -std=c18 else ifeq ($(shell printf '\n' > bin/empty.c ; if $(CC) -std=c17 -c bin/empty.c -o bin/empty.out > /dev/null 2>&1 ; then echo 'c17' ; fi ), c17) CFLAGS_STDC = -std=c17 else Modified: trunk/OpenMPT/build/make/config-mingw.mk ============================================================================== --- trunk/OpenMPT/build/make/config-mingw.mk Mon Jul 22 20:49:19 2024 (r21251) +++ trunk/OpenMPT/build/make/config-mingw.mk Mon Jul 22 21:06:25 2024 (r21252) @@ -14,6 +14,8 @@ ifneq ($(STDCXX),) CXXFLAGS_STDCXX = -std=$(STDCXX) -fexceptions -frtti +else ifeq ($(shell printf '\n' > bin/empty.cpp ; if $(CXX) -std=gnu++23 -c bin/empty.cpp -o bin/empty.out > /dev/null 2>&1 ; then echo 'c++23' ; fi ), c++23) +CXXFLAGS_STDCXX = -std=gnu++23 -fexceptions -frtti else ifeq ($(shell printf '\n' > bin/empty.cpp ; if $(CXX) -std=gnu++20 -c bin/empty.cpp -o bin/empty.out > /dev/null 2>&1 ; then echo 'c++20' ; fi ), c++20) CXXFLAGS_STDCXX = -std=gnu++20 -fexceptions -frtti else @@ -21,6 +23,10 @@ endif ifneq ($(STDC),) CFLAGS_STDC = -std=$(STDC) +else ifeq ($(shell printf '\n' > bin/empty.c ; if $(CC) -std=gnu23 -c bin/empty.c -o bin/empty.out > /dev/null 2>&1 ; then echo 'c23' ; fi ), c23) +CFLAGS_STDC = -std=gnu23 +else ifeq ($(shell printf '\n' > bin/empty.c ; if $(CC) -std=gnu18 -c bin/empty.c -o bin/empty.out > /dev/null 2>&1 ; then echo 'c18' ; fi ), c18) +CFLAGS_STDC = -std=gnu18 else ifeq ($(shell printf '\n' > bin/empty.c ; if $(CC) -std=gnu17 -c bin/empty.c -o bin/empty.out > /dev/null 2>&1 ; then echo 'c17' ; fi ), c17) CFLAGS_STDC = -std=gnu17 else Modified: trunk/OpenMPT/build/make/config-mingw32crt.mk ============================================================================== --- trunk/OpenMPT/build/make/config-mingw32crt.mk Mon Jul 22 20:49:19 2024 (r21251) +++ trunk/OpenMPT/build/make/config-mingw32crt.mk Mon Jul 22 21:06:25 2024 (r21252) @@ -14,6 +14,8 @@ ifneq ($(STDCXX),) CXXFLAGS_STDCXX = -std=$(STDCXX) -fexceptions -frtti +else ifeq ($(shell printf '\n' > bin/empty.cpp ; if $(CXX) -std=gnu++23 -c bin/empty.cpp -o bin/empty.out > /dev/null 2>&1 ; then echo 'c++23' ; fi ), c++23) +CXXFLAGS_STDCXX = -std=gnu++23 -fexceptions -frtti else ifeq ($(shell printf '\n' > bin/empty.cpp ; if $(CXX) -std=gnu++20 -c bin/empty.cpp -o bin/empty.out > /dev/null 2>&1 ; then echo 'c++20' ; fi ), c++20) CXXFLAGS_STDCXX = -std=gnu++20 -fexceptions -frtti else @@ -21,6 +23,10 @@ endif ifneq ($(STDC),) CFLAGS_STDC = -std=$(STDC) +else ifeq ($(shell printf '\n' > bin/empty.c ; if $(CC) -std=gnu23 -c bin/empty.c -o bin/empty.out > /dev/null 2>&1 ; then echo 'c23' ; fi ), c23) +CFLAGS_STDC = -std=gnu23 +else ifeq ($(shell printf '\n' > bin/empty.c ; if $(CC) -std=gnu18 -c bin/empty.c -o bin/empty.out > /dev/null 2>&1 ; then echo 'c18' ; fi ), c18) +CFLAGS_STDC = -std=gnu18 else ifeq ($(shell printf '\n' > bin/empty.c ; if $(CC) -std=gnu17 -c bin/empty.c -o bin/empty.out > /dev/null 2>&1 ; then echo 'c17' ; fi ), c17) CFLAGS_STDC = -std=gnu17 else Modified: trunk/OpenMPT/build/make/config-standard.mk ============================================================================== --- trunk/OpenMPT/build/make/config-standard.mk Mon Jul 22 20:49:19 2024 (r21251) +++ trunk/OpenMPT/build/make/config-standard.mk Mon Jul 22 21:06:25 2024 (r21252) @@ -12,7 +12,11 @@ AR = ar endif +#CXXFLAGS_STDCXX = -std=c++23 +#CXXFLAGS_STDCXX = -std=c++20 CXXFLAGS_STDCXX = -std=c++17 +#CFLAGS_STDC = -std=c23 +#CFLAGS_STDC = -std=c18 CFLAGS_STDC = -std=c17 CXXFLAGS += $(CXXFLAGS_STDCXX) CFLAGS += $(CFLAGS_STDC) Modified: trunk/OpenMPT/build/make/config-unknown.mk ============================================================================== --- trunk/OpenMPT/build/make/config-unknown.mk Mon Jul 22 20:49:19 2024 (r21251) +++ trunk/OpenMPT/build/make/config-unknown.mk Mon Jul 22 21:06:25 2024 (r21252) @@ -12,7 +12,12 @@ AR = ar endif +#CXXFLAGS_STDCXX = -std=c++23 +#CXXFLAGS_STDCXX = -std=c++20 CXXFLAGS_STDCXX = -std=c++17 +#CFLAGS_STDC = -std=c23 +#CFLAGS_STDC = -std=c18 +#CFLAGS_STDC = -std=c17 CFLAGS_STDC = -std=c11 CXXFLAGS += $(CXXFLAGS_STDCXX) CFLAGS += $(CFLAGS_STDC) |
From: <sv...@op...> - 2024-07-22 18:49:39
|
Author: manx Date: Mon Jul 22 20:49:19 2024 New Revision: 21251 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21251 Log: [Doc] libopenmpt: Update changelog. Modified: branches/OpenMPT-1.31/doc/libopenmpt/changelog.md Modified: branches/OpenMPT-1.31/doc/libopenmpt/changelog.md ============================================================================== --- branches/OpenMPT-1.31/doc/libopenmpt/changelog.md Mon Jul 22 20:49:10 2024 (r21250) +++ branches/OpenMPT-1.31/doc/libopenmpt/changelog.md Mon Jul 22 20:49:19 2024 (r21251) @@ -7,6 +7,8 @@ ### libopenmpt 0.7.10-pre + * [**Bug**] The Android NDK build system did not enable C++20 when available. + ### libopenmpt 0.7.9 (2024-07-21) * [**Sec**] Potential division by 0 when seeking in the module with |
From: <sv...@op...> - 2024-07-22 18:49:28
|
Author: manx Date: Mon Jul 22 20:49:10 2024 New Revision: 21250 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21250 Log: Merged revision(s) 21246 from trunk/OpenMPT: [Imp] build: Android: Enable C++20 if available. ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/build/android_ndk/Android.mk Modified: branches/OpenMPT-1.31/build/android_ndk/Android.mk ============================================================================== --- branches/OpenMPT-1.31/build/android_ndk/Android.mk Mon Jul 22 20:27:16 2024 (r21249) +++ branches/OpenMPT-1.31/build/android_ndk/Android.mk Mon Jul 22 20:49:10 2024 (r21250) @@ -6,8 +6,45 @@ LOCAL_MODULE := openmpt +ifeq ($(NDK_MAJOR),) LOCAL_CFLAGS += -std=c17 -LOCAL_CPPFLAGS += -std=c++17 -fexceptions -frtti +LOCAL_CPPFLAGS += -std=c++17 +else +ifeq ($(NDK_MAJOR),21) +# clang 9 +LOCAL_CFLAGS += -std=c17 +LOCAL_CPPFLAGS += -std=c++17 +else ifeq ($(NDK_MAJOR),22) +# clang 11 +LOCAL_CFLAGS += -std=c17 +LOCAL_CPPFLAGS += -std=c++20 +else ifeq ($(NDK_MAJOR),23) +# clang 12 +LOCAL_CFLAGS += -std=c17 +LOCAL_CPPFLAGS += -std=c++20 +else ifeq ($(NDK_MAJOR),24) +# clang 14 +LOCAL_CFLAGS += -std=c17 +LOCAL_CPPFLAGS += -std=c++20 +else ifeq ($(NDK_MAJOR),25) +# clang 14 +LOCAL_CFLAGS += -std=c17 +LOCAL_CPPFLAGS += -std=c++20 +else ifeq ($(NDK_MAJOR),26) +# clang 17 +LOCAL_CFLAGS += -std=c17 +LOCAL_CPPFLAGS += -std=c++20 +else ifeq ($(NDK_MAJOR),27) +# clang 18 +LOCAL_CFLAGS += -std=c17 +LOCAL_CPPFLAGS += -std=c++20 +else +LOCAL_CFLAGS += -std=c17 +LOCAL_CPPFLAGS += -std=c++20 +endif +endif + +LOCAL_CPPFLAGS += -fexceptions -frtti LOCAL_CPP_FEATURES += exceptions rtti |
From: <sv...@op...> - 2024-07-22 18:27:23
|
Author: manx Date: Mon Jul 22 20:27:16 2024 New Revision: 21249 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21249 Log: Merged revision(s) 21247 from trunk/OpenMPT: [Fix] mpt/base/numbers.hpp: Work-around missing numbers header in Android NDK r23, r24, r25 (which do ship only libc++ 11). ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/src/mpt/base/detect_quirks.hpp branches/OpenMPT-1.31/src/mpt/base/numbers.hpp Modified: branches/OpenMPT-1.31/src/mpt/base/detect_quirks.hpp ============================================================================== --- branches/OpenMPT-1.31/src/mpt/base/detect_quirks.hpp Mon Jul 22 20:24:02 2024 (r21248) +++ branches/OpenMPT-1.31/src/mpt/base/detect_quirks.hpp Mon Jul 22 20:27:16 2024 (r21249) @@ -312,4 +312,10 @@ +#if MPT_OS_ANDROID && MPT_LIBCXX_LLVM_BEFORE(17000) +#define MPT_LIBCXX_QUIRK_NO_NUMBERS +#endif + + + #endif // MPT_BASE_DETECT_QUIRKS_HPP Modified: branches/OpenMPT-1.31/src/mpt/base/numbers.hpp ============================================================================== --- branches/OpenMPT-1.31/src/mpt/base/numbers.hpp Mon Jul 22 20:24:02 2024 (r21248) +++ branches/OpenMPT-1.31/src/mpt/base/numbers.hpp Mon Jul 22 20:27:16 2024 (r21249) @@ -6,9 +6,10 @@ #include "mpt/base/detect_compiler.hpp" +#include "mpt/base/detect_quirks.hpp" #include "mpt/base/namespace.hpp" -#if MPT_CXX_AT_LEAST(20) +#if MPT_CXX_AT_LEAST(20) && !defined(MPT_LIBCXX_QUIRK_NO_NUMBERS) #include <numbers> #else #include <type_traits> @@ -25,7 +26,7 @@ namespace numbers { -#if MPT_CXX_AT_LEAST(20) +#if MPT_CXX_AT_LEAST(20) && !defined(MPT_LIBCXX_QUIRK_NO_NUMBERS) template <typename T> inline constexpr T e_v = std::numbers::e_v<T>; |
From: <sv...@op...> - 2024-07-22 18:24:19
|
Author: manx Date: Mon Jul 22 20:24:02 2024 New Revision: 21248 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21248 Log: [Imp] build: dist: Perform header checks also for C++23 and C23. See <https://bugs.openmpt.org/view.php?id=1803>. Modified: trunk/OpenMPT/build/auto/dist.sh Modified: trunk/OpenMPT/build/auto/dist.sh ============================================================================== --- trunk/OpenMPT/build/auto/dist.sh Mon Jul 22 20:23:12 2024 (r21247) +++ trunk/OpenMPT/build/auto/dist.sh Mon Jul 22 20:24:02 2024 (r21248) @@ -40,6 +40,10 @@ echo " cc 18" cc -std=c18 -Wall -Wextra -Wpedantic -Werror -I. bin/headercheck.c -o bin/headercheck.cc18.out fi +if cc -std=c23 -c bin/empty.c -o bin/empty.cc23.out > /dev/null 2>&1 ; then +echo " cc 23" +cc -std=c23 -Wall -Wextra -Wpedantic -Werror -I. bin/headercheck.c -o bin/headercheck.cc23.out +fi echo " gcc 89" gcc -std=c89 -Wall -Wextra -Wpedantic -Werror -I. bin/headercheck.c -o bin/headercheck.gcc89.out echo " gcc 99" @@ -52,6 +56,10 @@ echo " gcc 18" gcc -std=c18 -Wall -Wextra -Wpedantic -Werror -I. bin/headercheck.c -o bin/headercheck.gcc18.out fi +if gcc -std=c23 -c bin/empty.c -o bin/empty.gcc23.out > /dev/null 2>&1 ; then +echo " gcc 23" +gcc -std=c23 -Wall -Wextra -Wpedantic -Werror -I. bin/headercheck.c -o bin/headercheck.gcc23.out +fi echo " clang 89" clang -std=c89 -Wall -Wextra -Wpedantic -Werror -I. bin/headercheck.c -o bin/headercheck.clang89.out echo " clang 99" @@ -64,6 +72,10 @@ echo " clang 18" clang -std=c18 -Wall -Wextra -Wpedantic -Werror -I. bin/headercheck.c -o bin/headercheck.clang18.out fi +if clang -std=c23 -c bin/empty.c -o bin/empty.clang23.out > /dev/null 2>&1 ; then +echo " clang 23" +clang -std=c23 -Wall -Wextra -Wpedantic -Werror -I. bin/headercheck.c -o bin/headercheck.clang23.out +fi if [ `uname -s` != "Darwin" ] ; then if [ `uname -m` == "x86_64" ] ; then if [ "${MSYSTEM}x" == "x" ]; then @@ -101,18 +113,30 @@ echo " c++ 20" c++ -std=c++20 -Wall -Wextra -Wpedantic -Werror -I. bin/headercheck.cpp -o bin/headercheck.cpp20.out fi +if c++ -std=c++23 -c bin/empty.cpp -o bin/empty.cpp23.out > /dev/null 2>&1 ; then +echo " c++ 23" +c++ -std=c++23 -Wall -Wextra -Wpedantic -Werror -I. bin/headercheck.cpp -o bin/headercheck.cpp23.out +fi echo " g++ 17" g++ -std=c++17 -Wall -Wextra -Wpedantic -Werror -I. bin/headercheck.cpp -o bin/headercheck.gpp17.out if g++ -std=c++20 -c bin/empty.cpp -o bin/empty.gpp20.out > /dev/null 2>&1 ; then echo " g++ 20" g++ -std=c++20 -Wall -Wextra -Wpedantic -Werror -I. bin/headercheck.cpp -o bin/headercheck.gpp20.out fi +if g++ -std=c++23 -c bin/empty.cpp -o bin/empty.gpp23.out > /dev/null 2>&1 ; then +echo " g++ 23" +g++ -std=c++23 -Wall -Wextra -Wpedantic -Werror -I. bin/headercheck.cpp -o bin/headercheck.gpp23.out +fi echo " clang++ 17" clang++ -std=c++17 -Wall -Wextra -Wpedantic -Werror -I. bin/headercheck.cpp -o bin/headercheck.clangpp17.out if clang++ -std=c++20 -c bin/empty.cpp -o bin/empty.clangpp20.out > /dev/null 2>&1 ; then echo " clang++ 20" clang++ -std=c++20 -Wall -Wextra -Wpedantic -Werror -I. bin/headercheck.cpp -o bin/headercheck.clangpp20.out fi +if clang++ -std=c++23 -c bin/empty.cpp -o bin/empty.clangpp23.out > /dev/null 2>&1 ; then +echo " clang++ 23" +clang++ -std=c++23 -Wall -Wextra -Wpedantic -Werror -I. bin/headercheck.cpp -o bin/headercheck.clangpp23.out +fi rm bin/headercheck.*.out rm bin/headercheck.cpp rm bin/empty.*.out |
From: <sv...@op...> - 2024-07-22 18:23:24
|
Author: manx Date: Mon Jul 22 20:23:12 2024 New Revision: 21247 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21247 Log: [Fix] mpt/base/numbers.hpp: Work-around missing numbers header in Android NDK r23, r24, r25 (which do ship only libc++ 11). Modified: trunk/OpenMPT/src/mpt/base/detect_quirks.hpp trunk/OpenMPT/src/mpt/base/numbers.hpp Modified: trunk/OpenMPT/src/mpt/base/detect_quirks.hpp ============================================================================== --- trunk/OpenMPT/src/mpt/base/detect_quirks.hpp Mon Jul 22 19:54:14 2024 (r21246) +++ trunk/OpenMPT/src/mpt/base/detect_quirks.hpp Mon Jul 22 20:23:12 2024 (r21247) @@ -327,4 +327,10 @@ +#if MPT_OS_ANDROID && MPT_LIBCXX_LLVM_BEFORE(17000) +#define MPT_LIBCXX_QUIRK_NO_NUMBERS +#endif + + + #endif // MPT_BASE_DETECT_QUIRKS_HPP Modified: trunk/OpenMPT/src/mpt/base/numbers.hpp ============================================================================== --- trunk/OpenMPT/src/mpt/base/numbers.hpp Mon Jul 22 19:54:14 2024 (r21246) +++ trunk/OpenMPT/src/mpt/base/numbers.hpp Mon Jul 22 20:23:12 2024 (r21247) @@ -6,9 +6,10 @@ #include "mpt/base/detect_compiler.hpp" +#include "mpt/base/detect_quirks.hpp" #include "mpt/base/namespace.hpp" -#if MPT_CXX_AT_LEAST(20) +#if MPT_CXX_AT_LEAST(20) && !defined(MPT_LIBCXX_QUIRK_NO_NUMBERS) #include <numbers> #else #include <type_traits> @@ -25,7 +26,7 @@ namespace numbers { -#if MPT_CXX_AT_LEAST(20) +#if MPT_CXX_AT_LEAST(20) && !defined(MPT_LIBCXX_QUIRK_NO_NUMBERS) template <typename T> inline constexpr T e_v = std::numbers::e_v<T>; |