
rounds := $(shell ls -d ../2*-*)

source = $(shell find $(rounds) -name \*.py)
parquet := $(source:.py=.parquet)

COUNTRY := $(shell basename "$$(cd .. && pwd)")
LSMS_DATA_ROOT ?= $(if $(LSMS_DATA_DIR),$(LSMS_DATA_DIR),$(if $(XDG_DATA_HOME),$(XDG_DATA_HOME),$(HOME)/.local/share)/lsms_library)
VAR_DIR ?= $(LSMS_DATA_ROOT)/$(COUNTRY)/var

# NOT materialized as country-level parquets (would re-introduce the
# obsolete-rule failures that broke master CI on 2026-05-09):
#   - household_characteristics, food_expenditures, food_prices,
#     food_quantities -- auto-derived at runtime via _ROSTER_DERIVED /
#     _FOOD_DERIVED in lsms_library/country.py.  See CLAUDE.md
#     "Derived Tables".  food_*.py legacy script was dropped in
#     PR #248/#249 (post-#245).  household_characteristics has no
#     Python source anywhere -- it has always been auto-derived.
#   - housing -- extracted at API time from each wave's data_info.yml
#     (per CLAUDE.md "Housing schema is categorical, not binary"; no
#     housing.py source exists in any Uganda wave).
var = $(VAR_DIR)/shocks.parquet $(VAR_DIR)/nonfood_expenditures.parquet $(VAR_DIR)/enterprise_income.parquet \
	  $(VAR_DIR)/assets.parquet $(VAR_DIR)/earnings.parquet $(VAR_DIR)/income.parquet \
	  $(VAR_DIR)/fct.parquet $(VAR_DIR)/nutrition.parquet \
	  $(VAR_DIR)/plot_features.parquet \
	  $(VAR_DIR)/crop_production.parquet \
	  $(VAR_DIR)/plot_inputs.parquet \
	  $(VAR_DIR)/plot_labor.parquet \
	  $(VAR_DIR)/livestock.parquet \
	  $(VAR_DIR)/anthropometry.parquet \
	  $(VAR_DIR)/months_food_inadequate.parquet

all: $(parquet) $(var)

panel_ids.json updated_ids.json: panel_ids.py
	python panel_ids.py

$(parquet) $(var): panel_ids.json updated_ids.json

interview_date = $(shell find $(rounds) -name interview_date.py)
interview_date_parquet := $(interview_date:.py=.parquet)

$(VAR_DIR)/interview_date.parquet: interview_date.py $(interview_date_parquet)
	python interview_date.py

enterprise_income = $(shell find $(rounds) -name enterprise_income.py)
enterprise_income_parquet := $(enterprise_income:.py=.parquet)

$(VAR_DIR)/enterprise_income.parquet: enterprise_income.py $(enterprise_income_parquet)
	python enterprise_income.py

assets = $(shell find $(rounds) -name assets.py)
assets_parquet := $(assets:.py=.parquet)

$(VAR_DIR)/assets.parquet: assets.py $(assets_parquet)
	python assets.py

earnings = $(shell find $(rounds) -name earnings.py)
earnings_parquet := $(earnings:.py=.parquet)

$(VAR_DIR)/earnings.parquet: earnings.py $(earnings_parquet)
	python earnings.py

shocks = $(shell find $(rounds) -name shocks.py)
shocks_parquet := $(shocks:.py=.parquet)

$(VAR_DIR)/shocks.parquet: shocks.py $(shocks_parquet)
	python shocks.py


nonfood_expenditures = $(shell find $(rounds) -name nonfood_expenditures.py)
nonfood_expenditures_parquet := $(nonfood_expenditures:.py=.parquet)

$(VAR_DIR)/nonfood_expenditures.parquet: nonfood_expenditures.py $(nonfood_expenditures_parquet)
	python nonfood_expenditures.py

food_acquired = $(shell find $(rounds) -name food_acquired.py)
food_acquired_parquet := $(food_acquired:.py=.parquet)

$(VAR_DIR)/food_acquired.parquet: food_acquired.py $(food_acquired_parquet)
	python food_acquired.py

plot_features = $(shell find $(rounds) -name plot_features.py)
plot_features_parquet := $(plot_features:.py=.parquet)

$(VAR_DIR)/plot_features.parquet: plot_features.py $(plot_features_parquet)
	python plot_features.py

crop_production = $(shell find $(rounds) -name crop_production.py)
crop_production_parquet := $(crop_production:.py=.parquet)

$(VAR_DIR)/crop_production.parquet: crop_production.py $(crop_production_parquet)
	python crop_production.py

plot_inputs = $(shell find $(rounds) -name plot_inputs.py)
plot_inputs_parquet := $(plot_inputs:.py=.parquet)

$(VAR_DIR)/plot_inputs.parquet: plot_inputs.py $(plot_inputs_parquet)
	python plot_inputs.py

plot_labor = $(shell find $(rounds) -name plot_labor.py)
plot_labor_parquet := $(plot_labor:.py=.parquet)

$(VAR_DIR)/plot_labor.parquet: plot_labor.py $(plot_labor_parquet)
	python plot_labor.py

livestock = $(shell find $(rounds) -name livestock.py)
livestock_parquet := $(livestock:.py=.parquet)

$(VAR_DIR)/livestock.parquet: livestock.py $(livestock_parquet)
	python livestock.py

anthropometry = $(shell find $(rounds) -name anthropometry.py)
anthropometry_parquet := $(anthropometry:.py=.parquet)

$(VAR_DIR)/anthropometry.parquet: anthropometry.py $(anthropometry_parquet)
	python anthropometry.py

months_food_inadequate = $(shell find $(rounds) -name months_food_inadequate.py)
months_food_inadequate_parquet := $(months_food_inadequate:.py=.parquet)

$(VAR_DIR)/months_food_inadequate.parquet: months_food_inadequate.py $(months_food_inadequate_parquet)
	python months_food_inadequate.py

$(VAR_DIR)/income.parquet: income.py $(VAR_DIR)/enterprise_income.parquet $(VAR_DIR)/earnings.parquet
	python income.py

$(VAR_DIR)/nutrition.parquet $(VAR_DIR)/fct.parquet: nutrition.py $(VAR_DIR)/food_acquired.parquet nutrition.org
	python nutrition.py

%.parquet: %.py categorical_mapping.org uganda.py
	(cd $(@D) && python ./$(<F))

clean:
	-rm $(parquet)
	-rm $(VAR_DIR)/*.parquet
