summaryrefslogtreecommitdiffstats
path: root/config.mk
diff options
context:
space:
mode:
Diffstat (limited to 'config.mk')
-rw-r--r--config.mk415
1 files changed, 6 insertions, 409 deletions
diff --git a/config.mk b/config.mk
index 834d730a4..83c1e7a3a 100644
--- a/config.mk
+++ b/config.mk
@@ -20,415 +20,12 @@
# Origin: 30
#
# IBM_PROLOG_END_TAG
-all:
- ${MAKE} gen_pass
- ${MAKE} code_pass
-## output libs, objs for userdetails parsers
-UD_DIR = ${ROOTPATH}/obj/modules/userdetails
-UD_OBJS = ${UD_DIR}*.o ${UD_DIR}/*.so ${UD_DIR}/*.a
+.DEFAULT_GOAL = all
-ifdef MODULE
-OBJDIR = ${ROOTPATH}/obj/modules/${MODULE}
-BEAMDIR = ${ROOTPATH}/obj/beam/${MODULE}
-GENDIR = ${ROOTPATH}/obj/genfiles
-GENDIR_PLUGINS = ${ROOTPATH}/obj/genfiles/plugins
-IMGDIR = ${ROOTPATH}/img
-GCOVNAME = ${MODULE}.lcov
-EXTRACOMMONFLAGS += -fPIC -Bsymbolic -Bsymbolic-functions
-ifdef STRICT
- EXTRACOMMONFLAGS += -Weffc++
-endif
-CUSTOMFLAGS += -D__HOSTBOOT_MODULE=${MODULE}
-ifndef TESTS
-ifdef HOSTBOOT_PROFILE
-vpath %.C ${ROOTPATH}/src/sys/prof
-OBJS := gcov.o ${OBJS}
-endif
-endif
-LIBS += $(addsuffix .so, $(addprefix lib, ${MODULE}))
-MODULE_INIT = ${ROOTPATH}/obj/core/module_init.o
-EXTRAINCDIR += ${ROOTPATH}/src/include/usr ${GENDIR}
-else
-OBJDIR = ${ROOTPATH}/obj/core
-BEAMDIR = ${ROOTPATH}/obj/beam/core
-GENDIR = ${ROOTPATH}/obj/genfiles
-GENDIR_PLUGINS = ${ROOTPATH}/obj/genfiles/plugins
-IMGDIR = ${ROOTPATH}/img
-EXTRAINCDIR += ${GENDIR}
-GCOVNAME = $(notdir $(shell pwd)).lcov
-endif
-GCOVDIR = ${ROOTPATH}/obj/gcov
+MKRULESDIR = $(ROOTPATH)/src/build/mkrules
-__internal__comma= ,
-__internal__empty=
-__internal__space=$(__internal__empty) $(__internal__empty)
-MAKE_SPACE_LIST = $(subst $(__internal__comma),$(__internal__space),$(1))
-
-ifdef HOSTBOOT_DEBUG
-ifeq ($(HOSTBOOT_DEBUG),1)
- CUSTOMFLAGS += -DHOSTBOOT_DEBUG=1
-else
-ifndef MODULE
-ifneq (,$(filter kernel,$(call MAKE_SPACE_LIST, $(HOSTBOOT_DEBUG))))
- CUSTOMFLAGS += -DHOSTBOOT_DEBUG=kernel
-endif
-else
-ifneq (,$(filter $(MODULE), $(call MAKE_SPACE_LIST, $(HOSTBOOT_DEBUG))))
- CUSTOMFLAGS += -DHOSTBOOT_DEBUG=$(MODULE)
-endif
-endif
-endif
-endif
-
-ifndef TESTS
-ifdef HOSTBOOT_PROFILE
-ifndef HOSTBOOT_PROFILE_NO_INSTRUMENT
-CUSTOMFLAGS += --coverage
-endif
-endif
-endif
-
-# Current MCP version
-MCP_VER = mcp6
-
-TRACEPP = ${ROOTPATH}/src/build/trace/tracepp
-CUSTOM_LINKER_EXE = ${ROOTPATH}/src/build/linker/linker
-CUSTOM_LINKER = i686-mcp6-jail ${CUSTOM_LINKER_EXE}
-
-CC_RAW = ppc64-mcp6-gcc -std=c99
-CXX_RAW = ppc64-mcp6-g++
-CC = ${TRACEPP} ${CC_RAW}
-CXX = ${TRACEPP} ${CXX_RAW}
-
-LD = ppc64-mcp6-ld
-OBJDUMP = ppc64-mcp6-objdump
-GCOV = ppc64-mcp6-gcov
-APYFIPSHDR = apyfipshdr
-APYRUHHDR = apyruhhdr
-
-BINFILE_CACHE_LOCALDIR = ${ROOTPATH}/.git/hb_cache/data/
-BINFILE_CACHE_REMOTEDIR = /gsa/ausgsa/projects/h/hostboot/.binary_cache/data/
-
-BEAMVER = beam-3.5.2
-BEAMPATH = /afs/rch/projects/esw/beam/${BEAMVER}
-BEAMCMD = i686-mcp6-jail ${BEAMPATH}/bin/beam_compile
-BEAMFLAGS = \
- --beam::source=${BEAMPATH}/tcl/beam_default_parms.tcl \
- --beam::source=${ROOTPATH}/src/build/beam/compiler_c_config.tcl \
- --beam::source=${ROOTPATH}/src/build/beam/compiler_cpp_config.tcl \
- --beam::exit0 \
- -o /dev/null
-
-ifdef HOSTBOOT_PROFILE
-COMMONFLAGS = -Os
-else
-COMMONFLAGS = -O3
-endif
-COMMONFLAGS += -nostdlib ${EXTRACOMMONFLAGS}
-CFLAGS = ${COMMONFLAGS} -mcpu=power7 -nostdinc -g -mno-vsx -mno-altivec\
- -Wall -Werror -mtraceback=no ${CUSTOMFLAGS}
-ASMFLAGS = ${COMMONFLAGS} -mcpu=power7
-CXXFLAGS = ${CFLAGS} -nostdinc++ -fno-rtti -fno-exceptions -Wall
-LDFLAGS = --nostdlib --sort-common ${COMMONFLAGS}
-
-ifdef HOSTBOOT_PROFILE
- PROFILE_FLAGS_FILTER = $(if $(findstring gcov,$(2)),\
- $(filter-out --coverage,$(1)),\
- $(1))
-else
- PROFILE_FLAGS_FILTER = $(1)
-endif
-
-FLAGS_FILTER = $(call PROFILE_FLAGS_FILTER, $(1), $(2))
-
-ifdef USE_PYTHON
- TESTGEN = ${ROOTPATH}/src/usr/cxxtest/cxxtestgen.py
-else
- TESTGEN = ${ROOTPATH}/src/usr/cxxtest/cxxtestgen.pl
-endif
-
-ifdef TESTS
-ifdef MODULE
-OBJS += ${MODULE}.o
-EXTRA_OBJS += ${OBJDIR}/${MODULE}.C
-vpath %.C ${OBJDIR} $(shell mkdir -p ${OBJDIR})
-else
-$(error MODULE must be defined for a testcase.)
-endif
-endif
-
-
-INCDIR = ${ROOTPATH}/src/include/
-_INCDIRS = ${INCDIR} ${EXTRAINCDIR}
-INCFLAGS = $(addprefix -I, ${_INCDIRS} )
-ASMINCFLAGS = $(addprefix $(lastword -Wa,-I), ${_INCDIRS})
-
-OBJECTS = $(addprefix ${OBJDIR}/, ${OBJS})
-LIBRARIES = $(addprefix ${IMGDIR}/, ${LIBS})
-
-ifdef IMGS
-IMGS_ = $(addprefix ${IMGDIR}/, ${IMGS})
-LIDS = $(foreach lid,$(addsuffix _LIDNUMBER, $(IMGS)),$(addprefix ${IMGDIR}/,$(addsuffix .ruhx, $($(lid)))))
-IMAGES = $(addsuffix .bin, ${IMGS_}) $(addsuffix .elf, ${IMGS_}) ${LIDS}
-#$(addsuffix .ruhx, ${IMGS_})
-IMAGE_EXTRAS = $(addprefix ${IMGDIR}/, hbotStringFile)
-endif
-
-ifdef EXTRA_LIDS
-EXTRA_LIDS_ = $(foreach lid,$(addsuffix _LIDNUMBER, $(EXTRA_LIDS)),$(addprefix ${IMGDIR}/,$(addsuffix .lidhdr, $($(lid)))))
-endif
-
-${OBJDIR}/%.o ${OBJDIR}/%.list : %.C
- mkdir -p ${OBJDIR}
- ${CXX} -c $(call FLAGS_FILTER, ${CXXFLAGS}, $<) $< \
- -o $@ ${INCFLAGS} -iquote .
- ${OBJDUMP} -rdlCS $@ > $(basename $@).list
-
-# Compiling *.cc files
-${OBJDIR}/%.o ${OBJDIR}/%.list : %.cc
- mkdir -p ${OBJDIR}
- ${CXX} -c ${CXXFLAGS} $< -o $@ ${INCFLAGS} -iquote .
- ${OBJDUMP} -rdlCS $@ > $(basename $@).list
-
-${OBJDIR}/%.o ${OBJDIR}/%.list : %.c
- mkdir -p ${OBJDIR}
- # Override to use C++ compiler in place of C compiler
- # CC_OVERRIDE is set in the makefile of the component
-ifndef CC_OVERRIDE
- ${CC} -c $(call FLAGS_FILTER, ${CFLAGS}, $<) $< \
- -o $@ ${INCFLAGS} -iquote .
-else
- ${CXX} -c $(call FLAGS_FILTER, ${CXXFLAGS}, $<) $< \
- -o $@ ${INCFLAGS} -iquote .
-endif
- ${OBJDUMP} -rdlCS $@ > $(basename $@).list
-
-${OBJDIR}/%.o : %.S
- mkdir -p ${OBJDIR}
- ${CC} -c ${ASMFLAGS} $< -o $@ ${ASMINCFLAGS} ${INCFLAGS} -iquote .
-
-${OBJDIR}/%.dep : %.C
- mkdir -p ${OBJDIR}; \
- rm -f $@; \
- ${CXX_RAW} -M $(call FLAGS_FILTER, ${CXXFLAGS}, $<) $< \
- -o $@.$$$$ ${INCFLAGS} -iquote .; \
- sed 's,\($*\)\.o[ :]*,${OBJDIR}/\1.o $@ : ,g' < $@.$$$$ > $@; \
- rm -f $@.$$$$
-
-${OBJDIR}/%.dep : %.cc
- mkdir -p ${OBJDIR}; \
- rm -f $@; \
- ${CXX_RAW} -M ${CXXFLAGS} $< -o $@.$$$$ ${INCFLAGS} -iquote .; \
- sed 's,\($*\)\.o[ :]*,${OBJDIR}/\1.o $@ : ,g' < $@.$$$$ > $@; \
- rm -f $@.$$$$
-
-${OBJDIR}/%.dep : %.c
- mkdir -p ${OBJDIR}; \
- rm -f $@; \
- ${CC_RAW} -M $(call FLAGS_FILTER, ${CFLAGS}, $<) $< \
- -o $@.$$$$ ${INCFLAGS} -iquote .; \
- sed 's,\($*\)\.o[ :]*,${OBJDIR}/\1.o $@ : ,g' < $@.$$$$ > $@; \
- rm -f $@.$$$$
-
-${OBJDIR}/%.dep : %.S
- mkdir -p ${OBJDIR}; \
- rm -f $@; \
- ${CC_RAW} -M ${ASMFLAGS} $< -o $@.$$$$ ${ASMINCFLAGS} ${INCFLAGS} -iquote .; \
- sed 's,\($*\)\.o[ :]*,${OBJDIR}/\1.o $@ : ,g' < $@.$$$$ > $@; \
- rm -f $@.$$$$
-
-ifdef MODULE
-${IMGDIR}/%.so : ${OBJECTS} ${ROOTPATH}/src/module.ld ${MODULE_INIT}
- ${LD} -shared -z now ${LDFLAGS} \
- $(filter-out ${ROOTPATH}/src/module.ld,$^) \
- -T ${ROOTPATH}/src/module.ld -o $@
-endif
-
-ifdef TESTS
-${OBJDIR}/${MODULE}.C: ${TESTS}
- mkdir -p ${OBJDIR}
- ${TESTGEN} --hostboot -o $@ ${TESTS}
-endif
-
-# Rules for BINARY_FILES directive.
-#
-# The BINARY_FILES directives are used to include files out of the binary
-# files cache (see 'hb cacheadd' command). This cache exists to keep
-# binary files outside of git, because they take a larger space in the git
-# database, especially if they change frequently.
-#
-# The BINARY_FILES variable is a set of <destination>:<hash_value> pairs.
-# The destination is where the make system should put the file. The hash
-# value tells which version of a file to use and it comes from the
-# 'hb cacheadd' tool when a version of the file is added to the binary
-# files cache.
-#
-define __BINARY_CACHE_FILE
-_BINARYFILES += $(1)
-
-ifneq "$(wildcard $(addprefix ${BINFILE_CACHE_LOCALDIR},$(2)))" ""
-$(1) : $(addprefix $${BINFILE_CACHE_LOCALDIR},$(2))
- echo "$(2) $$<" | sha1sum --check
- cp $$< $$@
-else
-$(1) : $(addprefix $${BINFILE_CACHE_REMOTEDIR},$(2))
- echo "$(2) $$<" | sha1sum --check
- cp $$< $$@
-endif
-endef
-ifdef BINARY_FILES
-$(foreach file,$(BINARY_FILES), \
- $(eval $(call __BINARY_CACHE_FILE, \
- $(firstword $(subst :, ,$(file))), \
- $(lastword $(subst :, ,$(file))) \
- )) \
-)
-endif
-# end BINARY_FILES rules.
-
-define ELF_template
-$${IMGDIR}/$(1).elf: $$(addprefix $${OBJDIR}/, $$($(1)_OBJECTS)) \
- $${ROOTPATH}/src/kernel.ld
- $${LD} -static $${LDFLAGS} \
- $$(addprefix $${OBJDIR}/, $$($(1)_OBJECTS)) \
- $$($(1)_LDFLAGS) -T $${ROOTPATH}/src/kernel.ld -o $$@
-endef
-$(foreach img,$(IMGS),$(eval $(call ELF_template,$(img))))
-
-${IMGDIR}/%.bin ${IMGDIR}/%.list ${IMGDIR}/%.syms: ${IMGDIR}/%.elf \
- $(wildcard ${IMGDIR}/*.so) $(addprefix ${IMGDIR}/, $($*_DATA_MODULES)) \
- ${CUSTOM_LINKER_EXE}
- ${CUSTOM_LINKER} $@ $< \
- $(addprefix ${IMGDIR}/lib, $(addsuffix .so, $($*_MODULES))) \
- --extended=0x40000 ${IMGDIR}/$*_extended.bin \
- $(addprefix ${IMGDIR}/lib, $(addsuffix .so, $($*_EXTENDED_MODULES))) \
- $(addprefix ${IMGDIR}/, $($*_DATA_MODULES)) \
- > ${IMGDIR}/.$*.lnkout
- ${ROOTPATH}/src/build/tools/addimgid $@ $<
- (cd ${ROOTPATH}; \
- src/build/tools/gensyms $*.bin $*_extended.bin 0x40000000 > ./img/$*.syms ; \
- src/build/tools/genlist $*.bin > ./img/$*.list)
-
-
-define RUHX_template
-${IMGDIR}/$$($(1)_LIDNUMBER).ruhx: $${ROOTPATH}/src/build/lids/$(1).lidhdr \
- $${IMGDIR}/$(1).bin
- $${APYFIPSHDR} -r $$< -l $${IMGDIR}/$(1).bin -o $${IMGDIR}/$(1).fips
- $${APYRUHHDR} -r $$< -l ${IMGDIR}/$(1).fips -o $${IMGDIR}/$$($(1)_LIDNUMBER).ruhx
- (rm -f $${IMGDIR}/$(1).fips)
- ln -sf $${IMGDIR}/$(1).bin $${IMGDIR}/$$($(1)_LIDNUMBER).lid
- ln -sf $${ROOTPATH}/src/build/lids/$(1).lidhdr $${IMGDIR}/$$($(1)_LIDNUMBER).lidhdr
-endef
-$(foreach img,$(IMGS),$(eval $(call RUHX_template,$(img))))
-
-define LIDHDR_template
-${IMGDIR}/$$($(1)_LIDNUMBER).lidhdr: $${ROOTPATH}/src/build/lids/$(1).lidhdr
- ln -sf $$^ $$@
-endef
-$(foreach lid,$(EXTRA_LIDS),$(eval $(call LIDHDR_template,$(lid))))
-
-${IMGDIR}/hbotStringFile : ${IMAGES}
- ${ROOTPATH}/src/build/trace/tracehash_hb.pl -c -d ${ROOTPATH}/obj -s $@
-
-${GENDIR}/hwp_id.html : ${SUBDIRS}
- ${ROOTPATH}/src/build/tools/hwp_id.pl -i -l > $@
-
-%.d: ${OBJECTS}
- cd ${basename $@} && ${MAKE} code_pass
-
-%.gen_pass:
- cd ${basename $@} && ${MAKE} gen_pass
-
-%.gcov_pass:
- cd ${basename $@} && ${MAKE} gcov_pass -ik
-
-%.clean:
- cd ${basename $@} && ${MAKE} clean
-
-%.beamdir:
- cd ${basename $@} && ${MAKE} beam
-
-code_pass: ${OBJECTS} ${SUBDIRS} ${LIBRARIES} ${EXTRA_LIDS_} ${EXTRA_PARTS}
-ifdef IMAGES
- ${MAKE} ${IMAGES} ${IMAGE_EXTRAS} ${IMAGE_EXTRA_TARGETS}
-endif
-
-gen_pass:
- mkdir -p ${GENDIR}
- mkdir -p ${GENDIR_PLUGINS}
- ${MAKE} GEN_PASS
-
-_GENFILES = $(addprefix ${GENDIR}/, $(GENFILES))
-_GENFILES += $(addprefix ${GENDIR_PLUGINS}/, $(GENFILES_PLUGINS))
-GEN_PASS: $(_GENFILES) $(_BINARYFILES) ${SUBDIRS:.d=.gen_pass}
-
-GENTARGET = $(addprefix %/, $(1))
-
-${BEAMDIR}/%.beam : %.C
- mkdir -p ${BEAMDIR}
- ${BEAMCMD} -I ${INCDIR} ${CXXFLAGS} ${BEAMFLAGS} $< \
- --beam::complaint_file=$@ --beam::parser_file=/dev/null
-
-${BEAMDIR}/%.beam : %.cc
- mkdir -p ${BEAMDIR}
- ${BEAMCMD} -I ${INCDIR} ${CXXFLAGS} ${BEAMFLAGS} $< \
- --beam::complaint_file=$@ --beam::parser_file=/dev/null
-
-${BEAMDIR}/%.beam : %.c
- mkdir -p ${BEAMDIR}
- ${BEAMCMD} -I ${INCDIR} ${CFLAGS} ${BEAMFLAGS} $< \
- --beam::complaint_file=$@ --beam::parser_file=/dev/null
-
-${BEAMDIR}/%.beam : %.S
- echo Skipping ASM file.
-
-BEAMOBJS = $(addprefix ${BEAMDIR}/, ${OBJS:.o=.beam})
-beam: ${SUBDIRS:.d=.beamdir} ${BEAMOBJS}
-
-gcov_pass:
- mkdir -p ${GCOVDIR}
- ${MAKE} GCOV_PASS
-
-GCOV_PASS: ${SUBDIRS:.d=.gcov_pass}
-ifdef OBJS
- cp ${OBJECTS:.o=.gcno} ${OBJECTS:.o=.gcda} .
- lcov --directory . -c -o ${GCOVDIR}/${GCOVNAME} \
- --gcov-tool ${GCOV} --ignore-errors source
- rm ${OBJS:.o=.gcno} ${OBJS:.o=.gcda} -f
-endif
-
-check_istep_modules: ${OBJS}
- listdeps.pl ${IMGDIR} -v
-
-cleanud :
- rm -f ${UD_OBJS}
-
-clean: cleanud ${SUBDIRS:.d=.clean}
- (rm -f ${OBJECTS} ${OBJECTS:.o=.dep} ${OBJECTS:.o=.list} \
- ${OBJECTS:.o=.o.hash} ${OBJECTS:.o=.gcno} ${OBJECTS:.o=.gcda} \
- ${BEAMOBJS} ${LIBRARIES} \
- ${IMAGES} ${IMAGES:.bin=.list} ${IMAGES:.bin=.syms} \
- ${IMAGES:.bin=.bin.modinfo} ${IMAGES:.ruhx=.lid} \
- ${IMAGES:.ruhx=.lidhdr} ${IMAGES:.bin=_extended.bin} \
- ${IMAGE_EXTRAS} ${EXTRA_LIDS_} \
- ${EXTRA_OBJS} ${_GENFILES} ${_BINARYFILES} ${EXTRA_PARTS} ${EXTRA_CLEAN} )
-
-cscope: ${SUBDIRS}
- mkdir -p ${ROOTPATH}/obj/cscope
- (cd ${ROOTPATH}/obj/cscope ; rm -f cscope.* ; \
- find ../../ -name '*.[CHchS]' -type f -fprint cscope.files; \
- cscope -bqk)
-
-ctags: ${SUBDIRS}
- mkdir -p ${ROOTPATH}/obj/cscope
- (cd ${ROOTPATH}/obj/cscope ; rm -f tags ; \
- ctags --recurse=yes --fields=+S ../../src)
-
-ifneq ($(MAKECMDGOALS),clean)
-ifneq ($(MAKECMDGOALS),gen_pass)
-ifneq ($(MAKECMDGOALS),GEN_PASS)
- -include $(OBJECTS:.o=.dep)
-endif
-endif
-endif
+include $(MKRULESDIR)/util.mk
+include $(MKRULESDIR)/env.mk
+include $(MKRULESDIR)/rules.mk
+include $(MKRULESDIR)/passes.mk
OpenPOWER on IntegriCloud