# Makefile for CoCoALib/src/AlgebraicCore/TmpFactorDir/ directory

COCOA_ROOT=../../..
include $(COCOA_ROOT)/configuration/autoconf.mk
CWD=src/AlgebraicCore/TmpFactorDir/

DEPEND_FILE=Makefile_dependencies
SUBDIRS=linalg multivariate

SRCS=primes.c DUPFF.c FF.c FindPrimRoot.c DUPFFsqfrd.c DUPFFderiv.c \
     DUPFFmod.c DUPFFddf.c berlekamp.c DUPFFfactor.c DUPFFlist.c DUPFFprint.c \
     PPstream.c BM.c \
     DUPZcra.c WGD.c \
     DUPZ.c DUPZgcd.c DUPZlist.c DUPZ_DUPFF.c DUPZcontent.c DUPZsqfrd.c DUPZprint.c \
     DUPZformal_deriv.c DUPZevaluate.c DUPZroot_bound.c \
     DUPZfactor.c DUPZfactors.c DUPZfactor_prime.c DUPZfactor_refine_fds.c\
     DUPZfactor_info.c DUPZfactor_bound.c DUPZfactor_combine.c \
     mpz_cra_ui.c mpz_cmp_abs.c mpz_log.c logi.c \
     jalloc.c add_logs.c jaaerror.c debug_malloc.c \
     DUPZfactor_liftq.c mpz_lift_recip.c mpq_to_FFelem.c

OBJS=$(SRCS:.c=.o)

%.o: %.c
	$(COMPILE) -I. -Ilinalg -c -o $@ $<

.PHONY: default
default: $(OBJS)
	ar -rcuS $(COCOA_LIB) $(OBJS)
	#objs=`for file in $(OBJS); do echo TmpFactorDir/$file;done`; cd ..; ar -ruS $(COCOA_LIB) $$objs
	for subdir in $(SUBDIRS); \
	do \
	  echo "Compiling directory $(CWD)$$subdir/"; \
	  (cd "$$subdir"; $(MAKE) -s); \
	done


.PHONY: clean clean-local clean-subdirs
clean: clean-local clean-subdirs
	@echo "Cleaned CoCoALib/$(CWD)";

clean-local:
	@/bin/rm -f $(OBJS)  "$(DEPEND_FILE).old"  "$(DEPEND_FILE).new"  ./*~  ./.*~  ./.\#*
	@/bin/rm -rf  ./*.dSYM

clean-subdirs:
	for subdir in $(SUBDIRS); do ( cd "$$subdir"; $(MAKE) -s clean ); done

.PHONY: veryclean veryclean-subdirs
veryclean: clean-local veryclean-subdirs
	@true >| "$(DEPEND_FILE)" # Empties $(DEPEND_FILE)
	echo "Verycleaned CoCoALib/$(CWD)"

veryclean-subdirs:
	for subdir in $(SUBDIRS); do ( cd "$$subdir"; $(MAKE) -s veryclean ); done



# This target checks whether we should really build DEPEND_FILE
.PHONY: dependencies
dependencies:
	@if [ -f "$(COCOA_HDR)" -a \! "$(DEPEND_FILE)" -nt "$(COCOA_HDR)" ] ; \
	then \
	  $(MAKE) create-dependencies; \
	fi
	for subdir in $(SUBDIRS); do ( cd $$subdir; $(MAKE) -s dependencies ); done

# This is the target which really does rebuild the DEPEND_FILE
.PHONY: create-dependencies
create-dependencies:
	@/bin/rm -rf $(DEPEND_FILE).new
	@echo "Rebuilding dependencies in <CoCoALib>/$(CWD)"
	@echo "##################################################################"   >> $(DEPEND_FILE).new
	@echo "# Dependencies for directory $(CWD)"                                  >> $(DEPEND_FILE).new
	@echo "#              for CoCoALib version $(VERSION)"                       >> $(DEPEND_FILE).new
	@echo "# DO NOT EDIT: this file is automatically generated; to regenerate"   >> $(DEPEND_FILE).new
	@echo "# run \`make dependencies' in the CoCoALib root directory."           >> $(DEPEND_FILE).new
	@echo "##################################################################"   >> $(DEPEND_FILE).new
	@echo                                                                        >> $(DEPEND_FILE).new
	for srcfile in $(SRCS); \
	do \
	  objfile=`basename $$srcfile .c`.o; \
	  $(CXX) $(INCLUDE) -I. -Ilinalg -Imultivariate -MM "$$srcfile" -MQ "$$objfile" >> $(DEPEND_FILE).new; \
	  echo >> $(DEPEND_FILE).new; \
	done
	@if [ -f "$(DEPEND_FILE)" ] ; \
	then \
	  /bin/mv -f "$(DEPEND_FILE)" "$(DEPEND_FILE).old" ; \
	fi
	@/bin/mv $(DEPEND_FILE).new  $(DEPEND_FILE)


$(DEPEND_FILE):  $(COCOA_ROOT)/configuration/version
	@$(MAKE) -W "$(DEPEND_FILE)" create-dependencies  # -W avoids infinite recursion

include $(DEPEND_FILE)

$(OBJS): $(COCOA_ROOT)/configuration/autoconf.mk
