Leaked source code of windows server 2003
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

##
## 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