Skip to content

Commit

Permalink
use 'modern' C pre-processor
Browse files Browse the repository at this point in the history
  • Loading branch information
Dan Smith authored and Dan Smith committed Jan 12, 2023
1 parent b44709a commit fc3008b
Show file tree
Hide file tree
Showing 9 changed files with 53 additions and 15 deletions.
16 changes: 12 additions & 4 deletions UnitTest/UnitTest.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -23,16 +23,16 @@
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
Expand Down Expand Up @@ -64,10 +64,13 @@
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<TreatWarningAsError>true</TreatWarningAsError>
<ControlFlowGuard>Guard</ControlFlowGuard>
<EnforceTypeConversionRules>true</EnforceTypeConversionRules>
<ConformanceMode>true</ConformanceMode>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<TranslateIncludes>true</TranslateIncludes>
<UseStandardPreprocessor>true</UseStandardPreprocessor>
<EnforceTypeConversionRules>true</EnforceTypeConversionRules>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<ConformanceMode>true</ConformanceMode>
<AdditionalOptions>/Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
Expand All @@ -88,6 +91,11 @@
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<ControlFlowGuard>Guard</ControlFlowGuard>
<TranslateIncludes>true</TranslateIncludes>
<UseStandardPreprocessor>true</UseStandardPreprocessor>
<EnforceTypeConversionRules>true</EnforceTypeConversionRules>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<ConformanceMode>true</ConformanceMode>
<AdditionalOptions>/Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
Expand Down
4 changes: 4 additions & 0 deletions UnitTest/pch.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,12 @@
// add headers that you want to pre-compile here

#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
#pragma warning(push)
#pragma warning(disable: 5105) // macro expansion producing '...' has undefined behavior
#include <WinSock.h>
#include <windows.h>
#include <comdef.h>
#pragma warning(pop)
#undef min
#undef max

Expand Down Expand Up @@ -108,6 +111,7 @@
#include <logging/ExceptionLogger.h>
#include <import/logging.h>
#include <import/re.h>
#include "io/StringStream.h"

#include "TestCase.h"

Expand Down
7 changes: 5 additions & 2 deletions modules/c++/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,11 @@ set(CXX_STANDARD_REQUIRED true)

# turn on warnings as errors
if (MSVC)
add_compile_options(/WX)
add_compile_options(/W4)
add_compile_options(/WX /W4)

# use standard (not legacy) C pre-processor
add_compile_options(/Zc:preprocessor)
add_compile_options(/wd5105) # macro expansion producing '...' has undefined behavior
elseif (UNIX)
add_compile_options(-Werror)
endif()
Expand Down
14 changes: 10 additions & 4 deletions modules/c++/coda-oss-lite.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -446,16 +446,19 @@
<WarningLevel>EnableAllWarnings</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_DEBUG;_LIB;%(PreprocessorDefinitions);CODA_OSS_EXPORTS;CODA_OSS_DLL;MT_DEFAULT_PINNING=0;RE_ENABLE_STD_REGEX=1</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
<AdditionalIncludeDirectories>cli\include\;coda_oss\include;config\include\;except\include\;gsl\include\;io\include\;logging\include\;math\include\;math.linear\include\;math.poly\include\;mem\include\;mt\include\;plugin\include\;polygon\include\;re\include\;sio.lite\include\;std\include\;str\include\;sys\include\;tiff\include;types\include\;units\include\</AdditionalIncludeDirectories>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<ControlFlowGuard>Guard</ControlFlowGuard>
<EnforceTypeConversionRules>true</EnforceTypeConversionRules>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<TranslateIncludes>true</TranslateIncludes>
<UseStandardPreprocessor>true</UseStandardPreprocessor>
<EnforceTypeConversionRules>true</EnforceTypeConversionRules>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<ConformanceMode>true</ConformanceMode>
<AdditionalOptions>/Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<Link>
<SubSystem>
Expand All @@ -470,15 +473,18 @@
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>NDEBUG;_LIB;%(PreprocessorDefinitions);CODA_OSS_EXPORTS;CODA_OSS_DLL;MT_DEFAULT_PINNING=0;RE_ENABLE_STD_REGEX=1</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
<AdditionalIncludeDirectories>cli\include\;coda_oss\include;config\include\;except\include\;gsl\include\;io\include\;logging\include\;math\include\;math.linear\include\;math.poly\include\;mem\include\;mt\include\;plugin\include\;polygon\include\;re\include\;sio.lite\include\;std\include\;str\include\;sys\include\;tiff\include;types\include\;units\include\</AdditionalIncludeDirectories>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<ControlFlowGuard>Guard</ControlFlowGuard>
<EnforceTypeConversionRules>true</EnforceTypeConversionRules>
<TranslateIncludes>true</TranslateIncludes>
<UseStandardPreprocessor>true</UseStandardPreprocessor>
<EnforceTypeConversionRules>true</EnforceTypeConversionRules>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<ConformanceMode>true</ConformanceMode>
<AdditionalOptions>/Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<Link>
<SubSystem>
Expand Down
3 changes: 3 additions & 0 deletions modules/c++/framework.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,11 @@

