[CMake][Release] Enable bolt optimization for clang on Linux (#128090) · llvm/llvm-project@a2112e2 (original) (raw)

`@@ -29,14 +29,21 @@ endfunction()

`

29

29

`# cache file to CMake via -C. e.g.

`

30

30

`#

`

31

31

`# cmake -D LLVM_RELEASE_ENABLE_PGO=ON -C Release.cmake

`

``

32

+

``

33

`+

set (DEFAULT_PROJECTS "clang;lld;lldb;clang-tools-extra;polly;mlir;flang")

`

``

34

`+

bolt only supports ELF, so only enable it for Linux.

`

``

35

`+

if (${CMAKE_HOST_SYSTEM_NAME} MATCHES "Linux")

`

``

36

`+

list(APPEND DEFAULT_PROJECTS "bolt")

`

``

37

`+

endif()

`

``

38

+

32

39

`set (DEFAULT_RUNTIMES "compiler-rt;libcxx")

`

33

40

`if (NOT WIN32)

`

34

41

`list(APPEND DEFAULT_RUNTIMES "libcxxabi" "libunwind")

`

35

42

`endif()

`

36

43

`set(LLVM_RELEASE_ENABLE_LTO THIN CACHE STRING "")

`

37

44

`set(LLVM_RELEASE_ENABLE_PGO ON CACHE BOOL "")

`

38

45

`set(LLVM_RELEASE_ENABLE_RUNTIMES ${DEFAULT_RUNTIMES} CACHE STRING "")

`

39

``

`-

set(LLVM_RELEASE_ENABLE_PROJECTS "clang;lld;lldb;clang-tools-extra;bolt;polly;mlir;flang" CACHE STRING "")

`

``

46

`+

set(LLVM_RELEASE_ENABLE_PROJECTS ${DEFAULT_PROJECTS} CACHE STRING "")

`

40

47

`# Note we don't need to add install here, since it is one of the pre-defined

`

41

48

`# steps.

`

42

49

`set(LLVM_RELEASE_FINAL_STAGE_TARGETS "clang;package;check-all;check-llvm;check-clang" CACHE STRING "")

`

`@@ -118,13 +125,21 @@ if(NOT ${CMAKE_HOST_SYSTEM_NAME} MATCHES "Darwin")

`

118

125

`set(RELEASE_LINKER_FLAGS "${RELEASE_LINKER_FLAGS} -static-libgcc")

`

119

126

`endif()

`

120

127

``

``

128

`+

Set flags for bolt

`

``

129

`+

if (${CMAKE_HOST_SYSTEM_NAME} MATCHES "Linux")

`

``

130

`+

set(RELEASE_LINKER_FLAGS "${RELEASE_LINKER_FLAGS} -Wl,--emit-relocs,-znow")

`

``

131

`+

endif()

`

``

132

+

121

133

`set_instrument_and_final_stage_var(CMAKE_EXE_LINKER_FLAGS ${RELEASE_LINKER_FLAGS} STRING)

`

122

134

`set_instrument_and_final_stage_var(CMAKE_SHARED_LINKER_FLAGS ${RELEASE_LINKER_FLAGS} STRING)

`

123

135

`set_instrument_and_final_stage_var(CMAKE_MODULE_LINKER_FLAGS ${RELEASE_LINKER_FLAGS} STRING)

`

124

136

``

125

137

`# Final Stage Config (stage2)

`

126

138

`set_final_stage_var(LLVM_ENABLE_RUNTIMES "${LLVM_RELEASE_ENABLE_RUNTIMES}" STRING)

`

127

139

`set_final_stage_var(LLVM_ENABLE_PROJECTS "${LLVM_RELEASE_ENABLE_PROJECTS}" STRING)

`

``

140

`+

if (${CMAKE_HOST_SYSTEM_NAME} MATCHES "Linux")

`

``

141

`+

set_final_stage_var(CLANG_BOLT "INSTRUMENT" STRING)

`

``

142

`+

endif()

`

128

143

`set_final_stage_var(CPACK_GENERATOR "TXZ" STRING)

`

129

144

`set_final_stage_var(CPACK_ARCHIVE_THREADS "0" STRING)

`

130

145

``