AROS-v0/compiler/include/mmakefile

154 lines
4.6 KiB
Plaintext

# $Id$
include $(SRCDIR)/config/aros.cfg
include $(TOP)/$(CURDIR)/geninc.cfg
INCSUBDIRS := aros \
aros/preprocessor \
aros/preprocessor/variadic \
aros/preprocessor/array \
aros/types \
asm \
bluetooth \
c++ \
c++/exec \
clib \
datatypes \
defines \
devices \
diskfont \
dos \
exec \
gadgets \
graphics \
hardware \
hardware/cpu \
hardware/efi \
hardware/pic \
hidd \
inline \
intuition \
irda \
libcore \
libraries \
midi \
pragmas \
prefs \
proto \
resources \
rexx \
SDI \
scsi \
utility \
workbench
# clib & proto are handled above.
#INCEMPTYDIRS := defines \
# inline
INCLUDES_BASE := $(foreach d,$(addprefix $(SRCDIR)/$(CURDIR)/,$(INCSUBDIRS)),$(wildcard $(d)/*.h) $(wildcard $(d)/*.hpp)) $(wildcard *.h)
INCLUDES := $(subst $(SRCDIR)/$(CURDIR)/,,$(INCLUDES_BASE))
ARCHINCDIR := $(SRCDIR)/arch/$(CPU)-$(ARCH)/include/
ARCHFAMILYINCDIR := $(SRCDIR)/arch/$(CPU)-$(FAMILY)/include/
ARCH_INCLUDES := $(subst $(ARCHINCDIR),,$(foreach d,$(addprefix $(ARCHINCDIR),$(INCSUBDIRS)),$(wildcard $(d)/*.h) $(wildcard $(d)/*.hpp)))
ARCHFAMILY_INCLUDES := $(subst $(ARCHFAMILYINCDIR),,$(foreach d,$(addprefix $(ARCHFAMILYINCDIR),$(INCSUBDIRS)),$(wildcard $(d)/*.h) $(wildcard $(d)/*.hpp)))
# ARCH > FAMILY > GENERIC
INCLUDES := $(filter-out $(strip $(ARCH_INCLUDES) $(filter-out $(ARCH_INCLUDES),$(ARCHFAMILY_INCLUDES))),$(INCLUDES))
DEST_INCLUDES := $(foreach f,$(INCLUDES),$(AROS_INCLUDES)/$(f))
GEN_INCLUDES := $(foreach f,$(INCLUDES),$(GENINCDIR)/$(f))
INCL_DIRS := $(foreach dir,$(INCSUBDIRS) $(INCEMPTYDIRS),$(AROS_INCLUDES)/$(dir)) \
$(foreach dir,$(INCSUBDIRS) $(INCEMPTYDIRS),$(GENINCDIR)/$(dir))
#MM- includes : includes-generate
#MM- includes-generate : includes-generate-deps
#MM- includes-generate-deps : includes-copy includes-$(ARCH)-$(CPU) includes-$(FAMILY)-$(CPU)
#MM- includes-copy : compiler-includes includes-copy-$(ARCH)-$(CPU) includes-copy-$(FAMILY)-$(CPU)
#MM- includes-$(ARCH)-$(CPU) : \
#MM includes-copy-$(ARCH)-$(CPU) \
#MM includes-generate-$(ARCH)-$(CPU)
#MM- includes-generate-$(ARCH)-$(CPU) : includes-copy-$(ARCH)-$(CPU)
#MM- includes-copy-$(ARCH)-$(CPU) :
#MM- includes-$(FAMILY)-$(CPU) : \
#MM includes-copy-$(FAMILY)-$(CPU) \
#MM includes-generate-$(FAMILY)-$(CPU)
#MM- includes-generate-$(FAMILY)-$(CPU) : includes-copy-$(FAMILY)-$(CPU)
#MM- includes-copy-$(FAMILY)-$(CPU) :
#MM
compiler-includes : setup $(DEST_INCLUDES) $(GEN_INCLUDES) includes-execbase_h
# execbase is copied seperately, since on SMP builds we need to
# remove some fields
$(GENINCDIR)/exec/execbase.h : $(SRCDIR)/$(CURDIR)/exec/execbase.inc
@$(ECHO) "Copying C includes to $(GENINCDIR)..."
@$(CP) $< $@
ifneq ($(strip $(SMPREADY)),"")
$(SED) -i -e 's/.*ThisTask;.*/ IPTR Private1;/' -e 's/.*Quantum;.*/ WORD Private2;/' -e 's/.*Elapsed;.*/ WORD Private3;/' -e 's/.*IDNestCnt;.*/ UBYTE Private4;/' -e 's/.*TDNestCnt;.*/ UBYTE Private5;/' $@
endif
$(AROS_INCLUDES)/exec/execbase.h : $(GENINCDIR)/exec/execbase.h
@$(ECHO) "Copying C includes to $(AROS_INCLUDES)..."
@$(CP) $< $@
#MM
includes-execbase_h : $(AROS_INCLUDES)/exec/execbase.h
.PHONY : includes-execbase_h
# normal include copy routines
$(AROS_INCLUDES)/%.h : $(SRCDIR)/$(CURDIR)/%.h
@$(ECHO) "Copying C includes to $(AROS_INCLUDES)..."
@$(CP) $< $@
$(GENINCDIR)/%.h : $(SRCDIR)/$(CURDIR)/%.h
@$(ECHO) "Copying C includes to $(GENINCDIR)..."
@$(CP) $< $@
$(AROS_INCLUDES)/%.hpp : $(SRCDIR)/$(CURDIR)/%.hpp
@$(ECHO) "Copying C++ includes to $(AROS_INCLUDES)..."
@$(CP) $< $@
$(GENINCDIR)/%.hpp : $(SRCDIR)/$(CURDIR)/%.hpp
@$(ECHO) "Copying C++ includes to $(GENINCDIR)..."
@$(CP) $< $@
setup : $(INCL_DIRS)
$(INCL_DIRS) :
@$(ECHO) "Creating $@..."
@$(MKDIR) $@
#MM
includes-asm_h-$(CPU) : $(GENINCDIR)/aros/$(CPU)/asm.h
.PHONY : includes-asm_h-$(CPU)
ifeq ($(AROS_TOOLCHAIN),gnu)
GREPTOKEN := ".asciz"
else
GREPTOKEN := ".ascii"
endif
$(OBJDIR)/asm.s : $(SRCDIR)/$(CURDIR)/asm.c | $(OBJDIR)
@$(ECHO) "Compiling $<..."
@$(TARGET_CC) $(TARGET_SYSROOT) $(CFLAGS) $(PRIV_EXEC_INCLUDES) $(PRIV_KERNEL_INCLUDES) -I$(AROS_PRIVATE_INCLUDES) -I$(AROS_CONFIG_INCLUDES) -S $< -o $@
$(GENINCDIR)/aros/$(CPU)/asm.h : $(OBJDIR)/asm.s | $(GENINCDIR)/aros/$(AROS_TARGET_CPU)
@$(ECHO) Generating $@...
@grep $(GREPTOKEN) $< | cut -d'"' -f2 | sed 's/\$$//g' >$@
$(OBJDIR) :
@$(MKDIR) $@
$(GENINCDIR)/aros/$(CPU) :
@$(MKDIR) $@
#MM
clean :
-$(RM) $(AROS_INCLUDES) $(GENINCDIR)