diff options
author | Daniel Dunbar <daniel@zuster.org> | 2010-06-25 17:33:46 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2010-06-25 17:33:46 +0000 |
commit | a510767963e6bf04f0bc15de057f6bafa0aedab5 (patch) | |
tree | f859410ef37c427ffd82f259ca0386b09151984e | |
parent | b24e199fbd17af780ab000c5862d191e4daffc0f (diff) |
build: Add a generated Version.inc file instead of duplicating information.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106863 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | CMakeLists.txt | 17 | ||||
-rw-r--r-- | Makefile | 7 | ||||
-rw-r--r-- | include/clang/Basic/Makefile | 26 | ||||
-rw-r--r-- | include/clang/Basic/Version.h | 10 | ||||
-rw-r--r-- | include/clang/Basic/Version.inc.in | 6 |
5 files changed, 54 insertions, 12 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index e366275af9..6154fdb66f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -34,6 +34,23 @@ string(REGEX MATCH "[0-9]+\\.[0-9]+(\\.[0-9]+)?" CLANG_VERSION ${CLANG_VERSION_DATA}) message(STATUS "Clang version: ${CLANG_VERSION}") +string(REGEX REPLACE "([0-9]+)\\.[0-9]+(\\.[0-9]+)?" "\\1" CLANG_VERSION_MAJOR + ${CLANG_VERSION}) +string(REGEX REPLACE "[0-9]+\\.([0-9]+)(\\.[0-9]+)?" "\\1" CLANG_VERSION_MINOR + ${CLANG_VERSION}) +if (${CLANG_VERSION} MATCHES "[0-9]+\\.[0-9]+\\.[0-9]+") + set(CLANG_HAS_VERSION_PATCHLEVEL 1) + string(REGEX REPLACE "[0-9]+\\.[0-9]+\\.([0-9]+)" "\\1" CLANG_VERSION_PATCHLEVEL + ${CLANG_VERSION}) +else() + set(CLANG_HAS_VERSION_PATCHLEVEL 0) +endif() + +# Configure the Version.inc file. +configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/include/clang/Basic/Version.inc.in + ${CMAKE_CURRENT_BINARY_DIR}/include/clang/Basic/Version.inc) + # Add appropriate flags for GCC if (CMAKE_COMPILER_IS_GNUCXX) # FIXME: Turn off exceptions, RTTI: @@ -42,6 +42,11 @@ CPP.Flags += -I$(PROJ_SRC_DIR)/$(CLANG_LEVEL)/include -I$(PROJ_OBJ_DIR)/$(CLANG_ ifdef CLANG_VENDOR CPP.Flags += -DCLANG_VENDOR='"$(CLANG_VENDOR) "' endif +ifdef CLANG_VERSION +CPP.Flags += \ + -DCLANG_VERSION='"$(CLANG_VERSION)"' + -DCLANG_VERSION='"$(CLANG_VERSION)"' +endif # Disable -fstrict-aliasing. Darwin disables it by default (and LLVM doesn't # work with it enabled with GCC), Clang/llvm-gc don't support it yet, and newer @@ -74,7 +79,7 @@ report:: clean:: @ $(MAKE) -C test clean - + libs-only: all tags:: diff --git a/include/clang/Basic/Makefile b/include/clang/Basic/Makefile index f01ef10dbe..8bbc807a09 100644 --- a/include/clang/Basic/Makefile +++ b/include/clang/Basic/Makefile @@ -1,9 +1,11 @@ CLANG_LEVEL := ../../.. -BUILT_SOURCES = DiagnosticAnalysisKinds.inc DiagnosticASTKinds.inc \ +BUILT_SOURCES = \ + DiagnosticAnalysisKinds.inc DiagnosticASTKinds.inc \ DiagnosticCommonKinds.inc DiagnosticDriverKinds.inc \ DiagnosticFrontendKinds.inc DiagnosticLexKinds.inc \ DiagnosticParseKinds.inc DiagnosticSemaKinds.inc \ - DiagnosticGroups.inc AttrList.inc arm_neon.inc + DiagnosticGroups.inc AttrList.inc arm_neon.inc \ + Version.inc TABLEGEN_INC_FILES_COMMON = 1 @@ -11,6 +13,17 @@ include $(CLANG_LEVEL)/Makefile INPUT_TDS = $(wildcard $(PROJ_SRC_DIR)/Diagnostic*.td) +CLANG_VERSION := $(shell cat $(PROJ_SRC_DIR)/../../../VER) +CLANG_VERSION_COMPONENTS := $(subst ., ,$(CLANG_VERSION)) +CLANG_VERSION_MAJOR := $(word 1,$(CLANG_VERSION_COMPONENTS)) +CLANG_VERSION_MINOR := $(word 2,$(CLANG_VERSION_COMPONENTS)) +CLANG_VERSION_PATCHLEVEL := $(word 3,$(CLANG_VERSION_COMPONENTS)) +ifeq ($(CLANG_VERSION_PATCHLEVEL),) +CLANG_HAS_VERSION_PATCHLEVEL := 0 +else +CLANG_HAS_VERSION_PATCHLEVEL := 1 +endif + $(ObjDir)/Diagnostic%Kinds.inc.tmp : Diagnostic.td Diagnostic%Kinds.td $(TBLGEN) $(ObjDir)/.dir $(Echo) "Building Clang $(patsubst Diagnostic%Kinds.inc.tmp,%,$(@F)) diagnostic tables with tblgen" $(Verb) $(TableGen) -gen-clang-diags-defs -clang-component=$(patsubst Diagnostic%Kinds.inc.tmp,%,$(@F)) -o $(call SYSPATH, $@) $< @@ -27,3 +40,12 @@ $(ObjDir)/AttrList.inc.tmp : Attr.td $(TBLGEN) $(ObjDir)/.dir $(ObjDir)/arm_neon.inc.tmp : arm_neon.td $(TBLGEN) $(ObjDir)/.dir $(Echo) "Building Clang arm_neon.inc with tblgen" $(Verb) $(TableGen) -gen-arm-neon-sema -o $(call SYSPATH, $@) $< + +$(ObjDir)/Version.inc.tmp : Version.inc.in $(PROJ_SRC_DIR)/../../../VER $(ObjDir)/.dir + $(Echo) "Updating Clang version info." + $(Verb)sed -e "s#@CLANG_VERSION@#$(CLANG_VERSION)#g" \ + -e "s#@CLANG_VERSION_MAJOR@#$(CLANG_VERSION_MAJOR)#g" \ + -e "s#@CLANG_VERSION_MINOR@#$(CLANG_VERSION_MINOR)#g" \ + -e "s#@CLANG_VERSION_PATCHLEVEL@#$(CLANG_VERSION_PATCHLEVEL)#g" \ + -e "s#@CLANG_HAS_VERSION_PATCHLEVEL@#$(CLANG_HAS_VERSION_PATCHLEVEL)#g" \ + $< > $@ diff --git a/include/clang/Basic/Version.h b/include/clang/Basic/Version.h index b3b61841a8..9948677662 100644 --- a/include/clang/Basic/Version.h +++ b/include/clang/Basic/Version.h @@ -17,15 +17,7 @@ #include "llvm/ADT/StringRef.h" -/// \brief Clang major version -#define CLANG_VERSION_MAJOR 2 - -// FIXME: Updates to this file must also update CMakeLists.txt and VER. -/// \brief Clang minor version -#define CLANG_VERSION_MINOR 0 - -/// \brief Clang patchlevel version -// #define CLANG_VERSION_PATCHLEVEL 1 +#include "clang/Basic/Version.inc" /// \brief Helper macro for CLANG_VERSION_STRING. #define CLANG_MAKE_VERSION_STRING2(X) #X diff --git a/include/clang/Basic/Version.inc.in b/include/clang/Basic/Version.inc.in new file mode 100644 index 0000000000..ccf8430c8b --- /dev/null +++ b/include/clang/Basic/Version.inc.in @@ -0,0 +1,6 @@ +#define CLANG_VERSION @CLANG_VERSION@ +#define CLANG_VERSION_MAJOR @CLANG_VERSION_MAJOR@ +#define CLANG_VERSION_MINOR @CLANG_VERSION_MINOR@ +#if @CLANG_HAS_VERSION_PATCHLEVEL@ +#define CLANG_VERSION_PATCHLEVEL @CLANG_VERSION_PATCHLEVEL@ +#endif |