From 21c43f764413bf0535f5057f62f60ae6f722b4ff Mon Sep 17 00:00:00 2001 From: Giovanni Bussi <giovanni.bussi@gmail.com> Date: Wed, 21 Sep 2011 10:32:31 +0200 Subject: [PATCH] Added "plumed mklib" tool A compile_options.sh file is generated by make in the src directory and it is used to properly compile a .cpp into a .so (or .dylib on mac). Just type "plumed mklib pippo.cpp". Still it should be improved in term of linking of multiple .cpp files. --- src/.gitignore | 1 + src/Makefile | 10 +++++++++- tools/scripts/mklib.sh | 31 +++++++++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 1 deletion(-) create mode 100755 tools/scripts/mklib.sh diff --git a/src/.gitignore b/src/.gitignore index 93cfd35e3..e239f3f24 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -2,3 +2,4 @@ Plumed.inc* PlumedConfig.h *.cdep *.cppdep +/compile_options.sh diff --git a/src/Makefile b/src/Makefile index 4c2661e13..9c885e71d 100644 --- a/src/Makefile +++ b/src/Makefile @@ -27,7 +27,9 @@ ALL_SRC_DEP=$(SRC_KERNEL:.cpp=.cppdep) $(SRC_WRAPPER:.cpp=.cppdep) $(SRC_DYNAMIC .PHONY: all clean ifdef GCCDEP -all: libplumedKernel.$(SOEXT) libplumed.$(SOEXT) Plumed.o Plumed.inc Plumed.inc.runtime Plumed.inc.shared Plumed.inc.static +all: libplumedKernel.$(SOEXT) libplumed.$(SOEXT) Plumed.o \ + Plumed.inc Plumed.inc.runtime Plumed.inc.shared Plumed.inc.static \ + compile_options.sh else all: @echo No configuration available @@ -46,6 +48,11 @@ libplumedKernel.$(SOEXT): $(OBJ_KERNEL) libplumed.$(SOEXT): $(OBJ_KERNEL) $(OBJ_WRAPPER) $(LDSO) -o $@ $^ $(DYNAMIC_LIBS) +compile_options.sh: + echo "compile='"$(CXX) -c -I$(realpath $(srcdir)) $(CPPFLAGS) $(CXXFLAGS)"'" > $@ + echo "link='"$(LDSO) -o"'" >> $@ + echo "soext='"$(SOEXT)"'" >> $@ + clean: rm -f *.o rm -f *.cdep @@ -53,6 +60,7 @@ clean: rm -f PlumedConfig.h rm -f Plumed.inc* rm -f *~ + rm -f compile_options.sh ifdef SOEXT rm -f *.$(SOEXT) endif diff --git a/tools/scripts/mklib.sh b/tools/scripts/mklib.sh new file mode 100755 index 000000000..f7728b2cc --- /dev/null +++ b/tools/scripts/mklib.sh @@ -0,0 +1,31 @@ +#! /bin/bash + +source $PLUMED_ROOT/src/compile_options.sh + +if [ "$1" = --description ] ; then + echo "compile a .cpp file into a shared library" + exit 0 +fi + +if [ $# != 1 ] || [[ "$1" != *.cpp ]] ; +then + echo "ERROR" + echo "type 'plumed mklib file.cpp'" + exit 1 +fi + + +file="$1" +obj="${file%%.cpp}".o +lib="${file%%.cpp}".$soext + +if [ ! -f "$file" ] +then + echo "ERROR: I cannot find file $file" + exit 1 +fi + +$compile "$file" -o "$obj" && $link "$lib" "$obj" + + + -- GitLab