[PATCH] Headers: Install a symlink from ${MAJOR}.${MINOR} to ${MAJOR}.${MINOR}.${PATCH}

Tom Stellard thomas.stellard at amd.com
Fri Mar 7 10:24:48 PST 2014


---
 lib/Headers/CMakeLists.txt | 21 ++++++++++++++++++---
 lib/Headers/Makefile       | 27 ++++++++++++++++++++-------
 2 files changed, 38 insertions(+), 10 deletions(-)

diff --git a/lib/Headers/CMakeLists.txt b/lib/Headers/CMakeLists.txt
index d0c2684..fe9a133 100644
--- a/lib/Headers/CMakeLists.txt
+++ b/lib/Headers/CMakeLists.txt
@@ -48,7 +48,9 @@ set(files
   module.map
   )
 
-set(output_dir ${LLVM_LIBRARY_OUTPUT_INTDIR}/clang/${CLANG_VERSION}/include)
+set(output_base_dir ${LLVM_LIBRARY_OUTPUT_INTDIR}/clang)
+set(output_dir ${output_base_dir}/${CLANG_VERSION}/include)
+set(output_alias_dir ${LLVM_LIBRARY_OUTPUT_INTDIR}/clang/${CLANG_VERSION_MAJOR}.${CLANG_VERSION_MINOR})
 
 # Generate arm_neon.h
 clang_tablegen(arm_neon.h -gen-arm-neon
@@ -71,10 +73,23 @@ add_custom_command(OUTPUT ${output_dir}/arm_neon.h
   COMMENT "Copying clang's arm_neon.h...")
 list(APPEND out_files ${output_dir}/arm_neon.h)
 
-add_custom_target(clang-headers ALL DEPENDS ${out_files})
+if (NOT WIN32)
+  add_custom_command(OUTPUT ${output_alias_dir}
+    DEPENDS ${src}
+    COMMAND ln -sf ${CLANG_VERSION} ${output_alias_dir}
+    COMMENT "Creating alias from ${CLANG_VERSION} to ${output_alias_dir}")
+endif ()
+
+add_custom_target(clang-headers ALL DEPENDS ${out_files} ${output_alias_dir})
 set_target_properties(clang-headers PROPERTIES FOLDER "Misc")
 
 install(
   FILES ${files} ${CMAKE_CURRENT_BINARY_DIR}/arm_neon.h
   PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
-  DESTINATION lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION}/include)
+  DESTINATION lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION}/include
+)
+
+install(
+  DIRECTORY ${output_alias_dir}
+  DESTINATION lib${LLVM_LIBDIR_SUFFIX}/clang/
+)
diff --git a/lib/Headers/Makefile b/lib/Headers/Makefile
index 42219c4..221bf3c 100644
--- a/lib/Headers/Makefile
+++ b/lib/Headers/Makefile
@@ -14,10 +14,15 @@ TABLEGEN_INC_FILES_COMMON = 1
 
 include $(CLANG_LEVEL)/Makefile
 
-CLANG_VERSION := $(word 3,$(shell grep "CLANG_VERSION " \
-	$(PROJ_OBJ_DIR)/$(CLANG_LEVEL)/include/clang/Basic/Version.inc))
+CLANG_VERSION_INC := $(PROJ_OBJ_DIR)/$(CLANG_LEVEL)/include/clang/Basic/Version.inc
 
-HeaderDir := $(PROJ_OBJ_ROOT)/$(BuildMode)/lib/clang/$(CLANG_VERSION)/include
+CLANG_VERSION := $(word 3,$(shell grep "CLANG_VERSION " $(CLANG_VERSION_INC)))
+CLANG_VERSION_MAJOR := $(word 3,$(shell grep "CLANG_VERSION_MAJOR " $(CLANG_VERSION_INC)))
+CLANG_VERSION_MINOR := $(word 3,$(shell grep "CLANG_VERSION_MINOR " $(CLANG_VERSION_INC)))
+
+HeaderBaseDir := $(PROJ_OBJ_ROOT)/$(BuildMode)/lib/clang/$(CLANG_VERSION)
+HeaderDir := $(HeaderBaseDir)/include
+HeaderAliasDir := $(PROJ_OBJ_ROOT)/$(BuildMode)/lib/clang/$(CLANG_VERSION_MAJOR).$(CLANG_VERSION_MINOR)
 
 HEADERS := $(notdir $(wildcard $(PROJ_SRC_DIR)/*.h))
 
@@ -36,11 +41,16 @@ $(HeaderDir)/module.map: $(PROJ_SRC_DIR)/module.map $(HeaderDir)/.dir
 	$(Verb) cp $< $@
 	$(Echo) Copying $(notdir $<) to build dir
 
+$(HeaderAliasDir): $(OBJHEADERS)
+	$(VERB) $(AliasTool) $(HeaderBaseDir) $(HeaderAliasDir)
+	$(Echo) Creating alias from $(HeaderBaseDir) to $(HeaderAliasDir)
 
 # Hook into the standard Makefile rules.
-all-local:: $(OBJHEADERS) $(HeaderDir)/module.map
+all-local:: $(OBJHEADERS) $(HeaderDir)/module.map $(HeaderAliasDir)
 
-PROJ_headers := $(DESTDIR)$(PROJ_prefix)/lib/clang/$(CLANG_VERSION)/include
+PROJ_headers_base := $(DESTDIR)$(PROJ_prefix)/lib/clang/$(CLANG_VERSION)
+PROJ_headers := $(PROJ_headers_base)/include
+PROJ_headers_alias := $(DESTDIR)$(PROJ_prefix)/lib/clang/$(CLANG_VERSION_MAJOR).$(CLANG_VERSION_MINOR)
 
 INSTHEADERS := $(addprefix $(PROJ_headers)/, $(HEADERS))
 INSTHEADERS += $(PROJ_headers)/arm_neon.h
@@ -48,6 +58,10 @@ INSTHEADERS += $(PROJ_headers)/arm_neon.h
 $(PROJ_headers):
 	$(Verb) $(MKDIR) $@
 
+$(PROJ_headers_alias): $(PROJ_headers)
+	$(Verb) $(AliasTool) $(PROJ_headers_base) $(PROJ_headers_alias)
+	$(Echo) Creating alias from $(PROJ_headers_base) to $(PROJ_headers_alias)
+
 $(INSTHEADERS): $(PROJ_headers)/%.h: $(HeaderDir)/%.h | $(PROJ_headers)
 	$(Verb) $(DataInstall) $< $(PROJ_headers)
 	$(Echo) Installing compiler include file: $(notdir $<)
@@ -56,8 +70,7 @@ $(PROJ_headers)/module.map: $(HeaderDir)/module.map | $(PROJ_headers)
 	$(Verb) $(DataInstall) $< $(PROJ_headers)
 	$(Echo) Installing compiler module map file: $(notdir $<)
 
-
-install-local:: $(INSTHEADERS) $(PROJ_headers)/module.map
+install-local:: $(INSTHEADERS) $(PROJ_headers)/module.map $(PROJ_headers_alias)
 
 $(ObjDir)/arm_neon.h.inc.tmp : $(CLANG_LEVEL)/include/clang/Basic/arm_neon.td $(CLANG_TBLGEN) $(ObjDir)/.dir
 	$(Echo) "Building Clang arm_neon.h.inc with tblgen"
-- 
1.8.1.4





More information about the cfe-commits mailing list