@@ -123,72 +123,58 @@ else()
123123    )
124124endif ()
125125
126- if (NOT  EXISTS  ${LLVM_SOURCE_URL} )
127-     # Use LLVM sources stored at fixed location 
128-     set (LLVM_SOURCE_URL ${CMAKE_CURRENT_SOURCE_DIR} /../llvm_source)
129- endif ()
130- if (NOT  EXISTS  ${LLVM_SOURCE_URL} )
131-     # Use LLVM sources stored at fixed location 
132-     set (LLVM_SOURCE_URL ${CMAKE_CURRENT_SOURCE_DIR} /../../../../llvm_source)
133- endif ()
134- if (NOT  EXISTS  ${LLVM_SOURCE_URL} )
135-     # Use tar archive with stock LLVM sources. 
136-     set (LLVM_SOURCE_USE_TARBALL true )
137-     set (LLVM_SOURCE_URL "${BS_DIR_MIGRATION_BINARIES} /igc/llvm/llvm-4.0.0.src.tar.xz" )
138- endif ()
139- 
140126# Use LLVM stock sources or patched stock sources 
141127if (LLVM_STOCK_SOURCES)
142128    set (LLVM_APPLY_PATCHES false )
143129else ()
144130    set (LLVM_APPLY_PATCHES true )
145131endif ()
146132
147- if (LLVM_APPLY_PATCHES)
148-     # Customization patches will be applied if present. 
149-     file (GLOB LLVM_EXTERNAL_PATCH_FILES "${CMAKE_CURRENT_SOURCE_DIR} /releases/4.0.0/patches_external/*.patch" )
150-     list (APPEND  LLVM_PATCH_FILES ${LLVM_EXTERNAL_PATCH_FILES} )
151-     # Sort list of patch files. 
152-     list (SORT  LLVM_PATCH_FILES)
133+ set (EXPECTED_LLVM_VERSION "7.0.0" )
134+ 
135+ if (NOT  LLVM_SOURCE_DIR)
136+     set (LLVM_SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR} /../src" )
137+ endif ()
138+ 
139+ if (NOT  EXISTS  ${LLVM_SOURCE_URL} )
140+     # Use LLVM sources stored at fixed location 
141+     set (LLVM_SOURCE_URL /opt/src/llvm${EXPECTED_LLVM_VERSION} _source)
142+ endif ()
143+ if (NOT  EXISTS  ${LLVM_SOURCE_URL} )
144+     # Use LLVM sources stored at fixed location 
145+     set (LLVM_SOURCE_URL ${CMAKE_CURRENT_SOURCE_DIR} /../llvm${EXPECTED_LLVM_VERSION} _source)
146+ endif ()
147+ if (NOT  EXISTS  ${LLVM_SOURCE_URL} )
148+     # Use LLVM sources stored at fixed location 
149+     set (LLVM_SOURCE_URL ${CMAKE_CURRENT_SOURCE_DIR} /../../../../llvm${EXPECTED_LLVM_VERSION} _source)
153150endif ()
154151
155152message (STATUS  "LLVM_SOURCE_URL   = ${LLVM_SOURCE_URL} " )
156153message (STATUS  "LLVM_OPTIONS      = ${LLVM_OPTIONS} " )
157154
158- if (NOT  LLVM_SOURCE_DIR)
159-     set (LLVM_SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR} /../src" )
160- endif ()
161155if (NOT  EXISTS  ${LLVM_SOURCE_DIR} )
162-     if (LLVM_SOURCE_USE_TARBALL)
163-         # Unpack stock LLVM tarball to LLVM_SOURCE_DIR 
164-         set (LLVM_UNZIPED_SOURCE_TEMP_DIR "${CMAKE_CURRENT_BINARY_DIR} /tmp" )
165-         file (MAKE_DIRECTORY ${LLVM_UNZIPED_SOURCE_TEMP_DIR} )
166-     
167-         message (STATUS  "Extracting stock LLVM tarball to ${LLVM_SOURCE_DIR} " )
168-         execute_process (COMMAND  ${CMAKE_COMMAND}  -E tar xfz ${LLVM_SOURCE_URL}  WORKING_DIRECTORY  ${LLVM_UNZIPED_SOURCE_TEMP_DIR}  RESULT_VARIABLE  rv)
169-      
170-         if (NOT  rv EQUAL  0)
171-             message (STATUS  "extracting... [error clean up]" )
172-             file (REMOVE_RECURSE "${LLVM_UNZIPED_SOURCE_TEMP_DIR} " )
173-             message (FATAL_ERROR "error: extract of '${LLVM_SOURCE_URL} ' failed" )
174-         endif ()
175-       
176-         file (GLOB contents "${LLVM_UNZIPED_SOURCE_TEMP_DIR} /*" )
177-         file (RENAME  ${contents}  "${LLVM_SOURCE_DIR} " )
178-         file (REMOVE_RECURSE ${LLVM_UNZIPED_SOURCE_TEMP_DIR} )
179-     else ()
180-         # Copy stock LLVM sources to LLVM_SOURCE_DIR 
181-         message (STATUS  "Copying stock LLVM sources to ${LLVM_SOURCE_DIR} " )
182-         execute_process (COMMAND  ${CMAKE_COMMAND}  -E copy_directory ${LLVM_SOURCE_URL}  ${LLVM_SOURCE_DIR} )
183-     endif ()
184-     # Apply customization patches if any. 
185-     foreach (patch_file ${LLVM_PATCH_FILES} )
186-         message ("Apply ${patch_file}  file" )
187-         execute_process (COMMAND  ${PATCH}  -d ${LLVM_SOURCE_DIR}  -p1 -i ${patch_file}  RESULT_VARIABLE  rv)
188-         if (NOT  rv EQUAL  0)
189-             message (FATAL_ERROR "error: applying patch '${patch_file} ' failed" )
190-         endif ()
191-     endforeach ()
156+       # Copy stock LLVM sources to LLVM_SOURCE_DIR 
157+       message (STATUS  "Copying stock LLVM sources to ${LLVM_SOURCE_DIR} " )
158+       execute_process (COMMAND  ${CMAKE_COMMAND}  -E copy_directory ${LLVM_SOURCE_URL}  ${LLVM_SOURCE_DIR} )
159+ 
160+       if (LLVM_APPLY_PATCHES)
161+           # Customization patches will be applied if present. 
162+           file (GLOB LLVM_PATCH_FILES
163+                "${CMAKE_CURRENT_SOURCE_DIR} /releases/${EXPECTED_LLVM_VERSION} /patches_external/*.patch" 
164+               )
165+           # Sort list of patch files. 
166+           if (LLVM_PATCH_FILES)
167+               list (SORT  LLVM_PATCH_FILES)
168+           endif ()
169+           # Apply customization patches if any. 
170+           foreach (patch_file ${LLVM_PATCH_FILES} )
171+               message ("Apply ${patch_file}  file" )
172+               execute_process (COMMAND  ${PATCH}  -d ${LLVM_SOURCE_DIR}  -p1 -i ${patch_file}  RESULT_VARIABLE  rv)
173+               if (NOT  rv EQUAL  0)
174+                   message (FATAL_ERROR "error: applying patch '${patch_file} ' failed" )
175+               endif ()
176+           endforeach ()
177+       endif ()
192178endif ()
193179
194180if (CMAKE_CONFIGURATION_TYPES )
@@ -207,6 +193,22 @@ llvm_utils_push_build_flags()
207193add_subdirectory (${LLVM_SOURCE_DIR}  ${CMAKE_CURRENT_BINARY_DIR} /src EXCLUDE_FROM_ALL )
208194llvm_utils_pop_build_flags()
209195llvm_utils_python_restore()
196+ # Get version of LLVM that we are currently using: 
197+ get_directory_property (LLVM_VERSION_MAJOR  DIRECTORY  ${LLVM_SOURCE_DIR}  DEFINITION "LLVM_VERSION_MAJOR" )
198+ get_directory_property (LLVM_VERSION_MINOR  DIRECTORY  ${LLVM_SOURCE_DIR}  DEFINITION "LLVM_VERSION_MINOR" )
199+ get_directory_property (LLVM_VERSION_PATCH  DIRECTORY  ${LLVM_SOURCE_DIR}  DEFINITION "LLVM_VERSION_PATCH" )
200+ get_directory_property (LLVM_VERSION_SUFFIX DIRECTORY  ${LLVM_SOURCE_DIR}  DEFINITION "LLVM_VERSION_SUFFIX" )
201+ # Make LLVM version accessible in parent scope: 
202+ set (LLVM_VERSION_MAJOR  ${LLVM_VERSION_MAJOR}   PARENT_SCOPE)
203+ set (LLVM_VERSION_MINOR  ${LLVM_VERSION_MINOR}   PARENT_SCOPE)
204+ set (LLVM_VERSION_PATCH  ${LLVM_VERSION_PATCH}   PARENT_SCOPE)
205+ set (LLVM_VERSION_SUFFIX ${LLVM_VERSION_SUFFIX}  PARENT_SCOPE)
206+ 
207+ set (PACKAGE_VERSION  "${LLVM_VERSION_MAJOR} .${LLVM_VERSION_MINOR} .${LLVM_VERSION_PATCH}${LLVM_VERSION_SUFFIX} " )
208+ 
209+ if (NOT  (${PACKAGE_VERSION}  EQUAL  ${EXPECTED_LLVM_VERSION} ))
210+   message (FATAL_ERROR "Expected LLVM version ${EXPECTED_LLVM_VERSION}  but found ${PACKAGE_VERSION} ." )
211+ endif ()
210212
211213set (LLVM_INCLUDE_DIRS "${LLVM_SOURCE_DIR} /include;${CMAKE_CURRENT_BINARY_DIR} /src/include" )
212214set (LLVM_INCLUDE_DIRS ${LLVM_INCLUDE_DIRS}  PARENT_SCOPE)
0 commit comments