2019-02-09 20:34:57 +08:00
if ( NOT EXTERNAL_CHIPDB )
set ( devices 25k 45k 85k )
2018-07-08 17:15:30 +08:00
2020-02-05 01:17:44 +08:00
if ( NOT DEFINED TRELLIS_INSTALL_PREFIX )
message ( STATUS "TRELLIS_INSTALL_PREFIX not defined using -DTRELLIS_INSTALL_PREFIX=/path-prefix/to/prjtrellis-installation. Default to /usr/local or reset by -DCMAKE_INSTALL_PREFIX when building prjtrellis/libtrellis" )
set ( TRELLIS_INSTALL_PREFIX "/usr/local" )
2019-02-09 20:34:57 +08:00
endif ( )
2018-07-08 17:15:30 +08:00
2019-03-03 18:11:33 +08:00
if ( NOT DEFINED PYTRELLIS_LIBDIR )
find_library ( PYTRELLIS pytrellis.so
2020-02-05 01:17:44 +08:00
P A T H S $ { T R E L L I S _ I N S T A L L _ P R E F I X } / l i b / t r e l l i s
2019-03-03 18:11:33 +08:00
P A T H _ S U F F I X E S t r e l l i s
D O C " L o c a t i o n o f p y t r e l l i s l i b r a r y " )
2018-07-13 01:59:18 +08:00
2019-03-03 18:11:33 +08:00
if ( "${PYTRELLIS}" STREQUAL "PYTRELLIS-NOTFOUND" )
message ( FATAL_ERROR "Failed to locate pytrellis library!" )
endif ( )
2018-07-13 01:59:18 +08:00
2019-03-03 18:11:33 +08:00
get_filename_component ( PYTRELLIS_LIBDIR ${ PYTRELLIS } DIRECTORY )
endif ( )
2019-02-03 21:43:05 +08:00
2019-02-09 20:34:57 +08:00
set ( DB_PY ${ CMAKE_CURRENT_SOURCE_DIR } /ecp5/trellis_import.py )
2018-07-13 01:59:18 +08:00
2019-09-15 19:27:41 +08:00
file ( MAKE_DIRECTORY ${ CMAKE_CURRENT_BINARY_DIR } /ecp5/chipdbs/ )
add_library ( ecp5_chipdb OBJECT ${ CMAKE_CURRENT_BINARY_DIR } /ecp5/chipdbs/ )
2019-02-09 20:34:57 +08:00
target_compile_definitions ( ecp5_chipdb PRIVATE NEXTPNR_NAMESPACE=nextpnr_ ${ family } )
target_include_directories ( ecp5_chipdb PRIVATE ${ family } / )
2018-07-08 17:15:30 +08:00
2019-02-09 20:34:57 +08:00
if ( CMAKE_HOST_WIN32 )
2020-02-05 01:17:44 +08:00
set ( ENV_CMD ${ CMAKE_COMMAND } -E env "PYTHONPATH=\" ${ PYTRELLIS_LIBDIR } \;${TRELLIS_INSTALL_PREFIX}/share/trellis/util/common\;${TRELLIS_INSTALL_PREFIX}/share/trellis/timing/util\"")
2019-02-09 20:34:57 +08:00
else ( )
2020-02-05 01:17:44 +08:00
set ( ENV_CMD ${ CMAKE_COMMAND } -E env "PYTHONPATH=${PYTRELLIS_LIBDIR}\:${TRELLIS_INSTALL_PREFIX}/share/trellis/util/common:${TRELLIS_INSTALL_PREFIX}/share/trellis/timing/util" )
2019-02-09 20:34:57 +08:00
endif ( )
2018-11-16 00:34:22 +08:00
2019-02-09 20:34:57 +08:00
if ( MSVC )
target_sources ( ecp5_chipdb PRIVATE ${ CMAKE_CURRENT_SOURCE_DIR } /ecp5/resource/embed.cc )
set_source_files_properties ( ${ CMAKE_CURRENT_SOURCE_DIR } /ecp5/resources/chipdb.rc PROPERTIES LANGUAGE RC )
2019-06-27 05:31:24 +08:00
set ( PREV_DEV_CC_BBA_DB )
2019-02-09 20:34:57 +08:00
foreach ( dev ${ devices } )
2019-09-15 19:27:41 +08:00
set ( DEV_CC_DB ${ CMAKE_CURRENT_BINARY_DIR } /ecp5/chipdbs/chipdb- ${ dev } .bin )
2020-01-15 04:28:40 +08:00
set ( DEV_CC_BBA_DB ${ CMAKE_CURRENT_BINARY_DIR } /ecp5/chipdbs/chipdb- ${ dev } .bba )
2019-03-03 18:11:33 +08:00
set ( DEV_CONSTIDS_INC ${ CMAKE_CURRENT_SOURCE_DIR } /ecp5/constids.inc )
2019-10-06 23:59:44 +08:00
set ( DEV_GFXH ${ CMAKE_CURRENT_SOURCE_DIR } /ecp5/gfx.h )
2019-09-17 11:32:44 +08:00
if ( PREGENERATED_BBA_PATH )
add_custom_command ( OUTPUT ${ DEV_CC_DB }
2019-09-19 23:02:10 +08:00
C O M M A N D b b a s m $ { B B A S M _ E N D I A N _ F L A G } $ { P R E G E N E R A T E D _ B B A _ P A T H } / c h i p d b - $ { d e v } . b b a $ { D E V _ C C _ D B }
2019-09-17 11:32:44 +08:00
)
else ( )
add_custom_command ( OUTPUT ${ DEV_CC_BBA_DB }
2019-10-06 23:59:44 +08:00
C O M M A N D $ { E N V _ C M D } $ { P Y T H O N _ E X E C U T A B L E } $ { D B _ P Y } - p $ { D E V _ C O N S T I D S _ I N C } - g $ { D E V _ G F X H } $ { d e v } > $ { D E V _ C C _ B B A _ D B }
2019-12-28 20:54:06 +08:00
D E P E N D S $ { D B _ P Y } $ { D E V _ C O N S T I D S _ I N C } $ { D E V _ G F X H } $ { P R E V _ D E V _ C C _ B B A _ D B }
2019-09-17 11:32:44 +08:00
)
add_custom_command ( OUTPUT ${ DEV_CC_DB }
2019-09-19 23:02:10 +08:00
C O M M A N D b b a s m $ { B B A S M _ E N D I A N _ F L A G } $ { D E V _ C C _ B B A _ D B } $ { D E V _ C C _ D B }
2019-09-17 11:32:44 +08:00
D E P E N D S b b a s m $ { D E V _ C C _ B B A _ D B }
)
endif ( )
2019-06-27 05:31:24 +08:00
if ( SERIALIZE_CHIPDB )
set ( PREV_DEV_CC_BBA_DB ${ DEV_CC_BBA_DB } )
endif ( )
2019-02-09 20:34:57 +08:00
target_sources ( ecp5_chipdb PRIVATE ${ DEV_CC_DB } )
set_source_files_properties ( ${ DEV_CC_DB } PROPERTIES HEADER_FILE_ONLY TRUE )
foreach ( target ${ family_targets } )
target_sources ( ${ target } PRIVATE $< TARGET_OBJECTS:ecp5_chipdb > ${ CMAKE_CURRENT_SOURCE_DIR } /ecp5/resource/chipdb.rc )
2019-06-27 05:09:36 +08:00
endforeach ( )
endforeach ( )
2019-02-09 20:34:57 +08:00
else ( )
target_compile_options ( ecp5_chipdb PRIVATE -g0 -O0 -w )
2019-06-27 05:31:24 +08:00
set ( PREV_DEV_CC_BBA_DB )
2019-02-09 20:34:57 +08:00
foreach ( dev ${ devices } )
2019-09-15 19:27:41 +08:00
set ( DEV_CC_DB ${ CMAKE_CURRENT_BINARY_DIR } /ecp5/chipdbs/chipdb- ${ dev } .cc )
2020-01-13 13:11:56 +08:00
set ( DEV_CC_BBA_DB ${ CMAKE_CURRENT_BINARY_DIR } /ecp5/chipdbs/chipdb- ${ dev } .bba )
2019-03-03 18:11:33 +08:00
set ( DEV_CONSTIDS_INC ${ CMAKE_CURRENT_SOURCE_DIR } /ecp5/constids.inc )
2019-10-06 23:59:44 +08:00
set ( DEV_GFXH ${ CMAKE_CURRENT_SOURCE_DIR } /ecp5/gfx.h )
2019-09-17 11:32:44 +08:00
if ( PREGENERATED_BBA_PATH )
add_custom_command ( OUTPUT ${ DEV_CC_DB }
2019-09-19 23:02:10 +08:00
C O M M A N D b b a s m - - c $ { B B A S M _ E N D I A N _ F L A G } $ { P R E G E N E R A T E D _ B B A _ P A T H } / c h i p d b - $ { d e v } . b b a $ { D E V _ C C _ D B } . n e w
2019-09-17 11:32:44 +08:00
C O M M A N D m v $ { D E V _ C C _ D B } . n e w $ { D E V _ C C _ D B }
)
else ( )
add_custom_command ( OUTPUT ${ DEV_CC_BBA_DB }
2019-10-06 23:59:44 +08:00
C O M M A N D $ { E N V _ C M D } $ { P Y T H O N _ E X E C U T A B L E } $ { D B _ P Y } - p $ { D E V _ C O N S T I D S _ I N C } - g $ { D E V _ G F X H } $ { d e v } > $ { D E V _ C C _ B B A _ D B } . n e w
2019-09-17 11:32:44 +08:00
C O M M A N D m v $ { D E V _ C C _ B B A _ D B } . n e w $ { D E V _ C C _ B B A _ D B }
2019-12-28 20:54:06 +08:00
D E P E N D S $ { D B _ P Y } $ { D E V _ C O N S T I D S _ I N C } $ { D E V _ G F X H } $ { P R E V _ D E V _ C C _ B B A _ D B }
2019-09-17 11:32:44 +08:00
)
add_custom_command ( OUTPUT ${ DEV_CC_DB }
2019-09-19 23:02:10 +08:00
C O M M A N D b b a s m - - c $ { B B A S M _ E N D I A N _ F L A G } $ { D E V _ C C _ B B A _ D B } $ { D E V _ C C _ D B } . n e w
2019-09-17 11:32:44 +08:00
C O M M A N D m v $ { D E V _ C C _ D B } . n e w $ { D E V _ C C _ D B }
D E P E N D S b b a s m $ { D E V _ C C _ B B A _ D B }
)
endif ( )
2019-06-27 05:31:24 +08:00
if ( SERIALIZE_CHIPDB )
set ( PREV_DEV_CC_BBA_DB ${ DEV_CC_BBA_DB } )
endif ( )
2019-02-09 20:34:57 +08:00
target_sources ( ecp5_chipdb PRIVATE ${ DEV_CC_DB } )
foreach ( target ${ family_targets } )
target_sources ( ${ target } PRIVATE $< TARGET_OBJECTS:ecp5_chipdb > )
2019-06-27 05:09:36 +08:00
endforeach ( )
endforeach ( )
2019-02-09 20:34:57 +08:00
endif ( )
2019-02-10 15:33:52 +08:00
endif ( )