You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
176 lines
6.0 KiB
176 lines
6.0 KiB
#--------------------------------------------------------------------------------- |
|
.SUFFIXES: |
|
#--------------------------------------------------------------------------------- |
|
|
|
ifeq ($(strip $(DEVKITPRO)),) |
|
$(error "Please set DEVKITPRO in your environment. export DEVKITPRO=<path to>/devkitpro") |
|
endif |
|
|
|
TOPDIR ?= $(CURDIR) |
|
include $(DEVKITPRO)/libnx/switch_rules |
|
|
|
#--------------------------------------------------------------------------------- |
|
# TARGET is the name of the output |
|
# BUILD is the directory where object files & intermediate files will be placed |
|
# SOURCES is a list of directories containing source code |
|
# INCLUDES is a list of directories containing header files |
|
# EXEFS_SRC is the optional input directory containing data copied into exefs, if anything this normally should only contain "main.npdm". |
|
# |
|
# NO_ICON: if set to anything, do not use icon. |
|
# NO_NACP: if set to anything, no .nacp file is generated. |
|
# APP_TITLE is the name of the app stored in the .nacp file (Optional) |
|
# APP_AUTHOR is the author of the app stored in the .nacp file (Optional) |
|
# APP_VERSION is the version of the app stored in the .nacp file (Optional) |
|
# APP_TITLEID is the titleID of the app stored in the .nacp file (Optional) |
|
# ICON is the filename of the icon (.jpg), relative to the project folder. |
|
# If not set, it attempts to use one of the following (in this order): |
|
# - <Project name>.jpg |
|
# - icon.jpg |
|
# - <libnx folder>/default_icon.jpg |
|
#--------------------------------------------------------------------------------- |
|
|
|
TARGET := $(notdir $(CURDIR)) |
|
BUILD := build |
|
DIST := dist |
|
SOURCES := src $(wildcard src/**) |
|
EXEFS_SRC := exefs_src |
|
ICON := Icon.jpg |
|
|
|
APP_TITLE := Kosmos Updater Diagnostic |
|
APP_AUTHOR := Nichole Mattera |
|
APP_VERSION := 1.0.0 |
|
API_VERSION := v3 |
|
|
|
#--------------------------------------------------------------------------------- |
|
# options for code generation |
|
#--------------------------------------------------------------------------------- |
|
|
|
ARCH := -march=armv8-a -mtune=cortex-a57 -mtp=soft -fPIE |
|
|
|
DEFINES += -D__SWITCH__ -DUSE_FILE32API -DVERSION=\"$(APP_VERSION)\" -DAPI_VERSION=\"$(API_VERSION)\" |
|
|
|
CFLAGS := -g -Wall -O2 -ffunction-sections \ |
|
$(ARCH) $(DEFINES) $(INCLUDE) |
|
|
|
CXXFLAGS := $(CFLAGS) -fno-rtti -fexceptions -std=gnu++17 |
|
|
|
ASFLAGS := -g $(ARCH) |
|
LDFLAGS = -specs=$(DEVKITPRO)/libnx/switch.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) |
|
|
|
LIBS := -lcurl -lz -lnx |
|
|
|
#--------------------------------------------------------------------------------- |
|
# list of directories containing libraries, this must be the top level containing |
|
# include and lib |
|
#--------------------------------------------------------------------------------- |
|
LIBDIRS := $(PORTLIBS) $(LIBNX) |
|
|
|
|
|
#--------------------------------------------------------------------------------- |
|
# no real need to edit anything past this point unless you need to add additional |
|
# rules for different file extensions |
|
#--------------------------------------------------------------------------------- |
|
ifneq ($(BUILD),$(notdir $(CURDIR))) |
|
#--------------------------------------------------------------------------------- |
|
|
|
export OUTPUT := $(CURDIR)/$(DIST)/$(TARGET) |
|
export TOPDIR := $(CURDIR) |
|
|
|
export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) |
|
|
|
export DEPSDIR := $(CURDIR)/$(BUILD) |
|
|
|
CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) |
|
CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) |
|
|
|
#--------------------------------------------------------------------------------- |
|
# use CXX for linking C++ projects, CC for standard C |
|
#--------------------------------------------------------------------------------- |
|
ifeq ($(strip $(CPPFILES)),) |
|
#--------------------------------------------------------------------------------- |
|
export LD := $(CC) |
|
#--------------------------------------------------------------------------------- |
|
else |
|
#--------------------------------------------------------------------------------- |
|
export LD := $(CXX) |
|
#--------------------------------------------------------------------------------- |
|
endif |
|
#--------------------------------------------------------------------------------- |
|
|
|
export OFILES := $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) |
|
|
|
export INCLUDE := $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ |
|
-I$(CURDIR)/$(BUILD) |
|
|
|
export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) |
|
|
|
export BUILD_EXEFS_SRC := $(TOPDIR)/$(EXEFS_SRC) |
|
|
|
ifeq ($(strip $(ICON)),) |
|
icons := $(wildcard *.jpg) |
|
ifneq (,$(findstring $(TARGET).jpg,$(icons))) |
|
export APP_ICON := $(TOPDIR)/$(TARGET).jpg |
|
else |
|
ifneq (,$(findstring icon.jpg,$(icons))) |
|
export APP_ICON := $(TOPDIR)/icon.jpg |
|
endif |
|
endif |
|
else |
|
export APP_ICON := $(TOPDIR)/$(ICON) |
|
endif |
|
|
|
ifeq ($(strip $(NO_ICON)),) |
|
export NROFLAGS += --icon=$(APP_ICON) |
|
endif |
|
|
|
ifeq ($(strip $(NO_NACP)),) |
|
export NROFLAGS += --nacp=$(CURDIR)/$(DIST)/$(TARGET).nacp |
|
endif |
|
|
|
ifneq ($(APP_TITLEID),) |
|
export NACPFLAGS += --titleid=$(APP_TITLEID) |
|
endif |
|
|
|
.PHONY: $(BUILD) clean all |
|
|
|
#--------------------------------------------------------------------------------- |
|
all: $(BUILD) |
|
|
|
$(BUILD): |
|
@[ -d $@ ] || mkdir -p $@ |
|
@[ -d $(DIST) ] || mkdir $(DIST) |
|
@$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile |
|
|
|
#--------------------------------------------------------------------------------- |
|
clean: |
|
@echo clean ... |
|
@rm -fr $(BUILD) $(DIST) |
|
|
|
#--------------------------------------------------------------------------------- |
|
else |
|
.PHONY: all |
|
|
|
DEPENDS := $(OFILES:.o=.d) |
|
|
|
#--------------------------------------------------------------------------------- |
|
# main targets |
|
#--------------------------------------------------------------------------------- |
|
all : $(OUTPUT).pfs0 $(OUTPUT).nro |
|
|
|
$(OUTPUT).pfs0 : $(OUTPUT).nso |
|
|
|
$(OUTPUT).nso : $(OUTPUT).elf |
|
|
|
ifeq ($(strip $(NO_NACP)),) |
|
$(OUTPUT).nro : $(OUTPUT).elf $(OUTPUT).nacp |
|
else |
|
$(OUTPUT).nro : $(OUTPUT).elf |
|
endif |
|
|
|
$(OUTPUT).elf : $(OFILES) |
|
|
|
-include $(DEPENDS) |
|
|
|
#--------------------------------------------------------------------------------------- |
|
endif |
|
#---------------------------------------------------------------------------------------
|
|
|