From 01d6be4d512118d39ef52f79ca9ddddd2bba3f32 Mon Sep 17 00:00:00 2001 From: stijn Date: Mon, 5 May 2014 12:18:27 +0200 Subject: Windows MSVC port Extend the windows port so it compiles with the toolchain from Visual Studio 2013 --- windows/msvc/common.props | 22 +++++++++++++ windows/msvc/debug.props | 13 ++++++++ windows/msvc/genhdr.targets | 76 +++++++++++++++++++++++++++++++++++++++++++++ windows/msvc/release.props | 16 ++++++++++ windows/msvc/snprintf.c | 44 ++++++++++++++++++++++++++ windows/msvc/sources.props | 17 ++++++++++ windows/msvc/unistd.h | 28 +++++++++++++++++ 7 files changed, 216 insertions(+) create mode 100644 windows/msvc/common.props create mode 100644 windows/msvc/debug.props create mode 100644 windows/msvc/genhdr.targets create mode 100644 windows/msvc/release.props create mode 100644 windows/msvc/snprintf.c create mode 100644 windows/msvc/sources.props create mode 100644 windows/msvc/unistd.h (limited to 'windows/msvc') diff --git a/windows/msvc/common.props b/windows/msvc/common.props new file mode 100644 index 000000000..300de46a5 --- /dev/null +++ b/windows/msvc/common.props @@ -0,0 +1,22 @@ + + + + + + $(ProjectDir) + $(ProjectDir)build\$(Configuration)$(Platform)\ + + + + .\;.\build;.\msvc;..\py + _USE_MATH_DEFINES;_CRT_SECURE_NO_WARNINGS;_MBCS;%(PreprocessorDefinitions) + false + Level1 + false + + + true + + + + \ No newline at end of file diff --git a/windows/msvc/debug.props b/windows/msvc/debug.props new file mode 100644 index 000000000..c0a22be85 --- /dev/null +++ b/windows/msvc/debug.props @@ -0,0 +1,13 @@ + + + + + + + + + DEBUG;%(PreprocessorDefinitions) + + + + diff --git a/windows/msvc/genhdr.targets b/windows/msvc/genhdr.targets new file mode 100644 index 000000000..453d2ff1e --- /dev/null +++ b/windows/msvc/genhdr.targets @@ -0,0 +1,76 @@ + + + + + + + + $(MsBuildThisFileDirectory)..\..\py\ + $(MsBuildThisFileDirectory)..\build\genhdr\ + + + + + + + + + + + + + + + + + + + + + + + $(DestDir)qstrdefs.preprocessed.h + $(MsBuildThisFileDirectory)..\..\unix\qstrdefsport.h + $(DestDir)qstrdefs.generated.h + + + + + + + + + + + + + + + + + + + + + + + + + $(GitHash)-dirty + + + $(DestDir)py-version.h + + + + + + + + + + + + diff --git a/windows/msvc/release.props b/windows/msvc/release.props new file mode 100644 index 000000000..ea0bf433d --- /dev/null +++ b/windows/msvc/release.props @@ -0,0 +1,16 @@ + + + + + + + + true + true + + + true + + + + diff --git a/windows/msvc/snprintf.c b/windows/msvc/snprintf.c new file mode 100644 index 000000000..d200a4cbc --- /dev/null +++ b/windows/msvc/snprintf.c @@ -0,0 +1,44 @@ +/* +* This file is part of the Micro Python project, http://micropython.org/ +* +* The MIT License (MIT) +* +* Copyright (c) 2013, 2014 Damien P. George +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +* THE SOFTWARE. +*/ + +#include +#include +#include + +// _snprintf/vsnprintf are fine, except the 'F' specifier is not handled +int snprintf(char *dest, size_t count, const char *format, ...) { + const size_t fmtLen = strlen(format) + 1; + char *fixedFmt = alloca(fmtLen); + for (size_t i = 0; i < fmtLen; ++i) + fixedFmt[i] = format[i] == 'F' ? 'f' : format[i]; + + va_list args; + va_start(args, format); + const int ret = vsnprintf(dest, count, fixedFmt, args); + va_end(args); + + return ret; +} diff --git a/windows/msvc/sources.props b/windows/msvc/sources.props new file mode 100644 index 000000000..9af7d6e11 --- /dev/null +++ b/windows/msvc/sources.props @@ -0,0 +1,17 @@ + + + + $(MsbuildThisFileDirectory)..\..\ + + + + + + + + + + + + + diff --git a/windows/msvc/unistd.h b/windows/msvc/unistd.h new file mode 100644 index 000000000..ece86fa74 --- /dev/null +++ b/windows/msvc/unistd.h @@ -0,0 +1,28 @@ +/* +* This file is part of the Micro Python project, http://micropython.org/ +* +* The MIT License (MIT) +* +* Copyright (c) 2013, 2014 Damien P. George +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +* THE SOFTWARE. +*/ + +// There's no unistd.h, but this is the equivalent +#include -- cgit v1.2.3