APPLE_DEVELOPMENT := $(shell cat ../ids/APPLE_DEVELOPMENT)
APPLE_DEVELOPER_ID_APPLICATION := $(shell cat ../ids/APPLE_DEVELOPER_ID_APPLICATION)

CC = clang
FLAGS = -fno-objc-arc -Wall -Wextra -Wunguarded-availability \
		-Werror=unguarded-availability -glldb -fno-caret-diagnostics \
		-fno-show-column
# FLAGS = -O3
FRAMEWORKS = -framework Cocoa -framework IOKit -framework ServiceManagement
MACOS_VERSION = 13.0
EXEC = Caffeine

ifeq ($(ARCH),X86)
TARGET = x86_64-apple-macos$(MACOS_VERSION)
else
TARGET = arm64-apple-macos$(MACOS_VERSION)
endif

default: $(EXEC) $(EXEC).app

$(EXEC): main.m AppDelegate.m AppDelegate.h \
	     AboutViewController.m AboutViewController.h \
		 MenulessWindow.m MenulessWindow.h Helpers.m Helpers.h
	$(CC) $(FLAGS) -target $(TARGET) -sectcreate __TEXT __info_plist \
		Info.plist $(filter-out %.h, $^) $(FRAMEWORKS) -o $@

$(EXEC).app: $(EXEC)
	@rm -rf $@
	@mkdir -p $@/Contents/MacOS/ && \
	mkdir -p $@/Contents/Resources/ && \
	cp Info.plist $@/Contents/ && \
	cp resources/AppIcon.icns $@/Contents/Resources/ && \
	cp $(EXEC) $@/Contents/MacOS/ && \
	$(if $(DEBUG), codesign --entitlements $(EXEC).entitlements \
		-s ${APPLE_DEVELOPMENT} -f --timestamp -o runtime $(EXEC).app, \
		    codesign -s ${APPLE_DEVELOPER_ID_APPLICATION} -f --timestamp \
				-o runtime $(EXEC).app)

# Requires universal-ctags for Objective-C.
ctags:
	ctags -R *.h *.m

clean:
	rm -rf $(EXEC) $(EXEC).dSYM $(EXEC).app
