mirror of
				https://github.com/Atmosphere-NX/Atmosphere.git
				synced 2025-11-04 12:51:17 +01:00 
			
		
		
		
	Stratosphere: Make dir for loader
This commit is contained in:
		
							parent
							
								
									5742571153
								
							
						
					
					
						commit
						79aba08295
					
				
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@ -65,3 +65,5 @@ fusee/fusee-tertiary/out/**
 | 
			
		||||
fusee/fusee-tertiary/build/**
 | 
			
		||||
fusee/out/**
 | 
			
		||||
fusee/build/**
 | 
			
		||||
stratosphere/loader/out/**
 | 
			
		||||
stratosphere/loader/build/**
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										185
									
								
								stratosphere/loader/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										185
									
								
								stratosphere/loader/Makefile
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,185 @@
 | 
			
		||||
#---------------------------------------------------------------------------------
 | 
			
		||||
.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
 | 
			
		||||
# DATA is a list of directories containing data files
 | 
			
		||||
# 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
 | 
			
		||||
SOURCES		:=	source
 | 
			
		||||
DATA		:=	data
 | 
			
		||||
INCLUDES	:=	include
 | 
			
		||||
EXEFS_SRC	:=	exefs_src
 | 
			
		||||
 | 
			
		||||
DEFINES	:=	-DDISABLE_IPC
 | 
			
		||||
 | 
			
		||||
#---------------------------------------------------------------------------------
 | 
			
		||||
# options for code generation
 | 
			
		||||
#---------------------------------------------------------------------------------
 | 
			
		||||
ARCH	:=	-march=armv8-a -mtune=cortex-a57 -mtp=soft -fPIE
 | 
			
		||||
 | 
			
		||||
CFLAGS	:=	-g -Wall -O2 -ffunction-sections \
 | 
			
		||||
			$(ARCH) $(DEFINES)
 | 
			
		||||
 | 
			
		||||
CFLAGS	+=	$(INCLUDE) -D__SWITCH__
 | 
			
		||||
 | 
			
		||||
CXXFLAGS	:= $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11
 | 
			
		||||
 | 
			
		||||
ASFLAGS	:=	-g $(ARCH)
 | 
			
		||||
LDFLAGS	=	-specs=$(DEVKITPRO)/libnx/switch.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map)
 | 
			
		||||
 | 
			
		||||
LIBS	:= -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)/$(TARGET)
 | 
			
		||||
export TOPDIR	:=	$(CURDIR)
 | 
			
		||||
 | 
			
		||||
export VPATH	:=	$(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \
 | 
			
		||||
			$(foreach dir,$(DATA),$(CURDIR)/$(dir))
 | 
			
		||||
 | 
			
		||||
export DEPSDIR	:=	$(CURDIR)/$(BUILD)
 | 
			
		||||
 | 
			
		||||
CFILES		:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
 | 
			
		||||
CPPFILES	:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
 | 
			
		||||
SFILES		:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
 | 
			
		||||
BINFILES	:=	$(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*)))
 | 
			
		||||
 | 
			
		||||
#---------------------------------------------------------------------------------
 | 
			
		||||
# use CXX for linking C++ projects, CC for standard C
 | 
			
		||||
#---------------------------------------------------------------------------------
 | 
			
		||||
ifeq ($(strip $(CPPFILES)),)
 | 
			
		||||
#---------------------------------------------------------------------------------
 | 
			
		||||
	export LD	:=	$(CC)
 | 
			
		||||
#---------------------------------------------------------------------------------
 | 
			
		||||
else
 | 
			
		||||
#---------------------------------------------------------------------------------
 | 
			
		||||
	export LD	:=	$(CXX)
 | 
			
		||||
#---------------------------------------------------------------------------------
 | 
			
		||||
endif
 | 
			
		||||
#---------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
export OFILES	:=	$(addsuffix .o,$(BINFILES)) \
 | 
			
		||||
			$(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o)
 | 
			
		||||
 | 
			
		||||
export INCLUDE	:=	$(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
 | 
			
		||||
			$(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)/$(TARGET).nacp
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
ifneq ($(APP_TITLEID),)
 | 
			
		||||
	export NACPFLAGS += --titleid=$(APP_TITLEID)
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
.PHONY: $(BUILD) clean all
 | 
			
		||||
 | 
			
		||||
#---------------------------------------------------------------------------------
 | 
			
		||||
all: $(BUILD)
 | 
			
		||||
 | 
			
		||||
$(BUILD):
 | 
			
		||||
	@[ -d $@ ] || mkdir -p $@
 | 
			
		||||
	@$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile
 | 
			
		||||
 | 
			
		||||
#---------------------------------------------------------------------------------
 | 
			
		||||
clean:
 | 
			
		||||
	@echo clean ...
 | 
			
		||||
	@rm -fr $(BUILD) $(TARGET).pfs0 $(TARGET).nso $(TARGET).nro $(TARGET).nacp $(TARGET).elf
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#---------------------------------------------------------------------------------
 | 
			
		||||
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)
 | 
			
		||||
 | 
			
		||||
#---------------------------------------------------------------------------------
 | 
			
		||||
# you need a rule like this for each extension you use as binary data
 | 
			
		||||
#---------------------------------------------------------------------------------
 | 
			
		||||
%.bin.o	:	%.bin
 | 
			
		||||
#---------------------------------------------------------------------------------
 | 
			
		||||
	@echo $(notdir $<)
 | 
			
		||||
	@$(bin2o)
 | 
			
		||||
 | 
			
		||||
-include $(DEPENDS)
 | 
			
		||||
 | 
			
		||||
#---------------------------------------------------------------------------------------
 | 
			
		||||
endif
 | 
			
		||||
#---------------------------------------------------------------------------------------
 | 
			
		||||
							
								
								
									
										33
									
								
								stratosphere/loader/source/ldr_main.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								stratosphere/loader/source/ldr_main.cpp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,33 @@
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include <malloc.h>
 | 
			
		||||
 | 
			
		||||
#include <switch.h>
 | 
			
		||||
 | 
			
		||||
extern u32 __start__;
 | 
			
		||||
 | 
			
		||||
u32 __nx_applet_type = AppletType_None;
 | 
			
		||||
 | 
			
		||||
#define INNER_HEAP_SIZE 0x200000
 | 
			
		||||
size_t nx_inner_heap_size = INNER_HEAP_SIZE;
 | 
			
		||||
char   nx_inner_heap[INNER_HEAP_SIZE];
 | 
			
		||||
 | 
			
		||||
void __libnx_initheap(void)
 | 
			
		||||
{
 | 
			
		||||
	void*  addr = nx_inner_heap;
 | 
			
		||||
	size_t size = nx_inner_heap_size;
 | 
			
		||||
 | 
			
		||||
	/* Newlib */
 | 
			
		||||
	extern char* fake_heap_start;
 | 
			
		||||
	extern char* fake_heap_end;
 | 
			
		||||
 | 
			
		||||
	fake_heap_start = (char*)addr;
 | 
			
		||||
	fake_heap_end   = (char*)addr + size;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int main(int argc, char **argv)
 | 
			
		||||
{
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user