[Beignet] [PATCH] build beignet with GIT_HAL1

Meng, Mengmeng mengmeng.meng at intel.com
Wed Oct 22 02:27:09 PDT 2014


Hi,
Thanks for your suggestions. Now I add a judgment whether git repository exists or not. 


>From 48e5d974ec0bd08b4628c114ad43361fabb0f6e8 Mon Sep 17 00:00:00 2001
From: Meng Mengmeng <mengmeng.meng at intel.com>
Date: Thu, 23 Oct 2014 09:09:21 +0800
Subject: [PATCH] add beignet GIT_HAL1 if there is .git directory

---
 src/CMakeLists.txt   |  7 +++++++
 src/cl_platform_id.h | 10 ++++++++--
 src/git_sha1.sh      | 22 ++++++++++++++++++++++
 3 files changed, 37 insertions(+), 2 deletions(-)
 create mode 100755 src/git_sha1.sh

diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 218420a..0d22589 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -109,6 +109,13 @@ SET(CMAKE_CXX_FLAGS "-DHAS_OCLIcd ${CMAKE_CXX_FLAGS}")
 SET(CMAKE_C_FLAGS "-DHAS_OCLIcd ${CMAKE_C_FLAGS}")
 endif (OCLIcd_FOUND)
 
+set(GIT_SHA1 "git_sha1.h")
+add_custom_command(OUTPUT  ${GIT_SHA1}
+  COMMAND chmod +x ${CMAKE_CURRENT_SOURCE_DIR}/git_sha1.sh
+  COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/git_sha1.sh ${CMAKE_CURRENT_SOURCE_DIR} ${GIT_SHA1}
+ )
+add_custom_target(GIT_SHA1 ALL DEPENDS ${GIT_SHA1})
+
 SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-Bsymbolic,--allow-shlib-undefined")
 
 link_directories (${LLVM_LIBRARY_DIR} ${DRM_LIBDIR})
diff --git a/src/cl_platform_id.h b/src/cl_platform_id.h
index 61b8eab..a7a3e81 100644
--- a/src/cl_platform_id.h
+++ b/src/cl_platform_id.h
@@ -25,6 +25,7 @@
 #include "cl_extensions.h"
 #include "cl_khr_icd.h"
 #include "src/OCLConfig.h"
