mirror of
https://github.com/YosysHQ/yosys
synced 2025-04-23 17:15:33 +00:00
More win32 (mxe and vs) build fixes
This commit is contained in:
parent
468ae92374
commit
b3a6f8f530
5 changed files with 86 additions and 25 deletions
|
@ -32,6 +32,36 @@
|
|||
|
||||
#if !defined(_WIN32) || defined(__MINGW32__)
|
||||
# include <unistd.h>
|
||||
#else
|
||||
char *optarg;
|
||||
int optind = 1, optcur = 1;
|
||||
int getopt(int argc, char **argv, const char *optstring)
|
||||
{
|
||||
if (optind >= argc || argv[optind][0] != '-')
|
||||
return -1;
|
||||
|
||||
bool takes_arg = false;
|
||||
int opt = argv[optind][optcur];
|
||||
for (int i = 0; optstring[i]; i++)
|
||||
if (opt == optstring[i] && optstring[i + 1] == ':')
|
||||
takes_arg = true;
|
||||
|
||||
if (!takes_arg) {
|
||||
if (argv[optind][++optcur] == 0)
|
||||
optind++, optcur = 1;
|
||||
return opt;
|
||||
}
|
||||
|
||||
if (argv[optind][++optcur]) {
|
||||
optarg = argv[optind++] + optcur;
|
||||
optcur = 1;
|
||||
return opt;
|
||||
}
|
||||
|
||||
optarg = argv[++optind];
|
||||
optind++, optcur = 1;
|
||||
return opt;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
|
|
@ -46,7 +46,7 @@
|
|||
YOSYS_NAMESPACE_BEGIN
|
||||
|
||||
#if defined(_WIN32) && !defined(__MINGW32__)
|
||||
const char *yosys_version_str = "Windows";
|
||||
const char *yosys_version_str = "Yosys for Windows (Version Information Unavailable)";
|
||||
#endif
|
||||
|
||||
int autoidx = 1;
|
||||
|
@ -210,9 +210,19 @@ std::string make_temp_file(std::string template_str)
|
|||
{
|
||||
#ifdef _WIN32
|
||||
if (template_str.rfind("/tmp/", 0) == 0) {
|
||||
char path[MAX_PATH+1];
|
||||
GetTempPath(MAX_PATH+1, path);
|
||||
template_str = stringf("%s\\%s", path, template_str.c_str() + 5);
|
||||
# ifdef __MINGW32__
|
||||
char longpath[MAX_PATH + 1];
|
||||
char shortpath[MAX_PATH + 1];
|
||||
# else
|
||||
WCHAR longpath[MAX_PATH + 1];
|
||||
TCHAR shortpath[MAX_PATH + 1];
|
||||
# endif
|
||||
if (!GetTempPath(MAX_PATH+1, longpath))
|
||||
log_error("GetTempPath() failed.\n");
|
||||
if (!GetShortPathName(longpath, shortpath, MAX_PATH + 1))
|
||||
log_error("GetShortPathName() failed.\n");
|
||||
log_assert(sizeof(TCHAR) == sizeof(char));
|
||||
template_str = stringf("%s\\%s", shortpath, template_str.c_str() + 5);
|
||||
}
|
||||
|
||||
size_t pos = template_str.rfind("XXXXXX");
|
||||
|
@ -475,14 +485,24 @@ std::string proc_self_dirname()
|
|||
#elif defined(_WIN32)
|
||||
std::string proc_self_dirname()
|
||||
{
|
||||
char longpath[MAX_PATH+1], shortpath[MAX_PATH+1];
|
||||
int i = 0;
|
||||
# ifdef __MINGW32__
|
||||
char longpath[MAX_PATH + 1];
|
||||
char shortpath[MAX_PATH + 1];
|
||||
# else
|
||||
WCHAR longpath[MAX_PATH + 1];
|
||||
TCHAR shortpath[MAX_PATH + 1];
|
||||
# endif
|
||||
if (!GetModuleFileName(0, longpath, MAX_PATH+1))
|
||||
log_error("GetModuleFileName() failed.\n");
|
||||
if (!GetShortPathName(longpath, shortpath, MAX_PATH+1))
|
||||
log_error("GetShortPathName() failed.\n");
|
||||
for (int i = strlen(shortpath)-1; i >= 0 && shortpath[i] != '/' && shortpath[i] != '\\' ; i--)
|
||||
shortpath[i] = 0;
|
||||
return std::string(shortpath);
|
||||
while (shortpath[i] != 0)
|
||||
i++;
|
||||
while (i > 0 && shortpath[i-1] != '/' && shortpath[i-1] != '\\')
|
||||
shortpath[--i] = 0;
|
||||
log_assert(sizeof(TCHAR) == sizeof(char));
|
||||
return std::string((char*)shortpath);
|
||||
}
|
||||
#elif defined(EMSCRIPTEN)
|
||||
std::string proc_self_dirname()
|
||||
|
|
|
@ -60,9 +60,9 @@
|
|||
#include <stdio.h>
|
||||
|
||||
#ifndef _YOSYS_
|
||||
# error It looks like you are trying to build Yosys with the config defines set. \
|
||||
# error It looks like you are trying to build Yosys without the config defines set. \
|
||||
When building Yosys with a custom make system, make sure you set all the \
|
||||
defines the Yosys Makefile would set for your build configuration.
|
||||
defines the Yosys Makefile would set for your build configuration.
|
||||
#endif
|
||||
|
||||
#ifdef YOSYS_ENABLE_TCL
|
||||
|
@ -74,8 +74,6 @@
|
|||
# define NOMINMAX 1
|
||||
# undef YY_NO_UNISTD_H
|
||||
# define YY_NO_UNISTD_H 1
|
||||
# undef _CRT_SECURE_NO_WARNINGS
|
||||
# define _CRT_SECURE_NO_WARNINGS 1
|
||||
|
||||
# include <windows.h>
|
||||
# include <io.h>
|
||||
|
@ -89,6 +87,11 @@
|
|||
# define popen _popen
|
||||
# define pclose _pclose
|
||||
# define PATH_MAX MAX_PATH
|
||||
|
||||
# ifndef __MINGW32__
|
||||
# define isatty _isatty
|
||||
# define fileno _fileno
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#define PRIVATE_NAMESPACE_BEGIN namespace {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue