improve verbosity of CMake file. open issue: doesn't print object file · whitepau/oneAPI-samples_fork@98a0dfc (original) (raw)

`@@ -20,22 +20,28 @@ if(NOT DEFINED FPGA_DEVICE)

`

20

20

` set(FPGA_DEVICE "intel_s10sx_pac:pac_s10_usm")

`

21

21

`endif()

`

22

22

``

23

``

`-

Use cmake -DUSER_HARDWARE_FLAGS= to set extra flags for FPGA backend

`

``

23

`+

Use cmake -DUSER_FPGA_FLAGS= to set extra flags for FPGA backend

`

24

24

`# compilation.

`

25

``

`-

set(USER_HARDWARE_FLAGS "${USER_HARDWARE_FLAGS}")

`

``

25

`+

set(USER_FPGA_FLAGS "${USER_FPGA_FLAGS}")

`

26

26

``

27

27

`# Use cmake -DUSER_FLAGS= to set extra flags for general compilation.

`

28

28

`set(USER_FLAGS "${USER_FLAGS}")

`

29

29

`###############################################################################

`

30

30

`### no changes after here

`

31

31

`###############################################################################

`

32

32

``

``

33

`+

set(EMULATOR_EXTENSION fpga_emu)

`

``

34

`+

set(REPORT_EXTENSION report)

`

``

35

`+

set(SIMULATOR_EXTENSION fpga_sim)

`

``

36

`+

set(FPGA_EXTENSION fpga)

`

``

37

`+

set(IP_EXPORT_EXTENSION fpga_ip_export)

`

``

38

+

33

39

`# define the different build targets the generated build script will support.

`

34

``

`-

set(EMULATOR_TARGET ${TARGET_NAME}.fpga_emu)

`

35

``

`-

set(REPORT_TARGET ${TARGET_NAME}.report)

`

36

``

`-

set(SIMULATOR_TARGET ${TARGET_NAME}.fpga_sim)

`

37

``

`-

set(FPGA_TARGET ${TARGET_NAME}.fpga)

`

38

``

`-

set(IP_EXPORT_TARGET ${TARGET_NAME}.fpga_ip_export)

`

``

40

`+

set(EMULATOR_TARGET TARGETNAME.{TARGET_NAME}.TARGETNAME.{EMULATOR_EXTENSION})

`

``

41

`+

set(REPORT_TARGET TARGETNAME.{TARGET_NAME}.TARGETNAME.{REPORT_EXTENSION})

`

``

42

`+

set(SIMULATOR_TARGET TARGETNAME.{TARGET_NAME}.TARGETNAME.{SIMULATOR_EXTENSION})

`

``

43

`+

set(FPGA_TARGET TARGETNAME.{TARGET_NAME}.TARGETNAME.{FPGA_EXTENSION})

`

``

44

`+

set(IP_EXPORT_TARGET TARGETNAME.{TARGET_NAME}.TARGETNAME.{IP_EXPORT_EXTENSION})

`

39

45

``

40

46

`# FPGA device selection

`

41

47

`if(DEFINED FPGA_DEVICE)

`

`@@ -51,7 +57,7 @@ if(WIN32)

`

51

57

`else()

`

52

58

`# add qactypes for Linux

`

53

59

` set(QACTYPES_COMPILE "-qactypes")

`

54

``

`-

set(QACTYPES_LINK "-qactypes")

`

``

60

`+

set(QACTYPES_LINK "")

`

55

61

`endif()

`

56

62

``

57

63

`# A DPC++ ahead-of-time (AoT) compile processes the device code in two stages.

`

`@@ -60,75 +66,107 @@ endif()

`

60

66

`# 2. The "link" stage invokes the compiler's FPGA backend before linking. For

`

61

67

`# this reason, FPGA backend flags must be passed as link flags in CMake.

`

62

68

``

63

``

`-

set(EMULATOR_COMPILE_FLAGS "-fsycl -fintelfpga -Wall WINFLAG{WIN_FLAG} WINFLAG{QACTYPES_COMPILE} ${EXPERIMENTAL_INCLUDE}")

`

64

``

`-

set(EMULATOR_LINK_FLAGS "-fsycl -fintelfpga ${QACTYPES_LINK}")

`

65

``

