#
#                     The LLVM Compiler Infrastructure
#
# This file is distributed under the University of Illinois Open Source
# License. See LICENSE.TXT for details.
CCDIR=/usr/bin
#CCDIR=/Volumes/Keep/gcc/usr/bin

all: std

clean:
	rm -fr *.dSYM *.o *-bin testfilerunner

TFR = ~public/bin/testfilerunner

testfilerunner: testfilerunner.h testfilerunner.m
	gcc -fobjc-gc-only -g -arch x86_64 -arch i386 -std=gnu99 testfilerunner.m -o testfilerunner -framework Foundation

tests:
	grep CONFIG *.[cmCM] | $(TFR) $(CCDIR) --

open:
	grep CONFIG *.[cmCM] | $(TFR) $(CCDIR) -open --

fast:
	grep CONFIG *.[cmCM] | $(TFR) -fast $(CCDIR) --

std:
	grep CONFIG *.[cmCM] | $(TFR) --

clang:
	grep CONFIG *.[cmCM] | $(TFR) -clang -fast --

fastd:
	grep CONFIG *.[cmCM] | $(TFR) -fast --


# Hack Alert: arguably most of the following belongs in libclosure's Makefile; sticking it here until I get around to grokking what goes on in that file.
sudid:
	@echo Enabling sudo:  # Hack Alert: enable sudo first thing so we don't hang at the password prompt later
	@sudo echo Thanks


RootsDirectory ?= /tmp/
# Note: the libsystem project (built by the libsystemroot target below) uses the ALTUSRLOCALLIBSYSTEM variable, so we use it here to maintain parity
ALTUSRLOCALLIBSYSTEM ?= $(RootsDirectory)/alt-usr-local-lib-system/
altusrlocallibsystem:
	ditto /usr/local/lib/system $(ALTUSRLOCALLIBSYSTEM)  # FIXME: conditionalize this copy


# <rdar://problem/6456031> ER: option to not require extra privileges (-nosudo or somesuch)
Buildit ?= ~rc/bin/buildit -rootsDirectory $(RootsDirectory) -arch i386 -arch ppc -arch x86_64
blocksroot: sudid clean altusrlocallibsystem
	sudo $(Buildit) ..
	ditto $(RootsDirectory)/libclosure.roots/libclosure~dst/usr/local/lib/system $(ALTUSRLOCALLIBSYSTEM)


LibsystemVersion ?= 121
LibsystemPath ?= ~rc/Software/SnowLeopard/Projects/Libsystem/Libsystem-$(LibsystemVersion)
LibsystemTmpPath ?= $(RootsDirectory)/Libsystem-$(LibsystemVersion)
libsystemroot: blocksroot
	ditto $(LibsystemPath) $(LibsystemTmpPath)  # FIXME: conditionalize this copy
	sudo ALTUSRLOCALLIBSYSTEM=$(ALTUSRLOCALLIBSYSTEM) $(Buildit) $(LibsystemTmpPath)


# Defaults to product of the libsystemroot target but does not automatically rebuild that, make both targets if you want a fresh root
LibsystemRootPath ?= $(RootsDirectory)/Libsystem-$(LibsystemVersion).roots/Libsystem-$(LibsystemVersion)~dst/usr/lib/
roottests: 
	grep CONFIG *.[cmCM] | $(TFR) -dyld $(LibsystemRootPath) --  # FIXME: figure out if I can "call" the std target instead of duplicating it

