From 14bdf57276a0f5b832fbe6d3b88936096e4b40ac Mon Sep 17 00:00:00 2001 From: Renaud Schweingruber Date: Tue, 10 Jun 2025 13:51:00 +0200 Subject: [PATCH 1/6] Update lowlevel.c --- rom/devs/ata/lowlevel.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/rom/devs/ata/lowlevel.c b/rom/devs/ata/lowlevel.c index 7683152bd60..64da7470fb7 100644 --- a/rom/devs/ata/lowlevel.c +++ b/rom/devs/ata/lowlevel.c @@ -16,15 +16,16 @@ -#define VREG_BOARD_Unknown 0x00 /* Unknown */ +#define VREG_BOARD_Unknown 0x00 /* Unknown, */ #define VREG_BOARD_V600 0x01 /* Vampire V2 V600(+), for A600 */ #define VREG_BOARD_V500 0x02 /* Vampire V2 V500(+), for A500 */ -#define VREG_BOARD_V4FB 0x03 /* Apollo V4 FireBird, for A500 */ -#define VREG_BOARD_V4ID 0x04 /* Apollo V4 IceDrake, for A1200 */ +#define VREG_BOARD_V4FB 0x03 /* Apollo V4 Firebird, for A500 */ +#define VREG_BOARD_V4ID 0x04 /* Apollo V4 Icedrake, for A1200 */ #define VREG_BOARD_V4SA 0x05 /* Apollo V4 Standalone */ #define VREG_BOARD_V1200 0x06 /* Vampire V2 V1200, for A1200 */ #define VREG_BOARD_V4MC 0x07 /* Apollo V4 Manticore, for A600 */ -#define VREG_BOARD_Future 0x08 /* Unknow */ +#define VREG_BOARD_V4UNI 0x08 /* Apollo V4 Unicorn, */ +#define VREG_BOARD_Future 0x09 /* Unknown */ static BYTE ata_Identify(struct ata_Unit *unit); static BYTE ata_ReadSector32(struct ata_Unit *, ULONG, ULONG, APTR, ULONG *); From 64c675698db5b3cbdb19debf8d5fe86190db756d Mon Sep 17 00:00:00 2001 From: Renaud Schweingruber Date: Tue, 10 Jun 2025 13:52:18 +0200 Subject: [PATCH 2/6] Update sagagfx_hw.h --- arch/m68k-amiga/hidd/sagagfx/sagagfx_hw.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/arch/m68k-amiga/hidd/sagagfx/sagagfx_hw.h b/arch/m68k-amiga/hidd/sagagfx/sagagfx_hw.h index 025425c5a7b..8e99c81e749 100644 --- a/arch/m68k-amiga/hidd/sagagfx/sagagfx_hw.h +++ b/arch/m68k-amiga/hidd/sagagfx/sagagfx_hw.h @@ -24,12 +24,12 @@ #define VREG_BOARD_Unknown 0x00 // Unknown #define VREG_BOARD_V2_V600 0x01 // V2-V600 (legacy) #define VREG_BOARD_V2_V500 0x02 // V2-V500 (legacy) -#define VREG_BOARD_V4_V500 0x03 // V4-V500 = FireBird +#define VREG_BOARD_V4_V500 0x03 // V4-V500 = Firebird #define VREG_BOARD_V4_V1200 0x04 // V4-V1200 = Icedrake -#define VREG_BOARD_V4_SA 0x05 // V4-SA = StandAlone +#define VREG_BOARD_V4_SA 0x05 // V4-SA = Standalone #define VREG_BOARD_V2_V1200 0x06 // V2-V1200 (legacy) -#define VREG_BOARD_V4_V600 0x07 // V4-V600 = MantiCore -#define VREG_BOARD_Future_1 0x08 // Future +#define VREG_BOARD_V4_V600 0x07 // V4-V600 = Manticore +#define VREG_BOARD_V4_UNI 0x08 // V4-UNI = Unicorn #define VREG_BOARD_Future_2 0x09 // Future #define VREG_BOARD 0xDFF3FC // [16-bits] BoardID [HIGH-Byte: MODEL, LOW-Byte: xFREQ] From 3314a24a059ade103c4103e50fcd8b5b7beb5e2c Mon Sep 17 00:00:00 2001 From: Renaud Schweingruber Date: Tue, 10 Jun 2025 13:53:47 +0200 Subject: [PATCH 3/6] Update probe.c --- arch/m68k-amiga/hidd/gayle_ata/probe.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/arch/m68k-amiga/hidd/gayle_ata/probe.c b/arch/m68k-amiga/hidd/gayle_ata/probe.c index da5192d57af..4d997884f1b 100644 --- a/arch/m68k-amiga/hidd/gayle_ata/probe.c +++ b/arch/m68k-amiga/hidd/gayle_ata/probe.c @@ -59,7 +59,8 @@ #define VREG_BOARD_V4SA 0x05 /* Apollo V4 Standalone */ #define VREG_BOARD_V1200 0x06 /* Vampire V2 V1200, for A1200 */ #define VREG_BOARD_V4MC 0x07 /* Apollo V4 Manticore, for A600 */ -#define VREG_BOARD_Future 0x08 /* Unknow */ +#define VREG_BOARD_V4UNI 0x08 /* Apollo V4 Unicorn, */ +#define VREG_BOARD_Future 0x09 /* Unknown */ static UBYTE *getport(struct ata_ProbedBus *ddata, int buscounter) { @@ -97,6 +98,7 @@ static UBYTE *getport(struct ata_ProbedBus *ddata, int buscounter) ||(ApolloBoardID == VREG_BOARD_V1200) ||(ApolloBoardID == VREG_BOARD_V4FB) ||(ApolloBoardID == VREG_BOARD_V4SA)) + ||(ApolloBoardID == VREG_BOARD_V4UNI)) { ddata->v4 = TRUE; DINIT(bug("[ATA:Probe] Port = GAYLE_BASE_DA (V4 Fast-IDE)\n");) From 97bfd6bdc18f947d91dfb900315a96de7ba1ce4f Mon Sep 17 00:00:00 2001 From: Renaud Schweingruber Date: Tue, 10 Jun 2025 13:56:26 +0200 Subject: [PATCH 4/6] Update sagagfx_init.c --- arch/m68k-amiga/hidd/sagagfx/sagagfx_init.c | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/m68k-amiga/hidd/sagagfx/sagagfx_init.c b/arch/m68k-amiga/hidd/sagagfx/sagagfx_init.c index fe85c5d2cb2..c351be63c02 100644 --- a/arch/m68k-amiga/hidd/sagagfx/sagagfx_init.c +++ b/arch/m68k-amiga/hidd/sagagfx/sagagfx_init.c @@ -110,6 +110,7 @@ static int SAGAGfx_Init(LIBBASETYPEPTR LIBBASE) case VREG_BOARD_V4_V500: case VREG_BOARD_V4_V1200: case VREG_BOARD_V4_V600: + case VREG_BOARD_V4_UNI: // SAGA V4 METHODS xsd->SAGAGfx_GetPixFmt = SAGAHW_V4_GetPixFmt; xsd->SAGAGfx_GetModeID = SAGAHW_V4_GetModeID; From a8477f9a3899d3a531bfbdd8c3109df84dd54643 Mon Sep 17 00:00:00 2001 From: Renaud Schweingruber Date: Tue, 10 Jun 2025 14:21:41 +0200 Subject: [PATCH 5/6] Update probe.c --- arch/m68k-amiga/hidd/gayle_ata/probe.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/m68k-amiga/hidd/gayle_ata/probe.c b/arch/m68k-amiga/hidd/gayle_ata/probe.c index 4d997884f1b..ecf8b161d80 100644 --- a/arch/m68k-amiga/hidd/gayle_ata/probe.c +++ b/arch/m68k-amiga/hidd/gayle_ata/probe.c @@ -97,7 +97,7 @@ static UBYTE *getport(struct ata_ProbedBus *ddata, int buscounter) ||(ApolloBoardID == VREG_BOARD_V600) ||(ApolloBoardID == VREG_BOARD_V1200) ||(ApolloBoardID == VREG_BOARD_V4FB) - ||(ApolloBoardID == VREG_BOARD_V4SA)) + ||(ApolloBoardID == VREG_BOARD_V4SA) ||(ApolloBoardID == VREG_BOARD_V4UNI)) { ddata->v4 = TRUE; From a5400463a66e2784428873c73fb7c64742abb813 Mon Sep 17 00:00:00 2001 From: Renaud Schweingruber Date: Wed, 24 Jun 2026 20:27:27 +0200 Subject: [PATCH 6/6] sagasd.device 2.16 ## 2.16 - Replaced dead `0 & ADNF_STARTPROC` with `0` in boot-node setup (no behavior change). ## 2.15 - Fixed multi-block write resetting its retry counter from the read budget instead of the write one. - Renamed `IO_TIMINGLOOP_MSEC` to `IO_TIMINGLOOP_USEC` (value is microseconds = 100 ms) to prevent accidental detection-timing breakage. ## 2.14 - Fixed unsigned underflow in SCSI MODE SENSE (6) that could write far past the buffer on a short/invalid transfer length. ## 2.13 - Expunge now refuses cleanly instead of sending `~0`/`0xFFFF`, which collided with the FAT "RDB inserted" command and could free the base under running tasks. ## 2.12 - Removed `TD_ADDCHANGEINT` from the quick-I/O path (it cleared `IOF_QUICK` without replying, hanging `DoIO` callers); now handled asynchronously. ## 2.11 - Hot-plug insertion now marks the unit valid only on successful card init, instead of forcing it valid on a broken disk. ## 2.10 - Added a `"memory"` clobber to the SPI block-read inline assembly to stop the compiler reordering/dropping buffer reads under optimization. ## 2.9 - Fixed SDHC/SDXC C_SIZE read as 20 bits instead of 22, so cards above ~512 GB now report the correct size. - Increased the per-unit IO task stack from 4 KB to 16 KB and tied it to a single `SDU_STACK_SIZE` constant. ## 2.8 - Audit baseline (pre-fix reference). --- arch/m68k-amiga/devs/sagasd/mmakefile | 2308 +++++++++++++++++++ arch/m68k-amiga/devs/sagasd/sagasd.conf | 2 +- arch/m68k-amiga/devs/sagasd/sagasd_device.c | 172 +- arch/m68k-amiga/devs/sagasd/sagasd_intern.h | 6 +- arch/m68k-amiga/devs/sagasd/sdcmd.c | 28 +- arch/m68k-amiga/devs/sagasd/sdcmd.h | 2 +- 6 files changed, 2407 insertions(+), 111 deletions(-) create mode 100644 arch/m68k-amiga/devs/sagasd/mmakefile diff --git a/arch/m68k-amiga/devs/sagasd/mmakefile b/arch/m68k-amiga/devs/sagasd/mmakefile new file mode 100644 index 00000000000..76e4a164f27 --- /dev/null +++ b/arch/m68k-amiga/devs/sagasd/mmakefile @@ -0,0 +1,2308 @@ +# +# Copyright (C) 2016, Jason S. McMullan +# All rights reserved. +# +# Licensed under the MIT License: +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. +# +include $(SRCDIR)/config/aros.cfg + +USER_INCLUDES := -I$(SRCDIR)/$(CURDIR)/\ + -I$(SRCDIR)/$(CURDIR)/../include + +USER_CFLAGS := -D__NOLIBBASE__ -O2 -DSIMULATE=0 \ + -DADATE="\"$(shell date "+%d.%m.%Y")\"" -fdata-sections -ffunction-sections -fno-zero-initialized-in-bss -fno-common + +USER_LDFLAGS := -static + +DEVICE_FILES := sagasd_device sdcmd + +SDDIAG_FILES := sddiag sdcmd + +#MM- kernel-sagasd-device: sagasd-c kernel-sagasd-device +#MM- kernel-sagasd-device-kobj: kernel-sagasd-device +#MM- kernel-sagasd-device-quick: sagasd-c-quick kernel-sagasd-device-quick + + +.PHONY : sagasd-c + +sagasd-c_PROGNAME := SDDiag +sagasd-c_OBJDIR := $(GENDIR)/$(CURDIR) +sagasd-c_TARGETDIR := $(AROS_C) +sagasd-c_LINKER := +sagasd-c_LIBS := +# If not supplied, linker is equal to compiler +ifeq ($(sagasd-c_LINKER),) + sagasd-c_LINKER := target +endif + +ifneq ("$(strip $(SDDIAG_FILES) )","") + sagasd-c_FILES := $(SDDIAG_FILES) + sagasd-c_OBJCFILES := + sagasd-c_ASMFILES := + sagasd-c_CXXFILES := +else + sagasd-c_FILES := $(sagasd-c_PROGNAME) + sagasd-c_OBJCFILES := + sagasd-c_ASMFILES := + sagasd-c_CXXFILES := +endif + +sagasd-c_ARCHOBJS := $(wildcard $(sagasd-c_OBJDIR)/arch/*.o) +sagasd-c_ARCHFILES := $(basename $(notdir $(sagasd-c_ARCHOBJS))) +sagasd-c_C_NARCHFILES := $(filter-out $(sagasd-c_ARCHFILES),$(sagasd-c_FILES)) +sagasd-c_CXX_NARCHFILES := $(filter-out $(sagasd-c_ARCHFILES),$(sagasd-c_CXXFILES)) +sagasd-c_OBJC_NARCHFILES := $(filter-out $(sagasd-c_ARCHFILES),$(sagasd-c_OBJCFILES)) + +TMP_FILES := $(sagasd-c_C_NARCHFILES) $(sagasd-c_CXX_NARCHFILES) $(sagasd-c_ASMFILES) $(sagasd-c_OBJC_NARCHFILES) +sagasd-c_OBJS := $(addsuffix .o,$(addprefix $(sagasd-c_OBJDIR)/,$(notdir $(TMP_FILES)))) +sagasd-c_DEPS := $(addsuffix .d,$(addprefix $(sagasd-c_OBJDIR)/,$(notdir $(TMP_FILES)))) + +sagasd-c_CPPFLAGS := $(CPPFLAGS) +ifneq (,) +sagasd-c_CPPFLAGS += -I +endif + +ifeq ("","") +ifeq (target,target) +sagasd-c_CFLAGS := $(CFLAGS) +endif +ifeq (target,host) +sagasd-c_CFLAGS := $(HOST_CFLAGS) +endif +ifeq (target,kernel) +sagasd-c_CFLAGS := $(strip $(KERNEL_ISA_CFLAGS) $(KERNEL_CFLAGS)) +endif +else +sagasd-c_CFLAGS := +endif + +ifeq ("","") +ifeq (target,target) +sagasd-c_CXXFLAGS := $(CXXFLAGS) +endif +ifeq (target,host) +sagasd-c_CXXFLAGS := $(HOST_CXXFLAGS) +endif +ifeq (target,kernel) +sagasd-c_CXXFLAGS := $(strip $(KERNEL_ISA_CXXFLAGS) $(KERNEL_CXXFLAGS)) +endif +else +sagasd-c_CXXFLAGS := +endif + +ifeq ("","") +ifeq (target,target) +sagasd-c_LDFLAGS := $(LDFLAGS) +endif +ifeq (target,host) +sagasd-c_LDFLAGS := $(HOST_LDFLAGS) +endif +ifeq (target,kernel) +sagasd-c_LDFLAGS := $(strip $(USER_LDFLAGS) $(KERNEL_LDFLAGS)) +endif +else +sagasd-c_LDFLAGS := +endif + +sagasd-c_COVERAGE := no +ifeq (target,target) +ifeq (no,yes) +ifeq ($(TARGET_COVERAGEINSTR),yes) +sagasd-c_COVERAGE := yes +sagasd-c_COVERAGEFLAGS ?= $(COVERAGEINSTR_FLAGS) +sagasd-c_COVERAGELIBS ?= $(COVERAGEINSTR_LIBS) +sagasd-c_CFLAGS := $(strip $(sagasd-c_COVERAGEFLAGS) $(sagasd-c_CFLAGS)) +sagasd-c_CXXFLAGS := $(strip $(sagasd-c_COVERAGEFLAGS) $(sagasd-c_CXXFLAGS)) +sagasd-c_LIBS += $(sagasd-c_COVERAGELIBS) +endif +ifeq ($(TARGET_FUNCINSTR),yes) +sagasd-c_FUNCINSTR := yes +sagasd-c_INSTRFUNCFLAGS ?= $(FUNCINSTR_FLAGS) +sagasd-c_INSTRFUNCLIBS ?= $(FUNCINSTR_LIBS) +sagasd-c_CFLAGS := $(strip $(sagasd-c_INSTRFUNCFLAGS) $(sagasd-c_CFLAGS)) +sagasd-c_CXXFLAGS := $(strip $(sagasd-c_INSTRFUNCFLAGS) $(sagasd-c_CXXFLAGS)) +sagasd-c_LIBS += $(sagasd-c_INSTRFUNCLIBS) +endif +endif +ifeq ($(TARGET_LTO),yes) +sagasd-c_CFLAGS := $(strip $(LTO_BINARY_CFLAGS) $(sagasd-c_CFLAGS)) +sagasd-c_CXXFLAGS := $(strip $(LTO_BINARY_CFLAGS) $(sagasd-c_CXXFLAGS)) +endif +endif +sagasd-c_AFLAGS := $(AFLAGS) +ifneq (,) + sagasd-c_DFLAGS := +else + sagasd-c_DFLAGS := $(sagasd-c_CFLAGS) +endif +ifneq (,) + sagasd-c_DXXFLAGS := +else + sagasd-c_DXXFLAGS := $(sagasd-c_CXXFLAGS) +endif +ifeq (target,target) +sagasd-c_LDFLAGS := $(sagasd-c_LDFLAGS) $(TARGET_ISA_OBJCFLAGS) +endif +ifeq (target,host) +sagasd-c_LDFLAGS := $(sagasd-c_LDFLAGS) $(HOST_ISA_OBJCFLAGS) +endif +ifeq (target,kernel) +sagasd-c_LDFLAGS := $(sagasd-c_LDFLAGS) $(KERNEL_ISA_OBJCFLAGS) +endif +ifneq (,) +sagasd-c_LDFLAGS += -L +endif + +#MM +sagasd-c-quick : sagasd-c + +#MM sagasd-c : includes-generate-deps core-linklibs +sagasd-c : $(sagasd-c_TARGETDIR)/$(sagasd-c_PROGNAME) + +ifneq ($(filter $(TARGET),sagasd-c sagasd-c-quick sagasd-c-gz-quick),) + +sagasd-c_CXXABSBASENAMES := $(foreach sagasd-c_CXXBASE,$(sagasd-c_CXX_NARCHFILES),$(if $(filter /%,$(sagasd-c_CXXBASE)),$(sagasd-c_CXXBASE),$(abspath $(SRCDIR)/$(CURDIR)/$(sagasd-c_CXXBASE)))) + +ifneq ($(sagasd-c_CXXABSBASENAMES),) + +sagasd-c_CXXBASENAMES := $(basename $(sagasd-c_CXXABSBASENAMES)) + +# Identify the "real" c++ files from the passed in basenames +sagasd-c_MCXX_FILES := $(strip $(foreach sagasd-c_CXXBASE,$(sagasd-c_CXXABSBASENAMES), $(firstword $(wildcard $(foreach sagasd-c_EXT, $(AROS_CXXEXTS),$(addsuffix .$(sagasd-c_EXT),$(sagasd-c_CXXBASE))))))) + +ifeq (,) +sagasd-c_MCXX_SRCWILDCARD := % +else +sagasd-c_MCXX_SRCWILDCARD := /% +endif + +ifeq ($(sagasd-c_OBJDIR),) + sagasd-c_CXXTARGETS := $(notdir $(sagasd-c_CXXBASENAMES:=.o)) + sagasd-c_CXXDTARGETS := $(notdir $(sagasd-c_CXXBASENAMES:=.d)) + sagasd-c_MCXX_WILDCARD := % +else + sagasd-c_CXXTARGETS := $(addprefix $(sagasd-c_OBJDIR)/,$(notdir $(sagasd-c_CXXBASENAMES:=.o))) + sagasd-c_CXXDTARGETS := $(addprefix $(sagasd-c_OBJDIR)/,$(notdir $(sagasd-c_CXXBASENAMES:=.d))) + sagasd-c_MCXX_WILDCARD := $(sagasd-c_OBJDIR)/% + + # Be sure that all source files are generated + $(sagasd-c_CXXTARGETS) $(sagasd-c_CXXDTARGETS) : | $(sagasd-c_MCXX_FILES) +endif + +# Adjust compiler flags to suit C++ +sagasd-c_MCXX_CPPFLAGS := $(sagasd-c_CPPFLAGS) +sagasd-c_CXXFLAGS := $(sagasd-c_CXXFLAGS) +ifeq ($(sagasd-c_DXXFLAGS),) + sagasd-c_DXXFLAGS := $(sagasd-c_CXXFLAGS) +else + sagasd-c_DXXFLAGS := $(sagasd-c_DXXFLAGS) +endif + +ifeq ($(findstring target,host kernel target),) + $(error unknown compiler target) +endif +ifeq (target,host) + sagasd-c_LINK ?= $(strip $(HOST_CXX) $(HOST_LDFLAGS)) + sagasd-c_STRIP ?= $(HOST_STRIP) + sagasd-c_ASSEMBLER ?= $(strip $(HOST_CC) $(HOST_SYSROOT)) + sagasd-c_CXXCMD:=$(HOST_CXX) + sagasd-c_MCXX_CPPFLAGS := $(strip $(HOST_MCXX_CPPFLAGS) $(sagasd-c_MCXX_CPPFLAGS) $(sagasd-c_MCXX_EXTRA_CPPFLAGS)) + sagasd-c_CXXFLAGS := $(strip $(HOST_CXXFLAGS) $(sagasd-c_CXXFLAGS)) + sagasd-c_DXXFLAGS := $(strip $(HOST_CXXFLAGS) $(sagasd-c_DXXFLAGS)) + sagasd-c_CXXIQUOTE:=$(HOST_IQUOTE) + sagasd-c_CXXIQUOTE_END:=$(HOST_IQUOTE_END) +endif +ifeq (target,target) + sagasd-c_LINK ?= $(strip $(AROS_CXX) $(TARGET_SYSROOT) $(TARGET_LDFLAGS)) + sagasd-c_STRIP ?= $(TARGET_STRIP) + sagasd-c_ASSEMBLER ?= $(strip $(TARGET_CC) $(TARGET_SYSROOT)) + sagasd-c_CXXCMD:=$(strip $(AROS_CXX) $(TARGET_SYSROOT)) + sagasd-c_MCXX_CPPFLAGS := $(strip $(sagasd-c_MCXX_CPPFLAGS) $(sagasd-c_MCXX_EXTRA_CPPFLAGS)) + sagasd-c_CXXFLAGS := $(strip $(sagasd-c_CXXFLAGS) $(SAFETY_CFLAGS)) + sagasd-c_DXXFLAGS := $(sagasd-c_DXXFLAGS) + sagasd-c_CXXIQUOTE:=$(CFLAGS_IQUOTE) + sagasd-c_CXXIQUOTE_END:=$(CFLAGS_IQUOTE_END) +endif +ifeq (target,kernel) + KERNEL_CXX ?= $(KERNEL_CC) + sagasd-c_LINK ?= $(strip $(KERNEL_CXX) $(KERNEL_SYSROOT) $(USER_LDFLAGS) $(KERNEL_LDFLAGS)) + sagasd-c_STRIP ?= $(ECHO) >/dev/null + sagasd-c_ASSEMBLER ?= $(strip $(KERNEL_CC) $(KERNEL_SYSROOT)) + sagasd-c_CXXCMD:=$(strip $(KERNEL_CXX) $(KERNEL_SYSROOT)) + sagasd-c_CXXFLAGS := $(strip $(KERNEL_MCXX_CPPFLAGS) $(sagasd-c_MCXX_CPPFLAGS) $(sagasd-c_MCXX_EXTRA_CPPFLAGS)) + sagasd-c_CXXFLAGS := $(strip $(KERNEL_CXXFLAGS) $(sagasd-c_CXXFLAGS)) + sagasd-c_DXXFLAGS := $(strip $(KERNEL_CXXFLAGS) $(sagasd-c_DXXFLAGS)) + sagasd-c_CXXIQUOTE:=$(KERNEL_IQUOTE) + sagasd-c_CXXIQUOTE_END:=$(KERNEL_IQUOTE_END) +endif + +define cxx_multi_recipe_template + $(1).o : $(2) + $(Q)$(ECHO) "Compiling $(if $(filter /%,$(2)),$(if $(filter $(SRCDIR)/%,$(abspath $(2))),$(patsubst $(SRCDIR)/%,%,$(abspath $(2))),$(patsubst $(TOP)/%,%,$(abspath $(2)))),$(patsubst $(SRCDIR)/%,%,$(abspath $(SRCDIR)/$(CURDIR)/$(2))))" + $(Q)$(IF) $(sagasd-c_CXXCMD) $(sagasd-c_CXXIQUOTE) $(dir $(2)) $(sagasd-c_CXXIQUOTE) $(SRCDIR)/$(CURDIR) $(sagasd-c_CXXIQUOTE) . $(sagasd-c_CXXIQUOTE_END) $(strip $(sagasd-c_CXXFLAGS) $(sagasd-c_MCXX_CPPFLAGS)) -D__SRCFILENAME__="\"$(subst $(TOP)/,,$(subst $(SRCDIR)/,,$(abspath $(2))))"\" -c $(2) -o $(1).o > $(GENDIR)/cerrors 2>&1 ; then \ + $(IF) $(TEST) -s $(GENDIR)/cerrors ; then \ + $(ECHO) "$(2): $(sagasd-c_CXXCMD) $(sagasd-c_CXXIQUOTE) $(dir $(2)) $(sagasd-c_CXXIQUOTE) $(SRCDIR)/$(CURDIR) $(sagasd-c_CXXIQUOTE) . $(sagasd-c_CXXIQUOTE_END) $(strip $(sagasd-c_CXXFLAGS) $(sagasd-c_MCXX_CPPFLAGS)) -D__SRCFILENAME__=\"$(subst $(TOP)/,,$(subst $(SRCDIR)/,,$(abspath $(2))))\" -c $(2) -o $(1).o" >> $(GENDIR)/errors ; \ + tee < $(GENDIR)/cerrors -a $(GENDIR)/errors ; \ + else \ + $(NOP) ; \ + fi ; \ + else \ + $(ECHO) "Compile failed: $(sagasd-c_CXXCMD) $(sagasd-c_CXXIQUOTE) $(dir $(2)) $(sagasd-c_CXXIQUOTE) $(SRCDIR)/$(CURDIR) $(sagasd-c_CXXIQUOTE) . $(sagasd-c_CXXIQUOTE_END) $(strip $(sagasd-c_CXXFLAGS) $(sagasd-c_MCXX_CPPFLAGS)) -D__SRCFILENAME__=\"$(subst $(TOP)/,,$(subst $(SRCDIR)/,,$(abspath $(2))))\" -c $(2) -o $(1).o" 1>&2 ; \ + tee < $(GENDIR)/cerrors -a $(GENDIR)/errors 1>&2 ; \ + exit 1 ; \ + fi + + $(1).d : $(2) + $(Q)$(IF) $(TEST) ! -d $(dir $(1).d) ; then $(MKDIR) $(dir $(1).d) ; else $(NOP) ; fi + $(Q)$(ECHO) "Makedepend $(if $(filter /%,$(2)),$(if $(filter $(SRCDIR)/%,$(abspath $(2))),$(patsubst $(SRCDIR)/%,%,$(abspath $(2))),$(patsubst $(TOP)/%,%,$(abspath $(2)))),$(patsubst $(SRCDIR)/%,%,$(abspath $(SRCDIR)/$(CURDIR)/$(2))))..." + $(Q)AROS_CC="$(sagasd-c_CXXCMD)" $(MKDEPEND) $(strip $(sagasd-c_DXXFLAGS) $(sagasd-c_MCXX_CPPFLAGS)) -I$(TOP)/$(CURDIR) -I$(SRCDIR)/$(CURDIR) $(2) -o $(1).d +endef +ifeq ($(sagasd-c_OBJDIR),) + $(foreach sagasd-c_CXXFILE,$(sagasd-c_MCXX_FILES),$(eval $(call cxx_multi_recipe_template,$(notdir $(basename $(sagasd-c_CXXFILE))),$(sagasd-c_CXXFILE)))) +else + $(foreach sagasd-c_CXXFILE,$(sagasd-c_MCXX_FILES),$(eval $(call cxx_multi_recipe_template,$(addprefix $(sagasd-c_OBJDIR)/,$(notdir $(basename $(sagasd-c_CXXFILE)))),$(sagasd-c_CXXFILE)))) +endif + +endif + + +ifneq ($(sagasd-c_OBJC_NARCHFILES),) + +ifeq (,) +sagasd-c_MOBJC_SRCWILDCARD := % +else +sagasd-c_MOBJC_SRCWILDCARD := /% +endif + +ifeq ($(sagasd-c_OBJDIR),) + sagasd-c_MOBJC_TARGETS := $(addsuffix .o,$(sagasd-c_OBJC_NARCHFILES)) + sagasd-c_MOBJC_DTARGETS := $(addsuffix .d,$(sagasd-c_OBJC_NARCHFILES)) + sagasd-c_MOBJC_WILDCARD := % +else + sagasd-c_MOBJC_TARGETS := $(addsuffix .o,$(addprefix $(sagasd-c_OBJDIR)/,$(sagasd-c_OBJC_NARCHFILES))) + sagasd-c_MOBJC_DTARGETS := $(addsuffix .d,$(addprefix $(sagasd-c_OBJDIR)/,$(sagasd-c_OBJC_NARCHFILES))) + sagasd-c_MOBJC_WILDCARD := $(sagasd-c_OBJDIR)/% + + # Be sure that all .m files are generated + $(sagasd-c_MOBJC_TARGETS) $(sagasd-c_MOBJC_DTARGETS) : | $(addsuffix .m,$(sagasd-c_OBJC_NARCHFILES)) + + # Be sure that all .m files are found + sagasd-c_MOBJC_SRCDIR := $(shell echo $(SRCDIR) | sed 's/^\(.\):\//\/\1\//') + sagasd-c_MOBJC_BASEDIRS := $(shell echo $(sort $(dir $(sagasd-c_OBJC_NARCHFILES))) | sed 's/\(.\):\//\/\1\//g') + sagasd-c_MOBJC_DIRS := $(foreach dir, $(sagasd-c_MOBJC_BASEDIRS), $(if $(filter /%,$(dir)),$(dir),$(sagasd-c_MOBJC_SRCDIR)/$(CURDIR)/$(dir))) + ifneq ($(sagasd-c_MOBJC_DIRS),) + sagasd-c_MOBJC_DIRS := $(shell echo $(sagasd-c_MOBJC_DIRS) | sed 's/\(.\):\//\/\1\//g') + vpath %.m $(sagasd-c_MOBJC_DIRS) + endif +endif + +# Define the use of cross compiler +ifeq ($(TARGET_OBJC),) + sagasd-c_CC := $(TARGET_CC) +else + sagasd-c_CC := $(TARGET_OBJC) +endif + +# Adjust compiler flags to suit ObjC +sagasd-c_MOBJC_CPPFLAGS := $(sagasd-c_CPPFLAGS) +sagasd-c_OBJCFLAGS := $(sagasd-c_CFLAGS) +sagasd-c_OBJCFLAGS := $(sagasd-c_OBJCFLAGS) -isystem $(AROS_DEVELOPER)/include +sagasd-c_OBJCFLAGS := $(subst -Wno-pointer-sign,, $(subst -Werror-implicit-function-declaration,, $(sagasd-c_OBJCFLAGS))) +ifeq ($(sagasd-c_DFLAGS),) + sagasd-c_OBJCDFLAGS := $(sagasd-c_CFLAGS) +else + sagasd-c_OBJCDFLAGS := $(sagasd-c_DFLAGS) +endif + +ifeq ($(findstring target,host kernel target),) + $(error unknown compiler target) +endif +ifeq (target,target) + sagasd-c_LINK ?= $(strip $(sagasd-c_CC) $(TARGET_SYSROOT) $(TARGET_LDFLAGS)) + sagasd-c_STRIP ?= $(TARGET_STRIP) + sagasd-c_ASSEMBLER ?= $(strip $(TARGET_CC) $(TARGET_SYSROOT)) + $(sagasd-c_MOBJC_TARGETS) $(sagasd-c_MOBJC_DTARGETS) : CMD:=$(strip $(sagasd-c_CC) $(TARGET_SYSROOT)) + $(sagasd-c_MOBJC_TARGETS) $(sagasd-c_MOBJC_DTARGETS) : sagasd-c_MOBJC_CPPFLAGS:=$(strip $(sagasd-c_MOBJC_CPPFLAGS) $(sagasd-c_MOBJC_EXTRA_CPPFLAGS)) + $(sagasd-c_MOBJC_TARGETS) $(sagasd-c_MOBJC_DTARGETS) : sagasd-c_OBJCFLAGS:=$(strip $(sagasd-c_OBJCFLAGS) $(SAFETY_CFLAGS)) + $(sagasd-c_MOBJC_TARGETS) $(sagasd-c_MOBJC_DTARGETS) : sagasd-c_OBJCDFLAGS:=$(sagasd-c_OBJCDFLAGS) + $(sagasd-c_MOBJC_TARGETS) $(sagasd-c_MOBJC_DTARGETS) : sagasd-c_IQUOTE:=$(CFLAGS_IQUOTE) + $(sagasd-c_MOBJC_TARGETS) $(sagasd-c_MOBJC_DTARGETS) : sagasd-c_IQUOTE_END:=$(CFLAGS_IQUOTE_END) +endif +ifeq (target,host) + sagasd-c_LINK ?= $(strip $(HOST_OBJC) $(HOST_LDFLAGS)) + sagasd-c_STRIP ?= $(HOST_STRIP) + sagasd-c_ASSEMBLER ?= $(strip $(HOST_CC) $(HOST_SYSROOT)) + $(sagasd-c_MOBJC_TARGETS) $(sagasd-c_MOBJC_DTARGETS) : CMD:=$(HOST_OBJC) + $(sagasd-c_MOBJC_TARGETS) $(sagasd-c_MOBJC_DTARGETS) : sagasd-c_MOBJC_CPPFLAGS:=$(strip $(HOST_MOBJC_CPPFLAGS) $(sagasd-c_MOBJC_CPPFLAGS) $(sagasd-c_MOBJC_EXTRA_CPPFLAGS)) + $(sagasd-c_MOBJC_TARGETS) $(sagasd-c_MOBJC_DTARGETS) : sagasd-c_OBJCFLAGS:=$(strip $(HOST_CFLAGS) $(sagasd-c_OBJCFLAGS)) + $(sagasd-c_MOBJC_TARGETS) $(sagasd-c_MOBJC_DTARGETS) : sagasd-c_OBJCDFLAGS:=$(strip $(HOST_CFLAGS) $(sagasd-c_OBJCDFLAGS)) + $(sagasd-c_MOBJC_TARGETS) $(sagasd-c_MOBJC_DTARGETS) : sagasd-c_IQUOTE:=$(HOST_IQUOTE) + $(sagasd-c_MOBJC_TARGETS) $(sagasd-c_MOBJC_DTARGETS) : sagasd-c_IQUOTE_END:=$(HOST_IQUOTE_END) +endif +ifeq (target,kernel) + KERNEL_OBJC ?= $(KERNEL_CC) + sagasd-c_LINK ?= $(strip $(KERNEL_OBJC) $(KERNEL_SYSROOT) $(USER_LDFLAGS) $(KERNEL_LDFLAGS)) + sagasd-c_STRIP ?= $(ECHO) >/dev/null + sagasd-c_ASSEMBLER ?= $(strip $(KERNEL_CC) $(KERNEL_SYSROOT)) + $(sagasd-c_MOBJC_TARGETS) $(sagasd-c_MOBJC_DTARGETS) : CMD:=$(strip $(KERNEL_OBJC) $(KERNEL_SYSROOT)) + $(sagasd-c_MOBJC_TARGETS) $(sagasd-c_MOBJC_DTARGETS) : sagasd-c_MOBJC_CPPFLAGS:=$(strip $(KERNEL_MOBJC_CPPFLAGS) $(sagasd-c_MOBJC_CPPFLAGS) $(sagasd-c_MOBJC_EXTRA_CPPFLAGS)) + $(sagasd-c_MOBJC_TARGETS) $(sagasd-c_MOBJC_DTARGETS) : sagasd-c_OBJCFLAGS:=$(strip $(KERNEL_ISA_CFLAGS) $(KERNEL_CFLAGS) $(sagasd-c_OBJCFLAGS)) + $(sagasd-c_MOBJC_TARGETS) $(sagasd-c_MOBJC_DTARGETS) : sagasd-c_OBJCDFLAGS:=$(strip $(KERNEL_ISA_CFLAGS) $(KERNEL_CFLAGS) $(sagasd-c_OBJCDFLAGS)) + $(sagasd-c_MOBJC_TARGETS) $(sagasd-c_MOBJC_DTARGETS) : sagasd-c_IQUOTE:=$(KERNEL_IQUOTE) + $(sagasd-c_MOBJC_TARGETS) $(sagasd-c_MOBJC_DTARGETS) : sagasd-c_IQUOTE_END:=$(KERNEL_IQUOTE_END) +endif + +$(sagasd-c_MOBJC_TARGETS) : CPPFLAGS := $(sagasd-c_MOBJC_CPPFLAGS) +$(sagasd-c_MOBJC_TARGETS) : CFLAGS := $(sagasd-c_OBJCFLAGS) +$(sagasd-c_MOBJC_TARGETS) : $(sagasd-c_MOBJC_WILDCARD).o : $(sagasd-c_MOBJC_SRCWILDCARD).m + $(Q)$(ECHO) "Compiling $(if $(filter /%,$<),$(if $(filter $(SRCDIR)/%,$(abspath $<)),$(patsubst $(SRCDIR)/%,%,$(abspath $<)),$(patsubst $(TOP)/%,%,$(abspath $<))),$(patsubst $(SRCDIR)/%,%,$(abspath $(SRCDIR)/$(CURDIR)/$<)))" + $(Q)$(IF) $(CMD) $(sagasd-c_IQUOTE) $(dir $<) $(sagasd-c_IQUOTE) $(SRCDIR)/$(CURDIR) $(sagasd-c_IQUOTE) . $(sagasd-c_IQUOTE_END) $(strip $(CFLAGS) $(CPPFLAGS)) -D__SRCFILENAME__="\"$(subst $(TOP)/,,$(subst $(SRCDIR)/,,$(abspath $<)))"\" -c $< -o $@ > $(GENDIR)/cerrors 2>&1 ; then \ + $(IF) $(TEST) -s $(GENDIR)/cerrors ; then \ + $(ECHO) "$<: $(CMD) $(sagasd-c_IQUOTE) $(dir $<) $(sagasd-c_IQUOTE) $(SRCDIR)/$(CURDIR) $(sagasd-c_IQUOTE) . $(sagasd-c_IQUOTE_END) $(strip $(CFLAGS) $(CPPFLAGS)) -D__SRCFILENAME__=\"$(subst $(TOP)/,,$(subst $(SRCDIR)/,,$(abspath $<)))\" -c $< -o $@" >> $(GENDIR)/errors ; \ + tee < $(GENDIR)/cerrors -a $(GENDIR)/errors ; \ + else \ + $(NOP) ; \ + fi ; \ + else \ + $(ECHO) "Compile failed: $(CMD) $(sagasd-c_IQUOTE) $(dir $<) $(sagasd-c_IQUOTE) $(SRCDIR)/$(CURDIR) $(sagasd-c_IQUOTE) . $(sagasd-c_IQUOTE_END) $(strip $(CFLAGS) $(CPPFLAGS)) -D__SRCFILENAME__=\"$(subst $(TOP)/,,$(subst $(SRCDIR)/,,$(abspath $<)))\" -c $< -o $@" 1>&2 ; \ + tee < $(GENDIR)/cerrors -a $(GENDIR)/errors 1>&2 ; \ + exit 1 ; \ + fi + +$(sagasd-c_MOBJC_DTARGETS) : $(sagasd-c_MOBJC_WILDCARD).d : $(sagasd-c_MOBJC_SRCWILDCARD).m + $(Q)$(IF) $(TEST) ! -d $(dir $@) ; then $(MKDIR) $(dir $@) ; else $(NOP) ; fi + $(Q)$(ECHO) "Makedepend $(if $(filter /%,$<),$(if $(filter $(SRCDIR)/%,$(abspath $<)),$(patsubst $(SRCDIR)/%,%,$(abspath $<)),$(patsubst $(TOP)/%,%,$(abspath $<))),$(patsubst $(SRCDIR)/%,%,$(abspath $(SRCDIR)/$(CURDIR)/$<)))..." + $(Q)AROS_CC="$(CMD)" $(MKDEPEND) $(strip $(sagasd-c_OBJCDFLAGS) $(sagasd-c_MOBJC_CPPFLAGS)) -I$(TOP)/$(CURDIR) -I$(SRCDIR)/$(CURDIR) $< -o $@ + +endif + + +ifeq (,) +sagasd-c_MC_SRCWILDCARD := % +else +sagasd-c_MC_SRCWILDCARD := /% +endif + +ifeq ($(sagasd-c_OBJDIR),) +sagasd-c_MC_TARGETS := $(addsuffix .o,$(sagasd-c_C_NARCHFILES)) +sagasd-c_MC_DTARGETS := $(addsuffix .d,$(sagasd-c_C_NARCHFILES)) +sagasd-c_MC_TGTWILDCARD := % +else +ifeq (no,no) + sagasd-c_MC_TARGETS := $(addsuffix .o,$(addprefix $(sagasd-c_OBJDIR)/,$(notdir $(sagasd-c_C_NARCHFILES)))) + sagasd-c_MC_DTARGETS := $(addsuffix .d,$(addprefix $(sagasd-c_OBJDIR)/,$(notdir $(sagasd-c_C_NARCHFILES)))) +else +ifeq (,) + sagasd-c_MC_TARGETS := $(addsuffix .o,$(addprefix $(sagasd-c_OBJDIR)/,$(sagasd-c_C_NARCHFILES))) + sagasd-c_MC_DTARGETS := $(addsuffix .d,$(addprefix $(sagasd-c_OBJDIR)/,$(sagasd-c_C_NARCHFILES))) +else + sagasd-c_MC_TARGETS := $(addsuffix .o,$(addprefix $(sagasd-c_OBJDIR)/,$(patsubst /%,%,$(sagasd-c_C_NARCHFILES)))) + sagasd-c_MC_DTARGETS := $(addsuffix .d,$(addprefix $(sagasd-c_OBJDIR)/,$(patsubst /%,%,$(sagasd-c_C_NARCHFILES)))) +endif +endif +sagasd-c_MC_TGTWILDCARD := $(sagasd-c_OBJDIR)/% + +# Be sure that all .c files are generated +$(sagasd-c_MC_TARGETS) $(sagasd-c_MC_DTARGETS) : | $(addsuffix .c,$(sagasd-c_C_NARCHFILES)) + +# Be sure that all .c files are found +sagasd-c_MC_SRCDIR := $(shell echo $(SRCDIR) | sed 's/^\(.\):\//\/\1\//') +sagasd-c_MC_BASEDIRS := $(shell echo $(sort $(dir $(sagasd-c_C_NARCHFILES))) | sed 's/\(.\):\//\/\1\//g') +sagasd-c_MC_DIRS := $(foreach dir, $(sagasd-c_MC_BASEDIRS), $(if $(filter /%,$(dir)),$(dir),$(sagasd-c_MC_SRCDIR)/$(CURDIR)/$(dir))) +ifneq ($(sagasd-c_MC_DIRS),) + sagasd-c_MC_DIRS := $(shell echo $(sagasd-c_MC_DIRS) | sed 's/\(.\):\//\/\1\//g') + vpath %.c $(sagasd-c_MC_DIRS) +endif + +endif + +sagasd-c_MC_CPPFLAGS := $(sagasd-c_CPPFLAGS) +sagasd-c_CFLAGS := $(sagasd-c_CFLAGS) +ifeq ($(sagasd-c_DFLAGS),) + sagasd-c_DFLAGS := $(sagasd-c_CFLAGS) +else + sagasd-c_DFLAGS := $(sagasd-c_DFLAGS) +endif + +ifeq ($(findstring target,host kernel target),) + $(error unknown compiler target) +endif +ifeq (target,target) +sagasd-c_LINK ?= $(strip $(TARGET_CC) $(TARGET_SYSROOT) $(TARGET_LDFLAGS)) +sagasd-c_STRIP ?= $(TARGET_STRIP) +sagasd-c_ASSEMBLER ?= $(strip $(TARGET_CC) $(TARGET_SYSROOT)) +$(sagasd-c_MC_TARGETS) $(sagasd-c_MC_DTARGETS) : CMD:=$(strip $(TARGET_CC) $(TARGET_SYSROOT)) +$(sagasd-c_MC_TARGETS) $(sagasd-c_MC_DTARGETS) : sagasd-c_MC_CPPFLAGS:=$(strip $(sagasd-c_MC_CPPFLAGS) $(sagasd-c_MC_EXTRA_CPPFLAGS)) +$(sagasd-c_MC_TARGETS) $(sagasd-c_MC_DTARGETS) : sagasd-c_CFLAGS:=$(strip $(sagasd-c_CFLAGS) $(SAFETY_CFLAGS)) +$(sagasd-c_MC_TARGETS) $(sagasd-c_MC_DTARGETS) : sagasd-c_DFLAGS:=$(sagasd-c_DFLAGS) +$(sagasd-c_MC_TARGETS) $(sagasd-c_MC_DTARGETS) : sagasd-c_IQUOTE:=$(CFLAGS_IQUOTE) +$(sagasd-c_MC_TARGETS) $(sagasd-c_MC_DTARGETS) : sagasd-c_IQUOTE_END:=$(CFLAGS_IQUOTE_END) +endif +ifeq (target,host) +sagasd-c_LINK ?= $(strip $(HOST_CC) $(HOST_LDFLAGS)) +sagasd-c_STRIP ?= $(HOST_STRIP) +sagasd-c_ASSEMBLER ?= $(strip $HOST_CC) $(HOST_SYSROOT)) +$(sagasd-c_MC_TARGETS) $(sagasd-c_MC_DTARGETS) : CMD:=$(HOST_CC) +$(sagasd-c_MC_TARGETS) $(sagasd-c_MC_DTARGETS) : sagasd-c_MC_CPPFLAGS:=$(strip $(HOST_MC_CPPFLAGS) $(sagasd-c_MC_CPPFLAGS) $(sagasd-c_MC_EXTRA_CPPFLAGS)) +$(sagasd-c_MC_TARGETS) $(sagasd-c_MC_DTARGETS) : sagasd-c_CFLAGS:=$(strip $(HOST_CFLAGS) $(sagasd-c_CFLAGS)) +$(sagasd-c_MC_TARGETS) $(sagasd-c_MC_DTARGETS) : sagasd-c_DFLAGS:=$(strip $(HOST_CFLAGS) $(sagasd-c_DFLAGS)) +$(sagasd-c_MC_TARGETS) $(sagasd-c_MC_DTARGETS) : sagasd-c_IQUOTE:=$(HOST_IQUOTE) +$(sagasd-c_MC_TARGETS) $(sagasd-c_MC_DTARGETS) : sagasd-c_IQUOTE_END:=$(HOST_IQUOTE_END) +endif +ifeq (target,kernel) +sagasd-c_LINK ?= $(strip $(KERNEL_CC) $(KERNEL_SYSROOT) $(USER_LDFLAGS) $(KERNEL_LDFLAGS)) +sagasd-c_STRIP ?= $(ECHO) >/dev/null +sagasd-c_ASSEMBLER ?= $(strip $(KERNEL_CC) $(KERNEL_SYSROOT)) +$(sagasd-c_MC_TARGETS) $(sagasd-c_MC_DTARGETS) : CMD:=$(strip $(KERNEL_CC) $(KERNEL_SYSROOT)) +$(sagasd-c_MC_TARGETS) $(sagasd-c_MC_DTARGETS) : sagasd-c_MC_CPPFLAGS:=$(strip $(KERNEL_MC_CPPFLAGS) $(sagasd-c_MC_CPPFLAGS) $(sagasd-c_MC_EXTRA_CPPFLAGS)) +$(sagasd-c_MC_TARGETS) $(sagasd-c_MC_DTARGETS) : sagasd-c_CFLAGS:=$(strip $(KERNEL_ISA_CFLAGS) $(KERNEL_CFLAGS) $(sagasd-c_CFLAGS)) +$(sagasd-c_MC_TARGETS) $(sagasd-c_MC_DTARGETS) : sagasd-c_DFLAGS:=$(strip $(KERNEL_ISA_CFLAGS) $(KERNEL_CFLAGS) $(sagasd-c_DFLAGS)) +$(sagasd-c_MC_TARGETS) $(sagasd-c_MC_DTARGETS) : sagasd-c_IQUOTE:=$(KERNEL_IQUOTE) +$(sagasd-c_MC_TARGETS) $(sagasd-c_MC_DTARGETS) : sagasd-c_IQUOTE_END:=$(KERNEL_IQUOTE_END) +endif + +$(sagasd-c_MC_TARGETS) : CPPFLAGS := $(sagasd-c_MC_CPPFLAGS) +$(sagasd-c_MC_TARGETS) : CFLAGS := $(sagasd-c_CFLAGS) +$(sagasd-c_MC_TARGETS) : $(sagasd-c_MC_TGTWILDCARD).o : $(sagasd-c_MC_SRCWILDCARD).c + $(Q)$(ECHO) "Compiling $(if $(filter /%,$<),$(if $(filter $(SRCDIR)/%,$(abspath $<)),$(patsubst $(SRCDIR)/%,%,$(abspath $<)),$(patsubst $(TOP)/%,%,$(abspath $<))),$(patsubst $(SRCDIR)/%,%,$(abspath $(SRCDIR)/$(CURDIR)/$<)))" + $(Q)$(IF) $(CMD) $(sagasd-c_IQUOTE) $(dir $<) $(sagasd-c_IQUOTE) $(SRCDIR)/$(CURDIR) $(sagasd-c_IQUOTE) . $(sagasd-c_IQUOTE_END) $(strip $(CFLAGS) $(CPPFLAGS)) -D__SRCFILENAME__="\"$(subst $(TOP)/,,$(subst $(SRCDIR)/,,$(abspath $<)))"\" -c $< -o $@ > $(GENDIR)/cerrors 2>&1 ; then \ + $(IF) $(TEST) -s $(GENDIR)/cerrors ; then \ + $(ECHO) "$<: $(CMD) $(sagasd-c_IQUOTE) $(dir $<) $(sagasd-c_IQUOTE) $(SRCDIR)/$(CURDIR) $(sagasd-c_IQUOTE) . $(sagasd-c_IQUOTE_END) $(strip $(CFLAGS) $(CPPFLAGS)) -D__SRCFILENAME__=\"$(subst $(TOP)/,,$(subst $(SRCDIR)/,,$(abspath $<)))\" -c $< -o $@" >> $(GENDIR)/errors ; \ + tee < $(GENDIR)/cerrors -a $(GENDIR)/errors ; \ + else \ + $(NOP) ; \ + fi ; \ + else \ + $(ECHO) "Compile failed: $(CMD) $(sagasd-c_IQUOTE) $(dir $<) $(sagasd-c_IQUOTE) $(SRCDIR)/$(CURDIR) $(sagasd-c_IQUOTE) . $(sagasd-c_IQUOTE_END) $(strip $(CFLAGS) $(CPPFLAGS)) -D__SRCFILENAME__=\"$(subst $(TOP)/,,$(subst $(SRCDIR)/,,$(abspath $<)))\" -c $< -o $@" 1>&2 ; \ + tee < $(GENDIR)/cerrors -a $(GENDIR)/errors 1>&2 ; \ + exit 1 ; \ + fi + +$(sagasd-c_MC_DTARGETS) : $(sagasd-c_MC_TGTWILDCARD).d : $(sagasd-c_MC_SRCWILDCARD).c + $(Q)$(IF) $(TEST) ! -d $(dir $@) ; then $(MKDIR) $(dir $@) ; else $(NOP) ; fi + $(Q)$(ECHO) "Makedepend $(if $(filter /%,$<),$(if $(filter $(SRCDIR)/%,$(abspath $<)),$(patsubst $(SRCDIR)/%,%,$(abspath $<)),$(patsubst $(TOP)/%,%,$(abspath $<))),$(patsubst $(SRCDIR)/%,%,$(abspath $(SRCDIR)/$(CURDIR)/$<)))..." + $(Q)AROS_CC="$(CMD)" $(MKDEPEND) $(strip $(sagasd-c_DFLAGS) $(sagasd-c_MC_CPPFLAGS)) -I$(TOP)/$(CURDIR) -I$(SRCDIR)/$(CURDIR) $< -o $@ + +ifeq ($(sagasd-c_OBJDIR),) +sagasd-c-MA_TARGETS := $(addsuffix .o,$(sagasd-c_ASMFILES)) +sagasd-c-MA_WILDCARD := % +else +sagasd-c-MA_TARGETS := $(addsuffix .o,$(addprefix $(sagasd-c_OBJDIR)/,$(notdir $(sagasd-c_ASMFILES)))) +sagasd-c-MA_WILDCARD := $(sagasd-c_OBJDIR)/% + +# Be sure that all .s files are generated +$(sagasd-c-MA_TARGETS) : | $(addsuffix .s,$(sagasd-c_ASMFILES)) + +# Be sure that all .c files are found +sagasd-c-MA_SRCDIR := $(shell echo $(SRCDIR) | sed 's/^\(.\):\//\/\1\//') +sagasd-c-MA_BASEDIRS := $(shell echo $(sort $(dir $(sagasd-c_ASMFILES))) | sed 's/\(.\):\//\/\1\//g') +sagasd-c-MA_DIRS := $(foreach dir, $(sagasd-c-MA_BASEDIRS), $(if $(filter /%,$(dir)),$(dir),$(sagasd-c-MA_SRCDIR)/$(CURDIR)/$(dir))) +ifneq ($(sagasd-c-MA_DIRS),) + sagasd-c-MA_DIRS := $(shell echo $(sagasd-c-MA_DIRS) | sed 's/\(.\):\//\/\1\//g') + vpath %.s $(sagasd-c-MA_DIRS) +endif + +endif + +sagasd-c-MA_ASSEMBLER ?= $(sagasd-c_ASSEMBLER) + +$(sagasd-c-MA_TARGETS) : sagasd-c-MA_CMD:= $(sagasd-c-MA_ASSEMBLER) + +$(sagasd-c-MA_TARGETS) : CPPFLAGS := $(sagasd-c_CPPFLAGS) +$(sagasd-c-MA_TARGETS) : AFLAGS := $(sagasd-c_AFLAGS) +$(sagasd-c-MA_TARGETS) : $(sagasd-c-MA_WILDCARD).o : %.s + $(Q)$(ECHO) "Assembling $(notdir $<)..." + $(Q)$(IF) $(sagasd-c-MA_CMD) $(strip $(AFLAGS) $(CPPFLAGS)) $< -o $@ > $(GENDIR)/cerrors 2>&1 ; then \ + $(IF) $(TEST) -s $(GENDIR)/cerrors ; then \ + $(ECHO) "$(notdir $<): $(sagasd-c-MA_CMD) $(strip $(AFLAGS) $(CPPFLAGS)) $< -o $@" >> $(GENDIR)/errors ; \ + $(CAT) $(GENDIR)/cerrors >> $(GENDIR)/errors ; \ + else \ + $(NOP) ; \ + fi ; \ + else \ + $(ECHO) "Assemble failed: $(sagasd-c-MA_CMD) $(strip $(AFLAGS) $(CPPFLAGS)) $< -o $@" 1>&2 ; \ + tee < $(GENDIR)/cerrors -a $(GENDIR)/errors 1>&2 ; \ + exit 1 ; \ + fi + + +sagasd-c-link_EXTRA_LDFLAGS := +sagasd-c-link_EXTRA_LIBS := +ifeq (no,yes) + sagasd-c-link_EXTRA_LDFLAGS += $(NIX_LDFLAGS) +endif +ifeq (no,no) + sagasd-c-link_EXTRA_LDFLAGS += $(NOSTARTUP_LDFLAGS) +endif +ifeq (no,yes) + sagasd-c-link_EXTRA_LDFLAGS += $(DETACH_LDFLAGS) +endif + +# Make a list of the lib files this program depends on. +# In LDFLAGS remove white space between -L and directory +sagasd-c-link_DIRS := $(subst -L ,-L,$(strip $(sagasd-c_LDFLAGS))) +# Filter out only the libdirs and remove -L +sagasd-c-link_DIRS := $(patsubst -L%,%,$(filter -L%,$(sagasd-c-link_DIRS))) +# Add trailing / +sagasd-c-link_DIRS := $(subst //,/,$(addsuffix /,$(sagasd-c-link_DIRS))) +# Add normal linklib path +sagasd-c-link_DIRS += $(AROS_LIB)/ +# add lib and .a to static linklib names +sagasd-c-link_LIBS := $(addprefix lib,$(addsuffix .a,$(sagasd-c_LIBS) $(sagasd-c-link_EXTRA_LIBS))) +ifeq (no,yes) + sagasd-c-link_LIBS += startup.o +endif +ifeq (no,yes) + sagasd-c-link_LIBS += detach.o +endif +# search for the linklibs in the given path, ignore ones not found +sagasd-c-link_DEPLIBS := $(foreach lib,$(sagasd-c-link_LIBS), \ + $(firstword $(wildcard $(addsuffix $(lib),$(sagasd-c-link_DIRS)))) \ +) + +$(sagasd-c_TARGETDIR)/$(sagasd-c_PROGNAME) : OBJDIR := $(sagasd-c_OBJDIR) +$(sagasd-c_TARGETDIR)/$(sagasd-c_PROGNAME) : OBJS := $(sagasd-c_OBJS) $(sagasd-c_ARCHOBJS) $(USER_OBJS) +$(sagasd-c_TARGETDIR)/$(sagasd-c_PROGNAME) : LDFLAGS := $(strip $(sagasd-c_LDFLAGS) $(sagasd-c-link_EXTRA_LDFLAGS)) +$(sagasd-c_TARGETDIR)/$(sagasd-c_PROGNAME) : LIBS := $(addprefix -l,$(sagasd-c_LIBS) $(sagasd-c-link_EXTRA_LIBS) ) +$(sagasd-c_TARGETDIR)/$(sagasd-c_PROGNAME) : $(sagasd-c_OBJS) $(sagasd-c_ARCHOBJS) $(USER_OBJS) $(sagasd-c-link_DEPLIBS) + $(Q)$(eval LINKTARGET=$@) + $(Q)$(ECHO) "Linking $(subst $(TARGETDIR)/,,$(LINKTARGET))..." + $(Q)$(eval LINKTMPFILE=$(OBJDIR)/$(notdir $(LINKTARGET))) + $(Q)$(IF) $(sagasd-c_LINK) $(OBJS) -o $(LINKTMPFILE) $(LDFLAGS) $(LIBS) 2>&1 > $(GENDIR)/cerrors 2>&1 ; then \ + $(IF) $(TEST) -s $(GENDIR)/cerrors ; then \ + $(ECHO) "$(LINKTARGET): $(sagasd-c_LINK) $(OBJS) -o $(LINKTARGET) $(LDFLAGS) $(LIBS)" >> $(GENDIR)/errors ; \ + $(CAT) $(GENDIR)/cerrors >> $(GENDIR)/errors ; \ + else \ + $(NOP) ; \ + fi ; \ + $(CP) $(LINKTMPFILE) $(LINKTARGET) ; \ + else \ + $(ECHO) "Link failed: $(sagasd-c_LINK) $(OBJS) -o $(LINKTARGET) $(LDFLAGS) $(LIBS)" 1>&2 ; \ + tee < $(GENDIR)/cerrors -a $(GENDIR)/errors 1>&2 ; \ + exit 1 ; \ + fi + $(Q)$(IF) $(TEST) "$(sagasd-c_STRIP)" != ""; then \ + $(IF) $(TEST) "$(DEBUG)" = "yes"; then \ + $(sagasd-c_STRIP) $(LINKTARGET) --only-keep-debug -o $(LINKTARGET).dbg ; \ + fi ; \ + $(sagasd-c_STRIP) $(LINKTARGET) ; \ + $(IF) $(TEST) "$(DEBUG)" = "yes"; then \ + $(IF) $(TEST) -s $(LINKTARGET).dbg ; then \ + $(OBJCOPY) --add-gnu-debuglink=$(LINKTARGET).dbg $(LINKTARGET) ; \ + fi ; \ + fi ; \ + fi + $(Q)$(IF) $(TEST) "$(sagasd-c_COVERAGE)" = "yes"; then \ + LINKBASEFILES="$(strip $(notdir $(basename $(OBJS))))" ; \ + $(FOR) covext in $(TARGET_COVERAGEINSTR_EXTS) ; do \ + $(FOR) file in $$LINKBASEFILES ; do \ + COVERAGEFILE=`echo $$file$$covext` ; \ + $(IF) $(TEST) -s $(OBJDIR)/$$COVERAGEFILE ; then \ + $(CP) $(OBJDIR)/$$COVERAGEFILE $(dir $(LINKTARGET))$$COVERAGEFILE ; \ + fi ; \ + done ; \ + done ; \ + fi + +endif + +ifneq ($(sagasd-c_DEPS),) + ifneq (sagasd-c sagasd-c-quick,) + ifneq ($(findstring $(TARGET),sagasd-c sagasd-c-quick),) + -include $(sagasd-c_DEPS) + endif + else + ifeq (,$(filter clean% %clean %clean% setup% includes% %setup,$(TARGET))) + -include $(sagasd-c_DEPS) + endif + endif +endif + + +ifneq ($(sagasd-c_OBJS) $(sagasd-c_DEPS) $(sagasd-c_TARGETDIR)/$(sagasd-c_PROGNAME),) +$(sagasd-c_OBJS) $(sagasd-c_DEPS) $(sagasd-c_TARGETDIR)/$(sagasd-c_PROGNAME) : | $(sagasd-c_OBJDIR) $(sagasd-c_TARGETDIR) +else +$(sagasd-c_OBJS) $(sagasd-c_DEPS) $(sagasd-c_TARGETDIR)/$(sagasd-c_PROGNAME) :: $(sagasd-c_OBJDIR) $(sagasd-c_TARGETDIR) +endif + +GLOB_MKDIRS += $(sagasd-c_OBJDIR) $(sagasd-c_TARGETDIR) + + +sagasd-c-clean : FILES := $(sagasd-c_OBJS) $(sagasd-c_TARGETDIR)/$(sagasd-c_PROGNAME) $(sagasd-c_DEPS) +#MM +sagasd-c-clean :: + $(Q)$(ECHO) "Cleaning up for metatarget sagasd-c" + $(Q)$(RM) $(FILES) + + + + +# We will employ a terrifying, but unavoidable, hack here. +# genmf has no concept of conditionals (ie %ifeq), and MetaMake +# ignores GNU Make ifeq() statements, but will process any #MM +# headed lines in the file. +# +# So, to make the following #MM lines conditional on whether we want +# to build the ABI, Library, or both, we define build_abi= and +# build_library as 'M' to enable, or '' to disable, which allows genmf +# to do the following conversions: +# +# #MM includes-foo: foo-include +# becomes, when build_abi=M +# #MM includes-foo: foo-include <= Processed by MetaMake +# but, when build_abi= ... +# #M includes-foo: foo-includes <= ignored by MetaMake! Yes! +# +# Taking full blame for this: Jason S. McMullan + +# Define metamake targets and their dependencies +#MM kernel-sagasd-device +#MM kernel-sagasd-device-quick +#MM kernel-sagasd-device-makefile +#MM kernel-sagasd-device-clean + +# ABI targets: +#MM- includes-all : kernel-sagasd-device-includes +#MM- linklibs-sagasd: kernel-sagasd-device-linklib +#MM- linklibs-sagasd_rel : kernel-sagasd-device-linklib +#MM- includes-sagasd: kernel-sagasd-device-includes +#MM- includes-sagasd_rel : kernel-sagasd-device-includes +#MM- kernel-sagasd-device : kernel-sagasd-device-includes core-linklibs linklibs-romhack +#MM kernel-sagasd-device-linklib : kernel-sagasd-device-includes includes-romhack +#MM- kernel-sagasd-device-quick : kernel-sagasd-device-includes-quick +#MM kernel-sagasd-device-includes : kernel-sagasd-device-makefile kernel-sagasd-device-includes-dirs \ +#MM includes-generate-deps kernel-sagasd-device-fd +#MM kernel-sagasd-device-includes-quick +#MM kernel-sagasd-device-includes-dirs +#MM kernel-sagasd-device-fd + +# Library targets +#MM kernel-sagasd-device-kobj : core-linklibs linklibs-romhack +#MM kernel-sagasd-device-kobj-quick : + +# Library with ABI targets: +#MM kernel-sagasd-device-kobj : kernel-sagasd-device-includes core-linklibs linklibs-romhack +#MM kernel-sagasd-device-kobj-quick : kernel-sagasd-device-includes-quick + +# All MetaMake targets defined by this macro +kernel-sagasd-device_ALLTARGETS := kernel-sagasd-device kernel-sagasd-device-quick kernel-sagasd-device-clean + +ifeq (M,M) +kernel-sagasd-device_ALLTARGETS += kernel-sagasd-device-kobj kernel-sagasd-device-kobj-quick +endif + +ifeq (M,M) +kernel-sagasd-device_ALLTARGETS += kernel-sagasd-device-includes \ + kernel-sagasd-device-includes-quick kernel-sagasd-device-includes-dirs \ + kernel-sagasd-device-linklib kernel-sagasd-device-fd +endif + +.PHONY : $(kernel-sagasd-device_ALLTARGETS) kernel-sagasd-device-makefile + +ifeq (sagasd,) +$(error using %build_module: modname may not be empty) +endif +ifeq (device,) +$(error using %build_module: $(MODTYPE) has to be defined with the type of the module) +endif + +# Default values for variables and arguments +ifneq (,) + kernel-sagasd-device_DEFNAME := sagasd_ +else + kernel-sagasd-device_DEFNAME := sagasd +endif +kernel-sagasd-device_DEFLINKLIBNAME := $(kernel-sagasd-device_DEFNAME) +ifneq (,) + kernel-sagasd-device_LINKLIBNAME := +else + kernel-sagasd-device_LINKLIBNAME = $(kernel-sagasd-device_DEFLINKLIBNAME) +endif +kernel-sagasd-device_DEFCPPFLAGS := $(CPPFLAGS) +ifneq (,) + kernel-sagasd-device_DEFCPPFLAGS += -I +endif +kernel-sagasd-device_DEFDFLAGS := $(CFLAGS) +ifneq (,) + kernel-sagasd-device_DFLAGS := +else + kernel-sagasd-device_DFLAGS = $(kernel-sagasd-device_DEFDFLAGS) +endif +kernel-sagasd-device_DEFDXXFLAGS := $(CXXFLAGS) +ifneq (,) + kernel-sagasd-device_DXXFLAGS := +else + kernel-sagasd-device_DXXFLAGS = $(kernel-sagasd-device_DEFDXXFLAGS) +endif + +ifeq (target,target) +ifeq ($(TARGET_LTO),yes) +kernel-sagasd-device_DEFDFLAGS := $(strip $(LTO_BINARY_CFLAGS) $(CFLAGS_NO_STRICT_ALIASING) $(NOWARN_LTO_TYPE_MISMATCH) $(kernel-sagasd-device_DEFDFLAGS)) +kernel-sagasd-device_DEFDXXFLAGS := $(strip $(LTO_BINARY_CFLAGS) $(CFLAGS_NO_STRICT_ALIASING) $(NOWARN_LTO_TYPE_MISMATCH) $(kernel-sagasd-device_DEFDXXFLAGS)) +endif +ifeq ($(TARGET_FUNCINSTR),yes) +kernel-sagasd-device_FUNCINSTR := yes +kernel-sagasd-device_DEFDFLAGS := $(strip $(FUNCINSTR_FLAGS) $(kernel-sagasd-device_DEFDFLAGS)) +kernel-sagasd-device_DEFDXXFLAGS := $(strip $(FUNCINSTR_FLAGS) $(kernel-sagasd-device_DEFDXXFLAGS)) +endif +endif + +OBJDIR ?= $(GENDIR)/$(CURDIR) +ifneq (,) +kernel-sagasd-device_OBJDIR := +else +kernel-sagasd-device_OBJDIR := $(OBJDIR)/$(kernel-sagasd-device_DEFNAME) +endif +ifneq (,) +kernel-sagasd-device_OBJDIR := $(kernel-sagasd-device_OBJDIR) +endif + +## Create genmodule include Makefile for the module +## +kernel-sagasd-device-makefile := $(kernel-sagasd-device_OBJDIR)/Makefile.$(kernel-sagasd-device_DEFNAME)device +kernel-sagasd-device-genmakefile : $(kernel-sagasd-device-makefile) + + +kernel-sagasd-device-genmakefile_OPTS := +ifneq (,) + kernel-sagasd-device-genmakefile_OPTS += -f + kernel-sagasd-device-genmakefile_MODNAME := sagasd_ +else + kernel-sagasd-device-genmakefile_MODNAME := sagasd +endif +kernel-sagasd-device-genmakefile_TARGET := Makefile.$(kernel-sagasd-device-genmakefile_MODNAME)device +kernel-sagasd-device-genmakefile_DEPS := $(GENMODULE) +ifneq (,) + ifeq ($(dir ),./) + kernel-sagasd-device-genmakefile_OPTS += -c $(SRCDIR)/$(CURDIR)/ + kernel-sagasd-device-genmakefile_DEPS += $(SRCDIR)/$(CURDIR)/ + else + kernel-sagasd-device-genmakefile_OPTS += -c + kernel-sagasd-device-genmakefile_DEPS += + endif +else + kernel-sagasd-device-genmakefile_OPTS += -c $(SRCDIR)/$(CURDIR)/sagasd.conf + kernel-sagasd-device-genmakefile_DEPS += $(SRCDIR)/$(CURDIR)/sagasd.conf +endif +ifneq (,) + ifeq ($(dir ),./) + kernel-sagasd-device-genmakefile_OPTS += -o $(SRCDIR)/$(CURDIR)/ + kernel-sagasd-device-genmakefile_DEPS += $(SRCDIR)/$(CURDIR)/ + else + kernel-sagasd-device-genmakefile_OPTS += -o + kernel-sagasd-device-genmakefile_DEPS += + endif +endif +ifneq (,) + kernel-sagasd-device-genmakefile_OPTS += -s +endif +ifneq ($(kernel-sagasd-device_OBJDIR),) + kernel-sagasd-device-genmakefile_OPTS += -d $(kernel-sagasd-device_OBJDIR) + kernel-sagasd-device-genmakefile_TARGET := $(kernel-sagasd-device_OBJDIR)/$(kernel-sagasd-device-genmakefile_TARGET) +endif + +$(kernel-sagasd-device-genmakefile_TARGET) : OPTS := $(kernel-sagasd-device-genmakefile_OPTS) +$(kernel-sagasd-device-genmakefile_TARGET) : MODNAME := sagasd +$(kernel-sagasd-device-genmakefile_TARGET) : MODTYPE := device +$(kernel-sagasd-device-genmakefile_TARGET) : $(kernel-sagasd-device-genmakefile_DEPS) + $(Q)$(GENMODULE) $(OPTS) writemakefile $(MODNAME) $(MODTYPE) + + +ifneq ($(kernel-sagasd-device-makefile),) +$(kernel-sagasd-device-makefile) : | $(kernel-sagasd-device_OBJDIR) +else +$(kernel-sagasd-device-makefile) :: $(kernel-sagasd-device_OBJDIR) +endif + +GLOB_MKDIRS += $(kernel-sagasd-device_OBJDIR) + + +# Do not parse these statements if metatarget is not appropriate +ifneq ($(filter $(TARGET),$(kernel-sagasd-device_ALLTARGETS)),) + +# suppress makes warning that the Makefile doesnt yet exist +# on early passes (it will generate the file as needed though) +# when we include it. +-include $(kernel-sagasd-device-makefile) + +kernel-sagasd-device_DEFMODDIR := $($(kernel-sagasd-device_DEFNAME)_MODDIR) +ifeq (no,yes) +kernel-sagasd-device_DEFMODDIR := $(AROS_DIR_ARCH)/$(kernel-sagasd-device_DEFMODDIR) +endif +ifneq (,) + kernel-sagasd-device_MODDIR := +else + kernel-sagasd-device_MODDIR := $(kernel-sagasd-device_DEFMODDIR) +endif + +## include files generation +## +ifneq (,) +kernel-sagasd-device_INCDIR := +else +kernel-sagasd-device_INCDIR := $(AROSDIR)/$(AROS_DIR_DEVELOPER)/$(AROS_DIR_INCLUDE) +endif +kernel-sagasd-device_LIBDEFSINC := $(kernel-sagasd-device_OBJDIR)/include/$(kernel-sagasd-device_DEFNAME)_libdefs.h +kernel-sagasd-device_DEFLIBDEFSINC := $(kernel-sagasd-device_OBJDIR)/include/$(kernel-sagasd-device_DEFNAME)_deflibdefs.h + +ifeq (M,M) +kernel-sagasd-device-includes-quick : kernel-sagasd-device-includes +kernel-sagasd-device-includes : $(addprefix $(GENINCDIR)/,$($(kernel-sagasd-device_DEFNAME)_INCLUDES)) \ + $(addprefix $(kernel-sagasd-device_INCDIR)/,$($(kernel-sagasd-device_DEFNAME)_INCLUDES)) \ + $(kernel-sagasd-device_LIBDEFSINC) $(kernel-sagasd-device_DEFLIBDEFSINC) + +ifneq ($($(kernel-sagasd-device_DEFNAME)_INCLUDES),) + +ifneq (,) + kernel-sagasd-device-includes_MODNAME := sagasd_ +else + kernel-sagasd-device-includes_MODNAME := sagasd +endif + +ifneq ($($(kernel-sagasd-device-includes_MODNAME)_INCLUDES),) + +kernel-sagasd-device-includes_TARGETS := $($(kernel-sagasd-device-includes_MODNAME)_INCLUDES) + +kernel-sagasd-device-includes_DEPS := $(GENMODULE) +kernel-sagasd-device-includes_OPTS := + +ifneq (,) + ifeq ($(dir ),./) + kernel-sagasd-device-includes_OPTS += -c $(SRCDIR)/$(CURDIR)/ + kernel-sagasd-device-includes_DEPS += $(SRCDIR)/$(CURDIR)/ + else + kernel-sagasd-device-includes_OPTS += -c + kernel-sagasd-device-includes_DEPS += + endif +else + kernel-sagasd-device-includes_OPTS += -c $(SRCDIR)/$(CURDIR)/sagasd.conf + kernel-sagasd-device-includes_DEPS += $(SRCDIR)/$(CURDIR)/sagasd.conf +endif +ifneq (,) + ifeq ($(dir ),./) + kernel-sagasd-device-includes_OPTS += -o $(SRCDIR)/$(CURDIR)/ + kernel-sagasd-device-includes_DEPS += $(SRCDIR)/$(CURDIR)/ + else + kernel-sagasd-device-includes_OPTS += -o + kernel-sagasd-device-includes_DEPS += + endif +endif +ifneq (,) + kernel-sagasd-device-includes_OPTS += -s +endif +ifneq ($(kernel-sagasd-device_OBJDIR)/include,) + kernel-sagasd-device-includes_OPTS += -d $(kernel-sagasd-device_OBJDIR)/include + kernel-sagasd-device-includes_TARGETS := $(addprefix $(kernel-sagasd-device_OBJDIR)/include/,$(kernel-sagasd-device-includes_TARGETS)) + kernel-sagasd-device-includes_GENINCFLAG=$(kernel-sagasd-device_OBJDIR)/include/.sagasd.device-includes +else + kernel-sagasd-device-includes_GENINCFLAG=$(GENDIR)/$(CURDIR)/.sagasd.device-includes +endif + +$(kernel-sagasd-device-includes_TARGETS) : $(kernel-sagasd-device-includes_DEPS) $(kernel-sagasd-device-includes_GENINCFLAG) + +$(kernel-sagasd-device-includes_GENINCFLAG) : OPTS := $(kernel-sagasd-device-includes_OPTS) +$(kernel-sagasd-device-includes_GENINCFLAG) : MODNAME := sagasd +$(kernel-sagasd-device-includes_GENINCFLAG) : MODTYPE := device +$(kernel-sagasd-device-includes_GENINCFLAG) : $(kernel-sagasd-device-includes_DEPS) + $(Q)$(ECHO) "Generating $(MODNAME).$(MODTYPE) includes" + $(Q)$(GENMODULE) $(OPTS) writeincludes $(MODNAME) $(MODTYPE) + $(Q)$(TOUCH) $@ +endif + + +TMP_SRCDIR := $(kernel-sagasd-device_OBJDIR)/include + +$(addprefix $(GENINCDIR)/,$($(kernel-sagasd-device_DEFNAME)_INCLUDES)) : | $(kernel-sagasd-device_OBJDIR)/sagasd_geninc + +$(kernel-sagasd-device_OBJDIR)/sagasd_geninc : COPYSRCDIR := $(kernel-sagasd-device_OBJDIR)/include +$(kernel-sagasd-device_OBJDIR)/sagasd_geninc : TGTDIR := $(GENINCDIR) +$(kernel-sagasd-device_OBJDIR)/sagasd_geninc : FILES := $($(kernel-sagasd-device_DEFNAME)_INCLUDES) +$(kernel-sagasd-device_OBJDIR)/sagasd_geninc : $(addprefix $(kernel-sagasd-device_OBJDIR)/include/,$($(kernel-sagasd-device_DEFNAME)_INCLUDES)) + $(Q)for f in $(FILES); do \ + $(IF) ! $(CMP) -s $(COPYSRCDIR)/$$f $(TGTDIR)/$$f ; then \ + $(CP) $(COPYSRCDIR)/$$f $(TGTDIR)/$$f ; \ + fi ; \ + done + $(Q)$(TOUCH) $@ + + +TMP_SRCDIR := $(kernel-sagasd-device_OBJDIR)/include + +$(addprefix $(kernel-sagasd-device_INCDIR)/,$($(kernel-sagasd-device_DEFNAME)_INCLUDES)) : | $(kernel-sagasd-device_OBJDIR)/sagasd_incs + +$(kernel-sagasd-device_OBJDIR)/sagasd_incs : COPYSRCDIR := $(kernel-sagasd-device_OBJDIR)/include +$(kernel-sagasd-device_OBJDIR)/sagasd_incs : TGTDIR := $(kernel-sagasd-device_INCDIR) +$(kernel-sagasd-device_OBJDIR)/sagasd_incs : FILES := $($(kernel-sagasd-device_DEFNAME)_INCLUDES) +$(kernel-sagasd-device_OBJDIR)/sagasd_incs : $(addprefix $(kernel-sagasd-device_OBJDIR)/include/,$($(kernel-sagasd-device_DEFNAME)_INCLUDES)) + $(Q)for f in $(FILES); do \ + $(IF) ! $(CMP) -s $(COPYSRCDIR)/$$f $(TGTDIR)/$$f ; then \ + $(CP) $(COPYSRCDIR)/$$f $(TGTDIR)/$$f ; \ + fi ; \ + done + $(Q)$(TOUCH) $@ + +kernel-sagasd-device_INCDIRS := $(filter-out ./,$(sort $(dir $($(kernel-sagasd-device_DEFNAME)_INCLUDES)))) + +TMPsagasd_INCDIRS := \ + $(kernel-sagasd-device_OBJDIR)/include $(addprefix $(kernel-sagasd-device_OBJDIR)/include/,$(kernel-sagasd-device_INCDIRS)) \ + $(GENINCDIR) $(addprefix $(GENINCDIR)/,$(kernel-sagasd-device_INCDIRS)) \ + $(kernel-sagasd-device_INCDIR) $(addprefix $(kernel-sagasd-device_INCDIR)/,$(kernel-sagasd-device_INCDIRS)) + +ifneq (kernel-sagasd-device-includes-dirs,) +kernel-sagasd-device-includes-dirs : | $(TMPsagasd_INCDIRS) +else +kernel-sagasd-device-includes-dirs :: $(TMPsagasd_INCDIRS) +endif + +GLOB_MKDIRS += $(TMPsagasd_INCDIRS) + + +endif + +endif + + +kernel-sagasd-device-genlibdefs_OPTS := +ifneq (,) + kernel-sagasd-device-genlibdefs_OPTS += -f + kernel-sagasd-device-genlibdefs_MODNAME := sagasd_ +else + kernel-sagasd-device-genlibdefs_MODNAME := sagasd +endif +kernel-sagasd-device-genlibdefs_TARGET := $(kernel-sagasd-device-genlibdefs_MODNAME)_libdefs.h +kernel-sagasd-device-genlibdefs_DEPS := $(GENMODULE) +ifneq (,) + ifeq ($(dir ),./) + kernel-sagasd-device-genlibdefs_OPTS += -c $(SRCDIR)/$(CURDIR)/ + kernel-sagasd-device-genlibdefs_DEPS += $(SRCDIR)/$(CURDIR)/ + else + kernel-sagasd-device-genlibdefs_OPTS += -c + kernel-sagasd-device-genlibdefs_DEPS += + endif +else + kernel-sagasd-device-genlibdefs_OPTS += -c $(SRCDIR)/$(CURDIR)/sagasd.conf + kernel-sagasd-device-genlibdefs_DEPS += $(SRCDIR)/$(CURDIR)/sagasd.conf +endif +ifneq (,) + ifeq ($(dir ),./) + kernel-sagasd-device-genlibdefs_OPTS += -o $(SRCDIR)/$(CURDIR)/ + kernel-sagasd-device-genlibdefs_DEPS += $(SRCDIR)/$(CURDIR)/ + else + kernel-sagasd-device-genlibdefs_OPTS += -o + kernel-sagasd-device-genlibdefs_DEPS += + endif +endif +ifneq (,) + kernel-sagasd-device-genlibdefs_OPTS += -s +endif +ifneq ($(kernel-sagasd-device_OBJDIR)/include,) + kernel-sagasd-device-genlibdefs_OPTS += -d $(kernel-sagasd-device_OBJDIR)/include + kernel-sagasd-device-genlibdefs_TARGET := $(kernel-sagasd-device_OBJDIR)/include/$(kernel-sagasd-device-genlibdefs_TARGET) +endif +ifneq (,) + kernel-sagasd-device-genlibdefs_OPTS += -v +endif + +$(kernel-sagasd-device-genlibdefs_TARGET) : OPTS := $(kernel-sagasd-device-genlibdefs_OPTS) +$(kernel-sagasd-device-genlibdefs_TARGET) : MODNAME := sagasd +$(kernel-sagasd-device-genlibdefs_TARGET) : MODTYPE := device +$(kernel-sagasd-device-genlibdefs_TARGET) : $(kernel-sagasd-device-genlibdefs_DEPS) + $(Q)$(ECHO) "Generating $(subst $(TARGETDIR)/,,$@)" + $(Q)$(GENMODULE) $(OPTS) writelibdefs $(MODNAME) $(MODTYPE) + +$(kernel-sagasd-device_DEFLIBDEFSINC) : FILENAME := $(kernel-sagasd-device_LIBDEFSINC) +$(kernel-sagasd-device_DEFLIBDEFSINC) : $(kernel-sagasd-device_LIBDEFSINC) + $(Q)$(ECHO) "Generating $(subst $(TARGETDIR)/,,$@)" + $(Q)$(ECHO) "#define LC_LIBDEFS_FILE \"$(FILENAME)\"" >$@ + +$(kernel-sagasd-device_LIBDEFSINC) $(kernel-sagasd-device_DEFLIBDEFSINC) : | $(kernel-sagasd-device_OBJDIR)/include + +ifneq (kernel-sagasd-device-includes-dirs,) +kernel-sagasd-device-includes-dirs : | $(kernel-sagasd-device_OBJDIR)/include +else +kernel-sagasd-device-includes-dirs :: $(kernel-sagasd-device_OBJDIR)/include +endif + +GLOB_MKDIRS += $(kernel-sagasd-device_OBJDIR)/include + + +## Extra genmodule src files generation +## + +kernel-sagasd-device-genmodfiles_OPTS := +ifneq (,) + kernel-sagasd-device-genmodfiles_OPTS += -f + kernel-sagasd-device-genmodfiles_MODNAME := sagasd_ +else + kernel-sagasd-device-genmodfiles_MODNAME := sagasd +endif +kernel-sagasd-device-genmodfiles_GENTARGETS := $($(kernel-sagasd-device-genmodfiles_MODNAME)_STARTFILES) $($(kernel-sagasd-device-genmodfiles_MODNAME)_ENDFILES) +kernel-sagasd-device-genmodfiles_STUBTARGETS := $($(kernel-sagasd-device-genmodfiles_MODNAME)_LINKLIBFILES) $($(kernel-sagasd-device-genmodfiles_MODNAME)_RELLINKLIBFILES) +kernel-sagasd-device-genmodfiles_GENTARGETS := $(addsuffix .c,$(kernel-sagasd-device-genmodfiles_GENTARGETS)) +kernel-sagasd-device-genmodfiles_STUBTARGETS := $(addsuffix .c,$(kernel-sagasd-device-genmodfiles_STUBTARGETS)) \ + $(addsuffix .S, $($(kernel-sagasd-device-genmodfiles_MODNAME)_LINKLIBAFILES) $($(kernel-sagasd-device-genmodfiles_MODNAME)_RELLINKLIBAFILES)) + +kernel-sagasd-device-genmodfiles_DEPS := $(GENMODULE) +ifneq (,) + ifeq ($(dir ),./) + kernel-sagasd-device-genmodfiles_OPTS += -c $(SRCDIR)/$(CURDIR)/ + kernel-sagasd-device-genmodfiles_DEPS += $(SRCDIR)/$(CURDIR)/ + else + kernel-sagasd-device-genmodfiles_OPTS += -c + kernel-sagasd-device-genmodfiles_DEPS += + endif +else + kernel-sagasd-device-genmodfiles_OPTS += -c $(SRCDIR)/$(CURDIR)/sagasd.conf + kernel-sagasd-device-genmodfiles_DEPS += $(SRCDIR)/$(CURDIR)/sagasd.conf +endif +ifneq (,) + ifeq ($(dir ),./) + kernel-sagasd-device-genmodfiles_OPTS += -o $(SRCDIR)/$(CURDIR)/ + kernel-sagasd-device-genmodfiles_DEPS += $(SRCDIR)/$(CURDIR)/ + else + kernel-sagasd-device-genmodfiles_OPTS += -o + kernel-sagasd-device-genmodfiles_DEPS += + endif +endif +ifneq (,) + kernel-sagasd-device-genmodfiles_OPTS += -s +endif +ifneq ($(kernel-sagasd-device_OBJDIR),) + kernel-sagasd-device-genmodfiles_OPTS += -d $(kernel-sagasd-device_OBJDIR) + kernel-sagasd-device-genmodfiles_TARGETDIR := $(shell echo $(kernel-sagasd-device_OBJDIR) | sed 's/^\(.\):\//\/\1\//') + kernel-sagasd-device-genmodfiles_GENTARGETS := $(addprefix $(kernel-sagasd-device-genmodfiles_TARGETDIR)/,$(kernel-sagasd-device-genmodfiles_GENTARGETS)) + kernel-sagasd-device-genmodfiles_GENFILEFLAG=$(kernel-sagasd-device-genmodfiles_TARGETDIR)/.sagasd.device-genfiles +else + kernel-sagasd-device-genmodfiles_GENFILEFLAG=$(GENDIR)/$(CURDIR)/.sagasd.device-genfiles +endif +ifneq ($(kernel-sagasd-device_OBJDIR)/linklib,) + kernel-sagasd-device-genmodfiles_OPTS += -l $(kernel-sagasd-device_OBJDIR)/linklib + kernel-sagasd-device-genmodfiles_STUBTARGETDIR := $(shell echo $(kernel-sagasd-device_OBJDIR)/linklib | sed 's/^\(.\):\//\/\1\//') + kernel-sagasd-device-genmodfiles_STUBTARGETS := $(addprefix $(kernel-sagasd-device-genmodfiles_STUBTARGETDIR)/,$(kernel-sagasd-device-genmodfiles_STUBTARGETS)) + kernel-sagasd-device-genmodfiles_TARGETDIRS += $(kernel-sagasd-device_OBJDIR)/linklib +else +ifneq ($(kernel-sagasd-device_OBJDIR),) + kernel-sagasd-device-genmodfiles_STUBTARGETS := $(addprefix $(kernel-sagasd-device-genmodfiles_TARGETDIR)/,$(kernel-sagasd-device-genmodfiles_STUBTARGETS)) +endif +endif + +kernel-sagasd-device-genmodfiles_TARGETS := $(kernel-sagasd-device-genmodfiles_GENTARGETS) $(kernel-sagasd-device-genmodfiles_STUBTARGETS) +ifneq ($(kernel-sagasd-device-genmodfiles_TARGETDIRS),) +$(kernel-sagasd-device-genmodfiles_TARGETS) : | $(kernel-sagasd-device-genmodfiles_TARGETDIRS) +endif + +$(kernel-sagasd-device-genmodfiles_TARGETS) : $(kernel-sagasd-device-genmodfiles_DEPS) $(kernel-sagasd-device-genmodfiles_GENFILEFLAG) + +$(kernel-sagasd-device-genmodfiles_GENFILEFLAG) : OPTS := $(kernel-sagasd-device-genmodfiles_OPTS) +$(kernel-sagasd-device-genmodfiles_GENFILEFLAG) : MODNAME := sagasd +$(kernel-sagasd-device-genmodfiles_GENFILEFLAG) : MODTYPE := device +$(kernel-sagasd-device-genmodfiles_GENFILEFLAG) : $(kernel-sagasd-device-genmodfiles_DEPS) + $(Q)$(ECHO) "Generating support files for module $(MODNAME$(BDID))" + $(Q)$(IF) $(TEST) "" = "lib.conf" && $(TEST) -f lib.conf; then \ + $(ECHO) "WARNING !!! $(CURDIR)/lib.conf may probably be removed"; \ + fi + $(Q)$(IF) $(TEST) -f libdefs.h; then \ + $(ECHO) "WARNING !!! $(CURDIR)/libdefs.h may probably be removed"; \ + fi + $(Q)$(GENMODULE) $(OPTS) writefiles $(MODNAME) $(MODTYPE) + $(Q)$(TOUCH) $@ + +$(kernel-sagasd-device-genmodfiles_GENFILEFLAG) : $(kernel-sagasd-device_DEFLIBDEFSINC) $(kernel-sagasd-device-makefile) + + +ifneq ($(kernel-sagasd-device-genmodfiles_GENFILEFLAG),) +$(kernel-sagasd-device-genmodfiles_GENFILEFLAG) : | $(kernel-sagasd-device_OBJDIR)/linklib +else +$(kernel-sagasd-device-genmodfiles_GENFILEFLAG) :: $(kernel-sagasd-device_OBJDIR)/linklib +endif + +GLOB_MKDIRS += $(kernel-sagasd-device_OBJDIR)/linklib + + +ifeq (M,M) +## Create FD file +ifeq (,) +kernel-sagasd-device_FDDIR := $(AROSDIR)/$(AROS_DIR_DEVELOPER)/$(AROS_DIR_SDK)/$(AROS_DIR_FD) +else +kernel-sagasd-device_FDDIR := /../$(AROS_DIR_FD) +endif +kernel-sagasd-device-fd : $(kernel-sagasd-device_FDDIR)/sagasd_lib.fd + + +TMP_TARGET := sagasd_lib.fd +TMP_DEPS := $(GENMODULE) +TMP_OPTS := +ifneq (,) + ifeq ($(dir ),./) + TMP_OPTS += -c $(SRCDIR)/$(CURDIR)/ + TMP_DEPS += $(SRCDIR)/$(CURDIR)/ + else + TMP_OPTS += -c + TMP_DEPS += + endif +else + TMP_OPTS += -c $(SRCDIR)/$(CURDIR)/sagasd.conf + TMP_DEPS += $(SRCDIR)/$(CURDIR)/sagasd.conf +endif +ifneq (,) + ifeq ($(dir ),./) + TMP_OPTS += -o $(SRCDIR)/$(CURDIR)/ + TMP_DEPS += $(SRCDIR)/$(CURDIR)/ + else + TMP_OPTS += -o + TMP_DEPS += + endif +endif +ifneq (,) + TMP_OPTS += -s +endif +ifneq ($(kernel-sagasd-device_FDDIR),) + TMP_OPTS += -d $(kernel-sagasd-device_FDDIR) + TMP_TARGET := $(kernel-sagasd-device_FDDIR)/$(TMP_TARGET) +endif + +$(TMP_TARGET) : OPTS := $(TMP_OPTS) +$(TMP_TARGET) : MODNAME := sagasd +$(TMP_TARGET) : MODTYPE := device +$(TMP_TARGET) : $(TMP_DEPS) + $(Q)$(ECHO) "Generating $(subst $(TARGETDIR)/,,$@)" + $(Q)$(GENMODULE) $(OPTS) writefd $(MODNAME) $(MODTYPE) + +$(kernel-sagasd-device_FDDIR)/sagasd_lib.fd : | $(kernel-sagasd-device_FDDIR) + + +ifneq (kernel-sagasd-device-fd-setup,) +kernel-sagasd-device-fd-setup : | $(kernel-sagasd-device_FDDIR) +else +kernel-sagasd-device-fd-setup :: $(kernel-sagasd-device_FDDIR) +endif + +GLOB_MKDIRS += $(kernel-sagasd-device_FDDIR) + +endif + +## Compilation +## +kernel-sagasd-device_FILES := $(DEVICE_FILES) +kernel-sagasd-device_OBJCFILES := +kernel-sagasd-device_CXXFILES := $(basename $(call WILDCARD $(foreach CXX_EXT, $(AROS_CXXEXTS), *.$(CXX_EXT)))) + +kernel-sagasd-device_LIBFILES := +kernel-sagasd-device_LIBS := romhack + +kernel-sagasd-device_FDIRS := $(sort $(dir $(kernel-sagasd-device_FILES))) + +kernel-sagasd-device_FILEMATCH = $(and $(findstring $(1),$(2)),$(findstring $(2),$(1))) +kernel-sagasd-device_MATCHARCH = $(foreach matchfile,$(2),$(foreach archfile,$(1),$(if $(call kernel-sagasd-device_FILEMATCH,$(archfile),$(notdir $(matchfile))),$(matchfile),))) +kernel-sagasd-device_FILTERARCH = $(filter-out $(call kernel-sagasd-device_MATCHARCH,$(1),$(2)),$(2)) +kernel-sagasd-device_STARTFILES := $(addprefix $(kernel-sagasd-device_OBJDIR)/,$($(kernel-sagasd-device_DEFNAME)_STARTFILES)) +kernel-sagasd-device_ENDFILES := $(addprefix $(kernel-sagasd-device_OBJDIR)/,$($(kernel-sagasd-device_DEFNAME)_ENDFILES)) + +kernel-sagasd-device_ARCHOBJS := $(wildcard $(kernel-sagasd-device_OBJDIR)/arch/*.o) +kernel-sagasd-device_LIBARCHOBJS := $(wildcard $(kernel-sagasd-device_OBJDIR)/linklib/arch/*.o) +kernel-sagasd-device_ARCHFILES := $(basename $(notdir $(kernel-sagasd-device_ARCHOBJS))) +kernel-sagasd-device_LIBARCHFILES := $(basename $(notdir $(kernel-sagasd-device_LIBARCHOBJS))) +kernel-sagasd-device_C_NARCHFILES := $(call kernel-sagasd-device_FILTERARCH,$(kernel-sagasd-device_ARCHFILES),$(kernel-sagasd-device_FILES)) +kernel-sagasd-device_CXX_NARCHFILES := $(call kernel-sagasd-device_FILTERARCH,$(kernel-sagasd-device_ARCHFILES),$(kernel-sagasd-device_CXXFILES)) +kernel-sagasd-device_OBJC_NARCHFILES := $(call kernel-sagasd-device_FILTERARCH,$(kernel-sagasd-device_ARCHFILES),$(kernel-sagasd-device_OBJCFILES)) +kernel-sagasd-device_NLIBARCHFILES := $(call kernel-sagasd-device_FILTERARCH,$(kernel-sagasd-device_LIBARCHFILES),$(kernel-sagasd-device_LIBFILES)) +kernel-sagasd-device_ARCHNLIBFILES := $(call kernel-sagasd-device_FILTERARCH,$(kernel-sagasd-device_LIBFILES),$(kernel-sagasd-device_LIBARCHFILES)) + +kernel-sagasd-device_CPPFLAGS := $(strip $(CPPFLAGS) -I$(kernel-sagasd-device_OBJDIR)/include -include $(kernel-sagasd-device_DEFLIBDEFSINC)) +ifneq (,) +kernel-sagasd-device_CPPFLAGS += -I +endif +kernel-sagasd-device_LINKLIBCPPFLAGS := $(kernel-sagasd-device_CPPFLAGS) +kernel-sagasd-device_CPPFLAGS += $(strip $($(kernel-sagasd-device_DEFNAME)_CPPFLAGS)) +kernel-sagasd-device_LINKLIBCPPFLAGS += $(strip $($(kernel-sagasd-device_DEFNAME)_LINKLIBCPPFLAGS)) +kernel-sagasd-device_CFLAGS := $(strip $(CFLAGS) $($(kernel-sagasd-device_DEFNAME)_CFLAGS)) +kernel-sagasd-device_LINKLIBCFLAGS := $(strip $(CFLAGS) $($(kernel-sagasd-device_DEFNAME)_LINKLIBCFLAGS)) +kernel-sagasd-device_CXXFLAGS := $(strip $(CXXFLAGS) $($(kernel-sagasd-device_DEFNAME)_CXXFLAGS)) +ifeq (target,target) +ifeq ($(TARGET_LTO),yes) +kernel-sagasd-device_LTOFLAGS ?= $(strip $(LTO_BINARY_CFLAGS) $(CFLAGS_NO_STRICT_ALIASING) $(NOWARN_LTO_TYPE_MISMATCH)) +kernel-sagasd-device_CFLAGS := $(strip $(kernel-sagasd-device_LTOFLAGS) $(kernel-sagasd-device_CFLAGS)) +kernel-sagasd-device_LINKLIBCFLAGS := $(strip $(kernel-sagasd-device_LTOFLAGS) $(kernel-sagasd-device_LINKLIBCFLAGS)) +kernel-sagasd-device_CXXFLAGS := $(strip $(kernel-sagasd-device_LTOFLAGS) $(kernel-sagasd-device_CXXFLAGS)) +endif +ifeq ($(TARGET_FUNCINSTR),yes) +kernel-sagasd-device_SUBSTNULL := +kernel-sagasd-device_SUBSTSPACE := $(kernel-sagasd-device_SUBSTNULL) # +kernel-sagasd-device_SUBSTCOMMA := , +kernel-sagasd-device_INSTRFUNCFLAGS ?= $(strip $(FUNCINSTR_FLAGS) -finstrument-functions-exclude-file-list=$(subst $(kernel-sagasd-device_SUBSTSPACE),$(kernel-sagasd-device_SUBSTCOMMA),$(strip $($(kernel-sagasd-device_DEFNAME)_STARTFILES)))) +kernel-sagasd-device_INSTRFUNCLIBS ?= $(FUNCINSTR_LIBS) +kernel-sagasd-device_CFLAGS := $(strip $(kernel-sagasd-device_INSTRFUNCFLAGS) $(kernel-sagasd-device_CFLAGS)) +kernel-sagasd-device_CXXFLAGS := $(strip $(kernel-sagasd-device_INSTRFUNCFLAGS) $(kernel-sagasd-device_CXXFLAGS)) +kernel-sagasd-device_LIBS += $(kernel-sagasd-device_INSTRFUNCLIBS) +endif +endif +kernel-sagasd-device_DFLAGS := $(strip $(kernel-sagasd-device_DFLAGS) $($(kernel-sagasd-device_DEFNAME)_DFLAGS)) +kernel-sagasd-device_LINKLIBDFLAGS := $(strip $(kernel-sagasd-device_DFLAGS) $($(kernel-sagasd-device_DEFNAME)_LINKLIBDFLAGS)) +kernel-sagasd-device_DXXFLAGS := $(strip $(kernel-sagasd-device_DXXFLAGS) $($(kernel-sagasd-device_DEFNAME)_DXXFLAGS)) + +ifeq (device,library) + kernel-sagasd-device_LIBSUFFIX := +else + kernel-sagasd-device_LIBSUFFIX := .device +endif + +ifeq (,) +kernel-sagasd-device_LIBDIR := $(AROSDIR)/$(AROS_DIR_DEVELOPER)/$(AROS_DIR_LIB) +else +kernel-sagasd-device_LIBDIR := +endif + +ifeq (M,M) +kernel-sagasd-device_LINKLIBCFILES := $(addprefix $(kernel-sagasd-device_OBJDIR)/linklib/,$($(kernel-sagasd-device_DEFNAME)_LINKLIBFILES)) +kernel-sagasd-device_LINKLIBAFILES := $(addprefix $(kernel-sagasd-device_OBJDIR)/linklib/,$($(kernel-sagasd-device_DEFNAME)_LINKLIBAFILES)) +ifeq ($(strip $($(kernel-sagasd-device_DEFNAME)_LINKLIBFILES) $($(kernel-sagasd-device_DEFNAME)_LINKLIBAFILES) $(kernel-sagasd-device_ARCHNLIBFILES)),) + kernel-sagasd-device_LINKLIB := +else + kernel-sagasd-device_LINKLIB := $(kernel-sagasd-device_LIBDIR)/libsagasd$(kernel-sagasd-device_LIBSUFFIX).a + ifneq (sagasd,$(kernel-sagasd-device_LINKLIBNAME)) + kernel-sagasd-device_LINKLIB += $(kernel-sagasd-device_LIBDIR)/lib$(kernel-sagasd-device_LINKLIBNAME)$(kernel-sagasd-device_LIBSUFFIX).a + endif +endif +kernel-sagasd-device_LINKLIBFILES := $(kernel-sagasd-device_LINKLIBCFILES) $(kernel-sagasd-device_LINKLIBAFILES) + +kernel-sagasd-device_RELLINKLIBCFILES := $(addprefix $(kernel-sagasd-device_OBJDIR)/linklib/,$($(kernel-sagasd-device_DEFNAME)_RELLINKLIBFILES)) +kernel-sagasd-device_RELLINKLIBAFILES := $(addprefix $(kernel-sagasd-device_OBJDIR)/linklib/,$($(kernel-sagasd-device_DEFNAME)_RELLINKLIBAFILES)) +ifeq ($(strip $($(kernel-sagasd-device_DEFNAME)_RELLINKLIBFILES) $($(kernel-sagasd-device_DEFNAME)_RELLINKLIBAFILES) $(kernel-sagasd-device_ARCHNLIBFILES)),) + kernel-sagasd-device_RELLINKLIB := +else + kernel-sagasd-device_RELLINKLIB := $(kernel-sagasd-device_LIBDIR)/lib$(kernel-sagasd-device_DEFNAME)_rel$(kernel-sagasd-device_LIBSUFFIX).a + ifneq (sagasd,$(kernel-sagasd-device_LINKLIBNAME)) + kernel-sagasd-device_RELLINKLIB += $(kernel-sagasd-device_LIBDIR)/lib$(kernel-sagasd-device_LINKLIBNAME)_rel$(kernel-sagasd-device_LIBSUFFIX).a + endif +endif +kernel-sagasd-device_RELLINKLIBFILES := $(kernel-sagasd-device_RELLINKLIBCFILES) $(kernel-sagasd-device_RELLINKLIBAFILES) +endif + +kernel-sagasd-device_ENDOBJS := $(addsuffix .o,$(kernel-sagasd-device_ENDFILES)) +kernel-sagasd-device_LINKLIBOBJS := $(addsuffix .o,$(addprefix $(kernel-sagasd-device_OBJDIR)/linklib/,$(notdir $(kernel-sagasd-device_NLIBARCHFILES))) $(addprefix $(kernel-sagasd-device_OBJDIR)/linklib/arch/,$(notdir $(kernel-sagasd-device_ARCHNLIBFILES))) $(kernel-sagasd-device_LINKLIBFILES)) \ + +kernel-sagasd-device_RELLINKLIBOBJS := $(addsuffix .o,$(addprefix $(kernel-sagasd-device_OBJDIR)/linklib/,$(notdir $(kernel-sagasd-device_NLIBARCHFILES))) $(addprefix $(kernel-sagasd-device_OBJDIR)/linklib/arch/,$(notdir $(kernel-sagasd-device_ARCHNLIBFILES))) $(kernel-sagasd-device_RELLINKLIBFILES)) \ + +$(kernel-sagasd-device_LINKLIBFILES) $(kernel-sagasd-device_RELLINKLIBFILES) : | $(kernel-sagasd-device_OBJDIR)/linklib +$(kernel-sagasd-device_LINKLIBOBJS) $(kernel-sagasd-device_RELLINKLIBOBJS) : | $(kernel-sagasd-device_OBJDIR)/linklib + +kernel-sagasd-device_CCFILES := $(kernel-sagasd-device_C_NARCHFILES) +kernel-sagasd-device_TARGETCCFILES := $(strip $(kernel-sagasd-device_STARTFILES) $(kernel-sagasd-device_ENDFILES)) +kernel-sagasd-device_LINKLIBCCFILES := $(strip $(kernel-sagasd-device_NLIBARCHFILES) $(kernel-sagasd-device_LINKLIBCFILES) $(kernel-sagasd-device_RELLINKLIBCFILES)) +kernel-sagasd-device_LINKLIBCCGENFILES := $(strip $(kernel-sagasd-device_LINKLIBCFILES) $(kernel-sagasd-device_RELLINKLIBCFILES)) + + +kernel-sagasd-device_CXXABSBASENAMES := $(foreach kernel-sagasd-device_CXXBASE,$(kernel-sagasd-device_CXX_NARCHFILES),$(if $(filter /%,$(kernel-sagasd-device_CXXBASE)),$(kernel-sagasd-device_CXXBASE),$(abspath $(SRCDIR)/$(CURDIR)/$(kernel-sagasd-device_CXXBASE)))) + +ifneq ($(kernel-sagasd-device_CXXABSBASENAMES),) + +kernel-sagasd-device_CXXBASENAMES := $(basename $(kernel-sagasd-device_CXXABSBASENAMES)) + +# Identify the "real" c++ files from the passed in basenames +kernel-sagasd-device_MCXX_FILES := $(strip $(foreach kernel-sagasd-device_CXXBASE,$(kernel-sagasd-device_CXXABSBASENAMES), $(firstword $(wildcard $(foreach kernel-sagasd-device_EXT, $(AROS_CXXEXTS),$(addsuffix .$(kernel-sagasd-device_EXT),$(kernel-sagasd-device_CXXBASE))))))) + +ifeq (,) +kernel-sagasd-device_MCXX_SRCWILDCARD := % +else +kernel-sagasd-device_MCXX_SRCWILDCARD := /% +endif + +ifeq ($(kernel-sagasd-device_OBJDIR),) + kernel-sagasd-device_CXXTARGETS := $(notdir $(kernel-sagasd-device_CXXBASENAMES:=.o)) + kernel-sagasd-device_CXXDTARGETS := $(notdir $(kernel-sagasd-device_CXXBASENAMES:=.d)) + kernel-sagasd-device_MCXX_WILDCARD := % +else + kernel-sagasd-device_CXXTARGETS := $(addprefix $(kernel-sagasd-device_OBJDIR)/,$(notdir $(kernel-sagasd-device_CXXBASENAMES:=.o))) + kernel-sagasd-device_CXXDTARGETS := $(addprefix $(kernel-sagasd-device_OBJDIR)/,$(notdir $(kernel-sagasd-device_CXXBASENAMES:=.d))) + kernel-sagasd-device_MCXX_WILDCARD := $(kernel-sagasd-device_OBJDIR)/% + + # Be sure that all source files are generated + $(kernel-sagasd-device_CXXTARGETS) $(kernel-sagasd-device_CXXDTARGETS) : | $(kernel-sagasd-device_MCXX_FILES) +endif + +# Adjust compiler flags to suit C++ +kernel-sagasd-device_MCXX_CPPFLAGS := $(kernel-sagasd-device_CPPFLAGS) +kernel-sagasd-device_CXXFLAGS := $(kernel-sagasd-device_CXXFLAGS) +ifeq ($(kernel-sagasd-device_DXXFLAGS),) + kernel-sagasd-device_DXXFLAGS := $(kernel-sagasd-device_CXXFLAGS) +else + kernel-sagasd-device_DXXFLAGS := $(kernel-sagasd-device_DXXFLAGS) +endif + +ifeq ($(findstring target,host kernel target),) + $(error unknown compiler target) +endif +ifeq (target,host) + kernel-sagasd-device_LINK ?= $(strip $(HOST_CXX) $(HOST_LDFLAGS)) + kernel-sagasd-device_STRIP ?= $(HOST_STRIP) + kernel-sagasd-device_ASSEMBLER ?= $(strip $(HOST_CC) $(HOST_SYSROOT)) + kernel-sagasd-device_CXXCMD:=$(HOST_CXX) + kernel-sagasd-device_MCXX_CPPFLAGS := $(strip $(HOST_MCXX_CPPFLAGS) $(kernel-sagasd-device_MCXX_CPPFLAGS) $(kernel-sagasd-device_MCXX_EXTRA_CPPFLAGS)) + kernel-sagasd-device_CXXFLAGS := $(strip $(HOST_CXXFLAGS) $(kernel-sagasd-device_CXXFLAGS)) + kernel-sagasd-device_DXXFLAGS := $(strip $(HOST_CXXFLAGS) $(kernel-sagasd-device_DXXFLAGS)) + kernel-sagasd-device_CXXIQUOTE:=$(HOST_IQUOTE) + kernel-sagasd-device_CXXIQUOTE_END:=$(HOST_IQUOTE_END) +endif +ifeq (target,target) + kernel-sagasd-device_LINK ?= $(strip $(AROS_CXX) $(TARGET_SYSROOT) $(TARGET_LDFLAGS)) + kernel-sagasd-device_STRIP ?= $(TARGET_STRIP) + kernel-sagasd-device_ASSEMBLER ?= $(strip $(TARGET_CC) $(TARGET_SYSROOT)) + kernel-sagasd-device_CXXCMD:=$(strip $(AROS_CXX) $(TARGET_SYSROOT)) + kernel-sagasd-device_MCXX_CPPFLAGS := $(strip $(kernel-sagasd-device_MCXX_CPPFLAGS) $(kernel-sagasd-device_MCXX_EXTRA_CPPFLAGS)) + kernel-sagasd-device_CXXFLAGS := $(strip $(kernel-sagasd-device_CXXFLAGS) $(SAFETY_CFLAGS)) + kernel-sagasd-device_DXXFLAGS := $(kernel-sagasd-device_DXXFLAGS) + kernel-sagasd-device_CXXIQUOTE:=$(CFLAGS_IQUOTE) + kernel-sagasd-device_CXXIQUOTE_END:=$(CFLAGS_IQUOTE_END) +endif +ifeq (target,kernel) + KERNEL_CXX ?= $(KERNEL_CC) + kernel-sagasd-device_LINK ?= $(strip $(KERNEL_CXX) $(KERNEL_SYSROOT) $(USER_LDFLAGS) $(KERNEL_LDFLAGS)) + kernel-sagasd-device_STRIP ?= $(ECHO) >/dev/null + kernel-sagasd-device_ASSEMBLER ?= $(strip $(KERNEL_CC) $(KERNEL_SYSROOT)) + kernel-sagasd-device_CXXCMD:=$(strip $(KERNEL_CXX) $(KERNEL_SYSROOT)) + kernel-sagasd-device_CXXFLAGS := $(strip $(KERNEL_MCXX_CPPFLAGS) $(kernel-sagasd-device_MCXX_CPPFLAGS) $(kernel-sagasd-device_MCXX_EXTRA_CPPFLAGS)) + kernel-sagasd-device_CXXFLAGS := $(strip $(KERNEL_CXXFLAGS) $(kernel-sagasd-device_CXXFLAGS)) + kernel-sagasd-device_DXXFLAGS := $(strip $(KERNEL_CXXFLAGS) $(kernel-sagasd-device_DXXFLAGS)) + kernel-sagasd-device_CXXIQUOTE:=$(KERNEL_IQUOTE) + kernel-sagasd-device_CXXIQUOTE_END:=$(KERNEL_IQUOTE_END) +endif + +define cxx_multi_recipe_template + $(1).o : $(2) + $(Q)$(ECHO) "Compiling $(if $(filter /%,$(2)),$(if $(filter $(SRCDIR)/%,$(abspath $(2))),$(patsubst $(SRCDIR)/%,%,$(abspath $(2))),$(patsubst $(TOP)/%,%,$(abspath $(2)))),$(patsubst $(SRCDIR)/%,%,$(abspath $(SRCDIR)/$(CURDIR)/$(2))))" + $(Q)$(IF) $(kernel-sagasd-device_CXXCMD) $(kernel-sagasd-device_CXXIQUOTE) $(dir $(2)) $(kernel-sagasd-device_CXXIQUOTE) $(SRCDIR)/$(CURDIR) $(kernel-sagasd-device_CXXIQUOTE) . $(kernel-sagasd-device_CXXIQUOTE_END) $(strip $(kernel-sagasd-device_CXXFLAGS) $(kernel-sagasd-device_MCXX_CPPFLAGS)) -D__SRCFILENAME__="\"$(subst $(TOP)/,,$(subst $(SRCDIR)/,,$(abspath $(2))))"\" -c $(2) -o $(1).o > $(GENDIR)/cerrors 2>&1 ; then \ + $(IF) $(TEST) -s $(GENDIR)/cerrors ; then \ + $(ECHO) "$(2): $(kernel-sagasd-device_CXXCMD) $(kernel-sagasd-device_CXXIQUOTE) $(dir $(2)) $(kernel-sagasd-device_CXXIQUOTE) $(SRCDIR)/$(CURDIR) $(kernel-sagasd-device_CXXIQUOTE) . $(kernel-sagasd-device_CXXIQUOTE_END) $(strip $(kernel-sagasd-device_CXXFLAGS) $(kernel-sagasd-device_MCXX_CPPFLAGS)) -D__SRCFILENAME__=\"$(subst $(TOP)/,,$(subst $(SRCDIR)/,,$(abspath $(2))))\" -c $(2) -o $(1).o" >> $(GENDIR)/errors ; \ + tee < $(GENDIR)/cerrors -a $(GENDIR)/errors ; \ + else \ + $(NOP) ; \ + fi ; \ + else \ + $(ECHO) "Compile failed: $(kernel-sagasd-device_CXXCMD) $(kernel-sagasd-device_CXXIQUOTE) $(dir $(2)) $(kernel-sagasd-device_CXXIQUOTE) $(SRCDIR)/$(CURDIR) $(kernel-sagasd-device_CXXIQUOTE) . $(kernel-sagasd-device_CXXIQUOTE_END) $(strip $(kernel-sagasd-device_CXXFLAGS) $(kernel-sagasd-device_MCXX_CPPFLAGS)) -D__SRCFILENAME__=\"$(subst $(TOP)/,,$(subst $(SRCDIR)/,,$(abspath $(2))))\" -c $(2) -o $(1).o" 1>&2 ; \ + tee < $(GENDIR)/cerrors -a $(GENDIR)/errors 1>&2 ; \ + exit 1 ; \ + fi + + $(1).d : $(2) + $(Q)$(IF) $(TEST) ! -d $(dir $(1).d) ; then $(MKDIR) $(dir $(1).d) ; else $(NOP) ; fi + $(Q)$(ECHO) "Makedepend $(if $(filter /%,$(2)),$(if $(filter $(SRCDIR)/%,$(abspath $(2))),$(patsubst $(SRCDIR)/%,%,$(abspath $(2))),$(patsubst $(TOP)/%,%,$(abspath $(2)))),$(patsubst $(SRCDIR)/%,%,$(abspath $(SRCDIR)/$(CURDIR)/$(2))))..." + $(Q)AROS_CC="$(kernel-sagasd-device_CXXCMD)" $(MKDEPEND) $(strip $(kernel-sagasd-device_DXXFLAGS) $(kernel-sagasd-device_MCXX_CPPFLAGS)) -I$(TOP)/$(CURDIR) -I$(SRCDIR)/$(CURDIR) $(2) -o $(1).d +endef +ifeq ($(kernel-sagasd-device_OBJDIR),) + $(foreach kernel-sagasd-device_CXXFILE,$(kernel-sagasd-device_MCXX_FILES),$(eval $(call cxx_multi_recipe_template,$(notdir $(basename $(kernel-sagasd-device_CXXFILE))),$(kernel-sagasd-device_CXXFILE)))) +else + $(foreach kernel-sagasd-device_CXXFILE,$(kernel-sagasd-device_MCXX_FILES),$(eval $(call cxx_multi_recipe_template,$(addprefix $(kernel-sagasd-device_OBJDIR)/,$(notdir $(basename $(kernel-sagasd-device_CXXFILE)))),$(kernel-sagasd-device_CXXFILE)))) +endif + +endif + + +ifneq ($(kernel-sagasd-device_OBJC_NARCHFILES),) + +ifeq (,) +kernel-sagasd-device_MOBJC_SRCWILDCARD := % +else +kernel-sagasd-device_MOBJC_SRCWILDCARD := /% +endif + +ifeq ($(kernel-sagasd-device_OBJDIR),) + kernel-sagasd-device_MOBJC_TARGETS := $(addsuffix .o,$(kernel-sagasd-device_OBJC_NARCHFILES)) + kernel-sagasd-device_MOBJC_DTARGETS := $(addsuffix .d,$(kernel-sagasd-device_OBJC_NARCHFILES)) + kernel-sagasd-device_MOBJC_WILDCARD := % +else + kernel-sagasd-device_MOBJC_TARGETS := $(addsuffix .o,$(addprefix $(kernel-sagasd-device_OBJDIR)/,$(kernel-sagasd-device_OBJC_NARCHFILES))) + kernel-sagasd-device_MOBJC_DTARGETS := $(addsuffix .d,$(addprefix $(kernel-sagasd-device_OBJDIR)/,$(kernel-sagasd-device_OBJC_NARCHFILES))) + kernel-sagasd-device_MOBJC_WILDCARD := $(kernel-sagasd-device_OBJDIR)/% + + # Be sure that all .m files are generated + $(kernel-sagasd-device_MOBJC_TARGETS) $(kernel-sagasd-device_MOBJC_DTARGETS) : | $(addsuffix .m,$(kernel-sagasd-device_OBJC_NARCHFILES)) + + # Be sure that all .m files are found + kernel-sagasd-device_MOBJC_SRCDIR := $(shell echo $(SRCDIR) | sed 's/^\(.\):\//\/\1\//') + kernel-sagasd-device_MOBJC_BASEDIRS := $(shell echo $(sort $(dir $(kernel-sagasd-device_OBJC_NARCHFILES))) | sed 's/\(.\):\//\/\1\//g') + kernel-sagasd-device_MOBJC_DIRS := $(foreach dir, $(kernel-sagasd-device_MOBJC_BASEDIRS), $(if $(filter /%,$(dir)),$(dir),$(kernel-sagasd-device_MOBJC_SRCDIR)/$(CURDIR)/$(dir))) + ifneq ($(kernel-sagasd-device_MOBJC_DIRS),) + kernel-sagasd-device_MOBJC_DIRS := $(shell echo $(kernel-sagasd-device_MOBJC_DIRS) | sed 's/\(.\):\//\/\1\//g') + vpath %.m $(kernel-sagasd-device_MOBJC_DIRS) + endif +endif + +# Define the use of cross compiler +ifeq ($(TARGET_OBJC),) + kernel-sagasd-device_CC := $(TARGET_CC) +else + kernel-sagasd-device_CC := $(TARGET_OBJC) +endif + +# Adjust compiler flags to suit ObjC +kernel-sagasd-device_MOBJC_CPPFLAGS := $(kernel-sagasd-device_CPPFLAGS) +kernel-sagasd-device_OBJCFLAGS := $(kernel-sagasd-device_CFLAGS) +kernel-sagasd-device_OBJCFLAGS := $(kernel-sagasd-device_OBJCFLAGS) -isystem $(AROS_DEVELOPER)/include +kernel-sagasd-device_OBJCFLAGS := $(subst -Wno-pointer-sign,, $(subst -Werror-implicit-function-declaration,, $(kernel-sagasd-device_OBJCFLAGS))) +ifeq ($(kernel-sagasd-device_DFLAGS),) + kernel-sagasd-device_OBJCDFLAGS := $(kernel-sagasd-device_CFLAGS) +else + kernel-sagasd-device_OBJCDFLAGS := $(kernel-sagasd-device_DFLAGS) +endif + +ifeq ($(findstring target,host kernel target),) + $(error unknown compiler target) +endif +ifeq (target,target) + kernel-sagasd-device_LINK ?= $(strip $(kernel-sagasd-device_CC) $(TARGET_SYSROOT) $(TARGET_LDFLAGS)) + kernel-sagasd-device_STRIP ?= $(TARGET_STRIP) + kernel-sagasd-device_ASSEMBLER ?= $(strip $(TARGET_CC) $(TARGET_SYSROOT)) + $(kernel-sagasd-device_MOBJC_TARGETS) $(kernel-sagasd-device_MOBJC_DTARGETS) : CMD:=$(strip $(kernel-sagasd-device_CC) $(TARGET_SYSROOT)) + $(kernel-sagasd-device_MOBJC_TARGETS) $(kernel-sagasd-device_MOBJC_DTARGETS) : kernel-sagasd-device_MOBJC_CPPFLAGS:=$(strip $(kernel-sagasd-device_MOBJC_CPPFLAGS) $(kernel-sagasd-device_MOBJC_EXTRA_CPPFLAGS)) + $(kernel-sagasd-device_MOBJC_TARGETS) $(kernel-sagasd-device_MOBJC_DTARGETS) : kernel-sagasd-device_OBJCFLAGS:=$(strip $(kernel-sagasd-device_OBJCFLAGS) $(SAFETY_CFLAGS)) + $(kernel-sagasd-device_MOBJC_TARGETS) $(kernel-sagasd-device_MOBJC_DTARGETS) : kernel-sagasd-device_OBJCDFLAGS:=$(kernel-sagasd-device_OBJCDFLAGS) + $(kernel-sagasd-device_MOBJC_TARGETS) $(kernel-sagasd-device_MOBJC_DTARGETS) : kernel-sagasd-device_IQUOTE:=$(CFLAGS_IQUOTE) + $(kernel-sagasd-device_MOBJC_TARGETS) $(kernel-sagasd-device_MOBJC_DTARGETS) : kernel-sagasd-device_IQUOTE_END:=$(CFLAGS_IQUOTE_END) +endif +ifeq (target,host) + kernel-sagasd-device_LINK ?= $(strip $(HOST_OBJC) $(HOST_LDFLAGS)) + kernel-sagasd-device_STRIP ?= $(HOST_STRIP) + kernel-sagasd-device_ASSEMBLER ?= $(strip $(HOST_CC) $(HOST_SYSROOT)) + $(kernel-sagasd-device_MOBJC_TARGETS) $(kernel-sagasd-device_MOBJC_DTARGETS) : CMD:=$(HOST_OBJC) + $(kernel-sagasd-device_MOBJC_TARGETS) $(kernel-sagasd-device_MOBJC_DTARGETS) : kernel-sagasd-device_MOBJC_CPPFLAGS:=$(strip $(HOST_MOBJC_CPPFLAGS) $(kernel-sagasd-device_MOBJC_CPPFLAGS) $(kernel-sagasd-device_MOBJC_EXTRA_CPPFLAGS)) + $(kernel-sagasd-device_MOBJC_TARGETS) $(kernel-sagasd-device_MOBJC_DTARGETS) : kernel-sagasd-device_OBJCFLAGS:=$(strip $(HOST_CFLAGS) $(kernel-sagasd-device_OBJCFLAGS)) + $(kernel-sagasd-device_MOBJC_TARGETS) $(kernel-sagasd-device_MOBJC_DTARGETS) : kernel-sagasd-device_OBJCDFLAGS:=$(strip $(HOST_CFLAGS) $(kernel-sagasd-device_OBJCDFLAGS)) + $(kernel-sagasd-device_MOBJC_TARGETS) $(kernel-sagasd-device_MOBJC_DTARGETS) : kernel-sagasd-device_IQUOTE:=$(HOST_IQUOTE) + $(kernel-sagasd-device_MOBJC_TARGETS) $(kernel-sagasd-device_MOBJC_DTARGETS) : kernel-sagasd-device_IQUOTE_END:=$(HOST_IQUOTE_END) +endif +ifeq (target,kernel) + KERNEL_OBJC ?= $(KERNEL_CC) + kernel-sagasd-device_LINK ?= $(strip $(KERNEL_OBJC) $(KERNEL_SYSROOT) $(USER_LDFLAGS) $(KERNEL_LDFLAGS)) + kernel-sagasd-device_STRIP ?= $(ECHO) >/dev/null + kernel-sagasd-device_ASSEMBLER ?= $(strip $(KERNEL_CC) $(KERNEL_SYSROOT)) + $(kernel-sagasd-device_MOBJC_TARGETS) $(kernel-sagasd-device_MOBJC_DTARGETS) : CMD:=$(strip $(KERNEL_OBJC) $(KERNEL_SYSROOT)) + $(kernel-sagasd-device_MOBJC_TARGETS) $(kernel-sagasd-device_MOBJC_DTARGETS) : kernel-sagasd-device_MOBJC_CPPFLAGS:=$(strip $(KERNEL_MOBJC_CPPFLAGS) $(kernel-sagasd-device_MOBJC_CPPFLAGS) $(kernel-sagasd-device_MOBJC_EXTRA_CPPFLAGS)) + $(kernel-sagasd-device_MOBJC_TARGETS) $(kernel-sagasd-device_MOBJC_DTARGETS) : kernel-sagasd-device_OBJCFLAGS:=$(strip $(KERNEL_ISA_CFLAGS) $(KERNEL_CFLAGS) $(kernel-sagasd-device_OBJCFLAGS)) + $(kernel-sagasd-device_MOBJC_TARGETS) $(kernel-sagasd-device_MOBJC_DTARGETS) : kernel-sagasd-device_OBJCDFLAGS:=$(strip $(KERNEL_ISA_CFLAGS) $(KERNEL_CFLAGS) $(kernel-sagasd-device_OBJCDFLAGS)) + $(kernel-sagasd-device_MOBJC_TARGETS) $(kernel-sagasd-device_MOBJC_DTARGETS) : kernel-sagasd-device_IQUOTE:=$(KERNEL_IQUOTE) + $(kernel-sagasd-device_MOBJC_TARGETS) $(kernel-sagasd-device_MOBJC_DTARGETS) : kernel-sagasd-device_IQUOTE_END:=$(KERNEL_IQUOTE_END) +endif + +$(kernel-sagasd-device_MOBJC_TARGETS) : CPPFLAGS := $(kernel-sagasd-device_MOBJC_CPPFLAGS) +$(kernel-sagasd-device_MOBJC_TARGETS) : CFLAGS := $(kernel-sagasd-device_OBJCFLAGS) +$(kernel-sagasd-device_MOBJC_TARGETS) : $(kernel-sagasd-device_MOBJC_WILDCARD).o : $(kernel-sagasd-device_MOBJC_SRCWILDCARD).m + $(Q)$(ECHO) "Compiling $(if $(filter /%,$<),$(if $(filter $(SRCDIR)/%,$(abspath $<)),$(patsubst $(SRCDIR)/%,%,$(abspath $<)),$(patsubst $(TOP)/%,%,$(abspath $<))),$(patsubst $(SRCDIR)/%,%,$(abspath $(SRCDIR)/$(CURDIR)/$<)))" + $(Q)$(IF) $(CMD) $(kernel-sagasd-device_IQUOTE) $(dir $<) $(kernel-sagasd-device_IQUOTE) $(SRCDIR)/$(CURDIR) $(kernel-sagasd-device_IQUOTE) . $(kernel-sagasd-device_IQUOTE_END) $(strip $(CFLAGS) $(CPPFLAGS)) -D__SRCFILENAME__="\"$(subst $(TOP)/,,$(subst $(SRCDIR)/,,$(abspath $<)))"\" -c $< -o $@ > $(GENDIR)/cerrors 2>&1 ; then \ + $(IF) $(TEST) -s $(GENDIR)/cerrors ; then \ + $(ECHO) "$<: $(CMD) $(kernel-sagasd-device_IQUOTE) $(dir $<) $(kernel-sagasd-device_IQUOTE) $(SRCDIR)/$(CURDIR) $(kernel-sagasd-device_IQUOTE) . $(kernel-sagasd-device_IQUOTE_END) $(strip $(CFLAGS) $(CPPFLAGS)) -D__SRCFILENAME__=\"$(subst $(TOP)/,,$(subst $(SRCDIR)/,,$(abspath $<)))\" -c $< -o $@" >> $(GENDIR)/errors ; \ + tee < $(GENDIR)/cerrors -a $(GENDIR)/errors ; \ + else \ + $(NOP) ; \ + fi ; \ + else \ + $(ECHO) "Compile failed: $(CMD) $(kernel-sagasd-device_IQUOTE) $(dir $<) $(kernel-sagasd-device_IQUOTE) $(SRCDIR)/$(CURDIR) $(kernel-sagasd-device_IQUOTE) . $(kernel-sagasd-device_IQUOTE_END) $(strip $(CFLAGS) $(CPPFLAGS)) -D__SRCFILENAME__=\"$(subst $(TOP)/,,$(subst $(SRCDIR)/,,$(abspath $<)))\" -c $< -o $@" 1>&2 ; \ + tee < $(GENDIR)/cerrors -a $(GENDIR)/errors 1>&2 ; \ + exit 1 ; \ + fi + +$(kernel-sagasd-device_MOBJC_DTARGETS) : $(kernel-sagasd-device_MOBJC_WILDCARD).d : $(kernel-sagasd-device_MOBJC_SRCWILDCARD).m + $(Q)$(IF) $(TEST) ! -d $(dir $@) ; then $(MKDIR) $(dir $@) ; else $(NOP) ; fi + $(Q)$(ECHO) "Makedepend $(if $(filter /%,$<),$(if $(filter $(SRCDIR)/%,$(abspath $<)),$(patsubst $(SRCDIR)/%,%,$(abspath $<)),$(patsubst $(TOP)/%,%,$(abspath $<))),$(patsubst $(SRCDIR)/%,%,$(abspath $(SRCDIR)/$(CURDIR)/$<)))..." + $(Q)AROS_CC="$(CMD)" $(MKDEPEND) $(strip $(kernel-sagasd-device_OBJCDFLAGS) $(kernel-sagasd-device_MOBJC_CPPFLAGS)) -I$(TOP)/$(CURDIR) -I$(SRCDIR)/$(CURDIR) $< -o $@ + +endif + + +ifeq (,) +kernel-sagasd-device_MC_SRCWILDCARD := % +else +kernel-sagasd-device_MC_SRCWILDCARD := /% +endif + +ifeq ($(kernel-sagasd-device_OBJDIR),) +kernel-sagasd-device_MC_TARGETS := $(addsuffix .o,$(kernel-sagasd-device_CCFILES)) +kernel-sagasd-device_MC_DTARGETS := $(addsuffix .d,$(kernel-sagasd-device_CCFILES)) +kernel-sagasd-device_MC_TGTWILDCARD := % +else +ifeq (no,no) + kernel-sagasd-device_MC_TARGETS := $(addsuffix .o,$(addprefix $(kernel-sagasd-device_OBJDIR)/,$(notdir $(kernel-sagasd-device_CCFILES)))) + kernel-sagasd-device_MC_DTARGETS := $(addsuffix .d,$(addprefix $(kernel-sagasd-device_OBJDIR)/,$(notdir $(kernel-sagasd-device_CCFILES)))) +else +ifeq (,) + kernel-sagasd-device_MC_TARGETS := $(addsuffix .o,$(addprefix $(kernel-sagasd-device_OBJDIR)/,$(kernel-sagasd-device_CCFILES))) + kernel-sagasd-device_MC_DTARGETS := $(addsuffix .d,$(addprefix $(kernel-sagasd-device_OBJDIR)/,$(kernel-sagasd-device_CCFILES))) +else + kernel-sagasd-device_MC_TARGETS := $(addsuffix .o,$(addprefix $(kernel-sagasd-device_OBJDIR)/,$(patsubst /%,%,$(kernel-sagasd-device_CCFILES)))) + kernel-sagasd-device_MC_DTARGETS := $(addsuffix .d,$(addprefix $(kernel-sagasd-device_OBJDIR)/,$(patsubst /%,%,$(kernel-sagasd-device_CCFILES)))) +endif +endif +kernel-sagasd-device_MC_TGTWILDCARD := $(kernel-sagasd-device_OBJDIR)/% + +# Be sure that all .c files are generated +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : | $(addsuffix .c,$(kernel-sagasd-device_CCFILES)) + +# Be sure that all .c files are found +kernel-sagasd-device_MC_SRCDIR := $(shell echo $(SRCDIR) | sed 's/^\(.\):\//\/\1\//') +kernel-sagasd-device_MC_BASEDIRS := $(shell echo $(sort $(dir $(kernel-sagasd-device_CCFILES))) | sed 's/\(.\):\//\/\1\//g') +kernel-sagasd-device_MC_DIRS := $(foreach dir, $(kernel-sagasd-device_MC_BASEDIRS), $(if $(filter /%,$(dir)),$(dir),$(kernel-sagasd-device_MC_SRCDIR)/$(CURDIR)/$(dir))) +ifneq ($(kernel-sagasd-device_MC_DIRS),) + kernel-sagasd-device_MC_DIRS := $(shell echo $(kernel-sagasd-device_MC_DIRS) | sed 's/\(.\):\//\/\1\//g') + vpath %.c $(kernel-sagasd-device_MC_DIRS) +endif + +endif + +kernel-sagasd-device_MC_CPPFLAGS := $(kernel-sagasd-device_CPPFLAGS) +kernel-sagasd-device_CFLAGS := $(kernel-sagasd-device_CFLAGS) +ifeq ($(kernel-sagasd-device_DFLAGS),) + kernel-sagasd-device_DFLAGS := $(kernel-sagasd-device_CFLAGS) +else + kernel-sagasd-device_DFLAGS := $(kernel-sagasd-device_DFLAGS) +endif + +ifeq ($(findstring target,host kernel target),) + $(error unknown compiler target) +endif +ifeq (target,target) +kernel-sagasd-device_LINK ?= $(strip $(TARGET_CC) $(TARGET_SYSROOT) $(TARGET_LDFLAGS)) +kernel-sagasd-device_STRIP ?= $(TARGET_STRIP) +kernel-sagasd-device_ASSEMBLER ?= $(strip $(TARGET_CC) $(TARGET_SYSROOT)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : CMD:=$(strip $(TARGET_CC) $(TARGET_SYSROOT)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_MC_CPPFLAGS:=$(strip $(kernel-sagasd-device_MC_CPPFLAGS) $(kernel-sagasd-device_MC_EXTRA_CPPFLAGS)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_CFLAGS:=$(strip $(kernel-sagasd-device_CFLAGS) $(SAFETY_CFLAGS)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_DFLAGS:=$(kernel-sagasd-device_DFLAGS) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_IQUOTE:=$(CFLAGS_IQUOTE) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_IQUOTE_END:=$(CFLAGS_IQUOTE_END) +endif +ifeq (target,host) +kernel-sagasd-device_LINK ?= $(strip $(HOST_CC) $(HOST_LDFLAGS)) +kernel-sagasd-device_STRIP ?= $(HOST_STRIP) +kernel-sagasd-device_ASSEMBLER ?= $(strip $HOST_CC) $(HOST_SYSROOT)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : CMD:=$(HOST_CC) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_MC_CPPFLAGS:=$(strip $(HOST_MC_CPPFLAGS) $(kernel-sagasd-device_MC_CPPFLAGS) $(kernel-sagasd-device_MC_EXTRA_CPPFLAGS)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_CFLAGS:=$(strip $(HOST_CFLAGS) $(kernel-sagasd-device_CFLAGS)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_DFLAGS:=$(strip $(HOST_CFLAGS) $(kernel-sagasd-device_DFLAGS)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_IQUOTE:=$(HOST_IQUOTE) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_IQUOTE_END:=$(HOST_IQUOTE_END) +endif +ifeq (target,kernel) +kernel-sagasd-device_LINK ?= $(strip $(KERNEL_CC) $(KERNEL_SYSROOT) $(USER_LDFLAGS) $(KERNEL_LDFLAGS)) +kernel-sagasd-device_STRIP ?= $(ECHO) >/dev/null +kernel-sagasd-device_ASSEMBLER ?= $(strip $(KERNEL_CC) $(KERNEL_SYSROOT)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : CMD:=$(strip $(KERNEL_CC) $(KERNEL_SYSROOT)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_MC_CPPFLAGS:=$(strip $(KERNEL_MC_CPPFLAGS) $(kernel-sagasd-device_MC_CPPFLAGS) $(kernel-sagasd-device_MC_EXTRA_CPPFLAGS)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_CFLAGS:=$(strip $(KERNEL_ISA_CFLAGS) $(KERNEL_CFLAGS) $(kernel-sagasd-device_CFLAGS)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_DFLAGS:=$(strip $(KERNEL_ISA_CFLAGS) $(KERNEL_CFLAGS) $(kernel-sagasd-device_DFLAGS)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_IQUOTE:=$(KERNEL_IQUOTE) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_IQUOTE_END:=$(KERNEL_IQUOTE_END) +endif + +$(kernel-sagasd-device_MC_TARGETS) : CPPFLAGS := $(kernel-sagasd-device_MC_CPPFLAGS) +$(kernel-sagasd-device_MC_TARGETS) : CFLAGS := $(kernel-sagasd-device_CFLAGS) +$(kernel-sagasd-device_MC_TARGETS) : $(kernel-sagasd-device_MC_TGTWILDCARD).o : $(kernel-sagasd-device_MC_SRCWILDCARD).c + $(Q)$(ECHO) "Compiling $(if $(filter /%,$<),$(if $(filter $(SRCDIR)/%,$(abspath $<)),$(patsubst $(SRCDIR)/%,%,$(abspath $<)),$(patsubst $(TOP)/%,%,$(abspath $<))),$(patsubst $(SRCDIR)/%,%,$(abspath $(SRCDIR)/$(CURDIR)/$<)))" + $(Q)$(IF) $(CMD) $(kernel-sagasd-device_IQUOTE) $(dir $<) $(kernel-sagasd-device_IQUOTE) $(SRCDIR)/$(CURDIR) $(kernel-sagasd-device_IQUOTE) . $(kernel-sagasd-device_IQUOTE_END) $(strip $(CFLAGS) $(CPPFLAGS)) -D__SRCFILENAME__="\"$(subst $(TOP)/,,$(subst $(SRCDIR)/,,$(abspath $<)))"\" -c $< -o $@ > $(GENDIR)/cerrors 2>&1 ; then \ + $(IF) $(TEST) -s $(GENDIR)/cerrors ; then \ + $(ECHO) "$<: $(CMD) $(kernel-sagasd-device_IQUOTE) $(dir $<) $(kernel-sagasd-device_IQUOTE) $(SRCDIR)/$(CURDIR) $(kernel-sagasd-device_IQUOTE) . $(kernel-sagasd-device_IQUOTE_END) $(strip $(CFLAGS) $(CPPFLAGS)) -D__SRCFILENAME__=\"$(subst $(TOP)/,,$(subst $(SRCDIR)/,,$(abspath $<)))\" -c $< -o $@" >> $(GENDIR)/errors ; \ + tee < $(GENDIR)/cerrors -a $(GENDIR)/errors ; \ + else \ + $(NOP) ; \ + fi ; \ + else \ + $(ECHO) "Compile failed: $(CMD) $(kernel-sagasd-device_IQUOTE) $(dir $<) $(kernel-sagasd-device_IQUOTE) $(SRCDIR)/$(CURDIR) $(kernel-sagasd-device_IQUOTE) . $(kernel-sagasd-device_IQUOTE_END) $(strip $(CFLAGS) $(CPPFLAGS)) -D__SRCFILENAME__=\"$(subst $(TOP)/,,$(subst $(SRCDIR)/,,$(abspath $<)))\" -c $< -o $@" 1>&2 ; \ + tee < $(GENDIR)/cerrors -a $(GENDIR)/errors 1>&2 ; \ + exit 1 ; \ + fi + +$(kernel-sagasd-device_MC_DTARGETS) : $(kernel-sagasd-device_MC_TGTWILDCARD).d : $(kernel-sagasd-device_MC_SRCWILDCARD).c + $(Q)$(IF) $(TEST) ! -d $(dir $@) ; then $(MKDIR) $(dir $@) ; else $(NOP) ; fi + $(Q)$(ECHO) "Makedepend $(if $(filter /%,$<),$(if $(filter $(SRCDIR)/%,$(abspath $<)),$(patsubst $(SRCDIR)/%,%,$(abspath $<)),$(patsubst $(TOP)/%,%,$(abspath $<))),$(patsubst $(SRCDIR)/%,%,$(abspath $(SRCDIR)/$(CURDIR)/$<)))..." + $(Q)AROS_CC="$(CMD)" $(MKDEPEND) $(strip $(kernel-sagasd-device_DFLAGS) $(kernel-sagasd-device_MC_CPPFLAGS)) -I$(TOP)/$(CURDIR) -I$(SRCDIR)/$(CURDIR) $< -o $@ + +ifeq (,) +kernel-sagasd-device_MC_SRCWILDCARD := % +else +kernel-sagasd-device_MC_SRCWILDCARD := /% +endif + +ifeq ($(kernel-sagasd-device_OBJDIR),) +kernel-sagasd-device_MC_TARGETS := $(addsuffix .o,$(kernel-sagasd-device_TARGETCCFILES)) +kernel-sagasd-device_MC_DTARGETS := $(addsuffix .d,$(kernel-sagasd-device_TARGETCCFILES)) +kernel-sagasd-device_MC_TGTWILDCARD := % +else +ifeq (no,no) + kernel-sagasd-device_MC_TARGETS := $(addsuffix .o,$(addprefix $(kernel-sagasd-device_OBJDIR)/,$(notdir $(kernel-sagasd-device_TARGETCCFILES)))) + kernel-sagasd-device_MC_DTARGETS := $(addsuffix .d,$(addprefix $(kernel-sagasd-device_OBJDIR)/,$(notdir $(kernel-sagasd-device_TARGETCCFILES)))) +else +ifeq (,) + kernel-sagasd-device_MC_TARGETS := $(addsuffix .o,$(addprefix $(kernel-sagasd-device_OBJDIR)/,$(kernel-sagasd-device_TARGETCCFILES))) + kernel-sagasd-device_MC_DTARGETS := $(addsuffix .d,$(addprefix $(kernel-sagasd-device_OBJDIR)/,$(kernel-sagasd-device_TARGETCCFILES))) +else + kernel-sagasd-device_MC_TARGETS := $(addsuffix .o,$(addprefix $(kernel-sagasd-device_OBJDIR)/,$(patsubst /%,%,$(kernel-sagasd-device_TARGETCCFILES)))) + kernel-sagasd-device_MC_DTARGETS := $(addsuffix .d,$(addprefix $(kernel-sagasd-device_OBJDIR)/,$(patsubst /%,%,$(kernel-sagasd-device_TARGETCCFILES)))) +endif +endif +kernel-sagasd-device_MC_TGTWILDCARD := $(kernel-sagasd-device_OBJDIR)/% + +# Be sure that all .c files are generated +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : | $(addsuffix .c,$(kernel-sagasd-device_TARGETCCFILES)) + +# Be sure that all .c files are found +kernel-sagasd-device_MC_SRCDIR := $(shell echo $(SRCDIR) | sed 's/^\(.\):\//\/\1\//') +kernel-sagasd-device_MC_BASEDIRS := $(shell echo $(sort $(dir $(kernel-sagasd-device_TARGETCCFILES))) | sed 's/\(.\):\//\/\1\//g') +kernel-sagasd-device_MC_DIRS := $(foreach dir, $(kernel-sagasd-device_MC_BASEDIRS), $(if $(filter /%,$(dir)),$(dir),$(kernel-sagasd-device_MC_SRCDIR)/$(CURDIR)/$(dir))) +ifneq ($(kernel-sagasd-device_MC_DIRS),) + kernel-sagasd-device_MC_DIRS := $(shell echo $(kernel-sagasd-device_MC_DIRS) | sed 's/\(.\):\//\/\1\//g') + vpath %.c $(kernel-sagasd-device_MC_DIRS) +endif + +endif + +kernel-sagasd-device_MC_CPPFLAGS := $(kernel-sagasd-device_CPPFLAGS) -D__AROS__ +kernel-sagasd-device_CFLAGS := $(kernel-sagasd-device_CFLAGS) +ifeq ($(kernel-sagasd-device_DFLAGS),) + kernel-sagasd-device_DFLAGS := $(kernel-sagasd-device_CFLAGS) +else + kernel-sagasd-device_DFLAGS := $(kernel-sagasd-device_DFLAGS) +endif + +ifeq ($(findstring target,host kernel target),) + $(error unknown compiler target) +endif +ifeq (target,target) +kernel-sagasd-device_LINK ?= $(strip $(TARGET_CC) $(TARGET_SYSROOT) $(TARGET_LDFLAGS)) +kernel-sagasd-device_STRIP ?= $(TARGET_STRIP) +kernel-sagasd-device_ASSEMBLER ?= $(strip $(TARGET_CC) $(TARGET_SYSROOT)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : CMD:=$(strip $(TARGET_CC) $(TARGET_SYSROOT)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_MC_CPPFLAGS:=$(strip $(kernel-sagasd-device_MC_CPPFLAGS) $(kernel-sagasd-device_MC_EXTRA_CPPFLAGS)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_CFLAGS:=$(strip $(kernel-sagasd-device_CFLAGS) $(SAFETY_CFLAGS)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_DFLAGS:=$(kernel-sagasd-device_DFLAGS) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_IQUOTE:=$(CFLAGS_IQUOTE) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_IQUOTE_END:=$(CFLAGS_IQUOTE_END) +endif +ifeq (target,host) +kernel-sagasd-device_LINK ?= $(strip $(HOST_CC) $(HOST_LDFLAGS)) +kernel-sagasd-device_STRIP ?= $(HOST_STRIP) +kernel-sagasd-device_ASSEMBLER ?= $(strip $HOST_CC) $(HOST_SYSROOT)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : CMD:=$(HOST_CC) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_MC_CPPFLAGS:=$(strip $(HOST_MC_CPPFLAGS) $(kernel-sagasd-device_MC_CPPFLAGS) $(kernel-sagasd-device_MC_EXTRA_CPPFLAGS)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_CFLAGS:=$(strip $(HOST_CFLAGS) $(kernel-sagasd-device_CFLAGS)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_DFLAGS:=$(strip $(HOST_CFLAGS) $(kernel-sagasd-device_DFLAGS)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_IQUOTE:=$(HOST_IQUOTE) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_IQUOTE_END:=$(HOST_IQUOTE_END) +endif +ifeq (target,kernel) +kernel-sagasd-device_LINK ?= $(strip $(KERNEL_CC) $(KERNEL_SYSROOT) $(USER_LDFLAGS) $(KERNEL_LDFLAGS)) +kernel-sagasd-device_STRIP ?= $(ECHO) >/dev/null +kernel-sagasd-device_ASSEMBLER ?= $(strip $(KERNEL_CC) $(KERNEL_SYSROOT)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : CMD:=$(strip $(KERNEL_CC) $(KERNEL_SYSROOT)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_MC_CPPFLAGS:=$(strip $(KERNEL_MC_CPPFLAGS) $(kernel-sagasd-device_MC_CPPFLAGS) $(kernel-sagasd-device_MC_EXTRA_CPPFLAGS)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_CFLAGS:=$(strip $(KERNEL_ISA_CFLAGS) $(KERNEL_CFLAGS) $(kernel-sagasd-device_CFLAGS)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_DFLAGS:=$(strip $(KERNEL_ISA_CFLAGS) $(KERNEL_CFLAGS) $(kernel-sagasd-device_DFLAGS)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_IQUOTE:=$(KERNEL_IQUOTE) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_IQUOTE_END:=$(KERNEL_IQUOTE_END) +endif + +$(kernel-sagasd-device_MC_TARGETS) : CPPFLAGS := $(kernel-sagasd-device_MC_CPPFLAGS) +$(kernel-sagasd-device_MC_TARGETS) : CFLAGS := $(kernel-sagasd-device_CFLAGS) +$(kernel-sagasd-device_MC_TARGETS) : $(kernel-sagasd-device_MC_TGTWILDCARD).o : $(kernel-sagasd-device_MC_SRCWILDCARD).c + $(Q)$(ECHO) "Compiling $(if $(filter /%,$<),$(if $(filter $(SRCDIR)/%,$(abspath $<)),$(patsubst $(SRCDIR)/%,%,$(abspath $<)),$(patsubst $(TOP)/%,%,$(abspath $<))),$(patsubst $(SRCDIR)/%,%,$(abspath $(SRCDIR)/$(CURDIR)/$<)))" + $(Q)$(IF) $(CMD) $(kernel-sagasd-device_IQUOTE) $(dir $<) $(kernel-sagasd-device_IQUOTE) $(SRCDIR)/$(CURDIR) $(kernel-sagasd-device_IQUOTE) . $(kernel-sagasd-device_IQUOTE_END) $(strip $(CFLAGS) $(CPPFLAGS)) -D__SRCFILENAME__="\"$(subst $(TOP)/,,$(subst $(SRCDIR)/,,$(abspath $<)))"\" -c $< -o $@ > $(GENDIR)/cerrors 2>&1 ; then \ + $(IF) $(TEST) -s $(GENDIR)/cerrors ; then \ + $(ECHO) "$<: $(CMD) $(kernel-sagasd-device_IQUOTE) $(dir $<) $(kernel-sagasd-device_IQUOTE) $(SRCDIR)/$(CURDIR) $(kernel-sagasd-device_IQUOTE) . $(kernel-sagasd-device_IQUOTE_END) $(strip $(CFLAGS) $(CPPFLAGS)) -D__SRCFILENAME__=\"$(subst $(TOP)/,,$(subst $(SRCDIR)/,,$(abspath $<)))\" -c $< -o $@" >> $(GENDIR)/errors ; \ + tee < $(GENDIR)/cerrors -a $(GENDIR)/errors ; \ + else \ + $(NOP) ; \ + fi ; \ + else \ + $(ECHO) "Compile failed: $(CMD) $(kernel-sagasd-device_IQUOTE) $(dir $<) $(kernel-sagasd-device_IQUOTE) $(SRCDIR)/$(CURDIR) $(kernel-sagasd-device_IQUOTE) . $(kernel-sagasd-device_IQUOTE_END) $(strip $(CFLAGS) $(CPPFLAGS)) -D__SRCFILENAME__=\"$(subst $(TOP)/,,$(subst $(SRCDIR)/,,$(abspath $<)))\" -c $< -o $@" 1>&2 ; \ + tee < $(GENDIR)/cerrors -a $(GENDIR)/errors 1>&2 ; \ + exit 1 ; \ + fi + +$(kernel-sagasd-device_MC_DTARGETS) : $(kernel-sagasd-device_MC_TGTWILDCARD).d : $(kernel-sagasd-device_MC_SRCWILDCARD).c + $(Q)$(IF) $(TEST) ! -d $(dir $@) ; then $(MKDIR) $(dir $@) ; else $(NOP) ; fi + $(Q)$(ECHO) "Makedepend $(if $(filter /%,$<),$(if $(filter $(SRCDIR)/%,$(abspath $<)),$(patsubst $(SRCDIR)/%,%,$(abspath $<)),$(patsubst $(TOP)/%,%,$(abspath $<))),$(patsubst $(SRCDIR)/%,%,$(abspath $(SRCDIR)/$(CURDIR)/$<)))..." + $(Q)AROS_CC="$(CMD)" $(MKDEPEND) $(strip $(kernel-sagasd-device_DFLAGS) $(kernel-sagasd-device_MC_CPPFLAGS)) -I$(TOP)/$(CURDIR) -I$(SRCDIR)/$(CURDIR) $< -o $@ + +ifeq (,) +kernel-sagasd-device_MC_SRCWILDCARD := % +else +kernel-sagasd-device_MC_SRCWILDCARD := /% +endif + +ifeq ($(kernel-sagasd-device_OBJDIR)/linklib,) +kernel-sagasd-device_MC_TARGETS := $(addsuffix .o,$(kernel-sagasd-device_NLIBARCHFILES)) +kernel-sagasd-device_MC_DTARGETS := $(addsuffix .d,$(kernel-sagasd-device_NLIBARCHFILES)) +kernel-sagasd-device_MC_TGTWILDCARD := % +else +ifeq (no,no) + kernel-sagasd-device_MC_TARGETS := $(addsuffix .o,$(addprefix $(kernel-sagasd-device_OBJDIR)/linklib/,$(notdir $(kernel-sagasd-device_NLIBARCHFILES)))) + kernel-sagasd-device_MC_DTARGETS := $(addsuffix .d,$(addprefix $(kernel-sagasd-device_OBJDIR)/linklib/,$(notdir $(kernel-sagasd-device_NLIBARCHFILES)))) +else +ifeq (,) + kernel-sagasd-device_MC_TARGETS := $(addsuffix .o,$(addprefix $(kernel-sagasd-device_OBJDIR)/linklib/,$(kernel-sagasd-device_NLIBARCHFILES))) + kernel-sagasd-device_MC_DTARGETS := $(addsuffix .d,$(addprefix $(kernel-sagasd-device_OBJDIR)/linklib/,$(kernel-sagasd-device_NLIBARCHFILES))) +else + kernel-sagasd-device_MC_TARGETS := $(addsuffix .o,$(addprefix $(kernel-sagasd-device_OBJDIR)/linklib/,$(patsubst /%,%,$(kernel-sagasd-device_NLIBARCHFILES)))) + kernel-sagasd-device_MC_DTARGETS := $(addsuffix .d,$(addprefix $(kernel-sagasd-device_OBJDIR)/linklib/,$(patsubst /%,%,$(kernel-sagasd-device_NLIBARCHFILES)))) +endif +endif +kernel-sagasd-device_MC_TGTWILDCARD := $(kernel-sagasd-device_OBJDIR)/linklib/% + +# Be sure that all .c files are generated +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : | $(addsuffix .c,$(kernel-sagasd-device_NLIBARCHFILES)) + +# Be sure that all .c files are found +kernel-sagasd-device_MC_SRCDIR := $(shell echo $(SRCDIR) | sed 's/^\(.\):\//\/\1\//') +kernel-sagasd-device_MC_BASEDIRS := $(shell echo $(sort $(dir $(kernel-sagasd-device_NLIBARCHFILES))) | sed 's/\(.\):\//\/\1\//g') +kernel-sagasd-device_MC_DIRS := $(foreach dir, $(kernel-sagasd-device_MC_BASEDIRS), $(if $(filter /%,$(dir)),$(dir),$(kernel-sagasd-device_MC_SRCDIR)/$(CURDIR)/$(dir))) +ifneq ($(kernel-sagasd-device_MC_DIRS),) + kernel-sagasd-device_MC_DIRS := $(shell echo $(kernel-sagasd-device_MC_DIRS) | sed 's/\(.\):\//\/\1\//g') + vpath %.c $(kernel-sagasd-device_MC_DIRS) +endif + +endif + +kernel-sagasd-device_MC_CPPFLAGS := $(kernel-sagasd-device_LINKLIBCPPFLAGS) -D__AROS__ +kernel-sagasd-device_CFLAGS := $(kernel-sagasd-device_LINKLIBCFLAGS) +ifeq ($(kernel-sagasd-device_LINKLIBDFLAGS),) + kernel-sagasd-device_DFLAGS := $(kernel-sagasd-device_LINKLIBCFLAGS) +else + kernel-sagasd-device_DFLAGS := $(kernel-sagasd-device_LINKLIBDFLAGS) +endif + +ifeq ($(findstring target,host kernel target),) + $(error unknown compiler target) +endif +ifeq (target,target) +kernel-sagasd-device_LINK ?= $(strip $(TARGET_CC) $(TARGET_SYSROOT) $(TARGET_LDFLAGS)) +kernel-sagasd-device_STRIP ?= $(TARGET_STRIP) +kernel-sagasd-device_ASSEMBLER ?= $(strip $(TARGET_CC) $(TARGET_SYSROOT)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : CMD:=$(strip $(TARGET_CC) $(TARGET_SYSROOT)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_MC_CPPFLAGS:=$(strip $(kernel-sagasd-device_MC_CPPFLAGS) $(kernel-sagasd-device_MC_EXTRA_CPPFLAGS)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_CFLAGS:=$(strip $(kernel-sagasd-device_CFLAGS) $(SAFETY_CFLAGS)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_DFLAGS:=$(kernel-sagasd-device_DFLAGS) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_IQUOTE:=$(CFLAGS_IQUOTE) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_IQUOTE_END:=$(CFLAGS_IQUOTE_END) +endif +ifeq (target,host) +kernel-sagasd-device_LINK ?= $(strip $(HOST_CC) $(HOST_LDFLAGS)) +kernel-sagasd-device_STRIP ?= $(HOST_STRIP) +kernel-sagasd-device_ASSEMBLER ?= $(strip $HOST_CC) $(HOST_SYSROOT)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : CMD:=$(HOST_CC) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_MC_CPPFLAGS:=$(strip $(HOST_MC_CPPFLAGS) $(kernel-sagasd-device_MC_CPPFLAGS) $(kernel-sagasd-device_MC_EXTRA_CPPFLAGS)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_CFLAGS:=$(strip $(HOST_CFLAGS) $(kernel-sagasd-device_CFLAGS)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_DFLAGS:=$(strip $(HOST_CFLAGS) $(kernel-sagasd-device_DFLAGS)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_IQUOTE:=$(HOST_IQUOTE) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_IQUOTE_END:=$(HOST_IQUOTE_END) +endif +ifeq (target,kernel) +kernel-sagasd-device_LINK ?= $(strip $(KERNEL_CC) $(KERNEL_SYSROOT) $(USER_LDFLAGS) $(KERNEL_LDFLAGS)) +kernel-sagasd-device_STRIP ?= $(ECHO) >/dev/null +kernel-sagasd-device_ASSEMBLER ?= $(strip $(KERNEL_CC) $(KERNEL_SYSROOT)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : CMD:=$(strip $(KERNEL_CC) $(KERNEL_SYSROOT)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_MC_CPPFLAGS:=$(strip $(KERNEL_MC_CPPFLAGS) $(kernel-sagasd-device_MC_CPPFLAGS) $(kernel-sagasd-device_MC_EXTRA_CPPFLAGS)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_CFLAGS:=$(strip $(KERNEL_ISA_CFLAGS) $(KERNEL_CFLAGS) $(kernel-sagasd-device_CFLAGS)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_DFLAGS:=$(strip $(KERNEL_ISA_CFLAGS) $(KERNEL_CFLAGS) $(kernel-sagasd-device_DFLAGS)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_IQUOTE:=$(KERNEL_IQUOTE) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_IQUOTE_END:=$(KERNEL_IQUOTE_END) +endif + +$(kernel-sagasd-device_MC_TARGETS) : CPPFLAGS := $(kernel-sagasd-device_MC_CPPFLAGS) +$(kernel-sagasd-device_MC_TARGETS) : CFLAGS := $(kernel-sagasd-device_CFLAGS) +$(kernel-sagasd-device_MC_TARGETS) : $(kernel-sagasd-device_MC_TGTWILDCARD).o : $(kernel-sagasd-device_MC_SRCWILDCARD).c + $(Q)$(ECHO) "Compiling $(if $(filter /%,$<),$(if $(filter $(SRCDIR)/%,$(abspath $<)),$(patsubst $(SRCDIR)/%,%,$(abspath $<)),$(patsubst $(TOP)/%,%,$(abspath $<))),$(patsubst $(SRCDIR)/%,%,$(abspath $(SRCDIR)/$(CURDIR)/$<)))" + $(Q)$(IF) $(CMD) $(kernel-sagasd-device_IQUOTE) $(dir $<) $(kernel-sagasd-device_IQUOTE) $(SRCDIR)/$(CURDIR) $(kernel-sagasd-device_IQUOTE) . $(kernel-sagasd-device_IQUOTE_END) $(strip $(CFLAGS) $(CPPFLAGS)) -D__SRCFILENAME__="\"$(subst $(TOP)/,,$(subst $(SRCDIR)/,,$(abspath $<)))"\" -c $< -o $@ > $(GENDIR)/cerrors 2>&1 ; then \ + $(IF) $(TEST) -s $(GENDIR)/cerrors ; then \ + $(ECHO) "$<: $(CMD) $(kernel-sagasd-device_IQUOTE) $(dir $<) $(kernel-sagasd-device_IQUOTE) $(SRCDIR)/$(CURDIR) $(kernel-sagasd-device_IQUOTE) . $(kernel-sagasd-device_IQUOTE_END) $(strip $(CFLAGS) $(CPPFLAGS)) -D__SRCFILENAME__=\"$(subst $(TOP)/,,$(subst $(SRCDIR)/,,$(abspath $<)))\" -c $< -o $@" >> $(GENDIR)/errors ; \ + tee < $(GENDIR)/cerrors -a $(GENDIR)/errors ; \ + else \ + $(NOP) ; \ + fi ; \ + else \ + $(ECHO) "Compile failed: $(CMD) $(kernel-sagasd-device_IQUOTE) $(dir $<) $(kernel-sagasd-device_IQUOTE) $(SRCDIR)/$(CURDIR) $(kernel-sagasd-device_IQUOTE) . $(kernel-sagasd-device_IQUOTE_END) $(strip $(CFLAGS) $(CPPFLAGS)) -D__SRCFILENAME__=\"$(subst $(TOP)/,,$(subst $(SRCDIR)/,,$(abspath $<)))\" -c $< -o $@" 1>&2 ; \ + tee < $(GENDIR)/cerrors -a $(GENDIR)/errors 1>&2 ; \ + exit 1 ; \ + fi + +$(kernel-sagasd-device_MC_DTARGETS) : $(kernel-sagasd-device_MC_TGTWILDCARD).d : $(kernel-sagasd-device_MC_SRCWILDCARD).c + $(Q)$(IF) $(TEST) ! -d $(dir $@) ; then $(MKDIR) $(dir $@) ; else $(NOP) ; fi + $(Q)$(ECHO) "Makedepend $(if $(filter /%,$<),$(if $(filter $(SRCDIR)/%,$(abspath $<)),$(patsubst $(SRCDIR)/%,%,$(abspath $<)),$(patsubst $(TOP)/%,%,$(abspath $<))),$(patsubst $(SRCDIR)/%,%,$(abspath $(SRCDIR)/$(CURDIR)/$<)))..." + $(Q)AROS_CC="$(CMD)" $(MKDEPEND) $(strip $(kernel-sagasd-device_DFLAGS) $(kernel-sagasd-device_MC_CPPFLAGS)) -I$(TOP)/$(CURDIR) -I$(SRCDIR)/$(CURDIR) $< -o $@ + +ifeq ($(kernel-sagasd-device_OBJDIR)/linklib,) +kernel-sagasd-device_MC_SRCWILDCARD := % +else +kernel-sagasd-device_MC_SRCWILDCARD := $(kernel-sagasd-device_OBJDIR)/linklib/% +endif + +ifeq ($(kernel-sagasd-device_OBJDIR)/linklib,) +kernel-sagasd-device_MC_TARGETS := $(addsuffix .o,$(kernel-sagasd-device_LINKLIBCCGENFILES)) +kernel-sagasd-device_MC_DTARGETS := $(addsuffix .d,$(kernel-sagasd-device_LINKLIBCCGENFILES)) +kernel-sagasd-device_MC_TGTWILDCARD := % +else +ifeq (no,no) + kernel-sagasd-device_MC_TARGETS := $(addsuffix .o,$(addprefix $(kernel-sagasd-device_OBJDIR)/linklib/,$(notdir $(kernel-sagasd-device_LINKLIBCCGENFILES)))) + kernel-sagasd-device_MC_DTARGETS := $(addsuffix .d,$(addprefix $(kernel-sagasd-device_OBJDIR)/linklib/,$(notdir $(kernel-sagasd-device_LINKLIBCCGENFILES)))) +else +ifeq ($(kernel-sagasd-device_OBJDIR)/linklib,) + kernel-sagasd-device_MC_TARGETS := $(addsuffix .o,$(addprefix $(kernel-sagasd-device_OBJDIR)/linklib/,$(kernel-sagasd-device_LINKLIBCCGENFILES))) + kernel-sagasd-device_MC_DTARGETS := $(addsuffix .d,$(addprefix $(kernel-sagasd-device_OBJDIR)/linklib/,$(kernel-sagasd-device_LINKLIBCCGENFILES))) +else + kernel-sagasd-device_MC_TARGETS := $(addsuffix .o,$(addprefix $(kernel-sagasd-device_OBJDIR)/linklib/,$(patsubst $(kernel-sagasd-device_OBJDIR)/linklib/%,%,$(kernel-sagasd-device_LINKLIBCCGENFILES)))) + kernel-sagasd-device_MC_DTARGETS := $(addsuffix .d,$(addprefix $(kernel-sagasd-device_OBJDIR)/linklib/,$(patsubst $(kernel-sagasd-device_OBJDIR)/linklib/%,%,$(kernel-sagasd-device_LINKLIBCCGENFILES)))) +endif +endif +kernel-sagasd-device_MC_TGTWILDCARD := $(kernel-sagasd-device_OBJDIR)/linklib/% + +# Be sure that all .c files are generated +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : | $(addsuffix .c,$(kernel-sagasd-device_LINKLIBCCGENFILES)) + +# Be sure that all .c files are found +kernel-sagasd-device_MC_SRCDIR := $(shell echo $(SRCDIR) | sed 's/^\(.\):\//\/\1\//') +kernel-sagasd-device_MC_BASEDIRS := $(shell echo $(sort $(dir $(kernel-sagasd-device_LINKLIBCCGENFILES))) | sed 's/\(.\):\//\/\1\//g') +kernel-sagasd-device_MC_DIRS := $(foreach dir, $(kernel-sagasd-device_MC_BASEDIRS), $(if $(filter /%,$(dir)),$(dir),$(kernel-sagasd-device_MC_SRCDIR)/$(CURDIR)/$(dir))) +ifneq ($(kernel-sagasd-device_MC_DIRS),) + kernel-sagasd-device_MC_DIRS := $(shell echo $(kernel-sagasd-device_MC_DIRS) | sed 's/\(.\):\//\/\1\//g') + vpath %.c $(kernel-sagasd-device_MC_DIRS) +endif + +endif + +kernel-sagasd-device_MC_CPPFLAGS := $(kernel-sagasd-device_LINKLIBCPPFLAGS) -D__AROS__ +kernel-sagasd-device_CFLAGS := $(kernel-sagasd-device_LINKLIBCFLAGS) +ifeq ($(kernel-sagasd-device_LINKLIBDFLAGS),) + kernel-sagasd-device_DFLAGS := $(kernel-sagasd-device_LINKLIBCFLAGS) +else + kernel-sagasd-device_DFLAGS := $(kernel-sagasd-device_LINKLIBDFLAGS) +endif + +ifeq ($(findstring target,host kernel target),) + $(error unknown compiler target) +endif +ifeq (target,target) +kernel-sagasd-device_LINK ?= $(strip $(TARGET_CC) $(TARGET_SYSROOT) $(TARGET_LDFLAGS)) +kernel-sagasd-device_STRIP ?= $(TARGET_STRIP) +kernel-sagasd-device_ASSEMBLER ?= $(strip $(TARGET_CC) $(TARGET_SYSROOT)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : CMD:=$(strip $(TARGET_CC) $(TARGET_SYSROOT)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_MC_CPPFLAGS:=$(strip $(kernel-sagasd-device_MC_CPPFLAGS) $(kernel-sagasd-device_MC_EXTRA_CPPFLAGS)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_CFLAGS:=$(strip $(kernel-sagasd-device_CFLAGS) $(SAFETY_CFLAGS)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_DFLAGS:=$(kernel-sagasd-device_DFLAGS) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_IQUOTE:=$(CFLAGS_IQUOTE) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_IQUOTE_END:=$(CFLAGS_IQUOTE_END) +endif +ifeq (target,host) +kernel-sagasd-device_LINK ?= $(strip $(HOST_CC) $(HOST_LDFLAGS)) +kernel-sagasd-device_STRIP ?= $(HOST_STRIP) +kernel-sagasd-device_ASSEMBLER ?= $(strip $HOST_CC) $(HOST_SYSROOT)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : CMD:=$(HOST_CC) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_MC_CPPFLAGS:=$(strip $(HOST_MC_CPPFLAGS) $(kernel-sagasd-device_MC_CPPFLAGS) $(kernel-sagasd-device_MC_EXTRA_CPPFLAGS)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_CFLAGS:=$(strip $(HOST_CFLAGS) $(kernel-sagasd-device_CFLAGS)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_DFLAGS:=$(strip $(HOST_CFLAGS) $(kernel-sagasd-device_DFLAGS)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_IQUOTE:=$(HOST_IQUOTE) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_IQUOTE_END:=$(HOST_IQUOTE_END) +endif +ifeq (target,kernel) +kernel-sagasd-device_LINK ?= $(strip $(KERNEL_CC) $(KERNEL_SYSROOT) $(USER_LDFLAGS) $(KERNEL_LDFLAGS)) +kernel-sagasd-device_STRIP ?= $(ECHO) >/dev/null +kernel-sagasd-device_ASSEMBLER ?= $(strip $(KERNEL_CC) $(KERNEL_SYSROOT)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : CMD:=$(strip $(KERNEL_CC) $(KERNEL_SYSROOT)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_MC_CPPFLAGS:=$(strip $(KERNEL_MC_CPPFLAGS) $(kernel-sagasd-device_MC_CPPFLAGS) $(kernel-sagasd-device_MC_EXTRA_CPPFLAGS)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_CFLAGS:=$(strip $(KERNEL_ISA_CFLAGS) $(KERNEL_CFLAGS) $(kernel-sagasd-device_CFLAGS)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_DFLAGS:=$(strip $(KERNEL_ISA_CFLAGS) $(KERNEL_CFLAGS) $(kernel-sagasd-device_DFLAGS)) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_IQUOTE:=$(KERNEL_IQUOTE) +$(kernel-sagasd-device_MC_TARGETS) $(kernel-sagasd-device_MC_DTARGETS) : kernel-sagasd-device_IQUOTE_END:=$(KERNEL_IQUOTE_END) +endif + +$(kernel-sagasd-device_MC_TARGETS) : CPPFLAGS := $(kernel-sagasd-device_MC_CPPFLAGS) +$(kernel-sagasd-device_MC_TARGETS) : CFLAGS := $(kernel-sagasd-device_CFLAGS) +$(kernel-sagasd-device_MC_TARGETS) : $(kernel-sagasd-device_MC_TGTWILDCARD).o : $(kernel-sagasd-device_MC_SRCWILDCARD).c + $(Q)$(ECHO) "Compiling $(if $(filter /%,$<),$(if $(filter $(SRCDIR)/%,$(abspath $<)),$(patsubst $(SRCDIR)/%,%,$(abspath $<)),$(patsubst $(TOP)/%,%,$(abspath $<))),$(patsubst $(SRCDIR)/%,%,$(abspath $(SRCDIR)/$(CURDIR)/$<)))" + $(Q)$(IF) $(CMD) $(kernel-sagasd-device_IQUOTE) $(dir $<) $(kernel-sagasd-device_IQUOTE) $(SRCDIR)/$(CURDIR) $(kernel-sagasd-device_IQUOTE) . $(kernel-sagasd-device_IQUOTE_END) $(strip $(CFLAGS) $(CPPFLAGS)) -D__SRCFILENAME__="\"$(subst $(TOP)/,,$(subst $(SRCDIR)/,,$(abspath $<)))"\" -c $< -o $@ > $(GENDIR)/cerrors 2>&1 ; then \ + $(IF) $(TEST) -s $(GENDIR)/cerrors ; then \ + $(ECHO) "$<: $(CMD) $(kernel-sagasd-device_IQUOTE) $(dir $<) $(kernel-sagasd-device_IQUOTE) $(SRCDIR)/$(CURDIR) $(kernel-sagasd-device_IQUOTE) . $(kernel-sagasd-device_IQUOTE_END) $(strip $(CFLAGS) $(CPPFLAGS)) -D__SRCFILENAME__=\"$(subst $(TOP)/,,$(subst $(SRCDIR)/,,$(abspath $<)))\" -c $< -o $@" >> $(GENDIR)/errors ; \ + tee < $(GENDIR)/cerrors -a $(GENDIR)/errors ; \ + else \ + $(NOP) ; \ + fi ; \ + else \ + $(ECHO) "Compile failed: $(CMD) $(kernel-sagasd-device_IQUOTE) $(dir $<) $(kernel-sagasd-device_IQUOTE) $(SRCDIR)/$(CURDIR) $(kernel-sagasd-device_IQUOTE) . $(kernel-sagasd-device_IQUOTE_END) $(strip $(CFLAGS) $(CPPFLAGS)) -D__SRCFILENAME__=\"$(subst $(TOP)/,,$(subst $(SRCDIR)/,,$(abspath $<)))\" -c $< -o $@" 1>&2 ; \ + tee < $(GENDIR)/cerrors -a $(GENDIR)/errors 1>&2 ; \ + exit 1 ; \ + fi + +$(kernel-sagasd-device_MC_DTARGETS) : $(kernel-sagasd-device_MC_TGTWILDCARD).d : $(kernel-sagasd-device_MC_SRCWILDCARD).c + $(Q)$(IF) $(TEST) ! -d $(dir $@) ; then $(MKDIR) $(dir $@) ; else $(NOP) ; fi + $(Q)$(ECHO) "Makedepend $(if $(filter /%,$<),$(if $(filter $(SRCDIR)/%,$(abspath $<)),$(patsubst $(SRCDIR)/%,%,$(abspath $<)),$(patsubst $(TOP)/%,%,$(abspath $<))),$(patsubst $(SRCDIR)/%,%,$(abspath $(SRCDIR)/$(CURDIR)/$<)))..." + $(Q)AROS_CC="$(CMD)" $(MKDEPEND) $(strip $(kernel-sagasd-device_DFLAGS) $(kernel-sagasd-device_MC_CPPFLAGS)) -I$(TOP)/$(CURDIR) -I$(SRCDIR)/$(CURDIR) $< -o $@ + +ifneq ($(kernel-sagasd-device_LINKLIBAFILES),) + +ifeq ($(kernel-sagasd-device_OBJDIR)/linklib,) +kernel-sagasd-device-MA_TARGETS := $(addsuffix .o,$(kernel-sagasd-device_LINKLIBAFILES) $(kernel-sagasd-device_RELLINKLIBAFILES)) +kernel-sagasd-device-MA_WILDCARD := % +else +kernel-sagasd-device-MA_TARGETS := $(addsuffix .o,$(addprefix $(kernel-sagasd-device_OBJDIR)/linklib/,$(notdir $(kernel-sagasd-device_LINKLIBAFILES) $(kernel-sagasd-device_RELLINKLIBAFILES)))) +kernel-sagasd-device-MA_WILDCARD := $(kernel-sagasd-device_OBJDIR)/linklib/% + +# Be sure that all .s files are generated +$(kernel-sagasd-device-MA_TARGETS) : | $(addsuffix .S,$(kernel-sagasd-device_LINKLIBAFILES) $(kernel-sagasd-device_RELLINKLIBAFILES)) + +# Be sure that all .c files are found +kernel-sagasd-device-MA_SRCDIR := $(shell echo $(SRCDIR) | sed 's/^\(.\):\//\/\1\//') +kernel-sagasd-device-MA_BASEDIRS := $(shell echo $(sort $(dir $(kernel-sagasd-device_LINKLIBAFILES) $(kernel-sagasd-device_RELLINKLIBAFILES))) | sed 's/\(.\):\//\/\1\//g') +kernel-sagasd-device-MA_DIRS := $(foreach dir, $(kernel-sagasd-device-MA_BASEDIRS), $(if $(filter /%,$(dir)),$(dir),$(kernel-sagasd-device-MA_SRCDIR)/$(CURDIR)/$(dir))) +ifneq ($(kernel-sagasd-device-MA_DIRS),) + kernel-sagasd-device-MA_DIRS := $(shell echo $(kernel-sagasd-device-MA_DIRS) | sed 's/\(.\):\//\/\1\//g') + vpath %.S $(kernel-sagasd-device-MA_DIRS) +endif + +endif + +kernel-sagasd-device-MA_ASSEMBLER ?= $(kernel-sagasd-device_ASSEMBLER) + +$(kernel-sagasd-device-MA_TARGETS) : kernel-sagasd-device-MA_CMD:= $(kernel-sagasd-device-MA_ASSEMBLER) + +$(kernel-sagasd-device-MA_TARGETS) : CPPFLAGS := $(CPPFLAGS) +$(kernel-sagasd-device-MA_TARGETS) : AFLAGS := $(AFLAGS) +$(kernel-sagasd-device-MA_TARGETS) : $(kernel-sagasd-device-MA_WILDCARD).o : %.S + $(Q)$(ECHO) "Assembling $(notdir $<)..." + $(Q)$(IF) $(kernel-sagasd-device-MA_CMD) $(strip $(AFLAGS) $(CPPFLAGS)) $< -o $@ > $(GENDIR)/cerrors 2>&1 ; then \ + $(IF) $(TEST) -s $(GENDIR)/cerrors ; then \ + $(ECHO) "$(notdir $<): $(kernel-sagasd-device-MA_CMD) $(strip $(AFLAGS) $(CPPFLAGS)) $< -o $@" >> $(GENDIR)/errors ; \ + $(CAT) $(GENDIR)/cerrors >> $(GENDIR)/errors ; \ + else \ + $(NOP) ; \ + fi ; \ + else \ + $(ECHO) "Assemble failed: $(kernel-sagasd-device-MA_CMD) $(strip $(AFLAGS) $(CPPFLAGS)) $< -o $@" 1>&2 ; \ + tee < $(GENDIR)/cerrors -a $(GENDIR)/errors 1>&2 ; \ + exit 1 ; \ + fi +endif + +## Linking +## +ifeq (,) +kernel-sagasd-device_SUFFIX := device +else +kernel-sagasd-device_SUFFIX := +endif + +ifeq (target,target) +kernel-sagasd-device_ISA_LDFLAGS := $(TARGET_ISA_OBJCFLAGS) +endif +ifeq (target,host) +kernel-sagasd-device_ISA_LDFLAGS := $(HOST_ISA_OBJCFLAGS) +endif +ifeq (target,kernel) +kernel-sagasd-device_ISA_LDFLAGS := $(KERNEL_ISA_OBJCFLAGS) +endif + +ifeq (M,M) +# Handlers use dash instead of dot in their names +ifeq ($(kernel-sagasd-device_SUFFIX),handler) +kernel-sagasd-device_MODULE := $(AROSDIR)/$(kernel-sagasd-device_MODDIR)/$(kernel-sagasd-device_DEFNAME)-$(kernel-sagasd-device_SUFFIX) +else +kernel-sagasd-device_MODULE := $(AROSDIR)/$(kernel-sagasd-device_MODDIR)/$(kernel-sagasd-device_DEFNAME).$(kernel-sagasd-device_SUFFIX) +endif +kernel-sagasd-device_KOBJ := $(KOBJSDIR)/$(kernel-sagasd-device_DEFNAME)_$(kernel-sagasd-device_SUFFIX).o +else +kernel-sagasd-device_MODULE := +kernel-sagasd-device_KOBJ := +endif + +kernel-sagasd-device-quick : kernel-sagasd-device +kernel-sagasd-device : $(kernel-sagasd-device_MODULE) $(kernel-sagasd-device_LINKLIB) $(kernel-sagasd-device_RELLINKLIB) +ifeq (M,M) +kernel-sagasd-device-kobj : $(kernel-sagasd-device_KOBJ) $(kernel-sagasd-device_LINKLIB) $(kernel-sagasd-device_RELLINKLIB) +kernel-sagasd-device-kobj-quick : $(kernel-sagasd-device_KOBJ) $(kernel-sagasd-device_LINKLIB) $(kernel-sagasd-device_RELLINKLIB) +endif +ifeq (M,M) +kernel-sagasd-device-linklib : $(kernel-sagasd-device_LINKLIB) $(kernel-sagasd-device_RELLINKLIB) +endif + +kernel-sagasd-device_OBJS := $(addsuffix .o,$(kernel-sagasd-device_STARTFILES)) $(kernel-sagasd-device_ARCHOBJS) \ + $(addprefix $(kernel-sagasd-device_OBJDIR)/,$(notdir $(kernel-sagasd-device_C_NARCHFILES:=.o) $(kernel-sagasd-device_CXXFILES:=.o))) + +ifeq (yes,yes) +# Handlers always have entry point +ifneq (device,handler) +kernel-sagasd-device_STARTOBJS := $(addsuffix .o,$(addprefix $(GENDIR)/,$(RESIDENT_BEGIN))) +endif +endif + +# Under Windows con* is a reserved name, it refers to console. Files with such names can't be created. +# This breaks con-handler build. Here we work around this +ifeq (sagasd,con) + kernel-sagasd-device_ERR := $(notdir $(kernel-sagasd-device_MODULE)).err +else + kernel-sagasd-device_ERR := sagasd.err +endif + +ifeq (M,M) +# The module is linked from all the compiled .o files + +TMP_LDFLAGS := $(LDFLAGS) $($(kernel-sagasd-device_DEFNAME)_LDFLAGS) $(kernel-sagasd-device_ISA_LDFLAGS) +# Make a list of the lib files the programs depend on. +# In LDFLAGS remove white space between -L and directory +TMP_DIRS := $(subst -L ,-L,$(strip $(TMP_LDFLAGS))) +# Filter out only the libdirs and remove -L +TMP_DIRS := $(patsubst -L%,%,$(filter -L%,$(TMP_DIRS))) +# Add trailing / +TMP_DIRS := $(subst //,/,$(addsuffix /,$(TMP_DIRS))) +# Add normal linklib path +TMP_DIRS += $(AROS_LIB)/ +# add lib and .a to static linklib names +TMP_LIBS := $(addprefix lib,$(addsuffix .a,$(kernel-sagasd-device_LIBS) $($(kernel-sagasd-device_DEFNAME)_LIBS))) +# search for the linklibs in the given path, ignore ones not found +TMP_DEPLIBS := $(foreach lib,$(TMP_LIBS), \ + $(firstword $(wildcard $(addsuffix $(lib),$(TMP_DIRS)))) \ +) + +$(kernel-sagasd-device_MODULE) : LIB_NAMES := $(kernel-sagasd-device_LIBS) $($(kernel-sagasd-device_DEFNAME)_LIBS) +$(kernel-sagasd-device_MODULE) : OBJS := $(kernel-sagasd-device_STARTOBJS) $(kernel-sagasd-device_OBJS) $(USER_OBJS) +$(kernel-sagasd-device_MODULE) : ENDTAG := $(kernel-sagasd-device_ENDOBJS) +$(kernel-sagasd-device_MODULE) : ERR := $(kernel-sagasd-device_ERR) +$(kernel-sagasd-device_MODULE) : OBJDIR := $(kernel-sagasd-device_OBJDIR) +$(kernel-sagasd-device_MODULE) : LDFLAGS := $(TMP_LDFLAGS) +ifeq (,) +$(kernel-sagasd-device_MODULE) : LIBS := $(addprefix -l,$(LIB_NAMES)) +else +# Warning: the -L/usr/lib here can result in modules +# linking against host libs instead of AROS libs (e.g stdc++) !! +$(kernel-sagasd-device_MODULE) : LIBS := $(addprefix -l,$(LIB_NAMES)) \ + -L/usr/lib $(addprefix -l,) +endif +$(kernel-sagasd-device_MODULE) : $(kernel-sagasd-device_STARTOBJS) $(kernel-sagasd-device_OBJS) $(USER_OBJS) $(kernel-sagasd-device_ENDOBJS) $(TMP_DEPLIBS) $(USER_DEPLIBS) + $(Q)$(ECHO) "Building $(subst $(TARGETDIR)/,,$@) ..." + $(Q)$(IF) $(kernel-sagasd-device_LINK) $(NOSTARTUP_LDFLAGS) \ + $(GENMAP) $(OBJDIR)/$(MODULE).map \ + $(OBJS) $(LIBS) $(LDFLAGS) $(ENDTAG) \ + -o $@ 2>&1 > $(OBJDIR)/$(ERR) 2>&1 ; \ + then \ + cat $(OBJDIR)/$(ERR); \ + else \ + echo "$(kernel-sagasd-device_LINK) $(NOSTARTUP_LDFLAGS) $(GENMAP) $(OBJDIR)/$(MODULE).map $(OBJS) $(LIBS) $(LDFLAGS) $(ENDTAG) -o $@"; \ + cat $(OBJDIR)/$(ERR); \ + exit 1; \ + fi + $(Q)$(IF) $(TEST) ! -s $(OBJDIR)/$(ERR) ; then $(RM) $(OBJDIR)/$(ERR) ; fi + $(Q)$(IF) $(TEST) "$(STRIP)" != ""; then \ + $(IF) $(TEST) "$(DEBUG)" = "yes"; then \ + $(STRIP) $@ --only-keep-debug -o $@.dbg ; \ + fi ; \ + $(STRIP) $@ ; \ + $(IF) $(TEST) "$(DEBUG)" = "yes"; then \ + $(IF) $(TEST) -s $@.dbg ; then \ + $(OBJCOPY) --add-gnu-debuglink=$@.dbg $@ ; \ + fi ; \ + fi ; \ + fi + +endif + +ifeq (M,M) +# Link static lib +kernel-sagasd-device_LC_LINKLIBNAME := $(shell echo $(kernel-sagasd-device_LINKLIBNAME) | tr A-Z a-z) +kernel-sagasd-device_LC_MODNAME := $(shell echo sagasd | tr A-Z a-z) +ifneq ($(kernel-sagasd-device_LINKLIB),) + +ifeq (target,target) +$(kernel-sagasd-device_LIBDIR)/lib$(kernel-sagasd-device_LINKLIBNAME)$(kernel-sagasd-device_LIBSUFFIX).a : kernel-sagasd-device_AR:=$(AR) +$(kernel-sagasd-device_LIBDIR)/lib$(kernel-sagasd-device_LINKLIBNAME)$(kernel-sagasd-device_LIBSUFFIX).a : kernel-sagasd-device_RANLIB:=$(RANLIB) +endif +ifeq (target,host) +$(kernel-sagasd-device_LIBDIR)/lib$(kernel-sagasd-device_LINKLIBNAME)$(kernel-sagasd-device_LIBSUFFIX).a : kernel-sagasd-device_AR:=$(HOST_AR) +$(kernel-sagasd-device_LIBDIR)/lib$(kernel-sagasd-device_LINKLIBNAME)$(kernel-sagasd-device_LIBSUFFIX).a : kernel-sagasd-device_RANLIB:=$(HOST_RANLIB) +endif +ifeq (target,kernel) +$(kernel-sagasd-device_LIBDIR)/lib$(kernel-sagasd-device_LINKLIBNAME)$(kernel-sagasd-device_LIBSUFFIX).a : kernel-sagasd-device_AR:=$(KERNEL_AR) +$(kernel-sagasd-device_LIBDIR)/lib$(kernel-sagasd-device_LINKLIBNAME)$(kernel-sagasd-device_LIBSUFFIX).a : kernel-sagasd-device_RANLIB:=$(KERNEL_RANLIB) +endif + +$(kernel-sagasd-device_LIBDIR)/lib$(kernel-sagasd-device_LINKLIBNAME)$(kernel-sagasd-device_LIBSUFFIX).a : $(kernel-sagasd-device_LINKLIBOBJS) + $(Q)$(ECHO) "Creating $(subst $(TARGETDIR)/,,$@)..." + $(Q)$(kernel-sagasd-device_AR) $@ $^ + $(Q)$(kernel-sagasd-device_RANLIB) $@ +ifneq ($(kernel-sagasd-device_LC_MODNAME),$(kernel-sagasd-device_LC_LINKLIBNAME)) + +ifeq (target,target) +$(kernel-sagasd-device_LIBDIR)/libsagasd$(kernel-sagasd-device_LIBSUFFIX).a : kernel-sagasd-device_AR:=$(AR) +$(kernel-sagasd-device_LIBDIR)/libsagasd$(kernel-sagasd-device_LIBSUFFIX).a : kernel-sagasd-device_RANLIB:=$(RANLIB) +endif +ifeq (target,host) +$(kernel-sagasd-device_LIBDIR)/libsagasd$(kernel-sagasd-device_LIBSUFFIX).a : kernel-sagasd-device_AR:=$(HOST_AR) +$(kernel-sagasd-device_LIBDIR)/libsagasd$(kernel-sagasd-device_LIBSUFFIX).a : kernel-sagasd-device_RANLIB:=$(HOST_RANLIB) +endif +ifeq (target,kernel) +$(kernel-sagasd-device_LIBDIR)/libsagasd$(kernel-sagasd-device_LIBSUFFIX).a : kernel-sagasd-device_AR:=$(KERNEL_AR) +$(kernel-sagasd-device_LIBDIR)/libsagasd$(kernel-sagasd-device_LIBSUFFIX).a : kernel-sagasd-device_RANLIB:=$(KERNEL_RANLIB) +endif + +$(kernel-sagasd-device_LIBDIR)/libsagasd$(kernel-sagasd-device_LIBSUFFIX).a : $(kernel-sagasd-device_LINKLIBOBJS) + $(Q)$(ECHO) "Creating $(subst $(TARGETDIR)/,,$@)..." + $(Q)$(kernel-sagasd-device_AR) $@ $^ + $(Q)$(kernel-sagasd-device_RANLIB) $@ +endif + + +ifneq ($(kernel-sagasd-device_LINKLIB),) +$(kernel-sagasd-device_LINKLIB) : | $(kernel-sagasd-device_LIBDIR) +else +$(kernel-sagasd-device_LINKLIB) :: $(kernel-sagasd-device_LIBDIR) +endif + +GLOB_MKDIRS += $(kernel-sagasd-device_LIBDIR) + +endif + +ifneq ($(kernel-sagasd-device_RELLINKLIB),) + +ifeq (target,target) +$(kernel-sagasd-device_LIBDIR)/lib$(kernel-sagasd-device_LINKLIBNAME)_rel$(kernel-sagasd-device_LIBSUFFIX).a : kernel-sagasd-device_AR:=$(AR) +$(kernel-sagasd-device_LIBDIR)/lib$(kernel-sagasd-device_LINKLIBNAME)_rel$(kernel-sagasd-device_LIBSUFFIX).a : kernel-sagasd-device_RANLIB:=$(RANLIB) +endif +ifeq (target,host) +$(kernel-sagasd-device_LIBDIR)/lib$(kernel-sagasd-device_LINKLIBNAME)_rel$(kernel-sagasd-device_LIBSUFFIX).a : kernel-sagasd-device_AR:=$(HOST_AR) +$(kernel-sagasd-device_LIBDIR)/lib$(kernel-sagasd-device_LINKLIBNAME)_rel$(kernel-sagasd-device_LIBSUFFIX).a : kernel-sagasd-device_RANLIB:=$(HOST_RANLIB) +endif +ifeq (target,kernel) +$(kernel-sagasd-device_LIBDIR)/lib$(kernel-sagasd-device_LINKLIBNAME)_rel$(kernel-sagasd-device_LIBSUFFIX).a : kernel-sagasd-device_AR:=$(KERNEL_AR) +$(kernel-sagasd-device_LIBDIR)/lib$(kernel-sagasd-device_LINKLIBNAME)_rel$(kernel-sagasd-device_LIBSUFFIX).a : kernel-sagasd-device_RANLIB:=$(KERNEL_RANLIB) +endif + +$(kernel-sagasd-device_LIBDIR)/lib$(kernel-sagasd-device_LINKLIBNAME)_rel$(kernel-sagasd-device_LIBSUFFIX).a : $(kernel-sagasd-device_RELLINKLIBOBJS) + $(Q)$(ECHO) "Creating $(subst $(TARGETDIR)/,,$@)..." + $(Q)$(kernel-sagasd-device_AR) $@ $^ + $(Q)$(kernel-sagasd-device_RANLIB) $@ +ifneq ($(kernel-sagasd-device_LC_MODNAME),$(kernel-sagasd-device_LC_LINKLIBNAME)) + +ifeq (target,target) +$(kernel-sagasd-device_LIBDIR)/lib$(kernel-sagasd-device_DEFNAME)_rel$(kernel-sagasd-device_LIBSUFFIX).a : kernel-sagasd-device_AR:=$(AR) +$(kernel-sagasd-device_LIBDIR)/lib$(kernel-sagasd-device_DEFNAME)_rel$(kernel-sagasd-device_LIBSUFFIX).a : kernel-sagasd-device_RANLIB:=$(RANLIB) +endif +ifeq (target,host) +$(kernel-sagasd-device_LIBDIR)/lib$(kernel-sagasd-device_DEFNAME)_rel$(kernel-sagasd-device_LIBSUFFIX).a : kernel-sagasd-device_AR:=$(HOST_AR) +$(kernel-sagasd-device_LIBDIR)/lib$(kernel-sagasd-device_DEFNAME)_rel$(kernel-sagasd-device_LIBSUFFIX).a : kernel-sagasd-device_RANLIB:=$(HOST_RANLIB) +endif +ifeq (target,kernel) +$(kernel-sagasd-device_LIBDIR)/lib$(kernel-sagasd-device_DEFNAME)_rel$(kernel-sagasd-device_LIBSUFFIX).a : kernel-sagasd-device_AR:=$(KERNEL_AR) +$(kernel-sagasd-device_LIBDIR)/lib$(kernel-sagasd-device_DEFNAME)_rel$(kernel-sagasd-device_LIBSUFFIX).a : kernel-sagasd-device_RANLIB:=$(KERNEL_RANLIB) +endif + +$(kernel-sagasd-device_LIBDIR)/lib$(kernel-sagasd-device_DEFNAME)_rel$(kernel-sagasd-device_LIBSUFFIX).a : $(kernel-sagasd-device_RELLINKLIBOBJS) + $(Q)$(ECHO) "Creating $(subst $(TARGETDIR)/,,$@)..." + $(Q)$(kernel-sagasd-device_AR) $@ $^ + $(Q)$(kernel-sagasd-device_RANLIB) $@ +endif + + +ifneq ($(kernel-sagasd-device_RELLINKLIB),) +$(kernel-sagasd-device_RELLINKLIB) : | $(kernel-sagasd-device_LIBDIR) +else +$(kernel-sagasd-device_RELLINKLIB) :: $(kernel-sagasd-device_LIBDIR) +endif + +GLOB_MKDIRS += $(kernel-sagasd-device_LIBDIR) + +endif +endif + +ifeq (M,M) +# Link kernel object file +kernel-sagasd-device_KAUTOLIB := dos intuition layers graphics oop utility expansion keymap + +# Make these symbols local +kernel-sagasd-device_KBASE := DOSBase IntuitionBase LayersBase GfxBase OOPBase \ + UtilityBase ExpansionBase KeymapBase KernelBase + +kernel-sagasd-device_SYMBOLS := $(kernel-sagasd-device_KBASE) + +kernel-sagasd-device_KLIB := hiddstubs amiga arossupport autoinit libinit +kernel-sagasd-device_KOBJ_LIBS := $(filter-out $(kernel-sagasd-device_KLIB),$(kernel-sagasd-device_LIBS)) $(kernel-sagasd-device_KAUTOLIB) +$(kernel-sagasd-device_KOBJ) : LINKLIBS:=$(kernel-sagasd-device_KOBJ_LIBS) $($(kernel-sagasd-device_DEFNAME)_LIBS) +$(kernel-sagasd-device_KOBJ) : FILTBASES:=$(addprefix -L ,$(kernel-sagasd-device_SYMBOLS)) +$(kernel-sagasd-device_KOBJ) : USER_LDFLAGS:=$(USER_LDFLAGS) +$(kernel-sagasd-device_KOBJ) : $(kernel-sagasd-device_OBJS) $(USER_OBJS) $(kernel-sagasd-device_ENDOBJS) + $(Q)$(ECHO) "Linking $(subst $(TARGETDIR)/,,$@)" + $(Q)$(AROS_LD) -Ur -o $@ $^ $(USER_LDFLAGS) -L$(AROS_LIB) $(addprefix -l,$(LINKLIBS)) + $(Q)$(OBJCOPY) $@ $(FILTBASES) `$(NM_PLAIN) $@ | $(AWK) '($$3 ~ /^__.*_(LIST|END)__\r?$$/) || ($$3 ~ /^__aros_lib.*\r?$$/) {print "-L " $$3;}'` +endif + +## Dependency fine-tuning +## +kernel-sagasd-device_DEPS := $(addprefix $(kernel-sagasd-device_OBJDIR)/,$(notdir $(kernel-sagasd-device_CCFILES:=.d) $(kernel-sagasd-device_TARGETCCFILES:=.d) $(kernel-sagasd-device_CXXFILES:=.d))) $(addprefix $(kernel-sagasd-device_OBJDIR)/linklib/,$(notdir $(kernel-sagasd-device_LINKLIBCCFILES:=.d))) + +ifneq ($(kernel-sagasd-device_DEPS),) + ifneq (kernel-sagasd-device kernel-sagasd-device-quick kernel-sagasd-device-kobj kernel-sagasd-device-kobj-quick,) + ifneq ($(findstring $(TARGET),kernel-sagasd-device kernel-sagasd-device-quick kernel-sagasd-device-kobj kernel-sagasd-device-kobj-quick),) + -include $(kernel-sagasd-device_DEPS) + endif + else + ifeq (,$(filter clean% %clean %clean% setup% includes% %setup,$(TARGET))) + -include $(kernel-sagasd-device_DEPS) + endif + endif +endif + +$(kernel-sagasd-device_OBJS) $(kernel-sagasd-device_DEPS) : | $(kernel-sagasd-device_OBJDIR)/linklib + +ifneq ($(kernel-sagasd-device_OBJS) $(kernel-sagasd-device_DEPS) $(kernel-sagasd-device_MODULE) $(kernel-sagasd-device_KOBJ),) +$(kernel-sagasd-device_OBJS) $(kernel-sagasd-device_DEPS) $(kernel-sagasd-device_MODULE) $(kernel-sagasd-device_KOBJ) : | $(kernel-sagasd-device_OBJDIR) $(AROSDIR)/$(kernel-sagasd-device_MODDIR) $(KOBJSDIR) +else +$(kernel-sagasd-device_OBJS) $(kernel-sagasd-device_DEPS) $(kernel-sagasd-device_MODULE) $(kernel-sagasd-device_KOBJ) :: $(kernel-sagasd-device_OBJDIR) $(AROSDIR)/$(kernel-sagasd-device_MODDIR) $(KOBJSDIR) +endif + +GLOB_MKDIRS += $(kernel-sagasd-device_OBJDIR) $(AROSDIR)/$(kernel-sagasd-device_MODDIR) $(KOBJSDIR) + + +# Some include files need to be generated before the .c can be parsed. +ifneq ($(filter $(TARGET),kernel-sagasd-device kernel-sagasd-device-includes kernel-sagasd-device-quick kernel-sagasd-device-kobj kernel-sagasd-device-kobj-quick),) # Only for this target these deps are wanted + +kernel-sagasd-device_DFILE_DEPS := $(kernel-sagasd-device_LIBDEFSINC) $(kernel-sagasd-device_DEFLIBDEFSINC) \ + $(addprefix $(kernel-sagasd-device_INCDIR)/,$($(kernel-sagasd-device_DEFNAME)_INCLUDES)) +$(kernel-sagasd-device_DEPS) : $(kernel-sagasd-device_DFILE_DEPS) +endif + +kernel-sagasd-device_TOCLEAN := $(kernel-sagasd-device_OBJS) $(kernel-sagasd-device_DEPS) \ + $(kernel-sagasd-device_MODULE) $(kernel-sagasd-device_LINKLIB) $(kernel-sagasd-device_KOBJ) \ + $(kernel-sagasd-device_OBJDIR)/Makefile.sagasddevice \ + $(addprefix $(kernel-sagasd-device_OBJDIR)/include/,$($(kernel-sagasd-device_DEFNAME)_INCLUDES)) \ + $(addprefix $(GENINCDIR)/,$($(kernel-sagasd-device_DEFNAME)_INCLUDES)) \ + $(addprefix $(kernel-sagasd-device_INCDIR)/,$($(kernel-sagasd-device_DEFNAME)_INCLUDES)) \ + $(kernel-sagasd-device_OBJDIR)/sagasd_geninc $(kernel-sagasd-device_OBJDIR)/sagasd_incs \ + $(addsuffix .c,$(kernel-sagasd-device_LINKLIBFILES)) $(kernel-sagasd-device_LINKLIBOBJS) $(kernel-sagasd-device_LIBDEFSINC) \ + $(kernel-sagasd-device_DEFLIBDEFSINC) $(addsuffix .c,$(kernel-sagasd-device_STARTFILES) $(kernel-sagasd-device_ENDFILES)) \ + $(kernel-sagasd-device_ENDOBJS) +kernel-sagasd-device-clean : FILES := $(kernel-sagasd-device_TOCLEAN) +kernel-sagasd-device-clean :: + $(Q)$(ECHO) "Cleaning up for module sagasd" + $(Q)$(RM) $(FILES) + +endif # $(TARGET) in $(kernel-sagasd-device_ALLTARGETS) + + +# Delete generated makefiles +#MM +clean :: + $(Q)$(RM) $(TOP)/$(CURDIR)/mmakefile $(TOP)/$(CURDIR)/mmakefile.bak + +include $(SRCDIR)/config/make.tail + +BDID := $(BDTARGETID) +# vim: set shiftwidth=8 noexpandtab: # diff --git a/arch/m68k-amiga/devs/sagasd/sagasd.conf b/arch/m68k-amiga/devs/sagasd/sagasd.conf index ac25a16eb0e..7f7c37ffcd0 100644 --- a/arch/m68k-amiga/devs/sagasd/sagasd.conf +++ b/arch/m68k-amiga/devs/sagasd/sagasd.conf @@ -1,6 +1,6 @@ ##begin config basename SAGASD -version 2.60 +version 2.16 libbasetype struct SAGASDBase sysbase_field sd_ExecBase seglist_field sd_SegList diff --git a/arch/m68k-amiga/devs/sagasd/sagasd_device.c b/arch/m68k-amiga/devs/sagasd/sagasd_device.c index ba80f80c90e..0a3a36e0d4d 100644 --- a/arch/m68k-amiga/devs/sagasd/sagasd_device.c +++ b/arch/m68k-amiga/devs/sagasd/sagasd_device.c @@ -236,9 +236,9 @@ static LONG SAGASD_PerformSCSI(struct IORequest *io) default: if (i >= 8 && i < 36) { + if (sdu->sdu_SDCmd.unitnumber == 0) val = "Apollo SD-Card Slot #0 "[i - 8]; if (sdu->sdu_SDCmd.unitnumber == 1) val = "Apollo SD-Card Slot #1 "[i - 8]; if (sdu->sdu_SDCmd.unitnumber == 2) val = "Apollo SD-Card Slot #2 "[i - 8]; - if (sdu->sdu_SDCmd.unitnumber == 3) val = "Apollo SD-Card Slot #3 "[i - 8]; } else { if (i >= 36 && i < 44) { @@ -365,7 +365,7 @@ static LONG SAGASD_PerformSCSI(struct IORequest *io) data[11] = (sdc->info.block_size >> 0) & 0xff; switch (((UWORD)scsi->scsi_Command[2] << 8) | scsi->scsi_Command[3]) { case 0x0300: // Format Device Mode - for (i = 0; i < scsi->scsi_Length - 12; i++) { + for (i = 0; i + 12 < scsi->scsi_Length; i++) { UBYTE val; switch (i) { @@ -409,7 +409,7 @@ static LONG SAGASD_PerformSCSI(struct IORequest *io) err = 0; break; case 0x0400: // Rigid Drive Geometry - for (i = 0; i < scsi->scsi_Length - 12; i++) { + for (i = 0; i + 12 < scsi->scsi_Length; i++) { UBYTE val; switch (i) { @@ -593,7 +593,7 @@ static LONG SAGASD_PerformIO(struct IORequest *io) sprintf(message,"Inserted SD-Card in Slot#%d contains a RDB Boot Record\n" "Only FAT File System is supported for hot-swap Disks\n" "For RDB Disks with OFS, FFS, SFS or PFS File Systems\n" - "Please Reboot ApolloOS with Disk inserted to Mount", sdu->sdu_SDCmd.unitnumber); + "Please Reboot ApolloOS with Disk inserted to Mount", sdu->sdu_SDCmd.unitnumber+1); choices = "Reboot|Continue"; struct IntuitionBase *IntuitionBase; @@ -625,7 +625,7 @@ static LONG SAGASD_PerformIO(struct IORequest *io) sprintf(message,"Inserted SD-Card in Slot#%d contains a MBR Boot Record\n" "But the FAT File System is not readable/initialised\n" "Please use HDToolBox to create one fullsize FAT partition\n" - "After that use Format to initialize the FAT Partition", sdu->sdu_SDCmd.unitnumber); + "After that use Format to initialize the FAT Partition", sdu->sdu_SDCmd.unitnumber+1); choices = "Continue"; struct IntuitionBase *IntuitionBase; @@ -746,10 +746,12 @@ static void SAGASD_IOTask(struct Library *SysBase) ULONG sigset; struct Message status; BOOL present; - BOOL sdpin = FALSE; - ULONG detectcounter = 0; - if (sdu->sdu_SDCmd.unitnumber > 0) sdpin = TRUE; //hardware pin enable for SD-Cards Slots #1 and higher + BOOL sdpin = TRUE; + + //sdpin = apolloreadbios(APOLLO_SDHWPIN); + + ULONG detectcounter = 0; debug("Starting SAGASD_IOTask"); @@ -778,24 +780,30 @@ static void SAGASD_IOTask(struct Library *SysBase) sdu->sdu_MsgPort = status.mn_ReplyPort; /* Update status for the boot node */ - - present = sdcmd_sw_detect_full(&sdu->sdu_SDCmd); + if (sdpin) + { + present = sdcmd_hw_detect(&sdu->sdu_SDCmd); + } else { + Forbid(); + present = sdcmd_sw_detect_full(&sdu->sdu_SDCmd); // In sdu_Present == FALSE mode we need a full software detect + Permit(); + } sdu->sdu_ChangeNum++; if (present) { - //Forbid(); + if (sdpin) present = sdcmd_sw_detect_full(&sdu->sdu_SDCmd); + Forbid(); sdu->sdu_Present = TRUE; - sdu->sdu_Valid = present; - debug("\t sdu_Valid: %s", sdu->sdu_Valid ? "TRUE" : "FALSE"); - debug("\t Blocks: %ld", sdu->sdu_SDCmd.info.blocks); - //Permit(); + Permit(); } else { - //Forbid(); + Forbid(); sdu->sdu_Present = FALSE; sdu->sdu_Valid = FALSE; - //Permit(); + Permit(); } + debug("\t sdu_Valid: %s", sdu->sdu_Valid ? "TRUE" : "FALSE"); + debug("\t Blocks: %ld", sdu->sdu_SDCmd.info.blocks); /* Send the 'I'm Ready' message */ //debug("sdu_MsgPort=%p", sdu->sdu_MsgPort); @@ -807,21 +815,17 @@ static void SAGASD_IOTask(struct Library *SysBase) WaitPort(status.mn_ReplyPort); GetMsg(status.mn_ReplyPort); } - //debug(""); if (status.mn_Length) { - /* There was an error... */ DeleteMsgPort(mport); - //debug(""); return; } - //debug(""); mport = sdu->sdu_MsgPort; - sigset = (1 << tport->mp_SigBit) | (1 << mport->mp_SigBit); + // SAGA-SD LOOP ============================================================================================================= for (;;) { struct IORequest *io; @@ -833,10 +837,10 @@ static void SAGASD_IOTask(struct Library *SysBase) ULONG sigs; struct Interrupt *io_int; - /* Wait up to IO_TIMINGLOOP_MICROSEC for a IO message. If none, then re-check SD if counter is reached */ + /* Wait up to IO_TIMINGLOOP_USEC for a IO message. If none, then re-check SD if counter is reached */ treq->tr_node.io_Command = TR_ADDREQUEST; treq->tr_time.tv_secs = 0; - treq->tr_time.tv_micro = IO_TIMINGLOOP_MSEC; + treq->tr_time.tv_micro = IO_TIMINGLOOP_USEC; SendIO((struct IORequest *)treq); /* Wait on either the MsgPort, or the timer */ @@ -852,77 +856,66 @@ static void SAGASD_IOTask(struct Library *SysBase) io = NULL; if(detectcounter++ == 10) - { + { if (!sdu->sdu_Present) { - present = sdcmd_hw_detect(&sdu->sdu_SDCmd); // First we try hw detect - if(present) + if (sdpin) { - sdpin = TRUE; // If hw detect reports TRUE, so we know now that SD pin works - if (sdu->sdu_SDCmd.unitnumber == 2) debug("SD-Card Quick HW Detection: unit = %d | sdu_Present = %s | detect = %s", - sdu->sdu_SDCmd.unitnumber, sdu->sdu_Present ? "TRUE":"FALSE", present ? "TRUE":"FALSE"); - present = sdcmd_sw_detect_full(&sdu->sdu_SDCmd); + present = sdcmd_hw_detect(&sdu->sdu_SDCmd); } else { - if (!sdpin) - { - present = sdcmd_sw_detect_full(&sdu->sdu_SDCmd); // If hw detect reports FALSE we have to do a second sw detect for V4 without SD pin - if (sdu->sdu_SDCmd.unitnumber == 2) debug("SD-Card Full SW Detection: unit = %d | sdu_Present = %s | detect = %s", - sdu->sdu_SDCmd.unitnumber, sdu->sdu_Present ? "TRUE":"FALSE", present ? "TRUE":"FALSE"); - } + Forbid(); + present = sdcmd_sw_detect_full(&sdu->sdu_SDCmd); // In sdu_Present == FALSE mode we need a full software detect + Permit(); } - if (present) // SD-Card is Inserted + if (present) { - //Forbid(); + // SD-Card is Inserted + present = sdcmd_sw_detect_full(&sdu->sdu_SDCmd); + Forbid(); sdu->sdu_Present = TRUE; sdu->sdu_ChangeNum++; - sdu->sdu_Valid = TRUE; - //debug("\t sdu_Valid: %s", sdu->sdu_Valid ? "TRUE" : "FALSE"); - //debug("\t Blocks: %ld", sdu->sdu_SDCmd.info.blocks); + sdu->sdu_Valid = present; + debug("SD-Card Change Detection: unit = %d | Detect Mode = %s | sdu_Present = %s | detect = %s", sdu->sdu_SDCmd.unitnumber, sdpin ? "HW":"SW", sdu->sdu_Present ? "TRUE":"FALSE", present ? "TRUE":"FALSE"); + debug("\t sdu_Valid: %s", sdu->sdu_Valid ? "TRUE" : "FALSE"); + debug("\t Blocks: %ld", sdu->sdu_SDCmd.info.blocks); for (int i=sdu->sdu_AddChangeListItems; i>0; i--) { if (sdu->sdu_AddChangeList[i]) { io_int = (struct Interrupt*)sdu->sdu_AddChangeList[i]; - - debug("SD-Card INSERT = Calling sdu->sdu_AddChangeList[%d] (%x) from %s for %s", i, - sdu->sdu_AddChangeList[i], (char*)io_int->is_Node.ln_Name, sdu->sdu_Name); - + debug("SD-Card INSERT = Calling sdu->sdu_AddChangeList[%d] (%x) from %s for %s", i, sdu->sdu_AddChangeList[i], (char*)io_int->is_Node.ln_Name, sdu->sdu_Name); Cause((struct Interrupt *)(sdu->sdu_AddChangeList[i])); - } } - //Permit(); + Permit(); } } else { if (sdpin) { - present = sdcmd_hw_detect(&sdu->sdu_SDCmd); - if (sdu->sdu_SDCmd.unitnumber == 2) debug("SD-Card Quick HW Detection: unit = %d | sdu_Present = %s | detect = %s", - sdu->sdu_SDCmd.unitnumber, sdu->sdu_Present ? "TRUE":"FALSE", present ? "TRUE":"FALSE"); + present = sdcmd_hw_detect(&sdu->sdu_SDCmd); } else { - present = sdcmd_sw_detect_quick(&sdu->sdu_SDCmd); // We can do a "light" detect when in sdu_Present mode - if (sdu->sdu_SDCmd.unitnumber == 2) debug("SD-Card Quick SW Detection: unit = %d | sdu_Present = %s | detect = %s", - sdu->sdu_SDCmd.unitnumber, sdu->sdu_Present ? "TRUE":"FALSE", present ? "TRUE":"FALSE"); + Forbid(); + present = sdcmd_sw_detect_quick(&sdu->sdu_SDCmd); // In sdu_Present == TRUE mode we can do a quick software detect + Permit(); } - - - if (!present) // SD-Card is Removed + if (!present) { - //Forbid(); + // SD-Card is Removed + Forbid(); sdu->sdu_Present = FALSE; sdu->sdu_Valid = FALSE; - + debug("SD-Card Change Detection: unit = %d | Detect Mode = %s | sdu_Present = %s | detect = %s", sdu->sdu_SDCmd.unitnumber, sdpin ? "HW":"SW", sdu->sdu_Present ? "TRUE":"FALSE", present ? "TRUE":"FALSE"); + for (int i=sdu->sdu_AddChangeListItems; i>0; i--) { if (sdu->sdu_AddChangeList[i]) { io_int = (struct Interrupt*)sdu->sdu_AddChangeList[i]; - debug("SD-Card EJECT = Calling sdu->sdu_AddChangeList[%d] (%x) from %s for %s", i, - sdu->sdu_AddChangeList[i], (char*)io_int->is_Node.ln_Name, sdu->sdu_Name); + debug("SD-Card EJECT = Calling sdu->sdu_AddChangeList[%d] (%x) from %s for %s", i, sdu->sdu_AddChangeList[i], (char*)io_int->is_Node.ln_Name, sdu->sdu_Name); Cause((struct Interrupt *)(sdu->sdu_AddChangeList[i])); @@ -934,10 +927,9 @@ static void SAGASD_IOTask(struct Library *SysBase) } } } - //Permit(); + Permit(); } } - detectcounter = 0; } } @@ -984,7 +976,6 @@ AROS_LH1(void, BeginIO, AROS_LHA(struct IORequest *, io, A1), struct SAGASDBase case TD_GETDRIVETYPE: case TD_GETGEOMETRY: case TD_REMCHANGEINT: - case TD_ADDCHANGEINT: case TD_PROTSTATUS: case TD_CHANGENUM: @@ -1059,7 +1050,9 @@ static void SAGASD_BootNode(struct SAGASDBase *SAGASDBase, struct Library *Expan devnode = MakeDosNode(pp); if (devnode) - AddBootNode(pp[DE_BOOTPRI + 4], 0 & ADNF_STARTPROC, devnode, NULL); + /* flags = 0: do not ADNF_STARTPROC. The handler is started on demand + * via the DOSTYPE/filesystem, not auto-launched at boot. */ + AddBootNode(pp[DE_BOOTPRI + 4], 0, devnode, NULL); } #define PUSH(task, type, value) do {\ @@ -1078,28 +1071,21 @@ static void SAGASD_InitUnit(struct SAGASDBase * SAGASDBase, int id) switch (id) { - case 0: // SPI#1 | CS=0 | Micro-SD-Card slot (backside) + case 0: // SPI#1 | CS=0 | Micro-SD-Card slot #0 (Backside) sdu->sdu_SDCmd.iobase = SAGA_SD_BASE_SPI1; sdu->sdu_SDCmd.cs = SAGA_SD_CTL_NCS; - sdu->sdu_SDCmd.unitnumber = id+1; + sdu->sdu_SDCmd.unitnumber = id; sdu->sdu_Enabled = TRUE; break; - case 1: // SPI#2 | CS=0 | SD-Card slot 1 (Expansion Port) + case 1: // SPI#2 | CS=0 | SD-Card Slot #1 (Expansion Port) sdu->sdu_SDCmd.iobase = SAGA_SD_BASE_SPI2; sdu->sdu_SDCmd.cs = SAGA_CS_DRIVE0; - sdu->sdu_SDCmd.unitnumber = id+1; + sdu->sdu_SDCmd.unitnumber = id; sdu->sdu_Enabled = TRUE; break; - - //case 2: // SPI#2 | CS=1 | SD-Card slot 1 (Expansion Port) - //sdu->sdu_SDCmd.iobase = SAGA_SD_BASE_SPI2; - //sdu->sdu_SDCmd.cs = SAGA_CS_DRIVE1; - //sdu->sdu_SDCmd.unitnumber = id+1; - //sdu->sdu_Enabled = TRUE; - //break; - default: + default: sdu->sdu_Enabled = FALSE; } @@ -1189,22 +1175,22 @@ static int GM_UNIQUENAME(init)(struct SAGASDBase * SAGASDBase) static int GM_UNIQUENAME(expunge)(struct SAGASDBase * SAGASDBase) { - struct Library *SysBase = SAGASDBase->sd_ExecBase; - struct IORequest io = {}; - int i; - - for (i = 0; i < SAGASD_UNITS; i++) - { - io.io_Device = &SAGASDBase->sd_Device; - io.io_Unit = &SAGASDBase->sd_Unit[i].sdu_Unit; - io.io_Flags = 0; - io.io_Command = ~0; - - /* Signal the unit task to die */ - DoIO(&io); - } - - return TRUE; + /* + * This device installs boot nodes and runs one IO task per unit, all of + * which are referenced for the whole lifetime of the system. It therefore + * must never be expunged: returning FALSE tells genmodule to refuse the + * expunge and keep the device resident. + * + * NOTE: the previous implementation sent io_Command = ~0 (== 0xFFFF) to + * each unit task to "signal it to die". But 0xFFFF is a *live* command + * (the FAT handler's "RDB inserted" notification, see SAGASD_PerformIO), + * so that path popped an Intuition requester - and could even ColdReboot - + * instead of terminating the task, and then let genmodule free the device + * base while the tasks were still running. Refusing expunge avoids both. + */ + (void)SAGASDBase; + + return FALSE; } static int GM_UNIQUENAME(open)(struct SAGASDBase * SAGASDBase, diff --git a/arch/m68k-amiga/devs/sagasd/sagasd_intern.h b/arch/m68k-amiga/devs/sagasd/sagasd_intern.h index e2b4d99f678..ccb3246845b 100644 --- a/arch/m68k-amiga/devs/sagasd/sagasd_intern.h +++ b/arch/m68k-amiga/devs/sagasd/sagasd_intern.h @@ -8,9 +8,9 @@ #include "sdcmd.h" #define SAGASD_UNITS 2 -#define IO_TIMINGLOOP_MSEC 100000 +#define IO_TIMINGLOOP_USEC 100000 /* timer tick in microseconds (100 ms) for the SD detect poll */ -#define SDU_STACK_SIZE (4096 / sizeof(ULONG)) +#define SDU_STACK_SIZE (16384 / sizeof(ULONG)) struct SAGASDBase { @@ -22,7 +22,7 @@ struct SAGASDBase struct Unit sdu_Unit; struct Task sdu_Task; TEXT sdu_Name[6]; /* "SDIOx" */ - ULONG sdu_Stack[1024]; /* 4K stack */ + ULONG sdu_Stack[SDU_STACK_SIZE]; /* 16K stack (see SDU_STACK_SIZE) */ BOOL sdu_Enabled; struct sdcmd sdu_SDCmd; diff --git a/arch/m68k-amiga/devs/sagasd/sdcmd.c b/arch/m68k-amiga/devs/sagasd/sdcmd.c index 456ba170bd8..cd72624d97f 100644 --- a/arch/m68k-amiga/devs/sagasd/sdcmd.c +++ b/arch/m68k-amiga/devs/sagasd/sdcmd.c @@ -147,7 +147,7 @@ static void sdcmd_ins_spi1(struct sdcmd *sd, UBYTE *buff, size_t len) "1: move.b (0xDE0002),(%[buff])+ \n" "2: dbra %[count],1b \n" " move.b (0xDE0000),(%[buff])+ \n" - :[count]"+d"(len),[buff]"+a"(buff)::"cc"); + :[count]"+d"(len),[buff]"+a"(buff)::"cc","memory"); return; } @@ -168,7 +168,7 @@ static void sdcmd_ins_spi2(struct sdcmd *sd, UBYTE *buff, size_t len) "1: move.b (0xDE0012),(%[buff])+ \n" "2: dbra %[count],1b \n" " move.b (0xDE0010),(%[buff])+ \n" - :[count]"+d"(len),[buff]"+a"(buff)::"cc"); + :[count]"+d"(len),[buff]"+a"(buff)::"cc","memory"); return; } @@ -241,6 +241,7 @@ static UBYTE sdcmd_r1a(struct sdcmd *sd) if (!(r1 & SDERRF_TIMEOUT)) return r1; } + debug("r1=0x%08lx", r1); return SDERRF_TIMEOUT; } @@ -348,6 +349,7 @@ UBYTE sdcmd_read_packet(struct sdcmd *sd, UBYTE *buff, int len) if (i == SDCMD_TIMEOUT) { sdcmd_select(sd, FALSE); + debug("SDERRF_TIMEOUT"); return SDERRF_TIMEOUT; } @@ -400,7 +402,7 @@ UBYTE sdcmd_stop_transmission(struct sdcmd *sd) exit: sdcmd_select(sd, FALSE); - + debug("SDERRF_CRC"); return (i == SDCMD_TIMEOUT) ? SDERRF_TIMEOUT : r1; } @@ -433,6 +435,7 @@ UBYTE sdcmd_write_packet(struct sdcmd *sd, UBYTE token, CONST UBYTE *buff, int l if ((byte & SDDRS_VALID_MASK) != SDDRS_VALID) { /* Terminate the read early */ sdcmd_stop_transmission(sd); + debug("SDERRF_CRC"); return SDERRF_CRC; } @@ -521,7 +524,7 @@ UBYTE sdcmd_read_blocks(struct sdcmd *sd, ULONG addr, UBYTE *buff, int blocks) for (; blocks > 0; addr++, blocks--, buff += SDSIZ_BLOCK) { r1 = sdcmd_read_packet(sd, buff, SDSIZ_BLOCK); if (r1) { - //debug("r1=$%02lx", r1); + debug("r1=$%02lx", r1); /* Terminate the read early */ sdcmd_stop_transmission(sd); break; @@ -591,7 +594,7 @@ UBYTE sdcmd_write_blocks(struct sdcmd *sd, ULONG addr, CONST UBYTE *buff, int bl break; /* Reset the retry counter if we wrote a block */ - crc_retry = sd->retry.read; + crc_retry = sd->retry.write; } sdcmd_select(sd, TRUE); @@ -819,8 +822,8 @@ BOOL sdcmd_sw_detect_full(struct sdcmd *sd) if (info->ocr & SDOCRF_HCS) { /* SDHC calculation */ - /* Bits 68:48 of the CSD */ - c_size = bits(&csd[15], 48, 20); + /* Bits 69:48 of the CSD (CSD v2.0 C_SIZE is 22 bits wide) */ + c_size = bits(&csd[15], 48, 22); debug("SDHC-Card info: c_size=%ld | blocks=%ld", c_size, info->blocks); @@ -855,12 +858,11 @@ BOOL sdcmd_sw_detect_full(struct sdcmd *sd) exit: - speed = SDCMD_CLKDIV_FAST; - + //speed = SDCMD_CLKDIV_FAST; // Try setting the card into high speed mode. It's possible to check first, but just trying to set is enough? // First nibble is Function Group 1 - Access mode / Bus Speed mode; the only thing that applies to us in SPI mode. - sdcmd_send(sd, SDCMD_SWITCH_FUNCTION, 0x80fffff1); + /*sdcmd_send(sd, SDCMD_SWITCH_FUNCTION, 0x80fffff1); r1 = sdcmd_r1a(sd); debug("r1=0x%lx", r1); if (!r1) @@ -873,12 +875,12 @@ BOOL sdcmd_sw_detect_full(struct sdcmd *sd) f1_sel = bits(&cmd6[63], 376, 4); - /* Out of all of the above, just check f1_sel to see if it is what we set it to.*/ + // Out of all of the above, just check f1_sel to see if it is what we set it to if (f1_sel == 1) speed = SDCMD_CLKDIV_FASTER; - } + } */ /* Switch to high speed mode */ - sdcmd_clkdiv(sd, speed); + sdcmd_clkdiv(sd, SDCMD_CLKDIV_FASTER); sdcmd_select(sd, FALSE); diff --git a/arch/m68k-amiga/devs/sagasd/sdcmd.h b/arch/m68k-amiga/devs/sagasd/sdcmd.h index 1f514aefbfa..e8f6f82f3de 100644 --- a/arch/m68k-amiga/devs/sagasd/sdcmd.h +++ b/arch/m68k-amiga/devs/sagasd/sdcmd.h @@ -31,7 +31,7 @@ #define SDSIZ_BLOCK 512 /* Block size in bytes */ -#define SDCMD_TIMEOUT 100000 /* Times to read for new status */ +#define SDCMD_TIMEOUT 1000000 /* Times to read for new status */ #define SDCMD_IDLE_RETRY 100000 #define SDERRF_TIMEOUT (1 << 7)