@@ -80,17 +80,15 @@ function(generate_gpu_param_header GPU_ARCH OUT_HEADER)
8080 set (TARGET_ARCH ${GPU_ARCH} )
8181 endif ()
8282 file (READ "${GPU_PARAM_JSON} " JSON_CONTENT)
83- set (TMP_HEADER "${OUT_HEADER} .tmp" )
84- file (WRITE "${TMP_HEADER} " "#ifndef GPUDEFPARAMETERSDEFAULTS_H\n #define GPUDEFPARAMETERSDEFAULTS_H\n\n " )
85- file (APPEND "${TMP_HEADER} " "// This file is auto-generated from gpu_params.json. Do not edit directly.\n " )
83+ set (TMP_HEADER "#ifndef GPUDEFPARAMETERSDEFAULTS_H\n #define GPUDEFPARAMETERSDEFAULTS_H\n\n " )
84+ string (APPEND TMP_HEADER "// This file is auto-generated from gpu_params.json. Do not edit directly.\n " )
8685 string (REPLACE "," ";" ARCH_LIST "${TARGET_ARCH} " )
87- file (APPEND " ${ TMP_HEADER} " "// Architectures: ${TARGET_ARCH} \n\n " )
88- file (APPEND " ${ TMP_HEADER} " "#if defined(GPUCA_GPUCODE) && !defined(GPUCA_GPUCODE_GENRTC) && !defined(GPUCA_GPUCODE_NO_LAUNCH_BOUNDS) // Avoid including for RTC generation besides normal include protection.\n\n " )
86+ string (APPEND TMP_HEADER "// Architectures: ${TARGET_ARCH} \n\n " )
87+ string (APPEND TMP_HEADER "#if defined(GPUCA_GPUCODE) && !defined(GPUCA_GPUCODE_GENRTC) && !defined(GPUCA_GPUCODE_NO_LAUNCH_BOUNDS) // Avoid including for RTC generation besides normal include protection.\n\n " )
8988
9089 # Types
9190 set (TYPES CORE LB PAR)
9291 # Per architecture definitions
93- set (_first TRUE )
9492 generate_macros("${JSON_CONTENT} " TMP_OUTPUT "${TYPES} " "${ARCH_LIST} ;default;default_cpu" "JSON_ARCHITECTURES" )
9593 list (FIND ARCH_LIST "ALL" do_all_architectures)
9694 if (ARGC GREATER 2)
@@ -99,31 +97,25 @@ function(generate_gpu_param_header GPU_ARCH OUT_HEADER)
9997 if (do_all_architectures GREATER -1)
10098 set (ARCH_LIST ${JSON_ARCHITECTURES} )
10199 endif ()
100+ string (APPEND TMP_HEADER "#if 0\n " )
102101 foreach (ARCH IN LISTS ARCH_LIST)
103- if (_first)
104- file (APPEND "${TMP_HEADER} " "#if defined(GPUCA_GPUTYPE_${ARCH} )\n\n " )
105- set (_first FALSE )
106- else ()
107- file (APPEND "${TMP_HEADER} " "#elif defined(GPUCA_GPUTYPE_${ARCH} )\n\n " )
108- endif ()
109- file (APPEND "${TMP_HEADER} " ${TMP_OUTPUT_${ARCH} })
102+ string (APPEND TMP_HEADER "\n #elif defined(GPUCA_GPUTYPE_${ARCH} )\n " )
103+ string (APPEND TMP_HEADER ${TMP_OUTPUT_${ARCH} })
110104 endforeach ()
111- if (NOT _first)
112- file (APPEND "${TMP_HEADER} " "#else\n #error GPU TYPE NOT SET\n #endif\n " )
113- endif ()
105+ string (APPEND TMP_HEADER "#else\n #error GPU TYPE NOT SET\n #endif\n " )
114106
115107 # Default parameters
116- file (APPEND " ${ TMP_HEADER} " "\n // Default parameters if not defined for the target architecture\n\n " )
117- file (APPEND " ${ TMP_HEADER} " ${TMP_OUTPUT_default} )
118- file (APPEND " ${ TMP_HEADER} " "#endif // defined(GPUCA_GPUCODE) && !defined(GPUCA_GPUCODE_GENRTC) && !defined(GPUCA_GPUCODE_NO_LAUNCH_BOUNDS)\n\n " )
108+ string (APPEND TMP_HEADER "\n // Default parameters if not defined for the target architecture\n\n " )
109+ string (APPEND TMP_HEADER ${TMP_OUTPUT_default} )
110+ string (APPEND TMP_HEADER "#endif // defined(GPUCA_GPUCODE) && !defined(GPUCA_GPUCODE_GENRTC) && !defined(GPUCA_GPUCODE_NO_LAUNCH_BOUNDS)\n\n " )
119111
120112 # CPU fallback
121- file (APPEND " ${ TMP_HEADER} " "#ifndef GPUCA_GPUCODE_GENRTC // Defaults for non-LB parameters also for CPU fallback\n\n " )
122- file (APPEND " ${ TMP_HEADER} " ${TMP_OUTPUT_default_cpu} )
123- file (APPEND " ${ TMP_HEADER} " "\n #endif // GPUCA_GPUCODE_GENRTC\n " )
113+ string (APPEND TMP_HEADER "#ifndef GPUCA_GPUCODE_GENRTC // Defaults for non-LB parameters also for CPU fallback\n\n " )
114+ string (APPEND TMP_HEADER ${TMP_OUTPUT_default_cpu} )
115+ string (APPEND TMP_HEADER "\n #endif // GPUCA_GPUCODE_GENRTC\n " )
124116
125- file (APPEND " ${ TMP_HEADER} " "\n #endif // GPUDEFPARAMETERSDEFAULTS_H\n " )
126- file (RENAME "${TMP_HEADER } " "${OUT_HEADER } " )
117+ string (APPEND TMP_HEADER "\n #endif // GPUDEFPARAMETERSDEFAULTS_H\n " )
118+ file (GENERATE OUTPUT "${OUT_HEADER } " CONTENT "${TMP_HEADER } " )
127119 message (STATUS "Generated ${OUT_HEADER} " )
128120 add_custom_target (GPU_PARAM_HEADER_${GPU_ARCH} _ALL ALL DEPENDS ${OUT_HEADER} ${CMAKE_CURRENT_SOURCE_DIR} /cmake/gpu_param_header_generator.cmake ${GPU_PARAM_JSON} )
129121endfunction ()
0 commit comments