2020-02-21 16:33:34 +01:00
|
|
|
############################################################################
|
|
|
|
# boards/z80/ez80/scripts/eZ80_Config.defs
|
|
|
|
#
|
|
|
|
# Licensed to the Apache Software Foundation (ASF) under one or more
|
|
|
|
# contributor license agreements. See the NOTICE file distributed with
|
|
|
|
# this work for additional information regarding copyright ownership. The
|
|
|
|
# ASF licenses this file to you under the Apache License, Version 2.0 (the
|
|
|
|
# "License"); you may not use this file except in compliance with the
|
|
|
|
# License. You may obtain a copy of the License at
|
|
|
|
#
|
|
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
#
|
|
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
|
|
# License for the specific language governing permissions and limitations
|
|
|
|
# under the License.
|
|
|
|
#
|
|
|
|
############################################################################
|
|
|
|
|
|
|
|
# These are the macros that will be used in the NuttX make system to compile
|
|
|
|
# and assembly source files and to insert the resulting object files into an
|
|
|
|
# archive. These replace the default definitions at tools/Config.mk
|
|
|
|
|
|
|
|
ifeq ($(CONFIG_WINDOWS_NATIVE),y)
|
|
|
|
|
|
|
|
define PREPROCESS
|
|
|
|
@echo CPP: $(1)->$(2)
|
|
|
|
$(Q) $(CPP) $(CPPFLAGS) $($(strip $(1))_CPPFLAGS) $(1) -o $(2)
|
|
|
|
endef
|
|
|
|
|
|
|
|
define COMPILE
|
2020-02-22 00:36:09 +01:00
|
|
|
$(call DELFILE, $(2))
|
2020-02-21 16:33:34 +01:00
|
|
|
$(Q) $(CC) $(CFLAGS) $($(strip $(1))_CFLAGS) ${shell echo $(1) | sed -e "s/\//\\/g"}
|
2020-02-22 00:36:09 +01:00
|
|
|
if not exist $(2) $(call MOVEFILE, $(subst .c,.obj,$(1)), $(2))
|
2020-02-21 16:33:34 +01:00
|
|
|
endef
|
|
|
|
|
|
|
|
define ASSEMBLE
|
2020-02-22 00:36:09 +01:00
|
|
|
$(call DELFILE, $(2))
|
2020-02-21 16:33:34 +01:00
|
|
|
$(Q) $(AS) $(AFLAGS) $($(strip $(1))_AFLAGS) ${shell echo $(1) | sed -e "s/\//\\/g"}
|
2020-02-22 00:36:09 +01:00
|
|
|
if not exist $(2) $(call MOVEFILE, $(subst .asm,.obj,$(1)), $(2))
|
2020-02-21 16:33:34 +01:00
|
|
|
endef
|
|
|
|
|
|
|
|
define MOVEOBJ
|
|
|
|
$(call MOVEFILE, "$(1).obj", "$(2)$(DELIM)$(1).obj")
|
|
|
|
$(call MOVEFILE, "$(1).lst", "$(2)$(DELIM)$(1).lst")
|
|
|
|
$(call MOVEFILE, "$(1).src", "$(2)$(DELIM)$(1).src")
|
|
|
|
endef
|
|
|
|
|
|
|
|
define ARCHIVE
|
|
|
|
for %%G in ($(2)) do ( $(AR) $(ARFLAGS) $(1)=-+%%G )
|
|
|
|
endef
|
|
|
|
|
|
|
|
define CLEAN
|
|
|
|
$(Q) if exist *.obj (del /f /q *.obj)
|
|
|
|
$(Q) if exist *.src (del /f /q *.src)
|
|
|
|
$(Q) if exist *.lib (del /f /q *.lib)
|
|
|
|
$(Q) if exist *.hex (del /f /q *.hex)
|
|
|
|
$(Q) if exist *.lod (del /f /q *.lod)
|
|
|
|
$(Q) if exist *.lst (del /f /q *.lst)
|
|
|
|
endef
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
define PREPROCESS
|
|
|
|
@echo "CPP: $(1)->$(2)"
|
|
|
|
$(Q) $(CPP) $(CPPFLAGS) $($(strip $(1))_CPPFLAGS) $(1) -o $(2)
|
|
|
|
endef
|
|
|
|
|
2020-02-22 00:36:09 +01:00
|
|
|
# COMPILE, ASSEMBLE, MOVEOBJ
|
|
|
|
#
|
|
|
|
# The ZDS-II compiler and assembler both generate object files in the
|
|
|
|
# current directory with the same name as the source file, but with the .obj
|
|
|
|
# extension. The build system expects these behaviors when compiling some
|
|
|
|
# file, say foo.c:
|
|
|
|
#
|
|
|
|
# 1. If the foo.obj object belongs in a lower level directory (such as bin/),
|
|
|
|
# then the relative path will be preface the object file name (such as
|
|
|
|
# bin/foo.obj)). In this case, the build system will call MOVEOBJ to
|
|
|
|
# move the objects in place and nothing special need be done here.
|
|
|
|
# 2. In other cases, the build system may decorate the object file name such
|
|
|
|
# as a.b.c.foo.obj. This case is distinguished here by because does not
|
|
|
|
# lie in a lower directory, but lies in the current directory and is
|
|
|
|
# handled within COMPILE and ASSEMBLE.
|
|
|
|
|
2020-02-21 16:33:34 +01:00
|
|
|
define COMPILE
|
2020-02-22 00:36:09 +01:00
|
|
|
$(call DELFILE, $(2))
|
2020-02-21 16:33:34 +01:00
|
|
|
$(Q) $(CC) $(CFLAGS) $($(strip $(1))_CFLAGS) `cygpath -w "$(1)"`
|
2020-02-22 00:36:09 +01:00
|
|
|
$(Q) ( \
|
|
|
|
set -x ; \
|
|
|
|
__rename=`basename $(2)` ;\
|
|
|
|
if [ ! -e $${__rename} ] ; then \
|
|
|
|
__src=`basename $(1) | cut -d'.' -f1` ; \
|
|
|
|
__dest=`echo $(2) | sed -e "s/.obj//g"` ; \
|
|
|
|
mv -f $${__src}.obj $(2) ; \
|
|
|
|
mv -f $${__src}.lst $${__dest}.lst ; \
|
|
|
|
mv -f $${__src}.src $${__dest}.src ; \
|
|
|
|
fi ; \
|
|
|
|
)
|
2020-02-21 16:33:34 +01:00
|
|
|
endef
|
|
|
|
|
|
|
|
define ASSEMBLE
|
2020-02-22 00:36:09 +01:00
|
|
|
$(call DELFILE, $(2))
|
2020-02-21 16:33:34 +01:00
|
|
|
$(Q) $(AS) $(AFLAGS) $($(strip $(1))_AFLAGS) `cygpath -w "$(1)"`
|
2020-02-22 00:36:09 +01:00
|
|
|
$(Q) ( \
|
|
|
|
set -x ; \
|
|
|
|
__rename=`basename $(2)` ; \
|
|
|
|
if [ ! -e $${__rename} ] ; then \
|
|
|
|
__src=`basename $(1) | cut -d'.' -f1` ; \
|
|
|
|
__dest=`echo $(2) | sed -e "s/.obj//g"` ; \
|
|
|
|
mv -f $${__src}.obj $(2) ; \
|
|
|
|
mv -f $${__src}.lst $${__dest}.lst ; \
|
|
|
|
mv -f $${__src}.src $${__dest}.src ; \
|
|
|
|
fi ; \
|
|
|
|
)
|
2020-02-21 16:33:34 +01:00
|
|
|
endef
|
|
|
|
|
|
|
|
define MOVEOBJ
|
|
|
|
$(call MOVEFILE, "$(1).obj", "$(2)$(DELIM)$(1).obj")
|
|
|
|
$(call MOVEFILE, "$(1).lst", "$(2)$(DELIM)$(1).lst")
|
|
|
|
$(call MOVEFILE, "$(1).src", "$(2)$(DELIM)$(1).src")
|
|
|
|
endef
|
|
|
|
|
2020-02-22 00:36:09 +01:00
|
|
|
# ARCHIVE will move a list of object files into the library. This is
|
|
|
|
# complex because:
|
|
|
|
#
|
|
|
|
# 1. The ez80lib.exe archive expects the library to reside within the
|
|
|
|
# current directory; it expects the library argument to a file name
|
|
|
|
# like foo.lib.
|
|
|
|
# 2. Normally, the library file is in the current directory, but other
|
|
|
|
# times, the library is an absolute path such as
|
|
|
|
# D:\Spuda\Documents\projects\nuttx\master\apps-fork\libapps.lib. In
|
|
|
|
# this case, the base library name is extact as the ARCHIVE logic CD's
|
|
|
|
# to the directory containing the library.
|
|
|
|
|
2020-02-21 16:33:34 +01:00
|
|
|
define ARCHIVE
|
2020-02-22 00:36:09 +01:00
|
|
|
( \
|
|
|
|
set -x ;\
|
|
|
|
__wd=`pwd` ;\
|
|
|
|
__home=`dirname $(1)` ; \
|
|
|
|
if [ -z "$${__home}" ] ; then \
|
|
|
|
__lib=$(1) ; \
|
|
|
|
else \
|
|
|
|
__lib=`basename $(1)` ; \
|
|
|
|
cd $${__home} ; \
|
|
|
|
fi ; \
|
|
|
|
for __obj in $(2) ; do \
|
|
|
|
$(AR) $(ARFLAGS) $${__lib}=-+$$__obj ; \
|
|
|
|
done ; \
|
|
|
|
cd $${__wd} ; \
|
|
|
|
)
|
2020-02-21 16:33:34 +01:00
|
|
|
endef
|
|
|
|
|
|
|
|
define CLEAN
|
|
|
|
$(Q) rm -f *.obj *.src *.lib *.hex *.lod *.lst
|
|
|
|
endef
|
|
|
|
endif
|