Unverified Commit a1992ce0 authored by Axel Kohlmeyer's avatar Axel Kohlmeyer
Browse files

tweak linking procedure to maximize shared code and have the least issues with rpath

parent 07d31f46
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -85,18 +85,22 @@ vpath %.h ..

# Link target

$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS)
	$(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLIB) $(EXTRA_LIB) $(LIB) -o $(EXE)
	$(SIZE) $(EXE)
../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS)
	$(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@
	$(SIZE) $@

# Library targets

$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS)
	$(ARCHIVE) $(ARFLAGS) $(ARLIB) $(OBJ)
	$(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ)
	@rm -f $(ARLIB)
	@ln -s ../$(ARLIB) $(ARLIB)

$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS)
	$(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(SHLIB) \
	$(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \
		$(OBJ) $(EXTRA_LIB) $(LIB)
	@rm -f $(SHLIB)
	@ln -s ../$(SHLIB) $(SHLIB)

# Compilation rules

+9 −5
Original line number Diff line number Diff line
@@ -85,18 +85,22 @@ vpath %.h ..

# Link target

$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS)
	$(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLIB) $(EXTRA_LIB) $(LIB) -o $(EXE)
	$(SIZE) $(EXE)
../$(EXE): main.o $(LMPLIB) $(EXTRA_LINK_DEPENDS)
	$(LINK) $(LINKFLAGS) main.o $(EXTRA_PATH) $(LMPLINK) $(EXTRA_LIB) $(LIB) -o $@
	$(SIZE) $@

# Library targets

$(ARLIB): $(OBJ) $(EXTRA_LINK_DEPENDS)
	$(ARCHIVE) $(ARFLAGS) $(ARLIB) $(OBJ)
	$(ARCHIVE) $(ARFLAGS) ../$(ARLIB) $(OBJ)
	@rm -f $(ARLIB)
	@ln -s ../$(ARLIB) $(ARLIB)

$(SHLIB): $(OBJ) $(EXTRA_LINK_DEPENDS)
	$(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(SHLIB) \
	$(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o ../$(SHLIB) \
		$(OBJ) $(EXTRA_LIB) $(LIB)
	@rm -f $(SHLIB)
	@ln -s ../$(SHLIB) $(SHLIB)

# Compilation rules

+14 −15
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@ SHLIB = liblammps_$@.so
ARLINK = liblammps.a
SHLINK = liblammps.so
TMPNAME= tmp_$@_name
LMPLINK=$(shell echo $(ARLIB) | sed -e 's,lib\([+0-9a-z_-]\+\)\.a$$,-L. -l\1,')

OBJDIR =   Obj_$@
OBJSHDIR = Obj_shared_$@
@@ -181,11 +182,9 @@ gitversion:
	        mv ${TMPNAME}.lmpgitversion lmpgitversion.h || rm ${TMPNAME}.lmpgitversion ; \
        else mv ${TMPNAME}.lmpgitversion lmpgitversion.h ; fi

# Build LAMMPS in one of 4 modes
# exe =   exe with static compile in Obj_machine (default)
# shexe = exe with shared compile in Obj_shared_machine
# lib =   static lib in Obj_machine
# shlib = shared lib in Obj_shared_machine
# Build LAMMPS in one of 2 modes
# static = static compile in Obj_machine (default)
# shared = shared compile in Obj_shared_machine

.DEFAULT:
	@if [ $@ = "serial" ]; \
@@ -217,15 +216,15 @@ gitversion:
ifeq ($(mode),static)
	@cd $(objdir); \
	$(MAKE) $(MFLAGS) "OBJ = $(OBJLIB)" "INC = $(INC)" "SHFLAGS =" \
	  "LMPLIB = $(PWD)/$(ARLIB)" "ARLIB = $(PWD)/$(ARLIB)" "SHLIB = $(PWD)/$(SHLIB)" \
	  "EXE = ../$(EXE)" ../$(EXE)
	  "LMPLIB = $(ARLIB)" "ARLIB = $(ARLIB)" "SHLIB = $(SHLIB)" \
	  "LMPLINK = $(LMPLINK)" "EXE = $(EXE)" ../$(EXE)
	@ln -s $(ARLIB) $(ARLINK)
endif
ifeq ($(mode),shared)
	@cd $(objdir); \
	$(MAKE) $(MFLAGS) "OBJ = $(OBJLIB)" "INC = $(INC)" \
	  "LMPLIB = $(PWD)/$(SHLIB)" "ARLIB = $(PWD)/$(ARLIB)" "SHLIB = $(PWD)/$(SHLIB)" \
	  "EXE = ../$(EXE)" ../$(EXE)
	  "LMPLIB = $(SHLIB)" "ARLIB = $(ARLIB)" "SHLIB = $(SHLIB)" \
	  "LMPLINK = $(LMPLINK)" "EXE = $(EXE)" ../$(EXE)
	@ln -s $(SHLIB) $(SHLINK)
endif
# backward compatibility