when compiling LAMMPS in a git checkout, embed and print git branch and revision info into the executable
This commit is contained in:
@ -11,6 +11,8 @@ get_filename_component(LAMMPS_LIB_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../lib
|
|||||||
get_filename_component(LAMMPS_LIB_BINARY_DIR ${CMAKE_BINARY_DIR}/lib ABSOLUTE)
|
get_filename_component(LAMMPS_LIB_BINARY_DIR ${CMAKE_BINARY_DIR}/lib ABSOLUTE)
|
||||||
get_filename_component(LAMMPS_DOC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../doc ABSOLUTE)
|
get_filename_component(LAMMPS_DOC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../doc ABSOLUTE)
|
||||||
|
|
||||||
|
find_package(Git)
|
||||||
|
|
||||||
# by default, install into $HOME/.local (not /usr/local), so that no root access (and sudo!!) is needed
|
# by default, install into $HOME/.local (not /usr/local), so that no root access (and sudo!!) is needed
|
||||||
if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
|
if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
|
||||||
set(CMAKE_INSTALL_PREFIX "$ENV{HOME}/.local" CACHE PATH "default install path" FORCE )
|
set(CMAKE_INSTALL_PREFIX "$ENV{HOME}/.local" CACHE PATH "default install path" FORCE )
|
||||||
@ -85,7 +87,7 @@ string(TOUPPER "${CMAKE_BUILD_TYPE}" BTYPE)
|
|||||||
# this is fast, so check for it all the time
|
# this is fast, so check for it all the time
|
||||||
message(STATUS "Running check for auto-generated files from make-based build system")
|
message(STATUS "Running check for auto-generated files from make-based build system")
|
||||||
file(GLOB SRC_AUTOGEN_FILES ${LAMMPS_SOURCE_DIR}/style_*.h)
|
file(GLOB SRC_AUTOGEN_FILES ${LAMMPS_SOURCE_DIR}/style_*.h)
|
||||||
list(APPEND SRC_AUTOGEN_FILES ${LAMMPS_SOURCE_DIR}/lmpinstalledpkgs.h)
|
list(APPEND SRC_AUTOGEN_FILES ${LAMMPS_SOURCE_DIR}/lmpinstalledpkgs.h ${LAMMPS_SOURCE_DIR}/lmpgitversion.h)
|
||||||
foreach(_SRC ${SRC_AUTOGEN_FILES})
|
foreach(_SRC ${SRC_AUTOGEN_FILES})
|
||||||
get_filename_component(FILENAME "${_SRC}" NAME)
|
get_filename_component(FILENAME "${_SRC}" NAME)
|
||||||
if(EXISTS ${LAMMPS_SOURCE_DIR}/${FILENAME})
|
if(EXISTS ${LAMMPS_SOURCE_DIR}/${FILENAME})
|
||||||
@ -1326,6 +1328,30 @@ message(STATUS "Generating lmpinstalledpkgs.h...")
|
|||||||
file(WRITE "${LAMMPS_STYLE_HEADERS_DIR}/lmpinstalledpkgs.h.tmp" "${temp}" )
|
file(WRITE "${LAMMPS_STYLE_HEADERS_DIR}/lmpinstalledpkgs.h.tmp" "${temp}" )
|
||||||
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${LAMMPS_STYLE_HEADERS_DIR}/lmpinstalledpkgs.h.tmp" "${LAMMPS_STYLE_HEADERS_DIR}/lmpinstalledpkgs.h")
|
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${LAMMPS_STYLE_HEADERS_DIR}/lmpinstalledpkgs.h.tmp" "${LAMMPS_STYLE_HEADERS_DIR}/lmpinstalledpkgs.h")
|
||||||
|
|
||||||
|
######################################
|
||||||
|
# Generate lmpgitversion.h
|
||||||
|
######################################
|
||||||
|
set(temp "#ifndef LMP_GIT_VERSION_H\n#define LMP_GIT_VERSION_H\n")
|
||||||
|
set(temp "${temp}const char LAMMPS_NS::LAMMPS::git_version[] =")
|
||||||
|
if(GIT_FOUND)
|
||||||
|
execute_process(COMMAND ${GIT_EXECUTABLE} describe HEAD
|
||||||
|
OUTPUT_VARIABLE temp_git_version
|
||||||
|
ERROR_QUIET
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD
|
||||||
|
OUTPUT_VARIABLE temp_git_branch
|
||||||
|
ERROR_QUIET
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
set(temp_git "${temp_git_branch} / ${temp_git_version}")
|
||||||
|
else()
|
||||||
|
set(temp_git "")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(temp "${temp} \"${temp_git}\";\n#endif\n\n")
|
||||||
|
message(STATUS "Generating lmpgitversion.h...")
|
||||||
|
file(WRITE "${LAMMPS_STYLE_HEADERS_DIR}/lmpgitversion.h.tmp" "${temp}" )
|
||||||
|
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${LAMMPS_STYLE_HEADERS_DIR}/lmpgitversion.h.tmp" "${LAMMPS_STYLE_HEADERS_DIR}/lmpgitversion.h")
|
||||||
|
|
||||||
###########################################
|
###########################################
|
||||||
# Actually add executable and lib to build
|
# Actually add executable and lib to build
|
||||||
############################################
|
############################################
|
||||||
|
|||||||
21
src/Makefile
21
src/Makefile
@ -19,7 +19,7 @@ OBJDIR = Obj_$@
|
|||||||
OBJSHDIR = Obj_shared_$@
|
OBJSHDIR = Obj_shared_$@
|
||||||
|
|
||||||
SRC = $(wildcard *.cpp)
|
SRC = $(wildcard *.cpp)
|
||||||
INC = $(filter-out lmpinstalledpkgs.h,$(wildcard *.h))
|
INC = $(filter-out lmpinstalledpkgs.h lmpgitversion.h,$(wildcard *.h))
|
||||||
OBJ = $(SRC:.cpp=.o)
|
OBJ = $(SRC:.cpp=.o)
|
||||||
|
|
||||||
SRCLIB = $(filter-out main.cpp,$(SRC))
|
SRCLIB = $(filter-out main.cpp,$(SRC))
|
||||||
@ -167,6 +167,23 @@ lmpinstalledpkgs.h: $(SRC) $(INC)
|
|||||||
mv ${TMPNAME}.lmpinstalled lmpinstalledpkgs.h || rm ${TMPNAME}.lmpinstalled ; \
|
mv ${TMPNAME}.lmpinstalled lmpinstalledpkgs.h || rm ${TMPNAME}.lmpinstalled ; \
|
||||||
else mv ${TMPNAME}.lmpinstalled lmpinstalledpkgs.h ; fi
|
else mv ${TMPNAME}.lmpinstalled lmpinstalledpkgs.h ; fi
|
||||||
|
|
||||||
|
gitversion:
|
||||||
|
@echo 'Gathering git version information'
|
||||||
|
@echo '#ifndef LMP_GIT_VERSION_H' > ${TMPNAME}.lmpgitversion
|
||||||
|
@echo '#define LMP_GIT_VERSION_H' >> ${TMPNAME}.lmpgitversion
|
||||||
|
@echo 'const char LAMMPS_NS::LAMMPS::git_version[] = ' >> ${TMPNAME}.lmpgitversion
|
||||||
|
@if (type git && git describe HEAD ) >> /dev/null 2>> /dev/null ; then \
|
||||||
|
export v1=$$(git rev-parse --abbrev-ref HEAD); export v2=$$(git describe HEAD); \
|
||||||
|
echo "\"$${v1} / $${v2}\";" >> ${TMPNAME}.lmpgitversion ; \
|
||||||
|
else \
|
||||||
|
echo '"";' >> ${TMPNAME}.lmpgitversion ; \
|
||||||
|
fi
|
||||||
|
@echo '#endif' >> ${TMPNAME}.lmpgitversion
|
||||||
|
@if [ -f lmpgitversion.h ]; \
|
||||||
|
then test "`diff --brief ${TMPNAME}.lmpgitversion lmpgitversion.h`" != "" && \
|
||||||
|
mv ${TMPNAME}.lmpgitversion lmpgitversion.h || rm ${TMPNAME}.lmpgitversion ; \
|
||||||
|
else mv ${TMPNAME}.lmpgitversion lmpgitversion.h ; fi
|
||||||
|
|
||||||
# Build LAMMPS in one of 4 modes
|
# Build LAMMPS in one of 4 modes
|
||||||
# exe = exe with static compile in Obj_machine (default)
|
# exe = exe with static compile in Obj_machine (default)
|
||||||
# shexe = exe with shared compile in Obj_shared_machine
|
# shexe = exe with shared compile in Obj_shared_machine
|
||||||
@ -180,7 +197,7 @@ lmpinstalledpkgs.h: $(SRC) $(INC)
|
|||||||
-f MAKE/MACHINES/Makefile.$@ -o -f MAKE/MINE/Makefile.$@
|
-f MAKE/MACHINES/Makefile.$@ -o -f MAKE/MINE/Makefile.$@
|
||||||
@if [ ! -d $(objdir) ]; then mkdir $(objdir); fi
|
@if [ ! -d $(objdir) ]; then mkdir $(objdir); fi
|
||||||
@$(SHELL) Make.sh style
|
@$(SHELL) Make.sh style
|
||||||
@$(MAKE) $(MFLAGS) lmpinstalledpkgs.h
|
@$(MAKE) $(MFLAGS) lmpinstalledpkgs.h gitversion
|
||||||
@echo 'Compiling LAMMPS for machine $@'
|
@echo 'Compiling LAMMPS for machine $@'
|
||||||
@if [ -f MAKE/MACHINES/Makefile.$@ ]; \
|
@if [ -f MAKE/MACHINES/Makefile.$@ ]; \
|
||||||
then cp MAKE/MACHINES/Makefile.$@ $(objdir)/Makefile; fi
|
then cp MAKE/MACHINES/Makefile.$@ $(objdir)/Makefile; fi
|
||||||
|
|||||||
@ -24,6 +24,7 @@ style_nstencil.h
|
|||||||
style_ntopo.h
|
style_ntopo.h
|
||||||
# other auto-generated files
|
# other auto-generated files
|
||||||
lmpinstalledpkgs.h
|
lmpinstalledpkgs.h
|
||||||
|
lmpgitversion.h
|
||||||
# renamed on 7 January 2019
|
# renamed on 7 January 2019
|
||||||
pair_lebedeva.cpp
|
pair_lebedeva.cpp
|
||||||
pair_lebedeva.h
|
pair_lebedeva.h
|
||||||
|
|||||||
@ -260,9 +260,13 @@ void Info::command(int narg, char **arg)
|
|||||||
fprintf(out,"Printed on %s\n",ctime(&now));
|
fprintf(out,"Printed on %s\n",ctime(&now));
|
||||||
|
|
||||||
if (flags & CONFIG) {
|
if (flags & CONFIG) {
|
||||||
|
if (strlen(lmp->git_version) > 0) {
|
||||||
|
fprintf(out,"\nLAMMPS version: %s / %s\nGit revision: %s\n\n",
|
||||||
|
universe->version, universe->num_ver,lmp->git_version);
|
||||||
|
} else {
|
||||||
fprintf(out,"\nLAMMPS version: %s / %s\n\n",
|
fprintf(out,"\nLAMMPS version: %s / %s\n\n",
|
||||||
universe->version, universe->num_ver);
|
universe->version, universe->num_ver);
|
||||||
|
}
|
||||||
const char *infobuf = get_os_info();
|
const char *infobuf = get_os_info();
|
||||||
fprintf(out,"OS information: %s\n\n",infobuf);
|
fprintf(out,"OS information: %s\n\n",infobuf);
|
||||||
delete[] infobuf;
|
delete[] infobuf;
|
||||||
|
|||||||
@ -52,6 +52,7 @@
|
|||||||
#include "error.h"
|
#include "error.h"
|
||||||
|
|
||||||
#include "lmpinstalledpkgs.h"
|
#include "lmpinstalledpkgs.h"
|
||||||
|
#include "lmpgitversion.h"
|
||||||
|
|
||||||
using namespace LAMMPS_NS;
|
using namespace LAMMPS_NS;
|
||||||
|
|
||||||
@ -418,6 +419,10 @@ LAMMPS::LAMMPS(int narg, char **arg, MPI_Comm communicator) :
|
|||||||
if ((universe->me == 0) && !helpflag) {
|
if ((universe->me == 0) && !helpflag) {
|
||||||
if (screen) fprintf(screen,"LAMMPS (%s)\n",universe->version);
|
if (screen) fprintf(screen,"LAMMPS (%s)\n",universe->version);
|
||||||
if (logfile) fprintf(logfile,"LAMMPS (%s)\n",universe->version);
|
if (logfile) fprintf(logfile,"LAMMPS (%s)\n",universe->version);
|
||||||
|
if (strlen(git_version) > 0) {
|
||||||
|
if (screen) fprintf(screen,"Git revision (%s)\n",git_version);
|
||||||
|
if (logfile) fprintf(logfile,"Git revision (%s)\n",git_version);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// universe is one or more worlds, as setup by partition switch
|
// universe is one or more worlds, as setup by partition switch
|
||||||
|
|||||||
@ -64,6 +64,7 @@ class LAMMPS {
|
|||||||
class CiteMe *citeme; // citation info
|
class CiteMe *citeme; // citation info
|
||||||
|
|
||||||
static const char * installed_packages[];
|
static const char * installed_packages[];
|
||||||
|
static const char git_version[];
|
||||||
|
|
||||||
LAMMPS(int, char **, MPI_Comm);
|
LAMMPS(int, char **, MPI_Comm);
|
||||||
~LAMMPS();
|
~LAMMPS();
|
||||||
|
|||||||
Reference in New Issue
Block a user