@@ -399,19 +399,31 @@ option( MIOPEN_DEBUG_FIND_DB_CACHING "Use system find-db caching" ON)
399399# FOR HANDLING ENABLE/DISABLE OPTIONAL BACKWARD COMPATIBILITY for FILE/FOLDER REORG
400400option (BUILD_FILE_REORG_BACKWARD_COMPATIBILITY "Build with file/folder reorg with backward compatibility enabled" OFF )
401401
402- set ( MIOPEN_INSTALL_DIR miopen)
403- set ( DATA_INSTALL_DIR ${CMAKE_INSTALL_DATAROOTDIR} /miopen )
402+ if (WIN32 )
403+ set ( DATA_INSTALL_DIR bin )
404+ set ( DATABASE_INSTALL_DIR ${DATA_INSTALL_DIR} )
405+ else ()
406+ set ( MIOPEN_INSTALL_DIR miopen)
407+ set ( DATA_INSTALL_DIR ${CMAKE_INSTALL_DATADIR} /${MIOPEN_INSTALL_DIR} )
408+ set ( DATABASE_INSTALL_DIR ${DATA_INSTALL_DIR} /db )
409+ endif ()
404410
405411if (MIOPEN_ENABLE_AI_KERNEL_TUNING OR MIOPEN_ENABLE_AI_IMMED_MODE_FALLBACK)
406412 find_package (frugally-deep CONFIG REQUIRED)
407413 find_package (Eigen3 REQUIRED)
408414endif ()
409415
416+ if (WIN32 )
417+ set (KERNELS_BINARY_DIR ${PROJECT_BINARY_DIR} /bin)
418+ else ()
419+ set (KERNELS_BINARY_DIR ${PROJECT_BINARY_DIR} /${DATABASE_INSTALL_DIR} )
420+ endif ()
421+
410422set (MIOPEN_GPU_SYNC Off CACHE BOOL "" )
411423if (BUILD_DEV)
412424 set (MIOPEN_BUILD_DEV 1)
413- set (MIOPEN_SYSTEM_DB_PATH "${CMAKE_SOURCE_DIR} /src/kernels " CACHE PATH "Default path of system db files" )
414- set (MIOPEN_USER_DB_PATH "${CMAKE_SOURCE_DIR} /src/kernels " CACHE PATH "Default path of user db files" )
425+ set (MIOPEN_SYSTEM_DB_PATH "${KERNELS_BINARY_DIR} " CACHE PATH "Default path of system db files" )
426+ set (MIOPEN_USER_DB_PATH "${KERNELS_BINARY_DIR} " CACHE PATH "Default path of user db files" )
415427 set (MIOPEN_USER_DB_SUFFIX "${MIOPEN_BACKEND} .${MIOpen_VERSION_MAJOR} _${MIOpen_VERSION_MINOR} _${MIOpen_VERSION_PATCH} " CACHE PATH "Filename suffix for the user find-db files" )
416428 set (MIOPEN_CACHE_DIR "" CACHE STRING "" )
417429else ()
@@ -466,92 +478,74 @@ elseif(MIOPEN_BACKEND STREQUAL "OpenCL")
466478 set (CPACK_RPM_PACKAGE_CONFLICTS miopen-hip)
467479endif ()
468480
469- # Unpack DB files
481+ set (KERNELS_SOURCE_DIR ${PROJECT_SOURCE_DIR} /src/kernels)
482+
483+ find_program (UNZIPPER lbzcat bzcat REQUIRED)
484+ file (MAKE_DIRECTORY ${KERNELS_BINARY_DIR} )
485+
470486function (unpack_db db_bzip2_file)
471- set (KERNELS_DIR "${CMAKE_SOURCE_DIR} /src/kernels" )
472- STRING (REPLACE ".bz2" "" db_file "${db_bzip2_file} " )
473- find_program (UNZIPPER NAMES lbunzip2 bunzip2)
474- if (EXISTS "${db_file} " )
475- message (STATUS "WARNING: ${db_file} already exists and will be overwritten" )
476- endif ()
477- if (EXISTS "${db_bzip2_file} " )
478- message (STATUS "${UNZIPPER} -k -f ${db_bzip2_file} " )
479- execute_process (
480- COMMAND ${UNZIPPER} -k -f ${db_bzip2_file}
481- WORKING_DIRECTORY ${KERNELS_DIR}
482- RESULT_VARIABLE ret
483- )
484- if (NOT ret EQUAL "0" )
485- message (FATAL_ERROR "${db_file} could not be extracted, file is empty!" )
486- execute_process (
487- COMMAND touch ${db_file}
488- WORKING_DIRECTORY ${KERNELS_DIR}
489- )
490- endif ()
491- endif ()
487+ get_filename_component (__fname ${db_bzip2_file} NAME_WLE)
488+ add_custom_command (OUTPUT ${KERNELS_BINARY_DIR} /${__fname}
489+ COMMAND ${UNZIPPER} -k ${db_bzip2_file} > ${KERNELS_BINARY_DIR} /${__fname} )
490+ string (REPLACE "." "_" __tname ${__fname} )
491+ add_custom_target (generate_${__tname} ALL DEPENDS ${KERNELS_BINARY_DIR} /${__fname} )
492492endfunction ()
493493
494- file (GLOB PERF_DB_BZIP_FILES "${CMAKE_SOURCE_DIR} /src/kernels /*.db.bz2" )
494+ file (GLOB PERF_DB_BZIP_FILES CONFIGURE_DEPENDS "${KERNELS_SOURCE_DIR} /*.db.bz2" )
495495foreach (DB_BZIP_FILE ${PERF_DB_BZIP_FILES} )
496496 unpack_db(${DB_BZIP_FILE} )
497497endforeach ()
498498
499- file (GLOB FIND_DB_BZIP_FILES "${CMAKE_SOURCE_DIR} /src/kernels /*.fdb.txt.bz2" )
499+ file (GLOB FIND_DB_BZIP_FILES CONFIGURE_DEPENDS "${KERNELS_SOURCE_DIR} /*.fdb.txt.bz2" )
500500foreach (DB_BZIP_FILE ${FIND_DB_BZIP_FILES} )
501501 unpack_db(${DB_BZIP_FILE} )
502502endforeach ()
503503
504- # Begin KDB component install
505- function (install_kdb)
506- set (oneValueArgs NAME COMPONENT_NAME)
507- cmake_parse_arguments (PARSE "" "${oneValueArgs} " "" ${ARGN} )
504+ # Begin KDB package creation
508505
509- if (PARSE_NAME)
510- set (FILE_NAME ${PARSE_NAME} )
511- endif ()
512- STRING (REPLACE - _ FILE_NAME "${ARCH_NAME} " )
513- file (READ "${CMAKE_SOURCE_DIR} /src/kernels/${FILE_NAME} .kdb.bz2" FILE_CONTENTS LIMIT 7)
514- string (STRIP "${FILE_CONTENTS} " FILE_CONTENTS)
515- if (FILE_CONTENTS STREQUAL "version" )
516- set (LFS_MISSING_FILES ${LFS_MISSING_FILES} ${FILE_NAME} .kdb.bz2 PARENT_SCOPE)
506+ function (install_kdb FILE_NAME COMPONENT_NAME)
507+ file (READ ${FILE_NAME} __contents LIMIT 7)
508+ get_filename_component (__fname ${FILE_NAME} NAME_WLE)
509+ if (__contents MATCHES "version" )
510+ list (APPEND LFS_MISSING_FILES ${__fname} )
517511 else ()
518- unpack_db("${CMAKE_SOURCE_DIR} /src/kernels/${FILE_NAME} .kdb.bz2" )
519- message ("Installing ${FILE_NAME} in component ${PARSE_COMPONENT_NAME} " )
512+ unpack_db(${FILE_NAME} )
520513 if ( NOT ENABLE_ASAN_PACKAGING )
521- rocm_install(FILES
522- src/kernels/${FILE_NAME} .kdb
523- DESTINATION ${DATA_INSTALL_DIR} /db
524- COMPONENT ${PARSE_COMPONENT_NAME} )
514+ rocm_install(FILES ${KERNELS_BINARY_DIR} /${__fname}
515+ DESTINATION ${DATABASE_INSTALL_DIR}
516+ COMPONENT ${COMPONENT_NAME} )
525517 endif ()
518+ set (CPACK_COMPONENTS_ALL
519+ "${CPACK_COMPONENTS_ALL} ;${__component} " PARENT_SCOPE)
526520 endif ()
527521endfunction ()
528522
529523# Both the lists below should be in sync always
530- list (APPEND ARCH_LST gfx90a gfx1030 gfx908 gfx906 gfx900)
531- list (APPEND ARCH_FILE_LST gfx90akdb gfx1030kdb gfx908kdb gfx906kdb gfx900kdb)
532-
533- list (LENGTH ARCH_LST FULL_LEN)
534- math (EXPR ARCH_LST_LEN "${FULL_LEN} - 1" )
524+ set (KDB_BZ2_FILES gfx90a.kdb.bz2 gfx1030.kdb.bz2 gfx908.kdb.bz2 gfx906.kdb.bz2 gfx900.kdb.bz2)
525+ set (COMPONENT_LST gfx90akdb gfx1030kdb gfx908kdb gfx906kdb gfx900kdb)
535526
536-
537- foreach (IDX RANGE ${ARCH_LST_LEN} )
538- list (GET ARCH_LST ${IDX} ARCH_NAME)
539- list (GET ARCH_FILE_LST ${IDX} ARCH_FILE_NAME)
540- install_kdb(
541- NAME ${ARCH_NAME}
542- COMPONENT_NAME ${ARCH_FILE_NAME}
543- )
544- endforeach ()
527+ if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.17)
528+ foreach (__file __component IN ZIP_LISTS KDB_BZ2_FILES COMPONENT_LST)
529+ install_kdb(${KERNELS_SOURCE_DIR} /${__file} ${__component} )
530+ endforeach ()
531+ else ()
532+ # TODO: Upgrade minimum CMake to version 3.17+ and use IN ZIP_LISTS instead
533+ list (LENGTH KDB_BZ2_FILES __length)
534+ math (EXPR __high "${__length} - 1" )
535+ foreach (__index RANGE ${__high} )
536+ list (GET COMPONENT_LST ${__index} __component)
537+ list (GET KDB_BZ2_FILES ${__index} __file)
538+ install_kdb(${KERNELS_SOURCE_DIR} /${__file} ${__component} )
539+ endforeach ()
540+ endif ()
545541
546542if (LFS_MISSING_FILES)
547- string (REPLACE ";" "; " LFS_MISSING_FILES "${LFS_MISSING_FILES} " )
548- message (WARNING "GIT LFS Files not pulled down, skipped: ${LFS_MISSING_FILES } " )
543+ string (REPLACE ";" ", " __lfs_missing_files "${LFS_MISSING_FILES} " )
544+ message (WARNING "GIT LFS files not pulled down, skipped: ${__lfs_missing_files } " )
549545 set (MIOPEN_NO_LFS_PULLED TRUE CACHE INTERNAL "" )
550- else ()
551- set (CPACK_COMPONENTS_ALL ${ARCH_FILE_LST} )
552546endif ()
553547
554- #end kdb package creation
548+ # End KDB package creation
555549
556550rocm_create_package(
557551 NAME MIOpen-${MIOPEN_BACKEND}
0 commit comments