+#include "src/git_sha1.h"
 
 struct _cl_platform_id {
   DEFINE_ICD(dispatch)
@@ -62,10 +63,15 @@ extern cl_int cl_get_platform_info(cl_platform_id    platform,
 #define _JOINT(x, y) _STR(x) "." _STR(y)
 #define _JOINT3(x, y, z) _STR(x) "." _STR(y) "." _STR(z)
 
+#ifdef BEIGNET_GIT_SHA1
+       #define BEIGNET_GIT_SHA1_STRING " (" BEIGNET_GIT_SHA1 ")"
+#else
+       #define BEIGNET_GIT_SHA1_STRING
+#endif
 
 #define LIBCL_DRIVER_VERSION_STRING _JOINT(LIBCL_DRIVER_VERSION_MAJOR, LIBCL_DRIVER_VERSION_MINOR)
-#define LIBCL_VERSION_STRING "OpenCL " _JOINT(LIBCL_C_VERSION_MAJOR, LIBCL_C_VERSION_MINOR) " beignet " LIBCL_DRIVER_VERSION_STRING
-#define LIBCL_C_VERSION_STRING "OpenCL C " _JOINT(LIBCL_C_VERSION_MAJOR, LIBCL_C_VERSION_MINOR) " beignet " LIBCL_DRIVER_VERSION_STRING
+#define LIBCL_VERSION_STRING "OpenCL " _JOINT(LIBCL_C_VERSION_MAJOR, LIBCL_C_VERSION_MINOR) " beignet " LIBCL_DRIVER_VERSION_STRING BEIGNET_GIT_SHA1_STRING
+#define LIBCL_C_VERSION_STRING "OpenCL C " _JOINT(LIBCL_C_VERSION_MAJOR, LIBCL_C_VERSION_MINOR) " beignet " LIBCL_DRIVER_VERSION_STRING BEIGNET_GIT_SHA1_STRING
 
 #endif /* __CL_PLATFORM_ID_H__ */
 
diff --git a/src/git_sha1.sh b/src/git_sha1.sh
new file mode 100755
index 0000000..29cabf3
--- /dev/null
+++ b/src/git_sha1.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+SOURCE_DIR=$1
+FILE=$2
+
+touch ${SOURCE_DIR}/${FILE}_tmp
+if test -d $1/../.git; then 
+        if which git > /dev/null; then 
+            git --git-dir=$1/../.git log -n 1 --oneline | \
+                sed 's/^\([^ ]*\) .*/#define BEIGNET_GIT_SHA1 "git-\1"/' \
+                > ${SOURCE_DIR}/${FILE}_tmp 
+        fi 
+fi
+
+#updating ${SOURCE_DIR}/${FILE}
+if ! cmp -s ${SOURCE_DIR}/${FILE}_tmp ${SOURCE_DIR}/${FILE}; then 
+                mv  ${SOURCE_DIR}/${FILE}_tmp ${SOURCE_DIR}/${FILE}
+else 
+                rm  ${SOURCE_DIR}/${FILE}_tmp
+fi
+
+
-- 
1.9.3

> -----Original Message-----
> From: Zhigang Gong [mailto:zhigang.gong at linux.intel.com]
> Sent: Wednesday, October 22, 2014 2:44 PM
> To: Meng, Mengmeng
> Cc: beignet at lists.freedesktop.org
> Subject: Re: [Beignet] [PATCH] build beignet with GIT_HAL1
> 
> Thanks for the patch. One major comment is that you need to consider
> where .git does not exist. For example, build from a relased tar ball.
> 
> Then the BEIGNET_GIT_SHA1 is not defined, and please be careful don't add
> an empty "()" into the cl version string.
> 
> beignet 0.9 (git-xxx)  #  with .git directory.
> beignet 0.9            #  with out .git directory.
> beignet 0.9 ()         #  incorrect version string.
> 
> Thanks,
> Zhigang Gong.
> 
> On Thu, Oct 23, 2014 at 06:27:08AM +0800, Meng Mengmeng wrote:
> > From: Meng <mengmeng.meng at intel.com>
> >
> > ---
> >  src/CMakeLists.txt   |  8 ++++++++
> >  src/cl_platform_id.h |  5 +++--
> >  src/git_sha1.sh      | 13 +++++++++++++
> >  3 files changed, 24 insertions(+), 2 deletions(-)  create mode 100644
> > src/git_sha1.sh
> >
> > diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index
> > 218420a..0e5969b 100644
> > --- a/src/CMakeLists.txt
> > +++ b/src/CMakeLists.txt
> > @@ -109,6 +109,14 @@ SET(CMAKE_CXX_FLAGS "-DHAS_OCLIcd
> > ${CMAKE_CXX_FLAGS}")  SET(CMAKE_C_FLAGS "-DHAS_OCLIcd
> > ${CMAKE_C_FLAGS}")  endif (OCLIcd_FOUND)
> >
> > +set(GIT_SHA1 "git_sha1.h")
> > +add_custom_command(OUTPUT  ${GIT_SHA1}
> > +  COMMAND chmod +x ${CMAKE_CURRENT_SOURCE_DIR}/git_sha1.sh
> > +  COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/git_sha1.sh
> > +${CMAKE_CURRENT_SOURCE_DIR} ${GIT_SHA1}
> > + )
> > +add_custom_target(GIT_SHA1 ALL DEPENDS ${GIT_SHA1})
> > +
> > +
> >  SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}
> > -Wl,-Bsymbolic,--allow-shlib-undefined")
> >
> >  link_directories (${LLVM_LIBRARY_DIR} ${DRM_LIBDIR}) diff --git
> > a/src/cl_platform_id.h b/src/cl_platform_id.h index 61b8eab..e40d3a9
> > 100644
> > --- a/src/cl_platform_id.h
> > +++ b/src/cl_platform_id.h
> > @@ -25,6 +25,7 @@
> >  #include "cl_extensions.h"
> >  #include "cl_khr_icd.h"
> >  #include "src/OCLConfig.h"
> > +#include "src/git_sha1.h"
> >
> >  struct _cl_platform_id {
> >    DEFINE_ICD(dispatch)
> > @@ -64,8 +65,8 @@ extern cl_int cl_get_platform_info(cl_platform_id
> platform,
> >
> >
> >  #define LIBCL_DRIVER_VERSION_STRING
> > _JOINT(LIBCL_DRIVER_VERSION_MAJOR, LIBCL_DRIVER_VERSION_MINOR)
> > -#define LIBCL_VERSION_STRING "OpenCL "
> _JOINT(LIBCL_C_VERSION_MAJOR,
> > LIBCL_C_VERSION_MINOR) " beignet " LIBCL_DRIVER_VERSION_STRING
> > -#define LIBCL_C_VERSION_STRING "OpenCL C "
> > _JOINT(LIBCL_C_VERSION_MAJOR, LIBCL_C_VERSION_MINOR) " beignet "
> > LIBCL_DRIVER_VERSION_STRING
> > +#define LIBCL_VERSION_STRING "OpenCL "
> _JOINT(LIBCL_C_VERSION_MAJOR, LIBCL_C_VERSION_MINOR) " beignet "
> LIBCL_DRIVER_VERSION_STRING " (" BEIGNET_GIT_SHA1 ")"
> > +#define LIBCL_C_VERSION_STRING "OpenCL C "
> _JOINT(LIBCL_C_VERSION_MAJOR, LIBCL_C_VERSION_MINOR) " beignet "
> LIBCL_DRIVER_VERSION_STRING  " (" BEIGNET_GIT_SHA1 ")"
> >
> >  #endif /* __CL_PLATFORM_ID_H__ */
> >
> > diff --git a/src/git_sha1.sh b/src/git_sha1.sh new file mode 100644
> > index 0000000..ef6dd66
> > --- /dev/null
> > +++ b/src/git_sha1.sh
> > @@ -0,0 +1,13 @@
> > +#!/bin/bash
> > +
> > +SOURCE_DIR=$1
> > +FILE=$2
> > +touch ${SOURCE_DIR}/${FILE}
> > +if test -d $1/../.git; then \
> > +        if which git > /dev/null; then \
> > +            git --git-dir=$1/../.git log -n 1 --oneline | \
> > +                sed 's/^\([^ ]*\) .*/#define BEIGNET_GIT_SHA1
> "git-\1"/' \
> > +                > ${SOURCE_DIR}/${FILE} ; \
> > +        fi \
> > +fi
> > +
> > --
> > 1.9.3
> >
> > _______________________________________________
> > Beignet mailing list
> > Beignet at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/beignet


More information about the Beignet mailing list