`-

set(FPGA_COMPILE_FLAGS "-fsycl -fintelfpga -Wall WINFLAG{WIN_FLAG} WINFLAG{QACTYPES_COMPILE} ${EXPERIMENTAL_INCLUDE}")

`

66

``

`-

set(FPGA_REPORT_FLAGS "-fsycl -fintelfpga -Xstarget=${FPGA_DEVICE} ${USER_HARDWARE_FLAGS}")

`

67

``

`-

set(FPGA_LINK_FLAGS "${FPGA_REPORT_FLAGS} ${QACTYPES_LINK}")

`

``

69

`+

set(EMULATOR_COMPILE_FLAGS "-fsycl -fintelfpga -DFPGA_EMULATOR QACTYPESCOMPILE{QACTYPES_COMPILE} QACTYPESCOMPILE{USER_FLAGS} EXPERIMENTALINCLUDE{EXPERIMENTAL_INCLUDE} EXPERIMENTALINCLUDE{WIN_FLAG}")

`

``

70

`+

set(EMULATOR_LINK_FLAGS "-fsycl -fintelfpga -DFPGA_EMULATOR QACTYPESLINK{QACTYPES_LINK} QACTYPESLINK{USER_FLAGS} ")

`

``

71

`+

set(REPORT_COMPILE_FLAGS "-fsycl -fintelfpga -DFPGA_HARDWARE QACTYPESCOMPILE{QACTYPES_COMPILE} QACTYPESCOMPILE{USER_FLAGS} EXPERIMENTALINCLUDE{EXPERIMENTAL_INCLUDE} EXPERIMENTALINCLUDE{WIN_FLAG}")

`

``

72

`+

set(REPORT_LINK_FLAGS "-fsycl -fintelfpga -DFPGA_HARDWARE QACTYPESLINK{QACTYPES_LINK} QACTYPESLINK{USER_FLAGS} ${USER_FPGA_FLAGS} -Xshardware -fsycl-link=early")

`

``

73

`+

set(SIMULATOR_COMPILE_FLAGS "-fsycl -fintelfpga -DFPGA_SIMULATOR QACTYPESCOMPILE{QACTYPES_COMPILE} QACTYPESCOMPILE{USER_FLAGS} EXPERIMENTALINCLUDE{EXPERIMENTAL_INCLUDE} EXPERIMENTALINCLUDE{WIN_FLAG}")

`

``

74

`+

set(SIMULATOR_LINK_FLAGS "-fsycl -fintelfpga -DFPGA_SIMULATOR QACTYPESLINK{QACTYPES_LINK} QACTYPESLINK{USER_FLAGS} ${USER_FPGA_FLAGS} -Xssimulation -Xsghdl=1")

`

``

75

`+

set(FULL_SYSTEM_COMPILE_FLAGS "-fsycl -fintelfpga -DFPGA_HARDWARE QACTYPESCOMPILE{QACTYPES_COMPILE} QACTYPESCOMPILE{USER_FLAGS} EXPERIMENTALINCLUDE{EXPERIMENTAL_INCLUDE} EXPERIMENTALINCLUDE{WIN_FLAG}")

`

``

76

`+

set(FULL_SYSTEM_LINK_FLAGS "-fsycl -fintelfpga -DFPGA_HARDWARE QACTYPESLINK{QACTYPES_LINK} QACTYPESLINK{USER_FLAGS} ${USER_FPGA_FLAGS} -Xshardware")

`

``

77

+

``

78

`+

get rid of this once host pipes work properly

`

``

79

`+

set(IP_EXPORT_COMPILE_FLAGS "-fsycl -fintelfpga -DFPGA_HARDWARE QACTYPESCOMPILE{QACTYPES_COMPILE} QACTYPESCOMPILE{USER_FLAGS} EXPERIMENTALINCLUDE{EXPERIMENTAL_INCLUDE} EXPERIMENTALINCLUDE{WIN_FLAG}")

`

``

80

`+

set(IP_EXPORT_LINK_FLAGS "-fsycl -fintelfpga -DFPGA_HARDWARE QACTYPESLINK{QACTYPES_LINK} QACTYPESLINK{USER_FLAGS} ${USER_FPGA_FLAGS} -Xshardware -fsycl-link=early -fsycl-device-code-split=per_kernel")

`