#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
#define NOMINMAX // no min()/max() macros
#pragma warning(push)
#pragma warning(disable: 5105) // macro expansion producing '...' has undefined behavior
#include <windows.h>
#include <Winsock2.h>
#include <comdef.h>
#pragma warning(pop)
#pragma comment(lib, "Ws2_32")
#pragma warning(pop)
4 changes: 3 additions & 1 deletion modules/c++/io/include/io/FileInputStreamOS.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@
#ifndef __IO_FILE_INPUT_STREAM_OS_H__
#define __IO_FILE_INPUT_STREAM_OS_H__

#include "config/Exports.h"

#if !defined(USE_IO_STREAMS)

#include "except/Exception.h"
Expand Down Expand Up @@ -51,7 +53,7 @@ namespace io
* method is based on the pos in the file, and the streamTo() and read()
* are file operations
*/
struct FileInputStreamOS : public SeekableInputStream
struct CODA_OSS_API FileInputStreamOS : public SeekableInputStream
{
protected:
sys::File mFile;
Expand Down
11 changes: 8 additions & 3 deletions modules/c++/pch.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,12 @@
#pragma warning(disable: 4619) // #pragma warning: there is no warning number '...'

#pragma warning(disable: 4820) // '...': '...' bytes padding added after data member '...'
#pragma warning(disable: 4710) // '...': function not inlined
#pragma warning(disable: 5045) // Compiler will insert Spectre mitigation for memory load if / Qspectre switch specified
#pragma warning(disable: 4668) // '...' is not defined as a preprocessor macro, replacing with '...' for '...'
#pragma warning(disable: 5045) // Compiler will insert Spectre mitigation for memory load if / Qspectre switch specified
#pragma warning(disable: 4514) // '...': unreferenced inline function has been removed

#pragma warning(push)
#pragma warning(disable: 4710) // '...': function not inlined
#pragma warning(disable: 5027) // '...': move assignment operator was implicitly defined as deleted
#pragma warning(disable: 5026) // '...': move constructor was implicitly defined as deleted
#pragma warning(disable: 4626) // '...': assignment operator was implicitly defined as deleted
Expand Down Expand Up @@ -63,6 +66,8 @@
#include <std/optional>
#include <std/type_traits>

#pragma warning(disable: 4514) // '...': unreferenced inline function has been removed
#pragma warning(pop)

#pragma warning(disable: 4251) // '...': class '...' needs to have dll-interface to be used by clients of class '...'

#endif //CODA_OSS_pch_h_INCLUDED_
3 changes: 2 additions & 1 deletion modules/c++/sys/include/sys/File.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
#include "sys/SystemException.h"
#include "sys/Path.h"
#include "sys/filesystem.h"
#include "config/Exports.h"

#if defined(WIN32) || defined(_WIN32)
# define _SYS_SEEK_CUR FILE_CURRENT
Expand Down Expand Up @@ -68,7 +69,7 @@ typedef int _SYS_HANDLE_TYPE;

namespace sys
{
struct File
struct CODA_OSS_API File
{
enum
{
Expand Down
6 changes: 6 additions & 0 deletions modules/drivers/hdf5/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
set(MODULE_NAME hdf5)

if(CODA_ENABLE_HDF5)
# set up warnings
if (MSVC)
# DO NOT use standard (not legacy) C pre-processor
add_compile_options(/Zc:preprocessor-)
endif()

coda_add_module(${MODULE_NAME} VERSION 1.13.2)
else()
message("${MODULE_NAME} will not be built since HDF5 is not enabled")
Expand Down

0 comments on commit fc3008b

Please sign in to comment.