PKG_CPPFLAGS = -I. -IANN -I../inst/include/dgraphs -I../inst/include \
	-DR_NO_REMAP -D_Alignof=__alignof__ -DDLL_API= \
	-DEIGEN_DONT_PARALLELIZE

PKG_LIBS = $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS)

CXX_STD = CXX17

OBJECTS = \
	RcppExports.o \
	fermat_implicit.o \
	fermat_knn.o \
	linf_simplex.o \
	quadform_geodesics_solver.o \
	quadform_geodesics_solver_rcpp.o \
	quadform_geodesics_methods.o \
	quadform_geodesics_continuous.o \
	quadform_geodesics_boundary.o \
	quadform_geodesics_reference.o \
	quadform_geodesics_mesh.o \
	quadform_geodesics_methods_rcpp.o \
	SEXP_cpp_conversion_utils.o \
	Eigen_utils.o \
	adaptive_radius_graph_ann.o \
	bidirectional_dijkstra.o \
	cpp_mstrees.o \
	dgraphs_init.o \
	geometric_edge_pruning.o \
	geodesic_iknn_graphs.o \
	geodesic_stats.o \
	geodesic_stats_r.o \
	graph_core_endpoints.o \
	graph_endpoint_geometry_rcpp.o \
	graph_endpoint_geometry_rcpp_wrappers.o \
	graph_spectrum.o \
	graph_conn_components.o \
	graph_maximal_packing.o \
	graph_maximal_packing_r.o \
	graph_utils_native.o \
	kNN.o \
	knn_search_result_native.o \
	local_geodesic_pruning.o \
	mknn_graphs.o \
	mst_completion_graphs.o \
	mst_completion_graphs_r.o \
	mstree_total_length.o \
	path_grid.o \
	progress_utils.o \
	pruning_long_edges.o \
	prune_long_edges.o \
	set_wgraph.o \
	shortest_path_utils.o \
	sknn_graphs.o \
	kernels.o \
	iknn_graphs.o \
	linf_simplex_knn.o \
	mstree.o \
	ANN/ANN.o \
	ANN/bd_fix_rad_search.o \
	ANN/bd_pr_search.o \
	ANN/bd_search.o \
	ANN/bd_tree.o \
	ANN/kd_dump.o \
	ANN/kd_fix_rad_search.o \
	ANN/kd_pr_search.o \
	ANN/kd_search.o \
	ANN/kd_split.o \
	ANN/kd_tree.o \
	ANN/kd_util.o

$(SHLIB): $(OBJECTS)

# Preserve the originating solver's per-file floating-point settings.
quadform_geodesics_solver.o: quadform_geodesics_solver.cpp quadform_geodesics_solver.h quadform_geodesics_exact.h
	$(CXX) $(ALL_CPPFLAGS) $(ALL_CXXFLAGS) -ffp-contract=off -fno-fast-math -c quadform_geodesics_solver.cpp -o quadform_geodesics_solver.o

quadform_geodesics_solver_rcpp.o: quadform_geodesics_solver_rcpp.cpp quadform_geodesics_solver.h quadform_geodesics_exact.h
	$(CXX) $(ALL_CPPFLAGS) $(ALL_CXXFLAGS) -ffp-contract=off -fno-fast-math -c quadform_geodesics_solver_rcpp.cpp -o quadform_geodesics_solver_rcpp.o

.PHONY: clean
clean:
	@$(RM) $(OBJECTS) $(SHLIB)