``

81

+

``

82

`+

remove extra spaces

`

``

83

`+

string(REGEX REPLACE "( +)" " " EMULATOR_COMPILE_FLAGS ${EMULATOR_COMPILE_FLAGS})

`

``

84

`+

string(REGEX REPLACE "( +)" " " EMULATOR_LINK_FLAGS ${EMULATOR_LINK_FLAGS})

`

``

85

`+

string(REGEX REPLACE "( +)" " " REPORT_COMPILE_FLAGS ${REPORT_COMPILE_FLAGS})

`

``

86

`+

string(REGEX REPLACE "( +)" " " REPORT_LINK_FLAGS ${REPORT_LINK_FLAGS})

`

``

87

`+

string(REGEX REPLACE "( +)" " " SIMULATOR_COMPILE_FLAGS ${SIMULATOR_COMPILE_FLAGS})

`

``

88

`+

string(REGEX REPLACE "( +)" " " SIMULATOR_LINK_FLAGS ${SIMULATOR_LINK_FLAGS})

`

``

89

`+

string(REGEX REPLACE "( +)" " " FULL_SYSTEM_COMPILE_FLAGS ${FULL_SYSTEM_COMPILE_FLAGS})

`

``

90

`+

string(REGEX REPLACE "( +)" " " FULL_SYSTEM_COMPILE_FLAGS ${FULL_SYSTEM_COMPILE_FLAGS})

`

``

91

`+

string(REGEX REPLACE "( +)" " " IP_EXPORT_COMPILE_FLAGS ${IP_EXPORT_COMPILE_FLAGS})

`

``

92

`+

string(REGEX REPLACE "( +)" " " IP_EXPORT_LINK_FLAGS ${IP_EXPORT_LINK_FLAGS})

`

68

93

``

69

94

`###############################################################################

`

70

95

`### FPGA Emulator

`

71

96

`###############################################################################

`

72

``

`-

To compile in a single command:

`

73

``

`-

icpx -fsycl -fintelfpga -DFPGA_EMULATOR fpga_compile.cpp -o fpga_compile.fpga_emu

`

74

``

`-

CMake executes:

`

75

``

`-

[compile] icpx -fsycl -fintelfpga -DFPGA_EMULATOR -o fpga_compile.cpp.o -c fpga_compile.cpp

`

76

``

`-

[link] icpx -fsycl -fintelfpga fpga_compile.cpp.o -o fpga_compile.fpga_emu

`

77

97

`add_executable(${EMULATOR_TARGET} ${SOURCE_FILE})

`

78

``

`-

add_custom_target(fpga_emu DEPENDS ${EMULATOR_TARGET})

`

79

``

`-

set_target_properties(${EMULATOR_TARGET} PROPERTIES COMPILE_FLAGS "${EMULATOR_COMPILE_FLAGS} -DFPGA_EMULATOR ${USER_FLAGS}")

`

80

``

`-

set_target_properties(${EMULATOR_TARGET} PROPERTIES LINK_FLAGS "${EMULATOR_LINK_FLAGS} -DFPGA_EMULATOR ${USER_FLAGS}")

`

``

98

+

``

99

`+

add_custom_target( displayEmulationCompileCommand ALL

`

``

100

`+

${CMAKE_COMMAND} -E cmake_echo_color --cyan ""

`

``

101

`+

COMMENT "${CMAKE_CXX_COMPILER} EMULATORCOMPILEFLAGS−o{EMULATOR_COMPILE_FLAGS} -o EMULATORCOMPILEFLAGSo{OBJ_FILE} -c ${SOURCE_FILE}")

`

``

102

+

``

103

`+

add_dependencies(${EMULATOR_TARGET} displayEmulationCompileCommand)

`

``

104

`+

set_target_properties(${EMULATOR_TARGET} PROPERTIES COMPILE_FLAGS "${EMULATOR_COMPILE_FLAGS}")

`

``

105

`+

add_custom_command(TARGET EMULATORTARGETPOSTBUILDCOMMENT"{EMULATOR_TARGET} POST_BUILD COMMENT "EMULATORTARGETPOSTBUILDCOMMENT"{CMAKE_CXX_COMPILER} EMULATORLINKFLAGS{EMULATOR_LINK_FLAGS} EMULATORLINKFLAGS{OBJ_FILE} -o ${EMULATOR_TARGET}")

`

