Advertisement
Guest User

Untitled

a guest
Aug 24th, 2019
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Make 4.41 KB | None | 0 0
  1. ifeq ($(strip $(DEVKITPRO)),)
  2. $(error "Please set DEVKITPRO in your environment. export DEVKITPRO=<path to>/devkitpro")
  3. endif
  4.  
  5. # -----------------------------------------------
  6.  
  7. APP_TITLE         =    
  8. APP_AUTHOR        =    
  9. APP_ICON          =
  10. APP_VERSION       =    
  11. APP_TITLEID       =
  12.  
  13. TARGET            =    $(notdir $(CURDIR))
  14. EXTENSION         =    nro
  15. OUT               =    out
  16. BUILD             =    build
  17. SOURCES           =    src
  18. INCLUDES          =    include
  19. CUSTOM_LIBS       =    
  20. ROMFS             =    res
  21.  
  22. DEFINES           =    __SWITCH__ DEBUG
  23. ARCH              =    -march=armv8-a+crc+crypto+simd -mtune=cortex-a57 -mtp=soft -fpie
  24. FLAGS             =    -Wall -pipe -g -O2 -ffunction-sections -fdata-sections
  25. CFLAGS            =    -std=gnu11
  26. CXXFLAGS          =    -std=gnu++17 -fno-rtti
  27. ASFLAGS           =
  28. LDFLAGS           =    -Wl,-pie -specs=$(DEVKITPRO)/libnx/switch.specs -g
  29. LINKS             =    -lnx
  30.  
  31. PREFIX            =    aarch64-none-elf-
  32. CC                =    $(PREFIX)gcc
  33. CXX               =    $(PREFIX)g++
  34. AS                =    $(PREFIX)as
  35. LD                =    $(PREFIX)g++
  36. NM                =    $(PREFIX)gcc-nm
  37.  
  38. # -----------------------------------------------
  39.  
  40. CFILES            =    $(shell find $(SOURCES) -name *.c)
  41. CPPFILES          =    $(shell find $(SOURCES) -name *.cpp)
  42. SFILES            =    $(shell find $(SOURCES) -name *.s -or -name *.S)
  43. OFILES            =    $(CFILES:%=$(BUILD)/%.nx.o) $(CPPFILES:%=$(BUILD)/%.nx.o) $(SFILES:%=$(BUILD)/%.nx.o)
  44. DFILES            =    $(OFILES:.o=.d)
  45.  
  46. NX_TARGET         =    $(if $(OUT:=), $(OUT)/$(TARGET).$(EXTENSION), .$(OUT)/$(TARGET).$(EXTENSION))
  47. ELF_TARGET        =    $(if $(OUT:=), $(OUT)/$(TARGET)-nx.elf, .$(OUT)/$(TARGET)-nx.elf)
  48. NACP_TARGET       =    $(if $(OUT:=), $(OUT)/$(TARGET).nacp, .$(OUT)/$(TARGET).nacp)
  49. NRO_TARGET        =    $(if $(OUT:=), $(OUT)/$(TARGET).nro, .$(OUT)/$(TARGET).nro)
  50.  
  51. DEFINE_FLAGS      =    $(addprefix -D,$(DEFINES))
  52. INCLUDE_FLAGS     =    $(addprefix -I,$(INCLUDES)) $(foreach dir,$(LIBS),-I$(dir)/include)
  53. LIB_FLAGS         =    $(foreach dir,$(LIBS),-L$(dir)/lib)
  54.  
  55. # -----------------------------------------------
  56.  
  57. export PATH      :=    $(DEVKITPRO)/tools/bin:$(DEVKITPRO)/devkitA64/bin:$(PORTLIBS)/bin:$(PATH)
  58.  
  59. PORTLIBS          =    $(DEVKITPRO)/portlibs/switch
  60. LIBNX             =    $(DEVKITPRO)/libnx
  61. LIBS              =    $(CUSTOM_LIBS) $(LIBNX) $(PORTLIBS)
  62.  
  63. ifeq ($(strip $(APP_TITLE)),)
  64.     APP_TITLE     =    $(TARGET)
  65. endif
  66.  
  67. ifeq ($(strip $(APP_AUTHOR)),)
  68.     APP_AUTHOR    =    Unspecified
  69. endif
  70.  
  71. ifeq ($(strip $(APP_VERSION)),)
  72.     APP_VERSION   =    Unspecified
  73. endif
  74.  
  75. ifneq ($(APP_TITLEID),)
  76.     NACPFLAGS    +=    --titleid=$(strip $(APP_TITLEID))
  77. endif
  78.  
  79. ifeq ($(strip $(APP_ICON)),)
  80.     APP_ICON      =    $(LIBNX)/default_icon.jpg
  81. endif
  82.  
  83. NROFLAGS          =    --icon=$(strip $(APP_ICON)) --nacp=$(strip $(NACP_TARGET))
  84.  
  85. ifneq ($(ROMFS),)
  86.     NROFLAGS     +=    --romfsdir=$(strip $(ROMFS))
  87. endif
  88.  
  89. # -----------------------------------------------
  90.  
  91. .SUFFIXES:
  92.  
  93. .PHONY: all libs clean mrproper
  94.  
  95. all: libs $(NX_TARGET)
  96.  
  97. libs:
  98.     @for dir in $(CUSTOM_LIBS); do $(MAKE) --no-print-directory -C $$dir -f Makefile.nx; done
  99.  
  100. $(NX_TARGET): $(ELF_TARGET) $(NACP_TARGET)
  101.     @echo " NRO " $@
  102.     @mkdir -p $(dir $@)
  103.     @elf2nro $< $@ $(NROFLAGS)
  104.     @echo "Built" $(notdir $@)
  105.  
  106. $(ELF_TARGET): $(OFILES)
  107.     @echo " LD  " $@
  108.     @mkdir -p $(dir $@)
  109.     @$(LD) $(ARCH) $(LDFLAGS) -Wl,-Map,$(BUILD)/$(TARGET)-nx.map $(LIB_FLAGS) $^ $(LINKS) -o $@
  110.     @$(NM) -CSn $@ > $(BUILD)/$(TARGET)-nx.lst
  111.  
  112. $(BUILD)/%.c.nx.o: %.c
  113.     @echo " CC  " $@
  114.     @mkdir -p $(dir $@)
  115.     @$(CC) -MMD -MP $(ARCH) $(FLAGS) $(CFLAGS) $(DEFINE_FLAGS) $(INCLUDE_FLAGS) -c $< -o $@
  116.  
  117. $(BUILD)/%.cpp.nx.o: %.cpp
  118.     @echo " CXX " $@
  119.     @mkdir -p $(dir $@)
  120.     @$(CXX) -MMD -MP $(ARCH) $(FLAGS) $(CXXFLAGS) $(DEFINE_FLAGS) $(INCLUDE_FLAGS) -c $< -o $@
  121.  
  122. $(BUILD)/%.s.nx.o: %.s %.S
  123.     @echo " AS  " $@
  124.     @mkdir -p $(dir $@)
  125.     @$(AS) -MMD -MP -x assembler-with-cpp $(ARCH) $(FLAGS) $(ASFLAGS) $(INCLUDE_FLAGS) -c $< -o $@
  126.  
  127. %.nacp:
  128.     @echo " NACP" $@
  129.     @mkdir -p $(dir $@)
  130.     @nacptool --create "$(APP_TITLE)" "$(APP_AUTHOR)" "$(APP_VERSION)" $@ $(NACPFLAGS)
  131.  
  132. clean:
  133.     @echo Cleaning...
  134.     @rm -rf $(shell find $(BUILD) $(OUT) -name "*nx*") $(OUT)/*.nro $(OUT)/*.nacp
  135.  
  136. mrproper: clean
  137.     @for dir in $(CUSTOM_LIBS); do $(MAKE) clean --no-print-directory -C $$dir -f Makefile.nx; done
  138.  
  139. pc:
  140.     @:
  141.  
  142. -include $(DFILES)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement