From 6e1279f92027af2de5deec2462ee5a32cd2587e0 Mon Sep 17 00:00:00 2001 From: dgelessus <dgelessus@users.noreply.github.com> Date: Mon, 16 Jan 2023 16:42:37 +0100 Subject: [PATCH] Refactor Makefile for maintainability and parallel make --- Makefile | 138 ++++++++++++++++++------------------------------------- 1 file changed, 44 insertions(+), 94 deletions(-) diff --git a/Makefile b/Makefile index d5d87c4..64b0b70 100644 --- a/Makefile +++ b/Makefile @@ -1,99 +1,49 @@ SPLFR_PATH=/usr/local/sicstus4.7.1/bin/splfr +methods := \ + adaboost \ + approx_kfn \ + bayesian_linear_regression \ + dbscan \ + decision_tree \ + emst \ + fastmks \ + hoeffding_tree \ + kde \ + kernel_pca \ + kfn \ + kmeans \ + knn \ + lars \ + linear_regression \ + linear_SVM \ + lmnn \ + local_coordinate_coding \ + logistic_regression \ + lsh \ + mean_shift \ + naive_bayes_classifier \ + nca \ + nmf \ + pca \ + perceptron \ + radical \ + random_forest \ + softmax_regression \ + sparse_coding +clean_methods := $(methods:%=clean-%) -all: - @echo "Start compiling!" - @echo "AdaBoost!..." - $(MAKE) -C src/methods/adaboost splfr=$(SPLFR_PATH) - @echo "ApproxKFN!..." - $(MAKE) -C src/methods/approx_kfn splfr=$(SPLFR_PATH) - @echo "BayesianLinearRegression!..." - $(MAKE) -C src/methods/bayesian_linear_regression splfr=$(SPLFR_PATH) - @echo "DBScan!..." - $(MAKE) -C src/methods/dbscan splfr=$(SPLFR_PATH) - @echo "DecisionTree!..." - $(MAKE) -C src/methods/decision_tree splfr=$(SPLFR_PATH) - @echo "EMST!..." - $(MAKE) -C src/methods/emst splfr=$(SPLFR_PATH) - @echo "FastMKS!..." - $(MAKE) -C src/methods/fastmks splfr=$(SPLFR_PATH) - @echo "HoeffdingTree!..." - $(MAKE) -C src/methods/hoeffding_tree splfr=$(SPLFR_PATH) - @echo "KDE!..." - $(MAKE) -C src/methods/kde splfr=$(SPLFR_PATH) - @echo "KernelPCA!..." - $(MAKE) -C src/methods/kernel_pca splfr=$(SPLFR_PATH) - @echo "KFN!..." - $(MAKE) -C src/methods/kfn splfr=$(SPLFR_PATH) - @echo "KMeans!..." - $(MAKE) -C src/methods/kmeans splfr=$(SPLFR_PATH) - @echo "KNN!..." - $(MAKE) -C src/methods/knn splfr=$(SPLFR_PATH) - @echo "LARS!..." - $(MAKE) -C src/methods/lars splfr=$(SPLFR_PATH) - @echo "LinearRegression!..." - $(MAKE) -C src/methods/linear_regression splfr=$(SPLFR_PATH) - @echo "LinearSVM!..." - $(MAKE) -C src/methods/linear_SVM splfr=$(SPLFR_PATH) - @echo "LMNN!..." - $(MAKE) -C src/methods/lmnn splfr=$(SPLFR_PATH) - @echo "LocalCoordinateCoding!..." - $(MAKE) -C src/methods/local_coordinate_coding splfr=$(SPLFR_PATH) - @echo "LogisticRegression!..." - $(MAKE) -C src/methods/logistic_regression splfr=$(SPLFR_PATH) - @echo "LSH!..." - $(MAKE) -C src/methods/lsh splfr=$(SPLFR_PATH) - @echo "MeanShift!..." - $(MAKE) -C src/methods/mean_shift splfr=$(SPLFR_PATH) - @echo "NaiveBayesClassifier!..." - $(MAKE) -C src/methods/naive_bayes_classifier splfr=$(SPLFR_PATH) - @echo "NCA!..." - $(MAKE) -C src/methods/nca splfr=$(SPLFR_PATH) - @echo "NMF!..." - $(MAKE) -C src/methods/nmf splfr=$(SPLFR_PATH) - @echo "PCA!..." - $(MAKE) -C src/methods/pca splfr=$(SPLFR_PATH) - @echo "Perceptron!..." - $(MAKE) -C src/methods/perceptron splfr=$(SPLFR_PATH) - @echo "Radical!..." - $(MAKE) -C src/methods/radical splfr=$(SPLFR_PATH) - @echo "RandomForest!..." - $(MAKE) -C src/methods/random_forest splfr=$(SPLFR_PATH) - @echo "SoftmaxRegression!..." - $(MAKE) -C src/methods/softmax_regression splfr=$(SPLFR_PATH) - @echo "SparseCoding!..." - $(MAKE) -C src/methods/sparse_coding splfr=$(SPLFR_PATH) +# Must come first so that it's the default target +.PHONY: all +all: $(methods) -clean: - $(MAKE) -C src/methods/adaboost clean - $(MAKE) -C src/methods/approx_kfn clean - $(MAKE) -C src/methods/bayesian_linear_regression clean - $(MAKE) -C src/methods/dbscan clean - $(MAKE) -C src/methods/decision_tree clean - $(MAKE) -C src/methods/emst clean - $(MAKE) -C src/methods/fastmks clean - $(MAKE) -C src/methods/hoeffding_tree clean - $(MAKE) -C src/methods/kde clean - $(MAKE) -C src/methods/kernel_pca clean - $(MAKE) -C src/methods/kfn clean - $(MAKE) -C src/methods/kmeans clean - $(MAKE) -C src/methods/knn clean - $(MAKE) -C src/methods/lars clean - $(MAKE) -C src/methods/linear_regression clean - $(MAKE) -C src/methods/linear_SVM clean - $(MAKE) -C src/methods/lmnn clean - $(MAKE) -C src/methods/local_coordinate_coding clean - $(MAKE) -C src/methods/logistic_regression clean - $(MAKE) -C src/methods/lsh clean - $(MAKE) -C src/methods/mean_shift clean - $(MAKE) -C src/methods/naive_bayes_classifier clean - $(MAKE) -C src/methods/nca clean - $(MAKE) -C src/methods/nmf clean - $(MAKE) -C src/methods/pca clean - $(MAKE) -C src/methods/perceptron clean - $(MAKE) -C src/methods/radical clean - $(MAKE) -C src/methods/random_forest clean - $(MAKE) -C src/methods/softmax_regression clean - $(MAKE) -C src/methods/sparse_coding clean +.PHONY: methods +$(methods): + $(MAKE) -C src/methods/$@ splfr=$(SPLFR_PATH) - +.PHONY: $(clean_methods) +$(clean_methods): + $(MAKE) -C src/methods/$(@:clean-%=%) clean + +.PHONY: clean +clean: $(clean_methods) -- GitLab