You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
293 lines
9.5 KiB
293 lines
9.5 KiB
|
|
##
|
|
## Copyright (c) 2000, Intel Corporation
|
|
## All rights reserved.
|
|
##
|
|
## WARRANTY DISCLAIMER
|
|
##
|
|
## THESE MATERIALS ARE PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR ITS
|
|
## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
## EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
## PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
|
## PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
|
## OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY OR TORT (INCLUDING
|
|
## NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THESE
|
|
## MATERIALS, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
##
|
|
## Intel Corporation is the author of the Materials, and requests that all
|
|
## problem reports or change requests be submitted to it directly at
|
|
## http://developer.intel.com/opensource.
|
|
##
|
|
|
|
|
|
#LOCALBASEDIR = ../../../..
|
|
|
|
TRIED_THIS_TRICK = 1
|
|
ifeq ($(HOSTTYPE), WINNT)
|
|
include $(SERVER_AREA)/include/Makefile.inc
|
|
else
|
|
include $(SERVER_AREA)/include/Makefile.inc
|
|
endif
|
|
|
|
ifdef AP32
|
|
CC=ecl /Ap32 /As32 -Qapp_mode
|
|
endif
|
|
ifdef AP64
|
|
CC=ecl -Qapp_mode
|
|
endif
|
|
|
|
ifeq ($(HOSTTYPE), WINNT)
|
|
###LOCALDIR = /x86sw
|
|
VPATH = /topg_drive/x86sw/src/decem/build
|
|
RM = $(RM_BIN) -f
|
|
ifndef OPTIMIZE
|
|
GCC_DEBUG = /Od
|
|
else
|
|
GCC_DEBUG =
|
|
endif
|
|
PERL = perl
|
|
else
|
|
ifeq ($(HOSTTYPE), i486-linux)
|
|
PERL = perl
|
|
else
|
|
ifneq ($(OSTYPE),svr5)
|
|
PERL = perl
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(HOSTTYPE), i486-linux)
|
|
STRINGS_NOT_UNIQUIZE = -fwritable-strings
|
|
endif
|
|
|
|
ifeq ($(HOSTTYPE), hp9000s700)
|
|
STRINGS_NOT_UNIQUIZE = -fwritable-strings
|
|
endif
|
|
|
|
EMDBDIR = ../../emdb
|
|
###EMDB_SPEC_TBLS = $(EMDBDIR)/emdb_merced.txt
|
|
###EMDB_ROWS = emdb_merced.txt
|
|
vpath iel.h $(LOCALINC) $(INSTALLINC)
|
|
vpath EM_perl.h $(LOCALINC) $(INSTALLINC)
|
|
vpath %.h $(INSTALLINC)
|
|
|
|
INSTALLINC_SEARCH_PATH = $(SERVER_AREA)/include
|
|
LOCALINC = $(LOCALDIR)/include
|
|
USER_CFLAGS = $(STRINGS_NOT_UNIQUIZE) -I . -I $(LOCALINC) -I $(INSTALLINC_SEARCH_PATH)
|
|
PERL_INCLIST = -I $(LOCALINC) -I $(INSTALLINC_SEARCH_PATH)
|
|
|
|
CURDIR = ../decem/build
|
|
|
|
LIBPATH = -L$(LOCALLIB) -L$(INSTALLLIB)
|
|
|
|
|
|
EMDB_ARGS = "-table -emdb_path . -dir $(CURDIR) -fields inst_id,format,major_opcode,template_role -prefix dec"
|
|
EMDB_INST_ARGS = "-table -emdb_path . -dir $(CURDIR) -fields inst_id -prefix inst"
|
|
|
|
COMMON_HEADERS = emdb_types.h EM.h EM_tools.h iel.h EM_hints.h
|
|
EMDB_SOURCES = $(EMDBDIR)/emdb.txt $(EMDBDIR)/emdb_cut.pl \
|
|
$(EMDBDIR)/decoder.txt
|
|
|
|
ifeq ($(HOSTTYPE),WINNT)
|
|
ifdef COVER
|
|
%.obj: %.c
|
|
chmod +w $<
|
|
$(CC) /C /EP /DC_COVER_OFF="/* C-Cover off */" /DC_COVER_ON="/* C-Cover on */" $(CFLAGS) $< > $<.pp
|
|
cp $<.pp $<
|
|
rm $<.pp
|
|
$(CC) $(CFLAGS) /Fo$@ /Tc$<
|
|
endif
|
|
endif
|
|
|
|
#
|
|
|
|
|
|
all: decision_tree.$(OEXT) decfn_emdb.$(OEXT) decfn_emdb.h \
|
|
inst_ids.h dec_static.$(OEXT) #../dec_static.h
|
|
|
|
decision_tree.c: tree_builder$(EEXT)
|
|
"tree_builder$(EEXT)"
|
|
|
|
decision_tree.$(OEXT): decision_tree.h
|
|
|
|
tree_builder$(EEXT): tree.h tree_builder.h dec_ign_emdb.c inst_ids.h inst_ign_ids.h \
|
|
builder_info.$(OEXT) dec_ign_emdb.$(OEXT) tree_builder.$(OEXT) tree_builder.c
|
|
ifneq ($(HOSTTYPE),WINNT)
|
|
$(CC) builder_info.o dec_ign_emdb.o tree_builder.o -o tree_builder$(EEXT) \
|
|
$(LIBPATH) -liel -lm
|
|
else
|
|
$(CC) builder_info.obj dec_ign_emdb.obj tree_builder.obj -o tree_builder$(EEXT) libiel.lib
|
|
endif
|
|
|
|
dec_emdb.$(OEXT): func.h dec_priv_col.h
|
|
|
|
dec_emdb.tab: $(EMDBDIR)/emdb.txt $(EMDBDIR)/emdb_cut.pl dec_priv_col.h
|
|
echo "building dec_emdb.tab"
|
|
cd "../../emdb" $(SEPR) \
|
|
$(PERL) emdb_cut.pl -table -emdb_path . -dir $(CURDIR) -fields inst_id,format,major_opcode,template_role -prefix dec
|
|
|
|
|
|
###ign_inst.txt must be the last in '-row' sequence
|
|
|
|
dec_ign_emdb.tab: $(EMDBDIR)/emdb.txt $(EMDBDIR)/emdb_cut.pl ign_inst.txt dec_priv_col.h
|
|
echo "building dec_ign_emdb.tab"
|
|
cd "../../emdb" $(SEPR) \
|
|
$(PERL) emdb_cut.pl -rows $(CURDIR)/ign_inst.txt -table -emdb_path . \
|
|
-dir $(CURDIR) -fields inst_id,format,major_opcode,template_role \
|
|
-prefix dec_ign
|
|
|
|
|
|
inst_ign_ids.h ign_inst.txt: $(EMDBDIR)/emdb.txt $(EMDBDIR)/emdb_formats.txt build_ignored_flds.pl
|
|
$(PERL) $(PERL_INCLIST) build_ignored_flds.pl
|
|
|
|
inst_emdb.tab: $(EMDBDIR)/emdb.txt $(EMDBDIR)/emdb_cut.pl dec_priv_col.h
|
|
cd "../../emdb" $(SEPR) \
|
|
$(PERL) emdb_cut.pl -table -emdb_path . -dir $(CURDIR) -fields inst_id -prefix inst
|
|
|
|
builder_info.c builder_info.h: $(EMDBDIR)/emdb_formats.txt tree_builder.perl dec_ign_emdb.tab\
|
|
EM_perl.h
|
|
echo "building builder_info.c"
|
|
$(PERL) $(PERL_INCLIST) tree_builder.perl
|
|
|
|
decfn_emdb.c decfn_emdb.h func.h: deccpu_emdb.c deccpu_emdb.h func_build_1.pl hard_coded_fields_h.perl
|
|
$(PERL) $(PERL_INCLIST) func_build_1.pl
|
|
|
|
dec_static.c: dec1_emdb.c dec1_emdb.h build_static_info.pl EM_perl.h
|
|
$(PERL) $(PERL_INCLIST) build_static_info.pl
|
|
|
|
deccpu_emdb.c deccpu_emdb.h : $(EMDB_SOURCES)
|
|
cd "../../emdb" $(SEPR) \
|
|
$(PERL) emdb_cut.pl -emdb_path . -dir $(CURDIR) -columns decoder.txt \
|
|
-fields inst_id,extensions,format,template_role,ops,flags,mem_size,dec_flags,impls \
|
|
-include dec_priv_col.h -prefix deccpu
|
|
|
|
|
|
###ign_inst.txt must be the last in '-row' sequence
|
|
|
|
dec_ign_emdb.c dec_ign_emdb.h : ign_inst.txt $(EMDB_SOURCES)
|
|
cd "../../emdb" $(SEPR) \
|
|
$(PERL) emdb_cut.pl -emdb_path . -dir $(CURDIR) -rows $(CURDIR)/ign_inst.txt \
|
|
-fields inst_id,extensions,format,template_role,ops,flags \
|
|
-include dec_priv_col.h -prefix dec_ign $(SEPR) cd "$(CURDIR)" $(SEPR) \
|
|
$(PERL) -p -i.bak -e "s/_IGN\d+// if ( /\s*\{EM_\S*\_IGN\d+,/)" dec_ign_emdb.c
|
|
|
|
|
|
dec1_emdb.c dec1_emdb.h : $(EMDBDIR)/emdb.txt $(EMDBDIR)/emdb_cut.pl \
|
|
$(EMDBDIR)/decoder.txt $(EMDBDIR)/dec_stat.txt
|
|
cd "../../emdb" $(SEPR) \
|
|
$(PERL) emdb_cut.pl -emdb_path . -dir $(CURDIR) -columns\
|
|
decoder.txt,dec_stat.txt -fields\
|
|
mnemonic,dec_flags,template_role,ops,modifiers,flags,specul_flag,false_pred_flag,imp_dsts,imp_srcs,br_hint_flag,br_flag,adv_load_flag,control_transfer_flag\
|
|
-prefix dec1
|
|
|
|
decfn_emdb.$(OEXT): $(COMMON_HEADERS) inst_ids.h func.h
|
|
|
|
dec_static.$(OEXT): $(COMMON_HEADERS) inst_ids.h
|
|
|
|
tree_builder.h : tree_builder.c
|
|
echo "building tree_builder.h"
|
|
$(MHDR) tree_builder.h tree_builder.c
|
|
|
|
tree_builder.$(OEXT): tree_builder.c tree_builder.h tree_builder.perl
|
|
ifeq ($(HOSTTYPE),WINNT)
|
|
ifdef COVER
|
|
cov01 -0
|
|
$(CC) /DC_COVER_OFF="" /DC_COVER_ON="" $(CFLAGS) /Fo$@ /Tc$<
|
|
cov01 -1
|
|
endif
|
|
endif
|
|
|
|
builder_info.$(OEXT): builder_info.c
|
|
ifeq ($(HOSTTYPE),WINNT)
|
|
ifdef COVER
|
|
cov01 -0
|
|
$(CC) /DC_COVER_OFF="" /DC_COVER_ON="" $(CFLAGS) /Fo$@ /Tc$<
|
|
cov01 -1
|
|
endif
|
|
endif
|
|
|
|
dec_ign_emdb.$(OEXT): dec_ign_emdb.c
|
|
ifeq ($(HOSTTYPE),WINNT)
|
|
ifdef COVER
|
|
cov01 -0
|
|
$(CC) /DC_COVER_OFF="" /DC_COVER_ON="" $(CFLAGS) /Fo$@ /Tc$<
|
|
cov01 -1
|
|
endif
|
|
endif
|
|
|
|
inst_ids.h: inst_emdb.tab inst_id.perl ../../copyright/external/c_file
|
|
$(PERL) inst_id.perl
|
|
|
|
$(EMDBDIR)/all_emdb.tab: $(EMDBDIR)/emdb.txt
|
|
cd "../../emdb" $(SEPR) \
|
|
$(PERL) emdb_cut.pl -table -emdb_path . -dir . -fields inst_id,mnemonic -prefix all
|
|
|
|
$(EMDBDIR)/decoder.txt EM_hints.h: $(EMDBDIR)/all_emdb.tab $(EMDBDIR)/emdb_cut.pl
|
|
cd "../../emdb" $(SEPR) $(PERL) dec_private.perl
|
|
|
|
|
|
###################################
|
|
##### Source release rules ####
|
|
###################################
|
|
|
|
C_FILES = tree_builder.c
|
|
H_FILES = dec_priv_col.h decision_tree.h tree.h
|
|
PERL_FILES = build_ignored_flds.pl build_static_info.pl func_build_1.pl func_build_2.pl \
|
|
inst_cpu_clmn.perl inst_id.perl tree_builder.perl hard_coded_fields_h.perl
|
|
EMDB_FILES = $(EMDBDIR)/dec_private.perl $(EMDBDIR)/dec_stat.txt
|
|
COPYRIGHT_EXTERNAL_FILES = ../../copyright/external/c_file
|
|
|
|
SOURCE_RELEASE_DECEM_BUILD_DIR = $(TARGET_TREE)/src/decem/build
|
|
SOURCE_RELEASE_EMDB_DIR = $(TARGET_TREE)/src/emdb
|
|
SOURCE_RELEASE_COPYRIGHT_EXTERNAL_DIR = $(TARGET_TREE)/src/copyright/external
|
|
|
|
SOURCE_RELEASE_FILES = Makefile $(PERL_FILES) $(C_FILES) $(H_FILES) $(EMDB_FILES) $(COPYRIGHT_EXTERNAL_FILES)
|
|
|
|
source_release_copy: $(SOURCE_RELEASE_FILES)
|
|
@echo Copying decem build source files to $(SOURCE_RELEASE_DECEM_BUILD_DIR)
|
|
$(CP) Makefile $(PERL_FILES) $(C_FILES) $(H_FILES) $(SOURCE_RELEASE_DECEM_BUILD_DIR)
|
|
@echo Copying decem emdb source files to $(SOURCE_RELEASE_EMDB_DIR)
|
|
$(CP) $(EMDB_FILES) $(SOURCE_RELEASE_EMDB_DIR)
|
|
@echo Copying decem copyright source files to $(SOURCE_RELEASE_COPYRIGHT_EXTERNAL_DIR)
|
|
$(CP) $(COPYRIGHT_EXTERNAL_FILES) $(SOURCE_RELEASE_COPYRIGHT_EXTERNAL_DIR)
|
|
|
|
source_release_clean:
|
|
@echo Cleaning decem build source release files
|
|
$(RM) *.$(OEXT) dec_emdb.c dec_emdb.h func.h dec_emdb.tab inst_emdb.tab dec1_emdb.c \
|
|
dec1_emdb.h tree_builder$(EEXT) builder_info.* dec_frmt.txt \
|
|
tree_builder.h inst_ids.h $(EM_HINTS_H) dec_ign_emdb.c dec_ign_emdb.c.bak inst_ign_ids.h \
|
|
dec_ign_emdb.tab ign_inst.txt deccpu_emdb.c deccpu_emdb.h $(EMDBDIR)/all_emdb.tab
|
|
|
|
|
|
source_release_check:
|
|
|
|
###################################
|
|
|
|
|
|
clean:
|
|
$(RM) *.$(OEXT) dec_emdb.c dec_emdb.h decfn_emdb.c decfn_emdb.h func.h \
|
|
dec_emdb.tab inst_emdb.tab dec1_emdb.c dec1_emdb.h dec_static.c \
|
|
tree_builder$(EEXT) builder_info.* decision_tree.c dec_frmt.txt \
|
|
$(EMDBDIR)/decoder.txt tree_builder.h inst_ids.h $(EM_HINTS_H) \
|
|
dec_ign_emdb.c dec_ign_emdb.c.bak inst_ign_ids.h dec_ign_emdb.tab \
|
|
ign_inst.txt deccpu_emdb.c deccpu_emdb.h $(EMDBDIR)/all_emdb.tab
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|