``

106

+

``

107

`+

set_target_properties(${EMULATOR_TARGET} PROPERTIES LINK_FLAGS "${EMULATOR_LINK_FLAGS}")

`

``

108

`+

add_custom_target(${EMULATOR_EXTENSION} DEPENDS ${EMULATOR_TARGET})

`

81

109

``

82

110

`###############################################################################

`

83

111

`### Report

`

84

112

`###############################################################################

`

85

``

`-

To compile manually:

`

86

``

`-

icpx -fsycl -fintelfpga -Xshardware -Xstarget= -fsycl-link=early fpga_compile.cpp -o fpga_compile.report.a

`

87

``

`-

set(REPORT_TARGET ${TARGET_NAME}.report.a)

`

88

``

`-

The compile output is not an executable, but an intermediate compilation result unique to DPC++.

`

89

113

`add_executable(${REPORT_TARGET} ${SOURCE_FILE})

`

90

``

`-

add_custom_target(report DEPENDS ${REPORT_TARGET})

`

91

``

`-

set_target_properties(${REPORT_TARGET} PROPERTIES COMPILE_FLAGS "${FPGA_COMPILE_FLAGS} -DFPGA_HARDWARE ${USER_FLAGS}")

`

92

``

`-

set_target_properties(${REPORT_TARGET} PROPERTIES LINK_FLAGS "${FPGA_REPORT_FLAGS} ${USER_FLAGS} -Xshardware -fsycl-link=early")

`

93

``

`-

fsycl-link=early stops the compiler after RTL generation, before invoking Quartus®

`

``

114

+

``

115

`+

add_custom_target( displayReportCompileCommand ALL

`

``

116

`+

${CMAKE_COMMAND} -E cmake_echo_color --cyan ""

`

``

117

`+

COMMENT "${CMAKE_CXX_COMPILER} REPORTCOMPILEFLAGS−o{REPORT_COMPILE_FLAGS} -o REPORTCOMPILEFLAGSo{OBJ_FILE} -c ${SOURCE_FILE}")

`

``

118

+

``

119

`+

add_dependencies(${REPORT_TARGET} displayReportCompileCommand)

`

``

120

`+

set_target_properties(${REPORT_TARGET} PROPERTIES COMPILE_FLAGS "${REPORT_COMPILE_FLAGS}")

`

``

121

`+

add_custom_command(TARGET REPORTTARGETPOSTBUILDCOMMENT"{REPORT_TARGET} POST_BUILD COMMENT "REPORTTARGETPOSTBUILDCOMMENT"{CMAKE_CXX_COMPILER} REPORTLINKFLAGS{REPORT_LINK_FLAGS} REPORTLINKFLAGS{OBJ_FILE} -o ${REPORT_TARGET}")

`

``

122

+

``

123

`+

set_target_properties(${REPORT_TARGET} PROPERTIES LINK_FLAGS "${REPORT_LINK_FLAGS}")

`

``

124

`+

add_custom_target(${REPORT_EXTENSION} DEPENDS ${REPORT_TARGET})

`

94

125

``

95

126

`###############################################################################

`

96

127

`### FPGA Simulation

`

97

128

`###############################################################################

`

98

``

`-

To compile in a single command:

`

99

``

`-

icpx -fsycl -fintelfpga -Xstarget= -Xssimulation -Xsghdl=1 fpga_compile.cpp -o fpga_compile.fpga_sim

`

100

``

`-

CMake executes:

`

101

``

`-

[compile] icpx -fsycl -fintelfpga -o fpga_compile.cpp.o -c fpga_compile.cpp

`

102

``

`-

[link] icpx -fsycl -fintelfpga -Xstarget= -Xssimulation -Xsghdl=1 fpga_compile.cpp.o -o fpga_compile.fpga_sim

`

103

``

`-

add_executable(${SIMULATOR_TARGET} EXCLUDE_FROM_ALL ${SOURCE_FILE})

`

104

``

`-

add_custom_target(fpga_sim DEPENDS ${SIMULATOR_TARGET})

`

105

``

`-

set_target_properties(${SIMULATOR_TARGET} PROPERTIES COMPILE_FLAGS "${FPGA_COMPILE_FLAGS} -DFPGA_SIMULATOR ${USER_FLAGS}")

`

