BASE?=$(HOME)/src TAILWIND = $(BASE)/tailwind LCSS = $(BASE)/lightningcss NODE_ARCH != node -p "process.arch" .PHONY: all clean deps all: $(TAILWIND)/.cli-built $(TAILWIND)/node_modules: $(TAILWIND) cd $(TAILWIND) && doas corepack enable && doas corepack install --global pnpm && pnpm install --ignore-scripts $(TAILWIND): git clone https://github.com/tailwindlabs/tailwindcss.git $@ $(LCSS): git clone https://github.com/parcel-bundler/lightningcss.git $@ $(TAILWIND)/.lcss-built: $(LCSS) $(TAILWIND)/node_modules LCSS_DIR=$$(ls $(TAILWIND)/node_modules/.pnpm | grep "^lightningcss@" | head -1); \ LCSS_VER=$$(echo $$LCSS_DIR | sed 's/lightningcss@\([0-9.]*\).*/\1/'); \ LCSS_PKGS=$(TAILWIND)/node_modules/.pnpm/$$LCSS_DIR/node_modules; \ LCSS_NATIVE=$$LCSS_PKGS/lightningcss-freebsd-$(NODE_ARCH); \ git -C $(LCSS) checkout v$$LCSS_VER; \ cd $(LCSS) && cargo build --release -p lightningcss_node && \ mkdir -p $$LCSS_NATIVE && \ cp target/release/liblightningcss_node.so $$LCSS_NATIVE/lightningcss.freebsd-$(NODE_ARCH).node && \ printf '{"name":"lightningcss-freebsd-$(NODE_ARCH)","version":"%s","main":"lightningcss.freebsd-$(NODE_ARCH).node"}\n' $$LCSS_VER \ > $$LCSS_NATIVE/package.json && \ node -e "require('$$LCSS_PKGS/lightningcss')" && \ touch $@ $(TAILWIND)/.oxide-built: $(TAILWIND)/node_modules cd $(TAILWIND) && cargo build --release -p tailwind-oxide && \ cp target/release/libtailwind_oxide.so \ "$(TAILWIND)/crates/node/tailwindcss-oxide.freebsd-$(NODE_ARCH).node" && \ cd $(TAILWIND)/crates/node && pnpm run build:platform && \ touch $@ $(TAILWIND)/.parcel-built: $(TAILWIND)/node_modules for dir in $$(ls -d $(TAILWIND)/node_modules/.pnpm/@parcel+watcher@*/node_modules/@parcel/watcher); do \ WATCHER_VER=$$(node -p "require('$$dir/package.json').version"); \ WATCHER_NATIVE=$$dir/../watcher-freebsd-$(NODE_ARCH); \ rm -rf $$dir/build; \ cd $$dir && node-gyp rebuild --python=python3.13 || true; \ mkdir -p $$WATCHER_NATIVE; \ cp $$dir/build/Release/watcher.node $$WATCHER_NATIVE/; \ printf '{"name":"@parcel/watcher-freebsd-$(NODE_ARCH)","version":"%s","main":"watcher.node"}\n' $$WATCHER_VER \ > $$WATCHER_NATIVE/package.json; \ node -e "require('$$dir')" || true; \ done && touch $@ $(TAILWIND)/.pkg-fixed: $(TAILWIND) sed -i.bak 's|"import": "./src/index.ts"|"import": "./dist/lib.mjs"|' \ $(TAILWIND)/packages/tailwindcss/package.json && \ touch $@ $(TAILWIND)/.tailwindcss-built: $(TAILWIND)/.pkg-fixed $(TAILWIND)/.lcss-built cd $(TAILWIND)/packages/tailwindcss && pnpm run build && \ touch $@ $(TAILWIND)/.node-built: $(TAILWIND)/.tailwindcss-built $(TAILWIND)/.oxide-built $(TAILWIND)/.parcel-built cd $(TAILWIND)/packages/@tailwindcss-node && pnpm run build && \ touch $@ $(TAILWIND)/.cli-built: $(TAILWIND)/.node-built cd $(TAILWIND)/packages/@tailwindcss-cli && pnpm run build && \ touch $@ clean: rm -rf $(TAILWIND) $(LCSS) deps: doas pkg install -yr FreeBSD-ports devel/git devel/pkgconf \ lang/gcc lang/python lang/rust www/npm-node24