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 <[email protected]> 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:[email protected]] > Sent: Wednesday, October 22, 2014 2:44 PM > To: Meng, Mengmeng > Cc: [email protected] > 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 <[email protected]> > > > > --- > > 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 > > [email protected] > > http://lists.freedesktop.org/mailman/listinfo/beignet _______________________________________________ Beignet mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/beignet