106

``

`-

set_target_properties(${SIMULATOR_TARGET} PROPERTIES LINK_FLAGS "${FPGA_LINK_FLAGS} -Xssimulation -Xsghdl=1 ${USER_FLAGS}")

`

``

129

`+

add_executable(${SIMULATOR_TARGET} ${SOURCE_FILE})

`

``

130

+

``

131

`+

add_custom_target( displaySimulatorCompileCommand ALL

`

``

132

`+

${CMAKE_COMMAND} -E cmake_echo_color --cyan ""

`

``

133

`+

COMMENT "${CMAKE_CXX_COMPILER} SIMULATORCOMPILEFLAGS−o{SIMULATOR_COMPILE_FLAGS} -o SIMULATORCOMPILEFLAGSo{OBJ_FILE} -c ${SOURCE_FILE}")

`

``

134

+

``

135

`+

add_dependencies(${SIMULATOR_TARGET} displaySimulatorCompileCommand)

`

``

136

`+

set_target_properties(${SIMULATOR_TARGET} PROPERTIES COMPILE_FLAGS "${SIMULATOR_COMPILE_FLAGS}")

`

``

137

`+

add_custom_command(TARGET SIMULATORTARGETPOSTBUILDCOMMENT"{SIMULATOR_TARGET} POST_BUILD COMMENT "SIMULATORTARGETPOSTBUILDCOMMENT"{CMAKE_CXX_COMPILER} SIMULATORLINKFLAGS{SIMULATOR_LINK_FLAGS} SIMULATORLINKFLAGS{OBJ_FILE} -o ${SIMULATOR_TARGET}")

`

``

138

+

``

139

`+

set_target_properties(${SIMULATOR_TARGET} PROPERTIES LINK_FLAGS "${SIMULATOR_LINK_FLAGS}")

`

``

140

`+

add_custom_target(${SIMULATOR_EXTENSION} DEPENDS ${SIMULATOR_TARGET})

`

107

141

``

108

142

`###############################################################################

`

109

143

`### FPGA Board

`

110

144

`###############################################################################

`

111

``

`-

To compile in a single command:

`

112

``

`-

icpx -fsycl -fintelfpga -Xshardware -Xstarget= fpga_compile.cpp -o fpga_compile.fpga

`

113

``

`-

CMake executes:

`

114

``

`-

[compile] icpx -fsycl -fintelfpga -o fpga_compile.cpp.o -c fpga_compile.cpp

`

115

``

`-

[link] icpx -fsycl -fintelfpga -Xshardware -Xstarget= fpga_compile.cpp.o -o fpga_compile.fpga

`

116

``

`-

add_executable(${FPGA_TARGET} EXCLUDE_FROM_ALL ${SOURCE_FILE})

`

117

``

`-

add_custom_target(fpga DEPENDS ${FPGA_TARGET})

`

118

``

`-

set_target_properties(${FPGA_TARGET} PROPERTIES COMPILE_FLAGS "${FPGA_COMPILE_FLAGS} -DFPGA_HARDWARE ${USER_FLAGS}")

`

119

``

`-

set_target_properties(${FPGA_TARGET} PROPERTIES LINK_FLAGS "${FPGA_LINK_FLAGS} -Xshardware ${USER_FLAGS}")

`

``

145

`+

add_executable(${FPGA_TARGET} ${SOURCE_FILE})

`

``

146

+

``

147

`+

add_custom_target( displayFpgaCompileCommand ALL

`

``

148

`+

${CMAKE_COMMAND} -E cmake_echo_color --cyan ""

`

``

149

`+

COMMENT "${CMAKE_CXX_COMPILER} FULLSYSTEMCOMPILEFLAGS−o{FULL_SYSTEM_COMPILE_FLAGS} -o FULLSYSTEMCOMPILEFLAGSo{OBJ_FILE} -c ${SOURCE_FILE}")

`

``

150

+

``

151

`+

add_dependencies(${FPGA_TARGET} displayFpgaCompileCommand)

`

``

152

`+

set_target_properties(${FPGA_TARGET} PROPERTIES COMPILE_FLAGS "${FULL_SYSTEM_COMPILE_FLAGS}")

`

