ams: support building unit test programs on windows/linux/macos
This commit is contained in:
@@ -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 $@
|
||||
|
||||
Reference in New Issue
Block a user