# Build all Ollie projects in sequence
#
# Usage:
#   make            # build everything
#   make core       # build only core
#   make 9p         # build only 9p
#   make httpgw     # build only httpgw
#   make all        # build everything (default)

.PHONY: all core dbus 9p acme httpgw webui data scripts contrib help

all: core dbus 9p acme httpgw webui data scripts contrib

core:
	@echo === Building ollie-core ===
	$(MAKE) -C core

dbus:
	@echo === Building ollie-dbus ===
	$(MAKE) -C dbus

9p:
	@echo === Building ollie-9p ===
	$(MAKE) -C 9p

acme:
	@echo === Building ollie-acme ===
	$(MAKE) -C acme

httpgw:
	@echo === Building ollie-httpgw ===
	$(MAKE) -C httpgw

webui:
	@echo === Building ollie-webui ===
	cd webui && npm run build

data:
	@echo === Installing data ===
	mkdir -p $(HOME)/.config/ollie/agents
	mkdir -p $(HOME)/.config/ollie/sandbox
	mkdir -p $(HOME)/.config/ollie/skills
	mkdir -p $(HOME)/.config/ollie/tools
	rm -rf $(HOME)/.config/ollie/prompts
	mkdir -p $(HOME)/.config/ollie/prompts
	cp -rf agents/* $(HOME)/.config/ollie/agents
	cp -rf prompts/* $(HOME)/.config/ollie/prompts
	cp -rf sandbox/* $(HOME)/.config/ollie/sandbox
	cp -rf skills/* $(HOME)/.config/ollie/skills
	cp -rf tools/_lib $(HOME)/.config/ollie/tools/_lib
	cp -rf tools/* $(HOME)/.config/ollie/tools
	cp -rf tools/cascade $(HOME)/.config/ollie/tools/cascade
	cp doc/help.md $(HOME)/.config/ollie/help.md

scripts:
	@echo === Installing scripts ===
	mkdir -p $(HOME)/.config/ollie/scripts/s $(HOME)/.config/ollie/scripts/u $(HOME)/.config/ollie/scripts/x
	cp -f scripts/s/sh      $(HOME)/.config/ollie/scripts/s/sh
	cp -f scripts/s/ls      $(HOME)/.config/ollie/scripts/s/ls
	cp -f scripts/s/kill    $(HOME)/.config/ollie/scripts/s/kill
	cp -f scripts/s/b       $(HOME)/.config/ollie/scripts/s/b
	cp -f scripts/s/bfg     $(HOME)/.config/ollie/scripts/s/bfg
	cp -f scripts/s/bbg     $(HOME)/.config/ollie/scripts/s/bbg
	cp -f scripts/s/cleanup $(HOME)/.config/ollie/scripts/s/cleanup
	cp -f scripts/u/optimize  $(HOME)/.config/ollie/scripts/u/optimize
	cp -f scripts/u/complete  $(HOME)/.config/ollie/scripts/u/complete
	cp -f scripts/u/cascade   $(HOME)/.config/ollie/scripts/u/cascade
	cp -f scripts/x/elevate $(HOME)/.config/ollie/scripts/x/elevate
	cp -f scripts/x/elevate-adapter-superpowerd $(HOME)/.config/ollie/scripts/x/elevate-adapter-superpowerd
	cp -f scripts/x/elevate-adapter-start $(HOME)/.config/ollie/scripts/x/elevate-adapter-start
	cp -f scripts/x/bd     $(HOME)/.config/ollie/scripts/x/bd
	cp -f scripts/x/prime  $(HOME)/.config/ollie/scripts/x/prime
	cp -f scripts/x/freeloader $(HOME)/.config/ollie/scripts/x/freeloader
	chmod 755 \
		$(HOME)/.config/ollie/scripts/s/b \
		$(HOME)/.config/ollie/scripts/s/bfg \
		$(HOME)/.config/ollie/scripts/s/bbg \
		$(HOME)/.config/ollie/scripts/s/cleanup \
		$(HOME)/.config/ollie/scripts/u/optimize \
		$(HOME)/.config/ollie/scripts/u/complete \
		$(HOME)/.config/ollie/scripts/u/cascade \
		$(HOME)/.config/ollie/scripts/x/elevate \
		$(HOME)/.config/ollie/scripts/x/elevate-adapter-superpowerd \
		$(HOME)/.config/ollie/scripts/x/elevate-adapter-start \
		$(HOME)/.config/ollie/scripts/x/bd \
		$(HOME)/.config/ollie/scripts/x/prime \
		$(HOME)/.config/ollie/scripts/x/freeloader

contrib:
	@echo === Installing contrib scripts ===
	cp -f contrib/ollie-remount $(HOME)/bin/ollie-remount
	chmod 755 $(HOME)/bin/ollie-remount

help:
	@echo 'Ollie monorepo build targets:'
	@echo '  all     - Build all projects and install data (default)'
	@echo '  core    - Build core library'
	@echo '  dbus    - Build D-Bus daemon (ollied)'
	@echo '  9p      - Build 9p filesystem server'
	@echo '  httpgw  - Build HTTP gateway'
	@echo '  webui   - Build web UI'
	@echo '  data    - Install agents, prompts, skills, and tools to ~/.config/ollie/'
	@echo '  scripts - Install shell scripts to ~/.config/ollie/scripts/'
	@echo '  contrib - Install contrib scripts to ~/bin/'
	@echo ''
	@echo 'Submodules must be initialized first:'
	@echo '  git submodule update --init --recursive'