``

153

`+

add_custom_command(TARGET FPGATARGETPOSTBUILDCOMMENT"{FPGA_TARGET} POST_BUILD COMMENT "FPGATARGETPOSTBUILDCOMMENT"{CMAKE_CXX_COMPILER} FULLSYSTEMLINKFLAGS{FULL_SYSTEM_LINK_FLAGS} FULLSYSTEMLINKFLAGS{OBJ_FILE} -o ${FPGA_TARGET}")

`

``

154

+

``

155

`+

set_target_properties(${FPGA_TARGET} PROPERTIES LINK_FLAGS "${FULL_SYSTEM_LINK_FLAGS}")

`

``

156

`+

add_custom_target(${FPGA_EXTENSION} DEPENDS ${FPGA_TARGET})

`

120

157

``

121

158

`###############################################################################

`

122

``

`-

FPGA IP Export (apparently only necessary until 'correct' implementation of host pipes)

`

``

159

`+

FPGA IP Export (only necessary until native host pipes)

`

123

160

`###############################################################################

`

124

``

`-

To compile in a single command:

`

125

``

`-

icpx -fsycl -fintelfpga -Xshardware -Xstarget= -fsycl-link=early -fsycl-device-code-split=per_kernel fpga_compile.cpp -o fpga_compile.fpga_ip_export

`

126

``

`-

CMake executes:

`

127

``

`-

[compile] icpx -fsycl -fintelfpga -o fpga_compile.cpp.o -c fpga_compile.cpp

`

128

``

`-

[link] icpx -fsycl -fintelfpga -Xshardware -Xstarget= fpga_compile.cpp.o -o fpga_compile.fpga_ip_export

`

129

``

`-

set(IP_EXPORT_TARGET ${TARGET_NAME}.fpga_ip_export.a)

`

130

``

`-

The compile output is not an executable, but an intermediate compilation result unique to DPC++.

`

131

161

`add_executable(${IP_EXPORT_TARGET} ${SOURCE_FILE})

`

132

``

`-

add_custom_target(fpga_ip_export DEPENDS ${IP_EXPORT_TARGET})

`

133

``

`-

set_target_properties(${IP_EXPORT_TARGET} PROPERTIES COMPILE_FLAGS "${FPGA_COMPILE_FLAGS} -DFPGA_HARDWARE ${USER_FLAGS}")

`

134

``

`-

set_target_properties(${IP_EXPORT_TARGET} PROPERTIES LINK_FLAGS "${FPGA_REPORT_FLAGS} -Xshardware -fsycl-link=early -fsycl-device-code-split=per_kernel ${USER_FLAGS}")

`

``

162

+

``

163

`+

add_custom_target( displayExportCompileCommand ALL

`

``

164

`+

${CMAKE_COMMAND} -E cmake_echo_color --cyan ""

`

``

165

`+

COMMENT "${CMAKE_CXX_COMPILER} IPEXPORTCOMPILEFLAGS−o{IP_EXPORT_COMPILE_FLAGS} -o IPEXPORTCOMPILEFLAGSo{OBJ_FILE} -c ${SOURCE_FILE}")

`

``

166

+

``

167

`+

add_dependencies(${IP_EXPORT_TARGET} displayExportCompileCommand)

`

``

168

`+

set_target_properties(${IP_EXPORT_TARGET} PROPERTIES COMPILE_FLAGS "${IP_EXPORT_COMPILE_FLAGS}")

`

``

169

`+

add_custom_command(TARGET IPEXPORTTARGETPOSTBUILDCOMMENT"{IP_EXPORT_TARGET} POST_BUILD COMMENT "IPEXPORTTARGETPOSTBUILDCOMMENT"{CMAKE_CXX_COMPILER} IPEXPORTLINKFLAGS{IP_EXPORT_LINK_FLAGS} IPEXPORTLINKFLAGS{OBJ_FILE} -o ${IP_EXPORT_TARGET}")

`

``

170

+

``

171

`+

set_target_properties(${IP_EXPORT_TARGET} PROPERTIES LINK_FLAGS "${IP_EXPORT_LINK_FLAGS}")

`

``

172

`+

add_custom_target(${IP_EXPORT_EXTENSION} DEPENDS ${IP_EXPORT_TARGET})

`