Fixed macros and includes for MSVC
This commit is contained in:
parent
fe1ad5b086
commit
1cf8293019
@ -9,8 +9,13 @@ option(BUILD_TESTS "Build GUI" OFF)
|
|||||||
# List of families to build
|
# List of families to build
|
||||||
set(FAMILIES generic ice40)
|
set(FAMILIES generic ice40)
|
||||||
set(CMAKE_CXX_STANDARD 11)
|
set(CMAKE_CXX_STANDARD 11)
|
||||||
|
if (MSVC)
|
||||||
|
set(CMAKE_CXX_FLAGS_DEBUG "/W4 /wd4100 /wd4244 /wd4125 /wd4800 /wd4456 /wd4458 /wd4305")
|
||||||
|
set(CMAKE_CXX_FLAGS_RELEASE "/W4 /wd4100 /wd4244 /wd4125 /wd4800 /wd4456 /wd4458 /wd4305")
|
||||||
|
else()
|
||||||
set(CMAKE_CXX_FLAGS_DEBUG "-Wall -fPIC -ggdb")
|
set(CMAKE_CXX_FLAGS_DEBUG "-Wall -fPIC -ggdb")
|
||||||
set(CMAKE_CXX_FLAGS_RELEASE "-Wall -fPIC -O3 -g")
|
set(CMAKE_CXX_FLAGS_RELEASE "-Wall -fPIC -O3 -g")
|
||||||
|
endif()
|
||||||
set(CMAKE_DEFIN)
|
set(CMAKE_DEFIN)
|
||||||
|
|
||||||
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/3rdparty/sanitizers-cmake/cmake" ${CMAKE_MODULE_PATH})
|
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/3rdparty/sanitizers-cmake/cmake" ${CMAKE_MODULE_PATH})
|
||||||
@ -114,6 +119,10 @@ set(CMAKE_BUILD_TYPE Release)
|
|||||||
if(MINGW)
|
if(MINGW)
|
||||||
add_definitions("-Wa,-mbig-obj")
|
add_definitions("-Wa,-mbig-obj")
|
||||||
endif(MINGW)
|
endif(MINGW)
|
||||||
|
if (MSVC)
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj")
|
||||||
|
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
|
||||||
|
endif()
|
||||||
|
|
||||||
foreach (family ${FAMILIES})
|
foreach (family ${FAMILIES})
|
||||||
string(TOUPPER ${family} ufamily)
|
string(TOUPPER ${family} ufamily)
|
||||||
@ -186,12 +195,3 @@ add_custom_target(
|
|||||||
-i
|
-i
|
||||||
${CLANGFORMAT_FILES}
|
${CLANGFORMAT_FILES}
|
||||||
)
|
)
|
||||||
|
|
||||||
unset(BUILD_GUI CACHE)
|
|
||||||
unset(BUILD_PYTHON CACHE)
|
|
||||||
unset(BUILD_TESTS CACHE)
|
|
||||||
unset(SANITIZE_ADDRESS CACHE)
|
|
||||||
unset(SANITIZE_MEMORY CACHE)
|
|
||||||
unset(SANITIZE_THREAD CACHE)
|
|
||||||
unset(SANITIZE_UNDEFINED CACHE)
|
|
||||||
unset(SANITIZE_LINK_STATIC CACHE)
|
|
||||||
|
21
common/log.h
21
common/log.h
@ -30,11 +30,6 @@
|
|||||||
|
|
||||||
#include "nextpnr.h"
|
#include "nextpnr.h"
|
||||||
|
|
||||||
// from libs/sha1/sha1.h
|
|
||||||
|
|
||||||
#define NXP_NORETURN
|
|
||||||
#define NXP_ATTRIBUTE(...) __attribute__((__VA_ARGS__))
|
|
||||||
|
|
||||||
NEXTPNR_NAMESPACE_BEGIN
|
NEXTPNR_NAMESPACE_BEGIN
|
||||||
|
|
||||||
typedef std::function<void(std::string)> log_write_type;
|
typedef std::function<void(std::string)> log_write_type;
|
||||||
@ -60,16 +55,16 @@ extern void (*log_error_atexit)();
|
|||||||
void logv(const char *format, va_list ap);
|
void logv(const char *format, va_list ap);
|
||||||
void logv_warning(const char *format, va_list ap);
|
void logv_warning(const char *format, va_list ap);
|
||||||
void logv_warning_noprefix(const char *format, va_list ap);
|
void logv_warning_noprefix(const char *format, va_list ap);
|
||||||
NXP_NORETURN void logv_error(const char *format, va_list ap) NXP_ATTRIBUTE(noreturn);
|
NPNR_NORETURN void logv_error(const char *format, va_list ap) NPNR_ATTRIBUTE(noreturn);
|
||||||
|
|
||||||
extern std::ostream clog;
|
extern std::ostream clog;
|
||||||
void log(const char *format, ...) NXP_ATTRIBUTE(format(printf, 1, 2));
|
void log(const char *format, ...) NPNR_ATTRIBUTE(format(printf, 1, 2));
|
||||||
void log_header(const char *format, ...) NXP_ATTRIBUTE(format(printf, 1, 2));
|
void log_header(const char *format, ...) NPNR_ATTRIBUTE(format(printf, 1, 2));
|
||||||
void log_info(const char *format, ...) NXP_ATTRIBUTE(format(printf, 1, 2));
|
void log_info(const char *format, ...) NPNR_ATTRIBUTE(format(printf, 1, 2));
|
||||||
void log_warning(const char *format, ...) NXP_ATTRIBUTE(format(printf, 1, 2));
|
void log_warning(const char *format, ...) NPNR_ATTRIBUTE(format(printf, 1, 2));
|
||||||
void log_warning_noprefix(const char *format, ...) NXP_ATTRIBUTE(format(printf, 1, 2));
|
void log_warning_noprefix(const char *format, ...) NPNR_ATTRIBUTE(format(printf, 1, 2));
|
||||||
NXP_NORETURN void log_error(const char *format, ...) NXP_ATTRIBUTE(format(printf, 1, 2), noreturn);
|
NPNR_NORETURN void log_error(const char *format, ...) NPNR_ATTRIBUTE(format(printf, 1, 2), noreturn);
|
||||||
NXP_NORETURN void log_cmd_error(const char *format, ...) NXP_ATTRIBUTE(format(printf, 1, 2), noreturn);
|
NPNR_NORETURN void log_cmd_error(const char *format, ...) NPNR_ATTRIBUTE(format(printf, 1, 2), noreturn);
|
||||||
|
|
||||||
void log_break();
|
void log_break();
|
||||||
void log_flush();
|
void log_flush();
|
||||||
|
@ -41,6 +41,23 @@
|
|||||||
#define USING_NEXTPNR_NAMESPACE
|
#define USING_NEXTPNR_NAMESPACE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(__GNUC__) || defined(__clang__)
|
||||||
|
# define NPNR_ATTRIBUTE(...) __attribute__((__VA_ARGS__))
|
||||||
|
# define NPNR_NORETURN
|
||||||
|
# define NPNR_DEPRECATED __attribute__((deprecated))
|
||||||
|
# define NPNR_PACKED_STRUCT( ... ) __VA_ARGS__ __attribute__((packed))
|
||||||
|
#elif defined(_MSC_VER)
|
||||||
|
# define NPNR_ATTRIBUTE(...)
|
||||||
|
# define NPNR_NORETURN __declspec(noreturn)
|
||||||
|
# define NPNR_DEPRECATED __declspec(deprecated)
|
||||||
|
# define NPNR_PACKED_STRUCT( ... ) __pragma(pack(push, 1)) __VA_ARGS__ __pragma(pack(pop))
|
||||||
|
#else
|
||||||
|
# define NPNR_ATTRIBUTE(...)
|
||||||
|
# define NPNR_NORETURN
|
||||||
|
# define NPNR_DEPRECATED
|
||||||
|
# define NPNR_PACKED_STRUCT( ... ) __VA_ARGS__
|
||||||
|
#endif
|
||||||
|
|
||||||
NEXTPNR_NAMESPACE_BEGIN
|
NEXTPNR_NAMESPACE_BEGIN
|
||||||
|
|
||||||
struct BaseCtx;
|
struct BaseCtx;
|
||||||
@ -76,7 +93,7 @@ struct IdString
|
|||||||
|
|
||||||
static std::unordered_set<BaseCtx *> global_ctx;
|
static std::unordered_set<BaseCtx *> global_ctx;
|
||||||
|
|
||||||
const std::string &global_str() const __attribute__((deprecated))
|
NPNR_DEPRECATED const std::string &global_str() const
|
||||||
{
|
{
|
||||||
assert(global_ctx.size() == 1);
|
assert(global_ctx.size() == 1);
|
||||||
return str(*global_ctx.begin());
|
return str(*global_ctx.begin());
|
||||||
|
42
ice40/arch.h
42
ice40/arch.h
@ -43,12 +43,14 @@ template <typename T> struct RelPtr
|
|||||||
const T *operator->() const { return get(); }
|
const T *operator->() const { return get(); }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
NPNR_PACKED_STRUCT(
|
||||||
struct BelWirePOD
|
struct BelWirePOD
|
||||||
{
|
{
|
||||||
int32_t wire_index;
|
int32_t wire_index;
|
||||||
PortPin port;
|
PortPin port;
|
||||||
} __attribute__((packed));
|
});
|
||||||
|
|
||||||
|
NPNR_PACKED_STRUCT(
|
||||||
struct BelInfoPOD
|
struct BelInfoPOD
|
||||||
{
|
{
|
||||||
RelPtr<char> name;
|
RelPtr<char> name;
|
||||||
@ -57,14 +59,16 @@ struct BelInfoPOD
|
|||||||
RelPtr<BelWirePOD> bel_wires;
|
RelPtr<BelWirePOD> bel_wires;
|
||||||
int8_t x, y, z;
|
int8_t x, y, z;
|
||||||
int8_t padding_0;
|
int8_t padding_0;
|
||||||
} __attribute__((packed));
|
});
|
||||||
|
|
||||||
|
NPNR_PACKED_STRUCT(
|
||||||
struct BelPortPOD
|
struct BelPortPOD
|
||||||
{
|
{
|
||||||
int32_t bel_index;
|
int32_t bel_index;
|
||||||
PortPin port;
|
PortPin port;
|
||||||
} __attribute__((packed));
|
});
|
||||||
|
|
||||||
|
NPNR_PACKED_STRUCT(
|
||||||
struct PipInfoPOD
|
struct PipInfoPOD
|
||||||
{
|
{
|
||||||
int32_t src, dst;
|
int32_t src, dst;
|
||||||
@ -72,8 +76,9 @@ struct PipInfoPOD
|
|||||||
int8_t x, y;
|
int8_t x, y;
|
||||||
int16_t switch_mask;
|
int16_t switch_mask;
|
||||||
int32_t switch_index;
|
int32_t switch_index;
|
||||||
} __attribute__((packed));
|
});
|
||||||
|
|
||||||
|
NPNR_PACKED_STRUCT(
|
||||||
struct WireInfoPOD
|
struct WireInfoPOD
|
||||||
{
|
{
|
||||||
RelPtr<char> name;
|
RelPtr<char> name;
|
||||||
@ -87,20 +92,22 @@ struct WireInfoPOD
|
|||||||
int8_t x, y;
|
int8_t x, y;
|
||||||
WireType type;
|
WireType type;
|
||||||
int8_t padding_0;
|
int8_t padding_0;
|
||||||
} __attribute__((packed));
|
});
|
||||||
|
|
||||||
|
NPNR_PACKED_STRUCT(
|
||||||
struct PackagePinPOD
|
struct PackagePinPOD
|
||||||
{
|
{
|
||||||
RelPtr<char> name;
|
RelPtr<char> name;
|
||||||
int32_t bel_index;
|
int32_t bel_index;
|
||||||
} __attribute__((packed));
|
});
|
||||||
|
|
||||||
|
NPNR_PACKED_STRUCT(
|
||||||
struct PackageInfoPOD
|
struct PackageInfoPOD
|
||||||
{
|
{
|
||||||
RelPtr<char> name;
|
RelPtr<char> name;
|
||||||
int32_t num_pins;
|
int32_t num_pins;
|
||||||
RelPtr<PackagePinPOD> pins;
|
RelPtr<PackagePinPOD> pins;
|
||||||
} __attribute__((packed));
|
});
|
||||||
|
|
||||||
enum TileType : uint32_t
|
enum TileType : uint32_t
|
||||||
{
|
{
|
||||||
@ -116,48 +123,55 @@ enum TileType : uint32_t
|
|||||||
TILE_IPCON = 9
|
TILE_IPCON = 9
|
||||||
};
|
};
|
||||||
|
|
||||||
|
NPNR_PACKED_STRUCT(
|
||||||
struct ConfigBitPOD
|
struct ConfigBitPOD
|
||||||
{
|
{
|
||||||
int8_t row, col;
|
int8_t row, col;
|
||||||
} __attribute__((packed));
|
});
|
||||||
|
|
||||||
|
NPNR_PACKED_STRUCT(
|
||||||
struct ConfigEntryPOD
|
struct ConfigEntryPOD
|
||||||
{
|
{
|
||||||
RelPtr<char> name;
|
RelPtr<char> name;
|
||||||
int32_t num_bits;
|
int32_t num_bits;
|
||||||
RelPtr<ConfigBitPOD> bits;
|
RelPtr<ConfigBitPOD> bits;
|
||||||
} __attribute__((packed));
|
});
|
||||||
|
|
||||||
|
NPNR_PACKED_STRUCT(
|
||||||
struct TileInfoPOD
|
struct TileInfoPOD
|
||||||
{
|
{
|
||||||
int8_t cols, rows;
|
int8_t cols, rows;
|
||||||
int16_t num_config_entries;
|
int16_t num_config_entries;
|
||||||
RelPtr<ConfigEntryPOD> entries;
|
RelPtr<ConfigEntryPOD> entries;
|
||||||
} __attribute__((packed));
|
});
|
||||||
|
|
||||||
static const int max_switch_bits = 5;
|
static const int max_switch_bits = 5;
|
||||||
|
|
||||||
|
NPNR_PACKED_STRUCT(
|
||||||
struct SwitchInfoPOD
|
struct SwitchInfoPOD
|
||||||
{
|
{
|
||||||
int32_t num_bits;
|
int32_t num_bits;
|
||||||
int8_t x, y;
|
int8_t x, y;
|
||||||
ConfigBitPOD cbits[max_switch_bits];
|
ConfigBitPOD cbits[max_switch_bits];
|
||||||
} __attribute__((packed));
|
});
|
||||||
|
|
||||||
|
NPNR_PACKED_STRUCT(
|
||||||
struct IerenInfoPOD
|
struct IerenInfoPOD
|
||||||
{
|
{
|
||||||
int8_t iox, ioy, ioz;
|
int8_t iox, ioy, ioz;
|
||||||
int8_t ierx, iery, ierz;
|
int8_t ierx, iery, ierz;
|
||||||
} __attribute__((packed));
|
});
|
||||||
|
|
||||||
|
NPNR_PACKED_STRUCT(
|
||||||
struct BitstreamInfoPOD
|
struct BitstreamInfoPOD
|
||||||
{
|
{
|
||||||
int32_t num_switches, num_ierens;
|
int32_t num_switches, num_ierens;
|
||||||
RelPtr<TileInfoPOD> tiles_nonrouting;
|
RelPtr<TileInfoPOD> tiles_nonrouting;
|
||||||
RelPtr<SwitchInfoPOD> switches;
|
RelPtr<SwitchInfoPOD> switches;
|
||||||
RelPtr<IerenInfoPOD> ierens;
|
RelPtr<IerenInfoPOD> ierens;
|
||||||
} __attribute__((packed));
|
});
|
||||||
|
|
||||||
|
NPNR_PACKED_STRUCT(
|
||||||
struct ChipInfoPOD
|
struct ChipInfoPOD
|
||||||
{
|
{
|
||||||
int32_t width, height;
|
int32_t width, height;
|
||||||
@ -169,7 +183,7 @@ struct ChipInfoPOD
|
|||||||
RelPtr<TileType> tile_grid;
|
RelPtr<TileType> tile_grid;
|
||||||
RelPtr<BitstreamInfoPOD> bits_info;
|
RelPtr<BitstreamInfoPOD> bits_info;
|
||||||
RelPtr<PackageInfoPOD> packages_data;
|
RelPtr<PackageInfoPOD> packages_data;
|
||||||
} __attribute__((packed));
|
});
|
||||||
|
|
||||||
extern const char chipdb_blob_384[];
|
extern const char chipdb_blob_384[];
|
||||||
extern const char chipdb_blob_1k[];
|
extern const char chipdb_blob_1k[];
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#include "bitstream.h"
|
#include "bitstream.h"
|
||||||
|
#include <cctype>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
#include "pack.h"
|
#include "pack.h"
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
#include <iterator>
|
||||||
#include <unordered_set>
|
#include <unordered_set>
|
||||||
#include "cells.h"
|
#include "cells.h"
|
||||||
#include "design_utils.h"
|
#include "design_utils.h"
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
#include <log.h>
|
#include <log.h>
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <iterator>
|
||||||
#include "nextpnr.h"
|
#include "nextpnr.h"
|
||||||
|
|
||||||
NEXTPNR_NAMESPACE_BEGIN
|
NEXTPNR_NAMESPACE_BEGIN
|
||||||
|
Loading…
Reference in New Issue
Block a user