ams: support building unit test programs on windows/linux/macos
This commit is contained in:
@@ -1,11 +1,23 @@
|
||||
ifeq ($(strip $(ATMOSPHERE_OS_NAME)),horizon)
|
||||
|
||||
ifeq ($(strip $(DEVKITPRO)),)
|
||||
$(error "Please set DEVKITPRO in your environment. export DEVKITPRO=<path to>/devkitpro")
|
||||
endif
|
||||
|
||||
include $(DEVKITPRO)/devkitA64/base_rules
|
||||
|
||||
else
|
||||
|
||||
include $(ATMOSPHERE_ARCH_MAKE_DIR)/base_rules
|
||||
|
||||
endif
|
||||
|
||||
export ATMOSPHERE_DEFINES += -DATMOSPHERE_ARCH_ARM64
|
||||
export ATMOSPHERE_SETTINGS += -mtp=soft
|
||||
export ATMOSPHERE_SETTINGS +=
|
||||
export ATMOSPHERE_CFLAGS +=
|
||||
export ATMOSPHERE_CXXFLAGS +=
|
||||
export ATMOSPHERE_ASFLAGS +=
|
||||
|
||||
ifeq ($(strip $(ATMOSPHERE_OS_NAME)),horizon)
|
||||
export ATMOSPHERE_SETTINGS += -mtp=soft
|
||||
endif
|
||||
28
libraries/config/arch/arm64/base_rules
Normal file
28
libraries/config/arch/arm64/base_rules
Normal file
@@ -0,0 +1,28 @@
|
||||
include $(ATMOSPHERE_ARCH_MAKE_DIR)/base_tools
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
%.a:
|
||||
#---------------------------------------------------------------------------------
|
||||
$(SILENTMSG) $(notdir $@)
|
||||
@rm -f $@
|
||||
$(SILENTCMD)$(AR) -rc $@ $^
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
%.o: %.cpp
|
||||
$(SILENTMSG) $(notdir $<)
|
||||
$(SILENTCMD)$(CXX) -MMD -MP -MF $(DEPSDIR)/$*.d $(CXXFLAGS) -c $< -o $@ $(ERROR_FILTER)
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
%.o: %.c
|
||||
$(SILENTMSG) $(notdir $<)
|
||||
$(SILENTCMD)$(CC) -MMD -MP -MF $(DEPSDIR)/$*.d $(CFLAGS) -c $< -o $@ $(ERROR_FILTER)
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
%.o: %.s
|
||||
@echo $(notdir $<)
|
||||
$(SILENTCMD)$(CC) -MMD -MP -MF $(DEPSDIR)/$*.d -x assembler-with-cpp $(ASFLAGS) -c $< -o $@ $(ERROR_FILTER)
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
%.o: %.S
|
||||
$(SILENTMSG) $(notdir $<)
|
||||
$(SILENTCMD)$(CC) -MMD -MP -MF $(DEPSDIR)/$*.d -x assembler-with-cpp $(ASFLAGS) -c $< -o $@ $(ERROR_FILTER)
|
||||
52
libraries/config/arch/arm64/base_tools
Normal file
52
libraries/config/arch/arm64/base_tools
Normal file
@@ -0,0 +1,52 @@
|
||||
#---------------------------------------------------------------------------------
|
||||
# the prefix on the compiler executables
|
||||
#---------------------------------------------------------------------------------
|
||||
PREFIX :=
|
||||
|
||||
ifeq ($(strip $(ATMOSPHERE_COMPILER_NAME)),gcc)
|
||||
|
||||
export CC := gcc
|
||||
export CXX := g++
|
||||
export AS := as
|
||||
export AR := gcc-ar
|
||||
export OBJCOPY := objcopy
|
||||
export STRIP := strip
|
||||
export NM := gcc-nm
|
||||
export RANLIB := gcc-ranlib
|
||||
|
||||
else ifeq ($(strip $(ATMOSPHERE_COMPILER_NAME)),clang)
|
||||
|
||||
export CC := clang
|
||||
export CXX := clang++
|
||||
export AS := llvm-as
|
||||
export AR := llvm-ar
|
||||
export OBJCOPY := llvm-objcopy
|
||||
export STRIP := llvm-strip
|
||||
export NM := llvm-nm
|
||||
export RANLIB := llvm-ranlib
|
||||
|
||||
endif
|
||||
|
||||
ISVC=$(or $(VCBUILDHELPER_COMMAND),$(MSBUILDEXTENSIONSPATH32),$(MSBUILDEXTENSIONSPATH))
|
||||
|
||||
ifneq (,$(ISVC))
|
||||
ERROR_FILTER := 2>&1 | sed -e 's/\(.[a-zA-Z]\+\):\([0-9]\+\):/\1(\2):/g'
|
||||
endif
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# allow seeing compiler command lines with make V=1 (similar to autotools' silent)
|
||||
#---------------------------------------------------------------------------------
|
||||
ifeq ($(V),1)
|
||||
SILENTMSG := @true
|
||||
SILENTCMD :=
|
||||
else
|
||||
SILENTMSG := @echo
|
||||
SILENTCMD := @
|
||||
endif
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# canned command sequence for binary data
|
||||
#---------------------------------------------------------------------------------
|
||||
define bin2o
|
||||
bin2s -a 8 -H `(echo $(<F) | tr . _)`.h $< | $(AS) -o $(<F).o
|
||||
endef
|
||||
5
libraries/config/arch/arm64/cpu/generic_arm64/cpu.mk
Normal file
5
libraries/config/arch/arm64/cpu/generic_arm64/cpu.mk
Normal file
@@ -0,0 +1,5 @@
|
||||
export ATMOSPHERE_DEFINES += -DATMOSPHERE_CPU_GENERIC_ARM64
|
||||
export ATMOSPHERE_SETTINGS += -march=armv8-a+crc+crypto -mno-outline-atomics
|
||||
export ATMOSPHERE_CFLAGS +=
|
||||
export ATMOSPHERE_CXXFLAGS +=
|
||||
export ATMOSPHERE_ASFLAGS +=
|
||||
7
libraries/config/arch/x64/arch.mk
Normal file
7
libraries/config/arch/x64/arch.mk
Normal file
@@ -0,0 +1,7 @@
|
||||
include $(ATMOSPHERE_ARCH_MAKE_DIR)/base_rules
|
||||
|
||||
export ATMOSPHERE_DEFINES += -DATMOSPHERE_ARCH_X64
|
||||
export ATMOSPHERE_SETTINGS +=
|
||||
export ATMOSPHERE_CFLAGS +=
|
||||
export ATMOSPHERE_CXXFLAGS +=
|
||||
export ATMOSPHERE_ASFLAGS +=
|
||||
28
libraries/config/arch/x64/base_rules
Normal file
28
libraries/config/arch/x64/base_rules
Normal file
@@ -0,0 +1,28 @@
|
||||
include $(ATMOSPHERE_ARCH_MAKE_DIR)/base_tools
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
%.a:
|
||||
#---------------------------------------------------------------------------------
|
||||
$(SILENTMSG) $(notdir $@)
|
||||
@rm -f $@
|
||||
$(SILENTCMD)$(AR) -rc $@ $^
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
%.o: %.cpp
|
||||
$(SILENTMSG) $(notdir $<)
|
||||
$(SILENTCMD)$(CXX) -MMD -MP -MF $(DEPSDIR)/$*.d $(CXXFLAGS) -c $< -o $@ $(ERROR_FILTER)
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
%.o: %.c
|
||||
$(SILENTMSG) $(notdir $<)
|
||||
$(SILENTCMD)$(CC) -MMD -MP -MF $(DEPSDIR)/$*.d $(CFLAGS) -c $< -o $@ $(ERROR_FILTER)
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
%.o: %.s
|
||||
@echo $(notdir $<)
|
||||
$(SILENTCMD)$(CC) -MMD -MP -MF $(DEPSDIR)/$*.d -x assembler-with-cpp $(ASFLAGS) -c $< -o $@ $(ERROR_FILTER)
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
%.o: %.S
|
||||
$(SILENTMSG) $(notdir $<)
|
||||
$(SILENTCMD)$(CC) -MMD -MP -MF $(DEPSDIR)/$*.d -x assembler-with-cpp $(ASFLAGS) -c $< -o $@ $(ERROR_FILTER)
|
||||
52
libraries/config/arch/x64/base_tools
Normal file
52
libraries/config/arch/x64/base_tools
Normal file
@@ -0,0 +1,52 @@
|
||||
#---------------------------------------------------------------------------------
|
||||
# the prefix on the compiler executables
|
||||
#---------------------------------------------------------------------------------
|
||||
PREFIX :=
|
||||
|
||||
ifeq ($(strip $(ATMOSPHERE_COMPILER_NAME)),gcc)
|
||||
|
||||
export CC := gcc
|
||||
export CXX := g++
|
||||
export AS := as
|
||||
export AR := gcc-ar
|
||||
export OBJCOPY := objcopy
|
||||
export STRIP := strip
|
||||
export NM := gcc-nm
|
||||
export RANLIB := gcc-ranlib
|
||||
|
||||
else ifeq ($(strip $(ATMOSPHERE_COMPILER_NAME)),clang)
|
||||
|
||||
export CC := clang
|
||||
export CXX := clang++
|
||||
export AS := llvm-as
|
||||
export AR := llvm-ar
|
||||
export OBJCOPY := llvm-objcopy
|
||||
export STRIP := llvm-strip
|
||||
export NM := llvm-nm
|
||||
export RANLIB := llvm-ranlib
|
||||
|
||||
endif
|
||||
|
||||
ISVC=$(or $(VCBUILDHELPER_COMMAND),$(MSBUILDEXTENSIONSPATH32),$(MSBUILDEXTENSIONSPATH))
|
||||
|
||||
ifneq (,$(ISVC))
|
||||
ERROR_FILTER := 2>&1 | sed -e 's/\(.[a-zA-Z]\+\):\([0-9]\+\):/\1(\2):/g'
|
||||
endif
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# allow seeing compiler command lines with make V=1 (similar to autotools' silent)
|
||||
#---------------------------------------------------------------------------------
|
||||
ifeq ($(V),1)
|
||||
SILENTMSG := @true
|
||||
SILENTCMD :=
|
||||
else
|
||||
SILENTMSG := @echo
|
||||
SILENTCMD := @
|
||||
endif
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# canned command sequence for binary data
|
||||
#---------------------------------------------------------------------------------
|
||||
define bin2o
|
||||
bin2s -a 8 -H `(echo $(<F) | tr . _)`.h $< | $(AS) -o $(<F).o
|
||||
endef
|
||||
5
libraries/config/arch/x64/cpu/generic_x64/cpu.mk
Normal file
5
libraries/config/arch/x64/cpu/generic_x64/cpu.mk
Normal file
@@ -0,0 +1,5 @@
|
||||
export ATMOSPHERE_DEFINES += -DATMOSPHERE_CPU_GENERIC_X64
|
||||
export ATMOSPHERE_SETTINGS += -march=native -mtune=generic
|
||||
export ATMOSPHERE_CFLAGS +=
|
||||
export ATMOSPHERE_CXXFLAGS +=
|
||||
export ATMOSPHERE_ASFLAGS +=
|
||||
19
libraries/config/board/generic/linux/board.mk
Normal file
19
libraries/config/board/generic/linux/board.mk
Normal file
@@ -0,0 +1,19 @@
|
||||
export ATMOSPHERE_DEFINES += -DATMOSPHERE_BOARD_GENERIC_LINUX
|
||||
export ATMOSPHERE_SETTINGS +=
|
||||
export ATMOSPHERE_CFLAGS +=
|
||||
export ATMOSPHERE_CXXFLAGS +=
|
||||
export ATMOSPHERE_ASFLAGS +=
|
||||
|
||||
ifeq ($(strip $(ATMOSPHERE_COMPILER_NAME)),clang)
|
||||
export ATMOSPHERE_CXXFLAGS += -stdlib=libc++
|
||||
|
||||
ifeq ($(strip $(ATMOSPHERE_ARCH_NAME)),x64)
|
||||
export ATMOSPHERE_SETTINGS += -target x86_64-pc-linux-gnu
|
||||
else ifeq ($(strip $(ATMOSPHERE_ARCH_NAME)),arm64)
|
||||
export ATMOSPHERE_SETTINGS += -target aarch64-linux-gnu
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
# TODO: Better way of doing this?
|
||||
export ATMOSPHERE_CXXFLAGS += -I/opt/libjpeg-turbo/include
|
||||
23
libraries/config/board/generic/macos/board.mk
Normal file
23
libraries/config/board/generic/macos/board.mk
Normal file
@@ -0,0 +1,23 @@
|
||||
export ATMOSPHERE_DEFINES += -DATMOSPHERE_BOARD_GENERIC_MACOS
|
||||
export ATMOSPHERE_SETTINGS +=
|
||||
export ATMOSPHERE_CFLAGS +=
|
||||
export ATMOSPHERE_CXXFLAGS +=
|
||||
export ATMOSPHERE_ASFLAGS +=
|
||||
|
||||
ifeq ($(strip $(ATMOSPHERE_COMPILER_NAME)),clang)
|
||||
export ATMOSPHERE_CXXFLAGS += -stdlib=libc++
|
||||
|
||||
ifeq ($(strip $(ATMOSPHERE_ARCH_NAME)),x64)
|
||||
export ATMOSPHERE_SETTINGS += -target x86_64-apple-darwin
|
||||
else ifeq ($(strip $(ATMOSPHERE_ARCH_NAME)),arm64)
|
||||
export ATMOSPHERE_SETTINGS += -target aarch64-apple-darwin
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(SDKROOT)),)
|
||||
export SDKROOT := $(shell xcrun --sdk macosx --show-sdk-path)
|
||||
endif
|
||||
|
||||
# TODO: Better way of doing this?
|
||||
export ATMOSPHERE_CXXFLAGS += -I/opt/libjpeg-turbo/include
|
||||
5
libraries/config/board/generic/windows/board.mk
Normal file
5
libraries/config/board/generic/windows/board.mk
Normal file
@@ -0,0 +1,5 @@
|
||||
export ATMOSPHERE_DEFINES += -DATMOSPHERE_BOARD_GENERIC_WINDOWS
|
||||
export ATMOSPHERE_SETTINGS +=
|
||||
export ATMOSPHERE_CFLAGS +=
|
||||
export ATMOSPHERE_CXXFLAGS +=
|
||||
export ATMOSPHERE_ASFLAGS +=
|
||||
@@ -15,14 +15,34 @@ endif
|
||||
|
||||
endif
|
||||
|
||||
ifeq ($(ATMOSPHERE_BUILD_NAME),)
|
||||
export ATMOSPHERE_BUILD_NAME := release
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(ATMOSPHERE_COMPILER_NAME)),)
|
||||
|
||||
ifneq ($(strip $(ATMOSPHERE_BOARD)),generic_macos)
|
||||
export ATMOSPHERE_COMPILER_NAME := gcc
|
||||
else
|
||||
export ATMOSPHERE_COMPILER_NAME := clang
|
||||
endif
|
||||
|
||||
export ATMOSPHERE_BUILD_NAME := release
|
||||
endif
|
||||
|
||||
ATMOSPHERE_BUILD_SETTINGS ?=
|
||||
|
||||
export ATMOSPHERE_DEFINES := -DATMOSPHERE
|
||||
export ATMOSPHERE_SETTINGS := -fPIE -g $(ATMOSPHERE_BUILD_SETTINGS)
|
||||
export ATMOSPHERE_CFLAGS := -Wall -ffunction-sections -fdata-sections -fno-strict-aliasing -fwrapv \
|
||||
-fno-asynchronous-unwind-tables -fno-unwind-tables -fno-stack-protector \
|
||||
-Wno-format-truncation -Wno-format-zero-length -Wno-stringop-truncation
|
||||
-Wno-format-zero-length
|
||||
|
||||
ifeq ($(strip $(ATMOSPHERE_COMPILER_NAME)),gcc)
|
||||
export ATMOSPHERE_CFLAGS += -Wno-stringop-truncation -Wno-format-truncation
|
||||
else ifeq ($(strip $(ATMOSPHERE_COMPILER_NAME)),clang)
|
||||
export ATMOSPHERE_CFLAGS += -Wno-c99-designator -Wno-gnu-alignof-expression -Wno-unused-private-field
|
||||
endif
|
||||
|
||||
export ATMOSPHERE_CXXFLAGS := -fno-rtti -fno-exceptions -std=gnu++20 -Wno-invalid-offsetof
|
||||
export ATMOSPHERE_ASFLAGS :=
|
||||
@@ -39,10 +59,16 @@ export ATMOSPHERE_ARCH_NAME := arm64
|
||||
export ATMOSPHERE_BOARD_NAME := nintendo_nx
|
||||
export ATMOSPHERE_OS_NAME := horizon
|
||||
|
||||
export ATMOSPHERE_SUB_ARCH_DIR = armv8a
|
||||
export ATMOSPHERE_SUB_ARCH_NAME = armv8a
|
||||
export ATMOSPHERE_SUB_ARCH_DIR := armv8a
|
||||
export ATMOSPHERE_SUB_ARCH_NAME := armv8a
|
||||
|
||||
export ATMOSPHERE_CPU_EXTENSIONS := arm_crypto_extension aarch64_crypto_extension
|
||||
|
||||
export ATMOSPHERE_BOOT_CPU := arm7tdmi
|
||||
export ATMOSPHERE_BOOT_ARCH_NAME := arm
|
||||
export ATMOSPHERE_BOOT_BOARD_NAME := nintendo_nx
|
||||
export ATMOSPHERE_BOOT_OS_NAME := horizon
|
||||
export ATMOSPHERE_BOOT_SUB_ARCH_NAME := armv4t
|
||||
else ifeq ($(ATMOSPHERE_CPU),arm7tdmi)
|
||||
export ATMOSPHERE_ARCH_DIR := arm
|
||||
export ATMOSPHERE_BOARD_DIR := nintendo/nx_bpmp
|
||||
@@ -52,12 +78,14 @@ export ATMOSPHERE_ARCH_NAME := arm
|
||||
export ATMOSPHERE_BOARD_NAME := nintendo_nx
|
||||
export ATMOSPHERE_OS_NAME := horizon
|
||||
|
||||
export ATMOSPHERE_SUB_ARCH_DIR = armv4t
|
||||
export ATMOSPHERE_SUB_ARCH_NAME = armv4t
|
||||
export ATMOSPHERE_SUB_ARCH_DIR := armv4t
|
||||
export ATMOSPHERE_SUB_ARCH_NAME := armv4t
|
||||
|
||||
export ATMOSPHERE_CPU_EXTENSIONS :=
|
||||
endif
|
||||
|
||||
export ATMOSPHERE_LIBDIRS :=
|
||||
|
||||
else ifeq ($(ATMOSPHERE_BOARD),qemu-virt)
|
||||
|
||||
|
||||
@@ -76,6 +104,53 @@ export ATMOSPHERE_SUB_ARCH_NAME = armv8a
|
||||
export ATMOSPHERE_CPU_EXTENSIONS := arm_crypto_extension aarch64_crypto_extension
|
||||
endif
|
||||
|
||||
export ATMOSPHERE_LIBDIRS :=
|
||||
|
||||
else ifeq ($(ATMOSPHERE_BOARD),generic_windows)
|
||||
|
||||
ifeq ($(ATMOSPHERE_CPU),generic_x64)
|
||||
export ATMOSPHERE_ARCH_DIR := x64
|
||||
export ATMOSPHERE_BOARD_DIR := generic/windows
|
||||
export ATMOSPHERE_OS_DIR := windows
|
||||
|
||||
export ATMOSPHERE_ARCH_NAME := x64
|
||||
export ATMOSPHERE_BOARD_NAME := generic_windows
|
||||
export ATMOSPHERE_OS_NAME := windows
|
||||
|
||||
endif
|
||||
|
||||
else ifeq ($(ATMOSPHERE_BOARD),generic_linux)
|
||||
|
||||
ifeq ($(ATMOSPHERE_CPU),generic_x64)
|
||||
export ATMOSPHERE_ARCH_DIR := x64
|
||||
export ATMOSPHERE_ARCH_NAME := x64
|
||||
else ifeq ($(ATMOSPHERE_CPU),generic_arm64)
|
||||
export ATMOSPHERE_ARCH_DIR := arm64
|
||||
export ATMOSPHERE_ARCH_NAME := arm64
|
||||
endif
|
||||
|
||||
export ATMOSPHERE_BOARD_DIR := generic/linux
|
||||
export ATMOSPHERE_OS_DIR := linux
|
||||
|
||||
export ATMOSPHERE_BOARD_NAME := generic_linux
|
||||
export ATMOSPHERE_OS_NAME := linux
|
||||
|
||||
else ifeq ($(ATMOSPHERE_BOARD),generic_macos)
|
||||
|
||||
ifeq ($(ATMOSPHERE_CPU),generic_x64)
|
||||
export ATMOSPHERE_ARCH_DIR := x64
|
||||
export ATMOSPHERE_ARCH_NAME := x64
|
||||
else ifeq ($(ATMOSPHERE_CPU),generic_arm64)
|
||||
export ATMOSPHERE_ARCH_DIR := arm64
|
||||
export ATMOSPHERE_ARCH_NAME := arm64
|
||||
endif
|
||||
|
||||
export ATMOSPHERE_BOARD_DIR := generic/macos
|
||||
export ATMOSPHERE_OS_DIR := macos
|
||||
|
||||
export ATMOSPHERE_BOARD_NAME := generic_macos
|
||||
export ATMOSPHERE_OS_NAME := macos
|
||||
|
||||
endif
|
||||
|
||||
ifeq ($(ATMOSPHERE_CPU),arm-cortex-a57)
|
||||
@@ -88,6 +163,15 @@ export ATMOSPHERE_CPU_DIR := arm7tdmi
|
||||
export ATMOSPHERE_CPU_NAME := arm7tdmi
|
||||
endif
|
||||
|
||||
ifeq ($(ATMOSPHERE_CPU),generic_x64)
|
||||
export ATMOSPHERE_CPU_DIR := generic_x64
|
||||
export ATMOSPHERE_CPU_NAME := generic_x64
|
||||
endif
|
||||
|
||||
ifeq ($(ATMOSPHERE_CPU),generic_arm64)
|
||||
export ATMOSPHERE_CPU_DIR := generic_arm64
|
||||
export ATMOSPHERE_CPU_NAME := generic_arm64
|
||||
endif
|
||||
|
||||
export ATMOSPHERE_ARCH_MAKE_DIR := $(ATMOSPHERE_CONFIG_MAKE_DIR)/arch/$(ATMOSPHERE_ARCH_DIR)
|
||||
export ATMOSPHERE_BOARD_MAKE_DIR := $(ATMOSPHERE_CONFIG_MAKE_DIR)/board/$(ATMOSPHERE_BOARD_DIR)
|
||||
@@ -95,11 +179,40 @@ export ATMOSPHERE_OS_MAKE_DIR := $(ATMOSPHERE_CONFIG_MAKE_DIR)/os/$(ATMOSPHER
|
||||
export ATMOSPHERE_CPU_MAKE_DIR := $(ATMOSPHERE_ARCH_MAKE_DIR)/cpu/$(ATMOSPHERE_CPU_DIR)
|
||||
|
||||
ifneq ($(strip $(ATMOSPHERE_SUB_ARCH_NAME)),)
|
||||
export ATMOSPHERE_LIBRARY_DIR := lib_$(ATMOSPHERE_BOARD_NAME)_$(ATMOSPHERE_ARCH_NAME)_$(ATMOSPHERE_SUB_ARCH_NAME)
|
||||
export ATMOSPHERE_BUILD_DIR := build_$(ATMOSPHERE_BOARD_NAME)_$(ATMOSPHERE_ARCH_NAME)_$(ATMOSPHERE_SUB_ARCH_NAME)
|
||||
export ATMOSPHERE_FULL_NAME := $(ATMOSPHERE_BOARD_NAME)_$(ATMOSPHERE_ARCH_NAME)_$(ATMOSPHERE_SUB_ARCH_NAME)_$(ATMOSPHERE_BUILD_NAME)
|
||||
export ATMOSPHERE_LIBRARY_DIR := lib/$(ATMOSPHERE_BOARD_NAME)_$(ATMOSPHERE_ARCH_NAME)_$(ATMOSPHERE_SUB_ARCH_NAME)/$(ATMOSPHERE_BUILD_NAME)
|
||||
export ATMOSPHERE_BUILD_DIR := build/$(ATMOSPHERE_BOARD_NAME)_$(ATMOSPHERE_ARCH_NAME)_$(ATMOSPHERE_SUB_ARCH_NAME)/$(ATMOSPHERE_BUILD_NAME)
|
||||
export ATMOSPHERE_OUT_DIR := out/$(ATMOSPHERE_BOARD_NAME)_$(ATMOSPHERE_ARCH_NAME)_$(ATMOSPHERE_SUB_ARCH_NAME)/$(ATMOSPHERE_BUILD_NAME)
|
||||
else
|
||||
export ATMOSPHERE_LIBRARY_DIR := lib_$(ATMOSPHERE_BOARD_NAME)_$(ATMOSPHERE_ARCH_NAME)
|
||||
export ATMOSPHERE_BUILD_DIR := build_$(ATMOSPHERE_BOARD_NAME)_$(ATMOSPHERE_ARCH_NAME)
|
||||
export ATMOSPHERE_FULL_NAME := $(ATMOSPHERE_BOARD_NAME)_$(ATMOSPHERE_ARCH_NAME)_$(ATMOSPHERE_BUILD_NAME)
|
||||
export ATMOSPHERE_LIBRARY_DIR := lib/$(ATMOSPHERE_BOARD_NAME)_$(ATMOSPHERE_ARCH_NAME)/$(ATMOSPHERE_BUILD_NAME)
|
||||
export ATMOSPHERE_BUILD_DIR := build/$(ATMOSPHERE_BOARD_NAME)_$(ATMOSPHERE_ARCH_NAME)/$(ATMOSPHERE_BUILD_NAME)
|
||||
export ATMOSPHERE_OUT_DIR := out/$(ATMOSPHERE_BOARD_NAME)_$(ATMOSPHERE_ARCH_NAME)/$(ATMOSPHERE_BUILD_NAME)
|
||||
endif
|
||||
|
||||
ifneq ($(strip $(ATMOSPHERE_BOOT_ARCH_NAME)),)
|
||||
|
||||
ifneq ($(strip $(ATMOSPHERE_SUB_ARCH_NAME)),)
|
||||
export ATMOSPHERE_BOOT_FULL_NAME := $(ATMOSPHERE_BOOT_BOARD_NAME)_$(ATMOSPHERE_BOOT_ARCH_NAME)_$(ATMOSPHERE_BOOT_SUB_ARCH_NAME)_$(ATMOSPHERE_BUILD_NAME)
|
||||
export ATMOSPHERE_BOOT_LIBRARY_DIR := lib/$(ATMOSPHERE_BOOT_BOARD_NAME)_$(ATMOSPHERE_BOOT_ARCH_NAME)_$(ATMOSPHERE_BOOT_SUB_ARCH_NAME)/$(ATMOSPHERE_BUILD_NAME)
|
||||
export ATMOSPHERE_BOOT_BUILD_DIR := build/$(ATMOSPHERE_BOOT_BOARD_NAME)_$(ATMOSPHERE_BOOT_ARCH_NAME)_$(ATMOSPHERE_BOOT_SUB_ARCH_NAME)/$(ATMOSPHERE_BUILD_NAME)
|
||||
export ATMOSPHERE_BOOT_OUT_DIR := out/$(ATMOSPHERE_BOOT_BOARD_NAME)_$(ATMOSPHERE_BOOT_ARCH_NAME)_$(ATMOSPHERE_BOOT_SUB_ARCH_NAME)/$(ATMOSPHERE_BUILD_NAME)
|
||||
else
|
||||
export ATMOSPHERE_BOOT_FULL_NAME := $(ATMOSPHERE_BOOT_BOARD_NAME)_$(ATMOSPHERE_BOOT_ARCH_NAME)_$(ATMOSPHERE_BUILD_NAME)
|
||||
export ATMOSPHERE_BOOT_LIBRARY_DIR := lib/$(ATMOSPHERE_BOOT_BOARD_NAME)_$(ATMOSPHERE_BOOT_ARCH_NAME)/$(ATMOSPHERE_BUILD_NAME)
|
||||
export ATMOSPHERE_BOOT_BUILD_DIR := build/$(ATMOSPHERE_BOOT_BOARD_NAME)_$(ATMOSPHERE_BOOT_ARCH_NAME)/$(ATMOSPHERE_BUILD_NAME)
|
||||
export ATMOSPHERE_BOOT_OUT_DIR := out/$(ATMOSPHERE_BOOT_BOARD_NAME)_$(ATMOSPHERE_BOOT_ARCH_NAME)/$(ATMOSPHERE_BUILD_NAME)
|
||||
endif
|
||||
|
||||
else
|
||||
export ATMOSPHERE_BOOT_FULL_NAME := $(ATMOSPHERE_FULL_NAME)
|
||||
export ATMOSPHERE_BOOT_LIBRARY_DIR := $(ATMOSPHERE_LIBRARY_DIR)
|
||||
export ATMOSPHERE_BOOT_BUILD_DIR := $(ATMOSPHERE_BUILD_DIR)
|
||||
export ATMOSPHERE_BOOT_OUT_DIR := $(ATMOSPHERE_OUT_DIR)
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(ATMOSPHERE_BOOT_CPU)),)
|
||||
export ATMOSPHERE_BOOT_CPU := $(ATMOSPHERE_CPU)
|
||||
endif
|
||||
|
||||
include $(ATMOSPHERE_ARCH_MAKE_DIR)/arch.mk
|
||||
@@ -182,15 +295,14 @@ FIND_SOURCE_FILES=$(foreach dir,$1,$(filter-out $(notdir $(wildcard $(dir)/*.arc
|
||||
$(foreach dir,$1,$(call FIND_SPECIFIC_SOURCE_FILES,$(dir),os,$(ATMOSPHERE_OS_NAME),$2)) \
|
||||
$(foreach dir,$1,$(call FIND_SPECIFIC_SOURCE_FILES_EX,$(dir),cpu,$(ATMOSPHERE_CPU_NAME) $(ATMOSPHERE_CPU_EXTENSIONS),$2))
|
||||
|
||||
ATMOSPHERE_GCH_IDENTIFIER ?= ams_placeholder_gch_identifier
|
||||
ATMOSPHERE_GCH_IDENTIFIER := $(ATMOSPHERE_FULL_NAME)
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# Rules for compiling pre-compiled headers
|
||||
#---------------------------------------------------------------------------------
|
||||
%.hpp.gch/$(ATMOSPHERE_GCH_IDENTIFIER): %.hpp | %.hpp.gch
|
||||
%.hpp.gch/$(ATMOSPHERE_GCH_IDENTIFIER): %.hpp %.hpp.gch
|
||||
@echo Precompiling $(notdir $<) for $(ATMOSPHERE_GCH_IDENTIFIER)
|
||||
$(SILENTCMD)$(CXX) -w -x c++-header -MMD -MP -MQ$@ -MF $(DEPSDIR)/$(notdir $*).d $(CXXFLAGS) -c $< -o $@ $(ERROR_FILTER)
|
||||
|
||||
%.hpp.gch: %.hpp
|
||||
@echo Precompiling $(notdir $<)
|
||||
$(SILENTCMD)$(CXX) -w -x c++-header -MMD -MP -MQ$@ -MF $(DEPSDIR)/$(notdir $*).d $(CXXFLAGS) -c $< -o $@ $(ERROR_FILTER)
|
||||
@[ -d $@ ] || mkdir -p $@
|
||||
|
||||
5
libraries/config/os/linux/os.mk
Normal file
5
libraries/config/os/linux/os.mk
Normal file
@@ -0,0 +1,5 @@
|
||||
export ATMOSPHERE_DEFINES += -DATMOSPHERE_OS_LINUX
|
||||
export ATMOSPHERE_SETTINGS +=
|
||||
export ATMOSPHERE_CFLAGS +=
|
||||
export ATMOSPHERE_CXXFLAGS +=
|
||||
export ATMOSPHERE_ASFLAGS +=
|
||||
5
libraries/config/os/macos/os.mk
Normal file
5
libraries/config/os/macos/os.mk
Normal file
@@ -0,0 +1,5 @@
|
||||
export ATMOSPHERE_DEFINES += -DATMOSPHERE_OS_MACOS
|
||||
export ATMOSPHERE_SETTINGS +=
|
||||
export ATMOSPHERE_CFLAGS +=
|
||||
export ATMOSPHERE_CXXFLAGS +=
|
||||
export ATMOSPHERE_ASFLAGS +=
|
||||
5
libraries/config/os/windows/os.mk
Normal file
5
libraries/config/os/windows/os.mk
Normal file
@@ -0,0 +1,5 @@
|
||||
export ATMOSPHERE_DEFINES += -DATMOSPHERE_OS_WINDOWS
|
||||
export ATMOSPHERE_SETTINGS +=
|
||||
export ATMOSPHERE_CFLAGS +=
|
||||
export ATMOSPHERE_CXXFLAGS +=
|
||||
export ATMOSPHERE_ASFLAGS +=
|
||||
@@ -7,8 +7,14 @@ include $(dir $(abspath $(lastword $(MAKEFILE_LIST))))/../common.mk
|
||||
# options for code generation
|
||||
#---------------------------------------------------------------------------------
|
||||
ifeq ($(strip $(ATMOSPHERE_ARCH_NAME)),arm64)
|
||||
DEFINES := $(ATMOSPHERE_DEFINES) -DATMOSPHERE_IS_EXOSPHERE
|
||||
SETTINGS := $(ATMOSPHERE_SETTINGS) -mgeneral-regs-only -ffixed-x18 -Os -Wextra -Werror -fno-non-call-exceptions \
|
||||
ifeq ($(ATMOSPHERE_BUILD_FOR_DEBUGGING),1)
|
||||
ATMOSPHERE_OPTIMIZATION_FLAG := -Os
|
||||
else
|
||||
ATMOSPHERE_OPTIMIZATION_FLAG := -Os
|
||||
endif
|
||||
|
||||
DEFINES := $(ATMOSPHERE_DEFINES) -DATMOSPHERE_IS_EXOSPHERE -DAMS_FORCE_DISABLE_DETAILED_ASSERTIONS
|
||||
SETTINGS := $(ATMOSPHERE_SETTINGS) -mgeneral-regs-only -ffixed-x18 $(ATMOSPHERE_OPTIMIZATION_FLAG) -Wextra -Werror -fno-non-call-exceptions \
|
||||
-Wno-array-bounds \
|
||||
-Wno-stringop-overflow \
|
||||
-Wno-stringop-overread
|
||||
@@ -16,8 +22,14 @@ CFLAGS := $(ATMOSPHERE_CFLAGS) $(SETTINGS) $(DEFINES) $(INCLUDE)
|
||||
CXXFLAGS := $(CFLAGS) $(ATMOSPHERE_CXXFLAGS) -fno-use-cxa-atexit
|
||||
ASFLAGS := $(ATMOSPHERE_ASFLAGS) $(SETTINGS)
|
||||
else ifeq ($(strip $(ATMOSPHERE_ARCH_NAME)),arm)
|
||||
DEFINES := $(ATMOSPHERE_DEFINES) -DATMOSPHERE_IS_EXOSPHERE
|
||||
SETTINGS := $(ATMOSPHERE_SETTINGS) -O2 -Werror -fno-non-call-exceptions \
|
||||
ifeq ($(ATMOSPHERE_BUILD_FOR_DEBUGGING),1)
|
||||
ATMOSPHERE_OPTIMIZATION_FLAG := -Os
|
||||
else
|
||||
ATMOSPHERE_OPTIMIZATION_FLAG := -O2
|
||||
endif
|
||||
|
||||
DEFINES := $(ATMOSPHERE_DEFINES) -DATMOSPHERE_IS_EXOSPHERE -DAMS_FORCE_DISABLE_DETAILED_ASSERTIONS
|
||||
SETTINGS := $(ATMOSPHERE_SETTINGS) $(ATMOSPHERE_OPTIMIZATION_FLAG) -Werror -fno-non-call-exceptions \
|
||||
-Wno-array-bounds \
|
||||
-Wno-stringop-overflow \
|
||||
-Wno-stringop-overread
|
||||
@@ -26,7 +38,7 @@ CXXFLAGS := $(CFLAGS) $(ATMOSPHERE_CXXFLAGS) -fno-use-cxa-atexit
|
||||
ASFLAGS := $(ATMOSPHERE_ASFLAGS) $(SETTINGS)
|
||||
endif
|
||||
|
||||
export LDFLAGS = -specs=$(TOPDIR)/$(notdir $(TOPDIR)).specs -fno-asynchronous-unwind-tables -fno-unwind-tables -fno-exceptions -fno-rtti -fno-use-cxa-atexit -nostdlib -nostartfiles -g $(CXXFLAGS) -Wl,-Map,$(notdir $*.map) -Wl,-z,relro,-z,now
|
||||
export LDFLAGS = -specs=$(ATMOSPHERE_TOPDIR)/$(notdir $(ATMOSPHERE_TOPDIR)).specs -fno-asynchronous-unwind-tables -fno-unwind-tables -fno-exceptions -fno-rtti -fno-use-cxa-atexit -nostdlib -nostartfiles -g $(CXXFLAGS) -Wl,-Map,$(notdir $*.map) -Wl,-z,relro,-z,now
|
||||
|
||||
export CXXWRAPS := -Wl,--wrap,__cxa_pure_virtual \
|
||||
-Wl,--wrap,__cxa_throw \
|
||||
@@ -43,7 +55,7 @@ export CXXWRAPS := -Wl,--wrap,__cxa_pure_virtual \
|
||||
-Wl,--wrap,_ZSt20__throw_length_errorPKc \
|
||||
-Wl,--wrap,_ZNSt11logic_errorC2EPKc
|
||||
|
||||
export LIBS := -l$(LIBEXOSPHERE_NAME) -lgcc
|
||||
export LIBS := -lexosphere -lgcc
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# list of directories containing libraries, this must be the top level containing
|
||||
|
||||
@@ -6,13 +6,19 @@ include $(dir $(abspath $(lastword $(MAKEFILE_LIST))))/../common.mk
|
||||
#---------------------------------------------------------------------------------
|
||||
# options for code generation
|
||||
#---------------------------------------------------------------------------------
|
||||
ifeq ($(ATMOSPHERE_BUILD_FOR_DEBUGGING),1)
|
||||
ATMOSPHERE_OPTIMIZATION_FLAG := -Os
|
||||
else
|
||||
ATMOSPHERE_OPTIMIZATION_FLAG := -Os
|
||||
endif
|
||||
|
||||
export DEFINES := $(ATMOSPHERE_DEFINES) -DATMOSPHERE_IS_MESOSPHERE
|
||||
export SETTINGS := $(ATMOSPHERE_SETTINGS) -Os -mgeneral-regs-only -ffixed-x18 -Wextra -Werror -fno-non-call-exceptions
|
||||
export SETTINGS := $(ATMOSPHERE_SETTINGS) $(ATMOSPHERE_OPTIMIZATION_FLAG) -mgeneral-regs-only -ffixed-x18 -Wextra -Werror -fno-non-call-exceptions
|
||||
export CFLAGS := $(ATMOSPHERE_CFLAGS) $(SETTINGS) $(DEFINES) $(INCLUDE)
|
||||
export CXXFLAGS := $(CFLAGS) $(ATMOSPHERE_CXXFLAGS) -fno-use-cxa-atexit
|
||||
export ASFLAGS := $(ATMOSPHERE_ASFLAGS) $(SETTINGS) $(DEFINES) $(INCLUDE)
|
||||
|
||||
export LDFLAGS = -specs=$(TOPDIR)/$(notdir $(TOPDIR)).specs -fno-asynchronous-unwind-tables -fno-unwind-tables -nostdlib -nostartfiles -g $(CXXFLAGS) -Wl,-Map,$(notdir $*.map) -Wl,-z,relro,-z,now
|
||||
export LDFLAGS = -specs=$(ATMOSPHERE_TOPDIR)/$(notdir $(ATMOSPHERE_TOPDIR)).specs -fno-asynchronous-unwind-tables -fno-unwind-tables -nostdlib -nostartfiles -g $(CXXFLAGS) -Wl,-Map,$(notdir $*.map) -Wl,-z,relro,-z,now
|
||||
|
||||
export CXXWRAPS := -Wl,--wrap,__cxa_pure_virtual \
|
||||
-Wl,--wrap,__cxa_throw \
|
||||
@@ -29,7 +35,7 @@ export CXXWRAPS := -Wl,--wrap,__cxa_pure_virtual \
|
||||
-Wl,--wrap,_ZSt20__throw_length_errorPKc \
|
||||
-Wl,--wrap,_ZNSt11logic_errorC2EPKc
|
||||
|
||||
export LIBS := -l$(LIBMESOSPHERE_NAME)
|
||||
export LIBS := -lmesosphere
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# list of directories containing libraries, this must be the top level containing
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
#---------------------------------------------------------------------------------
|
||||
include $(dir $(abspath $(lastword $(MAKEFILE_LIST))))/../common.mk
|
||||
|
||||
ifeq ($(ATMOSPHERE_BOARD),nx-hac-001)
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# pull in switch rules
|
||||
#---------------------------------------------------------------------------------
|
||||
@@ -12,15 +14,24 @@ endif
|
||||
|
||||
include $(DEVKITPRO)/libnx/switch_rules
|
||||
|
||||
endif
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# options for code generation
|
||||
#---------------------------------------------------------------------------------
|
||||
ifeq ($(ATMOSPHERE_BUILD_FOR_DEBUGGING),1)
|
||||
ATMOSPHERE_OPTIMIZATION_FLAG := -Os
|
||||
else
|
||||
ATMOSPHERE_OPTIMIZATION_FLAG := -O2
|
||||
endif
|
||||
|
||||
export DEFINES = $(ATMOSPHERE_DEFINES) -DATMOSPHERE_IS_STRATOSPHERE -D_GNU_SOURCE
|
||||
export SETTINGS = $(ATMOSPHERE_SETTINGS) -O2 -Wextra -Werror -Wno-missing-field-initializers
|
||||
export SETTINGS = $(ATMOSPHERE_SETTINGS) $(ATMOSPHERE_OPTIMIZATION_FLAG) -Wextra -Werror -Wno-missing-field-initializers
|
||||
export CFLAGS = $(ATMOSPHERE_CFLAGS) $(SETTINGS) $(DEFINES) $(INCLUDE)
|
||||
export CXXFLAGS = $(CFLAGS) $(ATMOSPHERE_CXXFLAGS)
|
||||
export ASFLAGS = $(ATMOSPHERE_ASFLAGS) $(SETTINGS) $(DEFINES)
|
||||
|
||||
ifeq ($(ATMOSPHERE_BOARD),nx-hac-001)
|
||||
export CXXREQUIRED := -Wl,--require-defined,__libnx_initheap \
|
||||
-Wl,--require-defined,__libnx_exception_handler \
|
||||
-Wl,--require-defined,__libnx_alloc \
|
||||
@@ -45,16 +56,50 @@ export CXXWRAPS := -Wl,--wrap,__cxa_pure_virtual \
|
||||
-Wl,--wrap,_ZSt20__throw_length_errorPKc \
|
||||
-Wl,--wrap,_ZNSt11logic_errorC2EPKc \
|
||||
-Wl,--wrap,exit
|
||||
else ifeq ($(ATMOSPHERE_BOARD),generic_windows)
|
||||
export CXXREQUIRED :=
|
||||
export CXXWRAPS := -Wl,--wrap,__p__acmdln
|
||||
else
|
||||
export CXXREQUIRED :=
|
||||
export CXXWRAPS :=
|
||||
endif
|
||||
|
||||
|
||||
ifeq ($(ATMOSPHERE_BOARD),nx-hac-001)
|
||||
export LDFLAGS = -specs=$(ATMOSPHERE_LIBRARIES_DIR)/libstratosphere/stratosphere.specs -specs=$(DEVKITPRO)/libnx/switch.specs $(CXXFLAGS) $(CXXWRAPS) $(CXXREQUIRED) -Wl,-Map,$(notdir $*.map)
|
||||
else ifeq ($(ATMOSPHERE_BOARD),generic_macos)
|
||||
export LDFLAGS = $(CXXFLAGS) $(CXXWRAPS) $(CXXREQUIRED) -Wl,-map,$(notdir $@.map)
|
||||
else
|
||||
export LDFLAGS = $(CXXFLAGS) $(CXXWRAPS) $(CXXREQUIRED) -Wl,-Map,$(notdir $*.map)
|
||||
endif
|
||||
|
||||
export LIBS = -lstratosphere -lnx
|
||||
ifeq ($(ATMOSPHERE_COMPILER_NAME),clang)
|
||||
export LDFLAGS += -fuse-ld=lld
|
||||
endif
|
||||
|
||||
ifeq ($(ATMOSPHERE_BOARD),nx-hac-001)
|
||||
export LIBS := -lstratosphere -lnx
|
||||
else ifeq ($(ATMOSPHERE_BOARD),generic_windows)
|
||||
export LIBS := -lstratosphere -lwinmm -lws2_32
|
||||
else ifeq ($(ATMOSPHERE_BOARD),generic_linux)
|
||||
export LIBS := -lstratosphere -pthread
|
||||
else ifeq ($(ATMOSPHERE_BOARD),generic_macos)
|
||||
export LIBS := -lstratosphere -pthread
|
||||
else
|
||||
export LIBS := -lstratosphere
|
||||
endif
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# list of directories containing libraries, this must be the top level containing
|
||||
# include and lib
|
||||
#---------------------------------------------------------------------------------
|
||||
export LIBDIRS = $(PORTLIBS) $(LIBNX) $(ATMOSPHERE_LIBRARIES_DIR)/libvapours $(ATMOSPHERE_LIBRARIES_DIR)/libstratosphere
|
||||
ifeq ($(ATMOSPHERE_BOARD),nx-hac-001)
|
||||
export LIBDIRS = $(PORTLIBS) $(LIBNX)
|
||||
else
|
||||
export LIBDIRS =
|
||||
endif
|
||||
|
||||
export AMS_LIBDIRS = $(ATMOSPHERE_LIBRARIES_DIR)/libvapours $(ATMOSPHERE_LIBRARIES_DIR)/libstratosphere
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# stratosphere sysmodules may (but usually do not) have an exefs source dir
|
||||
|
||||
Reference in New Issue
Block a user