X-Git-Url: https://rtime.felk.cvut.cz/gitweb/linux-conf-perf.git/blobdiff_plain/4734d75c30520e73f81b69b84ae5be7eb152fcf1..HEAD:/Makefile diff --git a/Makefile b/Makefile index 16f272f..76babfb 100644 --- a/Makefile +++ b/Makefile @@ -1,18 +1,161 @@ +HELP="" +include .conf.mk +include .stamp/empty # This creates the .stamp directory -all: kconfig_parser +HELPER_PROGRAMS = scripts/parse_kconfig/parse \ + scripts/write_config/write_config \ + scripts/allconfig/allconfig \ + scripts/picosat-959/picosat -kconfig_parser: - @$(MAKE) -C scripts/kconfig_parser/ +HELP+="all - Builds basic programs and prints message about next steps.\n" +.PHONY: all +all: $(HELPER_PROGRAMS) .stamp/initram_cyclictest + mkdir -p $(CONF_LOG_FOLDER) + mkdir -p $(CONF_BUILD_FOLDER) -main_loop: kconfig_parser - scripts/main_loop.py +.PHONY: help +help: + @echo " help - Prints this text" + @echo -e $(HELP) +HELP+="psql - Launch PostgreSQL interactive terminal.\n" +.PHONY: psql +psql: + psql -d "$(CONF_DB_DATABASE)" +.PHONY: mbuildroot +mbuildroot: + $(MAKE) -C tests/cyclictest/root/ menuconfig + +HELP+="mlinux - Calls 'make menuconfig' in Linux folder. Use this for Linux\n" +HELP+=" configuration.\n" +.PHONY: mlinux +mlinux: + ARCH=$(CONF_KERNEL_ARCH) $(MAKE) -C $(CONF_LINUX_SOURCES) menuconfig + +HELP+="deflinux - Executes 'make defconfig' in linux folder. This generates default\n" +HELP+=" linux configuration.\n" +.PHONY: deflinux +deflinux: + ARCH=$(CONF_KERNEL_ARCH) $(MAKE) -C $(CONF_LINUX_SOURCES) defconfig + +HELP+="dot_config - Generate dot_config file. This file is based on default Linux\n" +HELP+=" configuration.\n" +$(CONF_DOT_CONFIG): .conf.mk scripts/allconfig/allconfig $(CONF_LINUX_BUILD_FOLDER)/.config + scripts/allconfig/allconfig --env .conf.mk $(CONF_LINUX_SOURCES)/Kconfig $(CONF_LINUX_BUILD_FOLDER)/.config $@ + +HELP+="initialize - Executes only initialization.\n" +.PHONY: initialize init +init: initialize +initialize: all + scripts/initialize.py + +HELP+="dbmigrate - Migrate database.\n" +.PHONY: initdb initialize_database dbmigrate +initdb: initialize_database +initialize_database: dbmigrate +dbmigrate: + ./scripts/database/manage.py makemigrations + ./scripts/database/manage.py migrate + +HELP+="test - Executes boot and benchmark test. You should use this before\n" +HELP+=" target run. This target is for testing if initial kernel\n" +HELP+=" configuration, buildroot configuration and benchmark are\n" +HELP+=" configured right.\n" +.PHONY: test +test: scripts/parse_kconfig/parse .stamp/initram_cyclictest + scripts/test.py + +HELP+="run - Executes loop of kernel building, booting and benchmark execution.\n" +.PHONY: run +run: all $(CONF_BUILD_FOLDER)/rules $(CONF_BUILD_FOLDER)/fixed + ln -sf ../dot_measure $(CONF_BUILD_FOLDER) + scripts/loop.py + +$(CONF_BUILD_FOLDER)/rules $(CONF_BUILD_FOLDER)/symbol_map: .conf.mk $(CONF_LINUX_SOURCES)/Kconfig + scripts/parse_kconfig/parse -v --env .conf.mk $(CONF_LINUX_SOURCES)/Kconfig $(dir $@) + +$(CONF_BUILD_FOLDER)/allconfig: .conf.mk $(CONF_LINUX_SOURCES)/Kconfig $(CONF_LINUX_BUILD_FOLDER)/.config + scripts/allconfig/allconfig --env .conf.mk $(CONF_LINUX_SOURCES)/Kconfig $(CONF_LINUX_BUILD_FOLDER)/.config $@ + +$(CONF_BUILD_FOLDER)/fixed $(CONF_BUILD_FOLDER)/measure: .conf.mk $(CONF_BUILD_FOLDER)/allconfig dot_measure + scripts/gen_fixed.py $(CONF_BUILD_FOLDER)/allconfig dot_measure + +.PHONY: evaluate +evaluate: + scripts/evaluate.py + +HELP+="\n" + +HELP+="clean - Cleans all generated files. Except those in\n" +HELP+=" linux and buildroot.\n" +.PHONY: clean clean: - @$(MAKE) -C scripts/kconfig_parser/ clean - $(RM) linux/.config - $(RM) -r build + @$(MAKE) -C scripts/parse_kconfig clean + @$(MAKE) -C scripts/write_config clean + @$(MAKE) -C scripts/allconfig clean + @if [ -e scripts/picosat-959/makefile ]; then $(MAKE) -C scripts/picosat-959 clean; fi + $(RM) .conf.mk + $(RM) -r jobfiles + +HELP+="clean_measure - Removes working files used while measuring. After this,\n" +HELP+=" initializations has to be executed once again.\n" +.PHONY: clean_measure +clean_measure: + $(RM) -r configurations + $(RM) -r output + $(RM) -r result + $(RM) $(CONF_DOT_CONFIG) -# Linux has separate clean option because it takes more time and because in most of the time it is not required clean +HELP+="clean_database - Drop all entries in database.\n" +.PHONY: cleandb clean_database +cleandb: clean_database +clean_database: + ./scripts/database/manage.py flush + +HELP+="distclean - Cleans all configurations and generated files.\n" +HELP+=" Including linux and buildroot.\n" +.PHONY: distclean +distclean: clean distclean_linux distclean_buildroot clean_measure + +HELP+="clean_linux - Executes 'make clean' in linux folder.\n" +.PHONY: clean_linux clean_linux: - @$(MAKE) -C linux clean + @$(MAKE) -C $(CONF_LINUX_SOURCES) clean + +HELP+="distclean_linux - Executes 'make distclean' in linux folder.\n" +.PHONY: distclean_linux +distclean_linux: + @$(MAKE) -C $(CONF_LINUX_SOURCES) distclean + +.PHONY: clean_buildroot +clean_buildroot: + @$(MAKE) -C tests/cyclictest/root/ clean + +.PHONY: distclean_buildroot +distclean_buildroot: + @$(MAKE) -C tests/cyclictest/root/ distclean + +####################################### + +.conf.mk: conf.py .target targets/$(shell cat .target)/conf.py + scripts/confmk.py + +.target: + $(error Please select target by writing it to .target file) + +$(HELPER_PROGRAMS): + $(MAKE) -C $(dir $@) + +scripts/picosat-959/makefile: + cd $(dir $@) && ./configure + +scripts/picosat-959/picosat: scripts/picosat-959/makefile + +.stamp/initram_cyclictest: .conf.mk + $(MAKE) -C tests/cyclictest/root + touch $@ + +.stamp/empty: + mkdir -p $(dir $@) + touch $@