aboutsummaryrefslogtreecommitdiffstats
path: root/ecp5
diff options
context:
space:
mode:
authorDavid Shah <dave@ds0.me>2020-05-24 14:23:35 +0100
committerGitHub <noreply@github.com>2020-05-24 14:23:35 +0100
commitf44498a5301f9f516488fb748c684926be514346 (patch)
treed37948e9ad90850c2d90566cebc5dc6d4ac07fb9 /ecp5
parent2d406f3e275beda8b70b4c7d4d5e43433dd3c43c (diff)
parente7bb04769d5d7262d3ecfd0de49953078174a880 (diff)
downloadnextpnr-f44498a5301f9f516488fb748c684926be514346.tar.gz
nextpnr-f44498a5301f9f516488fb748c684926be514346.tar.bz2
nextpnr-f44498a5301f9f516488fb748c684926be514346.zip
Merge pull request #447 from whitequark/wasi
Port nextpnr-{ice40,ecp5} to WASI
Diffstat (limited to 'ecp5')
-rw-r--r--ecp5/arch.cc5
-rw-r--r--ecp5/family.cmake21
2 files changed, 18 insertions, 8 deletions
diff --git a/ecp5/arch.cc b/ecp5/arch.cc
index db043f35..3c00099f 100644
--- a/ecp5/arch.cc
+++ b/ecp5/arch.cc
@@ -71,12 +71,13 @@ const char *chipdb_blob_25k = nullptr;
const char *chipdb_blob_45k = nullptr;
const char *chipdb_blob_85k = nullptr;
-boost::iostreams::mapped_file_source blob_files[3];
+boost::iostreams::mapped_file blob_files[3];
const char *mmap_file(int index, const char *filename)
{
try {
- blob_files[index].open(filename);
+ // WASI only supports MAP_PRIVATE
+ blob_files[index].open(filename, boost::iostreams::mapped_file::priv);
if (!blob_files[index].is_open())
log_error("Unable to read chipdb %s\n", filename);
return (const char *)blob_files[index].data();
diff --git a/ecp5/family.cmake b/ecp5/family.cmake
index 9415e37e..247a307a 100644
--- a/ecp5/family.cmake
+++ b/ecp5/family.cmake
@@ -70,8 +70,9 @@ if (NOT EXTERNAL_CHIPDB)
target_compile_options(ecp5_chipdb PRIVATE -g0 -O0 -w)
set(PREV_DEV_CC_BBA_DB)
foreach (dev ${devices})
- set(DEV_CC_DB ${CMAKE_CURRENT_BINARY_DIR}/ecp5/chipdbs/chipdb-${dev}.cc)
set(DEV_CC_BBA_DB ${CMAKE_CURRENT_BINARY_DIR}/ecp5/chipdbs/chipdb-${dev}.bba)
+ set(DEV_CC_DB ${CMAKE_CURRENT_BINARY_DIR}/ecp5/chipdbs/chipdb-${dev}.cc)
+ set(DEV_BIN_DB ${CMAKE_CURRENT_BINARY_DIR}/ecp5/chipdbs/chipdb-${dev}.bin)
set(DEV_CONSTIDS_INC ${CMAKE_CURRENT_SOURCE_DIR}/ecp5/constids.inc)
set(DEV_GFXH ${CMAKE_CURRENT_SOURCE_DIR}/ecp5/gfx.h)
if (PREGENERATED_BBA_PATH)
@@ -85,11 +86,19 @@ if (NOT EXTERNAL_CHIPDB)
COMMAND mv ${DEV_CC_BBA_DB}.new ${DEV_CC_BBA_DB}
DEPENDS ${DB_PY} ${DEV_CONSTIDS_INC} ${DEV_GFXH} ${PREV_DEV_CC_BBA_DB}
)
- add_custom_command(OUTPUT ${DEV_CC_DB}
- COMMAND bbasm --c ${BBASM_ENDIAN_FLAG} ${DEV_CC_BBA_DB} ${DEV_CC_DB}.new
- COMMAND mv ${DEV_CC_DB}.new ${DEV_CC_DB}
- DEPENDS bbasm ${DEV_CC_BBA_DB}
- )
+ if(USE_C_EMBED)
+ add_custom_command(OUTPUT ${DEV_CC_DB}
+ COMMAND bbasm --e ${BBASM_ENDIAN_FLAG} ${DEV_CC_BBA_DB} ${DEV_CC_DB}.new ${DEV_BIN_DB}
+ COMMAND mv ${DEV_CC_DB}.new ${DEV_CC_DB}
+ DEPENDS bbasm ${DEV_CC_BBA_DB}
+ )
+ else()
+ add_custom_command(OUTPUT ${DEV_CC_DB}
+ COMMAND bbasm --c ${BBASM_ENDIAN_FLAG} ${DEV_CC_BBA_DB} ${DEV_CC_DB}.new
+ COMMAND mv ${DEV_CC_DB}.new ${DEV_CC_DB}
+ DEPENDS bbasm ${DEV_CC_BBA_DB}
+ )
+ endif()
endif()
if (SERIALIZE_CHIPDB)
set(PREV_DEV_CC_BBA_DB ${DEV_CC_BBA_DB})