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
|
||||
set(FAMILIES generic ice40)
|
||||
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_RELEASE "-Wall -fPIC -O3 -g")
|
||||
endif()
|
||||
set(CMAKE_DEFIN)
|
||||
|
||||
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)
|
||||
add_definitions("-Wa,-mbig-obj")
|
||||
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})
|
||||
string(TOUPPER ${family} ufamily)
|
||||
@ -186,12 +195,3 @@ add_custom_target(
|
||||
-i
|
||||
${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"
|
||||
|
||||
// from libs/sha1/sha1.h
|
||||
|
||||
#define NXP_NORETURN
|
||||
#define NXP_ATTRIBUTE(...) __attribute__((__VA_ARGS__))
|
||||
|
||||
NEXTPNR_NAMESPACE_BEGIN
|
||||
|
||||
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_warning(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;
|
||||
void log(const char *format, ...) NXP_ATTRIBUTE(format(printf, 1, 2));
|
||||
void log_header(const char *format, ...) NXP_ATTRIBUTE(format(printf, 1, 2));
|
||||
void log_info(const char *format, ...) NXP_ATTRIBUTE(format(printf, 1, 2));
|
||||
void log_warning(const char *format, ...) NXP_ATTRIBUTE(format(printf, 1, 2));
|
||||
void log_warning_noprefix(const char *format, ...) NXP_ATTRIBUTE(format(printf, 1, 2));
|
||||
NXP_NORETURN void log_error(const char *format, ...) NXP_ATTRIBUTE(format(printf, 1, 2), noreturn);
|
||||
NXP_NORETURN void log_cmd_error(const char *format, ...) NXP_ATTRIBUTE(format(printf, 1, 2), noreturn);
|
||||
void log(const char *format, ...) NPNR_ATTRIBUTE(format(printf, 1, 2));
|
||||
void log_header(const char *format, ...) NPNR_ATTRIBUTE(format(printf, 1, 2));
|
||||
void log_info(const char *format, ...) NPNR_ATTRIBUTE(format(printf, 1, 2));
|
||||
void log_warning(const char *format, ...) NPNR_ATTRIBUTE(format(printf, 1, 2));
|
||||
void log_warning_noprefix(const char *format, ...) NPNR_ATTRIBUTE(format(printf, 1, 2));
|
||||
NPNR_NORETURN void log_error(const char *format, ...) NPNR_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_flush();
|
||||
|
@ -41,6 +41,23 @@
|
||||
#define USING_NEXTPNR_NAMESPACE
|
||||
#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
|
||||
|
||||
struct BaseCtx;
|
||||
@ -76,7 +93,7 @@ struct IdString
|
||||
|
||||
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);
|
||||
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(); }
|
||||
};
|
||||
|
||||
NPNR_PACKED_STRUCT(
|
||||
struct BelWirePOD
|
||||
{
|
||||
int32_t wire_index;
|
||||
PortPin port;
|
||||
} __attribute__((packed));
|
||||
});
|
||||
|
||||
NPNR_PACKED_STRUCT(
|
||||
struct BelInfoPOD
|
||||
{
|
||||
RelPtr<char> name;
|
||||
@ -57,14 +59,16 @@ struct BelInfoPOD
|
||||
RelPtr<BelWirePOD> bel_wires;
|
||||
int8_t x, y, z;
|
||||
int8_t padding_0;
|
||||
} __attribute__((packed));
|
||||
});
|
||||
|
||||
NPNR_PACKED_STRUCT(
|
||||
struct BelPortPOD
|
||||
{
|
||||
int32_t bel_index;
|
||||
PortPin port;
|
||||
} __attribute__((packed));
|
||||
});
|
||||
|
||||
NPNR_PACKED_STRUCT(
|
||||
struct PipInfoPOD
|
||||
{
|
||||
int32_t src, dst;
|
||||
@ -72,8 +76,9 @@ struct PipInfoPOD
|
||||
int8_t x, y;
|
||||
int16_t switch_mask;
|
||||
int32_t switch_index;
|
||||
} __attribute__((packed));
|
||||
});
|
||||
|
||||
NPNR_PACKED_STRUCT(
|
||||
struct WireInfoPOD
|
||||
{
|
||||
RelPtr<char> name;
|
||||
@ -87,20 +92,22 @@ struct WireInfoPOD
|
||||
int8_t x, y;
|
||||
WireType type;
|
||||
int8_t padding_0;
|
||||
} __attribute__((packed));
|
||||
});
|
||||
|
||||
NPNR_PACKED_STRUCT(
|
||||
struct PackagePinPOD
|
||||
{
|
||||
RelPtr<char> name;
|
||||
int32_t bel_index;
|
||||
} __attribute__((packed));
|
||||
});
|
||||
|
||||
NPNR_PACKED_STRUCT(
|
||||
struct PackageInfoPOD
|
||||
{
|
||||
RelPtr<char> name;
|
||||
int32_t num_pins;
|
||||
RelPtr<PackagePinPOD> pins;
|
||||
} __attribute__((packed));
|
||||
});
|
||||
|
||||
enum TileType : uint32_t
|
||||
{
|
||||
@ -116,48 +123,55 @@ enum TileType : uint32_t
|
||||
TILE_IPCON = 9
|
||||
};
|
||||
|
||||
NPNR_PACKED_STRUCT(
|
||||
struct ConfigBitPOD
|
||||
{
|
||||
int8_t row, col;
|
||||
} __attribute__((packed));
|
||||
});
|
||||
|
||||
NPNR_PACKED_STRUCT(
|
||||
struct ConfigEntryPOD
|
||||
{
|
||||
RelPtr<char> name;
|
||||
int32_t num_bits;
|
||||
RelPtr<ConfigBitPOD> bits;
|
||||
} __attribute__((packed));
|
||||
});
|
||||
|
||||
NPNR_PACKED_STRUCT(
|
||||
struct TileInfoPOD
|
||||
{
|
||||
int8_t cols, rows;
|
||||
int16_t num_config_entries;
|
||||
RelPtr<ConfigEntryPOD> entries;
|
||||
} __attribute__((packed));
|
||||
});
|
||||
|
||||
static const int max_switch_bits = 5;
|
||||
|
||||
NPNR_PACKED_STRUCT(
|
||||
struct SwitchInfoPOD
|
||||
{
|
||||
int32_t num_bits;
|
||||
int8_t x, y;
|
||||
ConfigBitPOD cbits[max_switch_bits];
|
||||
} __attribute__((packed));
|
||||
});
|
||||
|
||||
NPNR_PACKED_STRUCT(
|
||||
struct IerenInfoPOD
|
||||
{
|
||||
int8_t iox, ioy, ioz;
|
||||
int8_t ierx, iery, ierz;
|
||||
} __attribute__((packed));
|
||||
});
|
||||
|
||||
NPNR_PACKED_STRUCT(
|
||||
struct BitstreamInfoPOD
|
||||
{
|
||||
int32_t num_switches, num_ierens;
|
||||
RelPtr<TileInfoPOD> tiles_nonrouting;
|
||||
RelPtr<SwitchInfoPOD> switches;
|
||||
RelPtr<IerenInfoPOD> ierens;
|
||||
} __attribute__((packed));
|
||||
});
|
||||
|
||||
NPNR_PACKED_STRUCT(
|
||||
struct ChipInfoPOD
|
||||
{
|
||||
int32_t width, height;
|
||||
@ -169,7 +183,7 @@ struct ChipInfoPOD
|
||||
RelPtr<TileType> tile_grid;
|
||||
RelPtr<BitstreamInfoPOD> bits_info;
|
||||
RelPtr<PackageInfoPOD> packages_data;
|
||||
} __attribute__((packed));
|
||||
});
|
||||
|
||||
extern const char chipdb_blob_384[];
|
||||
extern const char chipdb_blob_1k[];
|
||||
|
@ -18,6 +18,7 @@
|
||||
*
|
||||
*/
|
||||
#include "bitstream.h"
|
||||
#include <cctype>
|
||||
#include <vector>
|
||||
#include "log.h"
|
||||
|
||||
|
@ -20,6 +20,7 @@
|
||||
|
||||
#include "pack.h"
|
||||
#include <algorithm>
|
||||
#include <iterator>
|
||||
#include <unordered_set>
|
||||
#include "cells.h"
|
||||
#include "design_utils.h"
|
||||
|
@ -28,6 +28,7 @@
|
||||
#include <log.h>
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include <iterator>
|
||||
#include "nextpnr.h"
|
||||
|
||||
NEXTPNR_NAMESPACE_BEGIN
|
||||
|
Loading…
Reference in New Issue
Block a user