@@ -6,6 +6,10 @@ OBJ_DIR = $(BUILD_DIR)/obj
66BIN_DIR = $(BUILD_DIR ) /bin
77BUILD_INFO_DIR = $(BUILD_DIR ) /source_io
88
9+ # The first rule in this file only generates build_info.h, so make would
10+ # stop after generating that header unless the default goal is set here.
11+ .DEFAULT_GOAL := abacus
12+
913include $(ABACUS_ROOT ) Makefile.vars
1014
1115# ==========================
@@ -252,18 +256,25 @@ ${OBJ_DIR}/parse_args.o: $(ABACUS_ROOT)source_io/parse_args.cpp $(BUILD_INFO_DIR
252256 @mkdir -p $(dir $@ )
253257 ${CXX} ${OPTS} ${OPTS_MPI} -c ${HONG} $< -o $@
254258
259+ # Explicit rule: source_cell/module_symmetry and source_estate/module_charge
260+ # both contain a symm_rho.cpp. VPATH resolves symm_rho.o to the source_cell
261+ # one (listed first), so the Symmetry_rho implementation needs an explicit
262+ # object name to be compiled from the correct source.
263+ ${OBJ_DIR}/symm_rho_charge.o : $(ABACUS_ROOT ) source_estate/module_charge/symm_rho.cpp
264+ @mkdir -p $(dir $@ )
265+ ${CXX} ${OPTS} ${OPTS_MPI} -c ${HONG} $< -o $@
266+
255267# ##### END of ABACUS INFO PART ######
256268
257269# ==========================
258270# MAKING OPTIONS
259271# ==========================
260272abacus :
261- @ if [ ! -d $( OBJ_DIR) ]; then mkdir $( OBJ_DIR) ; fi
262- @ if [ ! -d $( BIN_DIR) ]; then mkdir $( BIN_DIR) ; fi
263- @ $(MAKE ) $(BIN_DIR ) /${VERSION} .$(suffix )
273+ @ mkdir -p $(OBJ_DIR ) $(BIN_DIR )
274+ @ $(MAKE ) -f $(firstword $(MAKEFILE_LIST ) ) $(BIN_DIR ) /${VERSION} .$(suffix )
264275
265276test :
266- @ $(MAKE ) abacus
277+ @ $(MAKE ) -f $( firstword $( MAKEFILE_LIST ) ) abacus
267278 @ cd $(ABACUS_ROOT ) ../tests/integrate/; sh Autotest.sh -a $(realpath $(BIN_DIR ) ) /ABACUS.mpi -n $(TESTNP )
268279
269280pw $(BIN_DIR ) /${VERSION}-PW.x :
@@ -280,7 +291,8 @@ $(BIN_DIR)/${VERSION}.$(suffix) : ${FP_OBJS} ${PDIAG_OBJS} ${HEADERS}
280291# ==========================
281292# Note: The specific rule for parse_args.o above is more precise.
282293# This generic rule will apply to all other .cpp files.
283- ${OBJ_DIR}/% .o :$(realpath $(BIN_DIR ) ) % .cpp
294+ ${OBJ_DIR}/% .o :% .cpp
295+ @ mkdir -p $(dir $@ )
284296 ${CXX} ${OPTS} ${OPTS_MPI} -c ${HONG} $< -o $@
285297
286298.PHONY :clean test
0 commit comments