Changeset e160bfe8 in mainline
- Timestamp:
- 2017-10-23T18:51:34Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 327f147
- Parents:
- 31cca4f3 (diff), 367db39a (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - Files:
-
- 17 edited
Legend:
- Unmodified
- Added
- Removed
-
.bzrignore
r31cca4f3 re160bfe8 5 5 *.prev 6 6 *.so.* 7 *.d 7 8 Makefile.ag.depend 8 9 Makefile.common 9 10 Makefile.config 10 Makefile.depend11 11 autotool/ 12 12 boot/distroot/ -
Makefile
r31cca4f3 re160bfe8 41 41 COMMON_MAKEFILE = Makefile.common 42 42 COMMON_HEADER = common.h 43 COMMON_HEADER_PREV = $(COMMON_HEADER).prev44 43 45 44 CONFIG_MAKEFILE = Makefile.config 46 45 CONFIG_HEADER = config.h 47 46 48 .PHONY: all precheck cscope cscope_parts autotool config_auto config_default config distclean clean check releasefile release 47 .PHONY: all precheck cscope cscope_parts autotool config_auto config_default config distclean clean check releasefile release common boot kernel uspace 49 48 50 all: $(COMMON_MAKEFILE) $(COMMON_HEADER) $(CONFIG_MAKEFILE) $(CONFIG_HEADER) 51 cp -a $(COMMON_HEADER) $(COMMON_HEADER_PREV) 49 all: kernel uspace 50 $(MAKE) -r -C boot PRECHECK=$(PRECHECK) 51 52 common: $(COMMON_MAKEFILE) $(COMMON_HEADER) $(CONFIG_MAKEFILE) $(CONFIG_HEADER) 53 54 kernel: common 52 55 $(MAKE) -r -C kernel PRECHECK=$(PRECHECK) 56 57 uspace: common 53 58 $(MAKE) -r -C uspace PRECHECK=$(PRECHECK) 54 $(MAKE) -r -C boot PRECHECK=$(PRECHECK)55 59 56 60 precheck: clean … … 79 83 # Autotool (detects compiler features) 80 84 81 autotool $(COMMON_MAKEFILE) $(COMMON_HEADER): $(CONFIG_MAKEFILE) 85 autotool $(COMMON_MAKEFILE) $(COMMON_HEADER): $(CONFIG_MAKEFILE) $(AUTOTOOL) 82 86 $(AUTOTOOL) 83 -[ -f $(COMMON_HEADER_PREV) ] && diff -q $(COMMON_HEADER_PREV) $(COMMON_HEADER) && mv -f $(COMMON_HEADER_PREV) $(COMMON_HEADER)87 diff -q $(COMMON_HEADER).new $(COMMON_HEADER) 2> /dev/null; if [ $$? -ne 0 ]; then mv -f $(COMMON_HEADER).new $(COMMON_HEADER); fi 84 88 85 89 # Build-time configuration … … 109 113 110 114 distclean: clean 111 rm -f $(CSCOPE).out $(COMMON_MAKEFILE) $(COMMON_HEADER) $(CO MMON_HEADER_PREV) $(CONFIG_MAKEFILE) $(CONFIG_HEADER) tools/*.pyc tools/checkers/*.pyc release/HelenOS-*115 rm -f $(CSCOPE).out $(COMMON_MAKEFILE) $(COMMON_HEADER) $(CONFIG_MAKEFILE) $(CONFIG_HEADER) tools/*.pyc tools/checkers/*.pyc release/HelenOS-* 112 116 113 117 clean: -
boot/Makefile
r31cca4f3 re160bfe8 117 117 cp "$(USPACE_PATH)/$(DRVS_PATH)/$$file_dir/$$file_name/$$file_name.fw" "$(DIST_PATH)/$(DRVS_PATH)/$$file_name/" ; \ 118 118 done 119 if ls $(DIST_OVERLAY_PATH)/* >/dev/null ; then \119 if ls $(DIST_OVERLAY_PATH)/* >/dev/null 2>/dev/null; then \ 120 120 cp -r -L $(DIST_OVERLAY_PATH)/* "$(DIST_PATH)"; \ 121 121 fi … … 126 126 $(MAKE) -r -f $(POSTBUILD) clean PRECHECK=$(PRECHECK) 127 127 endif 128 rm -f $(POST_OUTPUT) $(BOOT_OUTPUT) $(DEPEND) $(DEPEND_PREV)arch/*/include/common.h128 rm -f $(POST_OUTPUT) $(BOOT_OUTPUT) arch/*/include/common.h 129 129 find generic/src/ arch/*/src/ genarch/src/ -name '*.o' -follow -exec rm \{\} \; 130 find generic/src/ arch/*/src/ genarch/src/ -name '*.d' -follow -exec rm \{\} \; 130 131 131 132 clean_dist: -
boot/Makefile.build
r31cca4f3 re160bfe8 27 27 # 28 28 29 .PHONY: all clean 29 .PHONY: all clean depend 30 30 31 31 include Makefile.common … … 64 64 endif 65 65 66 ifeq ($(COMPILER),gcc_native)67 CFLAGS = $(COMMON_CFLAGS) $(GCC_CFLAGS) $(EXTRA_CFLAGS)68 DEPEND_DEFS = $(DEFS) $(CONFIG_DEFS)69 endif70 71 ifeq ($(COMPILER),gcc_cross)72 CFLAGS = $(COMMON_CFLAGS) $(GCC_CFLAGS) $(EXTRA_CFLAGS)73 DEPEND_DEFS = $(DEFS) $(CONFIG_DEFS)74 endif75 76 ifeq ($(COMPILER),gcc_helenos)77 CFLAGS = $(COMMON_CFLAGS) $(GCC_CFLAGS) $(EXTRA_CFLAGS)78 DEPEND_DEFS = $(DEFS) $(CONFIG_DEFS)79 endif80 81 66 ifeq ($(COMPILER),clang) 82 67 CFLAGS = $(COMMON_CFLAGS) $(CLANG_CFLAGS) $(EXTRA_CFLAGS) 83 DEPEND_DEFS = $(DEFS) $(CONFIG_DEFS) 68 else 69 CFLAGS = $(COMMON_CFLAGS) $(GCC_CFLAGS) $(EXTRA_CFLAGS) 84 70 endif 85 71 86 72 OBJECTS := $(addsuffix .o,$(basename $(SOURCES))) 73 DEPENDS := $(addsuffix .d,$(basename $(SOURCES))) 87 74 88 75 all: $(VERSION_DEF) $(COMMON_MAKEFILE) $(COMMON_HEADER) $(CONFIG_MAKEFILE) $(CONFIG_HEADER) $(BOOT_OUTPUT) 89 -[ -f $(DEPEND) ] && cp -a $(DEPEND) $(DEPEND_PREV)90 76 91 77 clean: 92 78 rm -f $(RAW) $(MAP) $(ARCH_INCLUDE) $(GENARCH_INCLUDE) 93 79 94 ifneq ($(MAKECMDGOALS),clean) 95 -include $(DEPEND) 96 endif 80 -include $(DEPENDS) 97 81 98 82 AS_CFLAGS := $(addprefix -Xassembler ,$(AFLAGS)) … … 104 88 $(LD) -n $(LFLAGS) -T $(LINK) -M -Map $(MAP) -o $@ $(OBJECTS) 105 89 106 $(LINK): $(DEPEND)90 $(LINK): | depend 107 91 $(CC) $(DEFS) $(CFLAGS) -D__ASM__ -D__LINKER__ -E -x c $(LINK).in | grep -v "^\#" > $(LINK) 108 92 109 %.o: %.S $(DEPEND)110 $(CC) $(DEFS) $(CFLAGS) $(AS_CFLAGS) -D__ASM__ -c $< -o $@93 %.o: %.S | depend 94 $(CC) -MD $(DEFS) $(CFLAGS) $(AS_CFLAGS) -D__ASM__ -c $< -o $@ 111 95 ifeq ($(PRECHECK),y) 112 96 $(JOBFILE) $(JOB) $< $@ as asm/preproc $(DEFS) $(CFLAGS) -D__ASM__ 113 97 endif 114 98 115 %.o: %.c $(DEPEND)116 $(CC) $(DEFS) $(CFLAGS) -c $< -o $@99 %.o: %.c | depend 100 $(CC) -MD $(DEFS) $(CFLAGS) -c $< -o $@ 117 101 ifeq ($(PRECHECK),y) 118 102 $(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS) 119 103 endif 120 104 121 %.o: %.s $(DEPEND)122 $(CC) $(DEFS) $(CFLAGS) $(AS_CFLAGS) -D__ASM__ -c $< -o $@105 %.o: %.s | depend 106 $(CC) -MD $(DEFS) $(CFLAGS) $(AS_CFLAGS) -D__ASM__ -c $< -o $@ 123 107 ifeq ($(PRECHECK),y) 124 108 $(JOBFILE) $(JOB) $< $@ as asm 125 109 endif 126 110 127 $(DEPEND): $(ARCH_INCLUDE) $(GENARCH_INCLUDE) $(COMMON_HEADER_ARCH) $(PRE_DEPEND) 128 makedepend -f - -- $(DEPEND_DEFS) $(CFLAGS) -- $(SOURCES) > $@ 2> /dev/null 129 -[ -f $(DEPEND_PREV) ] && diff -q $(DEPEND_PREV) $@ && mv -f $(DEPEND_PREV) $@ 111 depend: $(ARCH_INCLUDE) $(GENARCH_INCLUDE) $(COMMON_HEADER_ARCH) $(PRE_DEPEND) 130 112 131 113 $(COMPS).s: $(COMPS).zip -
boot/Makefile.common
r31cca4f3 re160bfe8 63 63 GENARCH_INCLUDE = generic/include/genarch 64 64 65 DEPEND = Makefile.depend66 DEPEND_PREV = $(DEPEND).prev67 65 DISTROOT = distroot 68 66 INITRD = initrd -
kernel/Makefile
r31cca4f3 re160bfe8 49 49 50 50 AGDEPEND = Makefile.ag.depend 51 DEPEND = Makefile.depend52 DEPEND_PREV = $(DEPEND).prev53 51 RAW = kernel.raw 54 52 BIN = kernel.bin … … 67 65 SIZEOK_MAP = generic/src/debug/sizeok_map.o 68 66 69 .PHONY: all clean autogen_clean 67 .PHONY: all clean autogen_clean depend 70 68 71 69 all: $(VERSION_DEF) $(COMMON_MAKEFILE) $(COMMON_HEADER) $(CONFIG_MAKEFILE) $(CONFIG_HEADER) $(BIN) $(DISASM) 72 -[ -f $(DEPEND) ] && cp -a $(DEPEND) $(DEPEND_PREV)73 70 74 71 clean: autogen_clean 75 rm -f $( DEPEND) $(DEPEND_PREV) $(RAW) $(BIN) $(MAP) $(JOB) $(MAP_PREV) $(DISASM) $(DUMP) $(REAL_MAP).* arch/*/_link.ld arch/*/include/arch/common.h72 rm -f $(RAW) $(BIN) $(MAP) $(JOB) $(MAP_PREV) $(DISASM) $(DUMP) $(REAL_MAP).* arch/*/_link.ld arch/*/include/arch/common.h 76 73 find generic/src/ arch/*/src/ genarch/src/ test/ -name '*.o' -follow -exec rm '{}' \; 74 find generic/src/ arch/*/src/ genarch/src/ test/ -name '*.d' -follow -exec rm '{}' \; 77 75 78 76 ## Common compiler flags … … 129 127 -include arch/$(KARCH)/Makefile.inc 130 128 -include genarch/Makefile.inc 131 -include $(DEPEND)132 129 -include $(AGDEPEND) 133 130 … … 152 149 # 153 150 154 ifeq ($(COMPILER),gcc_native)155 CFLAGS = $(COMMON_CFLAGS) $(GCC_CFLAGS)156 DEPEND_DEFS = $(DEFS) $(CONFIG_DEFS)157 INSTRUMENTATION = -finstrument-functions158 endif159 160 ifeq ($(COMPILER),gcc_cross)161 CFLAGS = $(COMMON_CFLAGS) $(GCC_CFLAGS)162 DEPEND_DEFS = $(DEFS) $(CONFIG_DEFS)163 INSTRUMENTATION = -finstrument-functions164 endif165 166 ifeq ($(COMPILER),gcc_helenos)167 CFLAGS = $(COMMON_CFLAGS) $(GCC_CFLAGS)168 DEPEND_DEFS = $(DEFS) $(CONFIG_DEFS)169 INSTRUMENTATION = -finstrument-functions170 endif171 172 151 ifeq ($(COMPILER),clang) 173 152 CFLAGS = $(COMMON_CFLAGS) $(CLANG_CFLAGS) 174 DEPEND_DEFS = $(DEFS) $(CONFIG_DEFS) 175 INSTRUMENTATION = -finstrument-functions 176 endif 177 153 else 154 CFLAGS = $(COMMON_CFLAGS) $(GCC_CFLAGS) 155 endif 156 157 INSTRUMENTATION = -finstrument-functions 178 158 179 159 ## Generic kernel sources … … 364 344 GENARCH_OBJECTS := $(addsuffix .o,$(basename $(GENARCH_SOURCES))) 365 345 346 GENERIC_DEPENDS := $(addsuffix .d,$(basename $(GENERIC_SOURCES))) 347 ARCH_DEPENDS := $(addsuffix .d,$(basename $(ARCH_SOURCES))) 348 GENARCH_DEPENDS := $(addsuffix .d,$(basename $(GENARCH_SOURCES))) 349 366 350 GENARCH_AUTOGENS_H := $(addsuffix .h,$(basename $(GENARCH_AUTOGENS_AG))) 367 351 GENARCH_AUTOGENS_PROBE_C := $(addsuffix .ag.probe.c,$(basename $(GENARCH_AUTOGENS_AG))) … … 378 362 LD_CFLAGS := $(addprefix -Xlinker ,$(LFLAGS)) 379 363 364 -include $(GENERIC_DEPENDS) 365 -include $(ARCH_DEPENDS) 366 -include $(GENARCH_DEPENDS) 367 380 368 ifeq ($(COMPILER),clang) 381 369 AS_CFLAGS += -mllvm -asm-macro-max-nesting-depth=1000 … … 408 396 endif 409 397 410 $(LINK): $(LINK).in $(DEPEND)398 $(LINK): $(LINK).in | depend 411 399 $(CC) $(DEFS) $(CFLAGS) -D__ASM__ -D__LINKER__ -E -x c $< | grep -v "^\#" > $@ 412 400 … … 416 404 $(AUTOGEN) generate $< <$<.probe.s >$@ 417 405 418 %.o: %.S $(DEPEND)419 $(CC) $(DEFS) $(CFLAGS) $(AS_CFLAGS) -D__ASM__ -c -o $@ $<406 %.o: %.S | depend 407 $(CC) -MD $(DEFS) $(CFLAGS) $(AS_CFLAGS) -D__ASM__ -c -o $@ $< 420 408 ifeq ($(PRECHECK),y) 421 409 $(JOBFILE) $(JOB) $< $@ as asm/preproc $(DEFS) $(CFLAGS) -D__ASM__ 422 410 endif 423 411 424 %.o: %.s $(DEPEND)425 $(CC) $(DEFS) $(CFLAGS) $(AS_CFLAGS) -D__ASM__ -c -o $@ $<412 %.o: %.s | depend 413 $(CC) -MD $(DEFS) $(CFLAGS) $(AS_CFLAGS) -D__ASM__ -c -o $@ $< 426 414 ifeq ($(PRECHECK),y) 427 415 $(JOBFILE) $(JOB) $< $@ as asm $(DEFS) $(CFLAGS) $(EXTRA_FLAGS) 428 416 endif 429 417 430 %.o: %.c $(DEPEND)431 $(CC) $(DEFS) $(CFLAGS) $(EXTRA_FLAGS) $(FPU_NO_CFLAGS) $(if $(findstring $<,$(INSTRUMENTED_SOURCES)),$(INSTRUMENTATION)) -c -o $@ $<418 %.o: %.c | depend 419 $(CC) -MD $(DEFS) $(CFLAGS) $(EXTRA_FLAGS) $(FPU_NO_CFLAGS) $(if $(findstring $<,$(INSTRUMENTED_SOURCES)),$(INSTRUMENTATION)) -c -o $@ $< 432 420 ifeq ($(PRECHECK),y) 433 421 $(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS) $(EXTRA_FLAGS) $(FPU_NO_CFLAGS) … … 470 458 done 471 459 472 $(DEPEND): $(COMMON_HEADER_ARCH) $(AUTOGENS_H) 473 makedepend -f - -- $(DEPEND_DEFS) $(CFLAGS) -- $(ARCH_SOURCES) $(GENARCH_SOURCES) $(GENERIC_SOURCES) > $@ 2> /dev/null 474 -[ -f $(DEPEND_PREV) ] && diff -q $(DEPEND_PREV) $@ && mv -f $(DEPEND_PREV) $@ 460 depend: $(COMMON_HEADER_ARCH) $(AUTOGENS_H) 475 461 476 462 $(COMMON_HEADER_ARCH): $(COMMON_HEADER) -
tools/autotool.py
r31cca4f3 re160bfe8 42 42 CONFIG = 'Makefile.config' 43 43 MAKEFILE = 'Makefile.common' 44 HEADER = 'common.h '44 HEADER = 'common.h.new' 45 45 GUARD = 'AUTOTOOL_COMMON_H_' 46 46 … … 850 850 check_app(["diff", "--version"], "Diff utility", "usually part of diffutils") 851 851 check_app(["make", "--version"], "Make utility", "preferably GNU Make") 852 check_app(["makedepend", "-f", "-"], "Makedepend utility", "usually part of imake or xutils")853 852 check_app(["unzip"], "unzip utility", "usually part of zip/unzip utilities") 854 853 -
tools/toolchain.sh
r31cca4f3 re160bfe8 64 64 GDB_VERSION="7.12.1" 65 65 ## GDB_PATCHES="toolchain-gdb-7.6.1.patch" 66 ISL_VERSION="0.18" 66 67 67 68 BASEDIR="`pwd`" … … 70 71 GCC="gcc-${GCC_VERSION}.tar.bz2" 71 72 GDB="gdb-${GDB_VERSION}.tar.gz" 73 ISL="isl-${ISL_VERSION}.tar.bz2" 72 74 73 75 REAL_INSTALL=true 74 76 USE_HELENOS_TARGET=false 77 BUILD_ISL=false 75 78 76 79 # … … 97 100 98 101 if [ "$RC" -ne "0" ] ; then 99 echo " ${DEPENDENCY} not found, too old or compiler error." 100 echo " Please recheck manually the source file \"${FNAME}.c\"." 101 echo " The compilation of the toolchain is probably going to fail," 102 echo " you have been warned." 103 echo 104 echo " ===== Compiler output =====" 105 cat "${FNAME}.log" 106 echo " ===========================" 107 echo 102 if [ "${DEPENDENCY}" == "isl" ]; then 103 BUILD_ISL=true 104 105 echo " isl not found. Will be downloaded and built with GCC." 106 else 107 echo " ${DEPENDENCY} not found, too old or compiler error." 108 echo " Please recheck manually the source file \"${FNAME}.c\"." 109 echo " The compilation of the toolchain is probably going to fail," 110 echo " you have been warned." 111 echo 112 echo " ===== Compiler output =====" 113 cat "${FNAME}.log" 114 echo " ===========================" 115 echo 116 fi 108 117 else 109 118 echo " ${DEPENDENCY} found" … … 237 246 if [ ! -f "${FILE}" ] ; then 238 247 change_title "Downloading ${FILE}" 239 wget -c "${SOURCE}${FILE}" 248 wget -c "${SOURCE}${FILE}" -O "${FILE}".part 240 249 check_error $? "Error downloading ${FILE}." 250 251 mv "${FILE}".part "${FILE}" 241 252 fi 242 253 … … 350 361 GCC_SOURCE="ftp://ftp.gnu.org/gnu/gcc/gcc-${GCC_VERSION}/" 351 362 GDB_SOURCE="ftp://ftp.gnu.org/gnu/gdb/" 363 ISL_SOURCE="http://isl.gforge.inria.fr/" 352 364 353 365 download_fetch "${BINUTILS_SOURCE}" "${BINUTILS}" "9e8340c96626b469a603c15c9d843727" 354 366 download_fetch "${GCC_SOURCE}" "${GCC}" "6bf56a2bca9dac9dbbf8e8d1036964a8" 355 367 download_fetch "${GDB_SOURCE}" "${GDB}" "06c8f40521ed65fe36ebc2be29b56942" 368 369 if $BUILD_ISL ; then 370 download_fetch "${ISL_SOURCE}" "${ISL}" "11436d6b205e516635b666090b94ab32" 371 fi 356 372 } 357 373 … … 423 439 BINUTILSDIR="${WORKDIR}/binutils-${BINUTILS_VERSION}" 424 440 GCCDIR="${WORKDIR}/gcc-${GCC_VERSION}" 441 ISLDIR="${WORKDIR}/isl-${ISL_VERSION}" 425 442 OBJDIR="${WORKDIR}/gcc-obj" 426 443 GDBDIR="${WORKDIR}/gdb-${GDB_VERSION}" … … 436 453 source_check "${BASEDIR}/${GCC}" 437 454 source_check "${BASEDIR}/${GDB}" 455 if $BUILD_ISL ; then 456 source_check "${BASEDIR}/${ISL}" 457 fi 438 458 439 459 echo ">>> Removing previous content" … … 451 471 unpack_tarball "${BASEDIR}/${GCC}" "GCC" 452 472 unpack_tarball "${BASEDIR}/${GDB}" "GDB" 473 if $BUILD_ISL ; then 474 unpack_tarball "${BASEDIR}/${ISL}" "isl" 475 mv "${ISLDIR}" "${GCCDIR}"/isl 476 fi 453 477 454 478 echo ">>> Applying patches" … … 471 495 "--target=${TARGET}" \ 472 496 "--prefix=${PREFIX}" "--program-prefix=${TARGET}-" \ 473 --disable-nls --disable-werror --enable-gold 497 --disable-nls --disable-werror --enable-gold \ 498 --enable-deterministic-archives 474 499 check_error $? "Error configuring binutils." 475 500 -
uspace/Makefile.common
r31cca4f3 re160bfe8 100 100 endif 101 101 102 DEPEND = Makefile.depend103 DEPEND_PREV = $(DEPEND).prev104 105 102 LIB_PREFIX = $(USPACE_PREFIX)/lib 106 103 … … 223 220 endif 224 221 225 .PHONY: all clean 222 .PHONY: all clean depend 226 223 227 224 all: $(VERSION_DEF) $(COMMON_MAKEFILE) $(CONFIG_MAKEFILE) $(CONFIG_HEADER) $(LIBS) $(OUTPUT) $(LOUTPUT) $(EXTRA_OUTPUT) 228 -[ -f $(DEPEND) ] && cp -a $(DEPEND) $(DEPEND_PREV)229 225 230 226 all-test: $(TEST_OUTPUT) $(TEST_DISASM) 231 227 232 228 clean: 233 rm -f $( DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(LARCHIVE) $(LOUTPUT) $(EXTRA_OUTPUT) $(EXTRA_CLEAN)229 rm -f $(JOB) $(OUTPUT) $(LARCHIVE) $(LOUTPUT) $(EXTRA_OUTPUT) $(EXTRA_CLEAN) 234 230 find . -name '*.o' -follow -exec rm \{\} \; 235 231 find . -name '*.lo' -follow -exec rm \{\} \; 232 find . -name '*.d' -follow -exec rm \{\} \; 236 233 237 234 COMMON_CFLAGS = $(INCLUDES_FLAGS) -O$(OPTIMIZATION) -imacros $(CONFIG_HEADER) \ … … 276 273 JOBFILE = $(LIBC_PREFIX)/../../../tools/jobfile.py 277 274 278 ifeq ($(COMPILER),gcc_cross)279 CFLAGS += $(COMMON_CFLAGS) $(GCC_CFLAGS)280 DEPEND_DEFS = $(DEFS) $(CONFIG_DEFS)281 endif282 283 ifeq ($(COMPILER),gcc_helenos)284 CFLAGS += $(COMMON_CFLAGS) $(GCC_CFLAGS)285 DEPEND_DEFS = $(DEFS) $(CONFIG_DEFS)286 endif287 288 ifeq ($(COMPILER),gcc_native)289 CFLAGS += $(COMMON_CFLAGS) $(GCC_CFLAGS)290 DEPEND_DEFS = $(DEFS) $(CONFIG_DEFS)291 endif292 293 275 ifeq ($(COMPILER),clang) 294 276 CFLAGS += $(COMMON_CFLAGS) $(CLANG_CFLAGS) 295 DEPEND_DEFS = $(DEFS) $(CONFIG_DEFS) 277 else 278 CFLAGS += $(COMMON_CFLAGS) $(GCC_CFLAGS) 296 279 endif 297 280 298 281 LIB_CFLAGS = $(CFLAGS) -fPIC 299 282 LIB_LFLAGS = $(LFLAGS) -shared -soname $(LSONAME) --whole-archive 300 301 ifneq ($(MAKECMDGOALS),clean)302 -include $(DEPEND)303 endif304 283 305 284 AS_CFLAGS := $(addprefix -Xassembler ,$(AFLAGS)) … … 309 288 LOBJECTS := $(addsuffix .lo,$(basename $(SOURCES))) 310 289 TEST_OBJECTS := $(addsuffix .test.o,$(basename $(TEST_SOURCES))) 290 DEPENDS := $(addsuffix .d,$(basename $(SOURCES))) $(addsuffix .test.d,$(basename $(TEST_SOURCES))) 291 292 -include $(DEPENDS) 311 293 312 294 ifneq ($(BINARY),) … … 367 349 endif 368 350 369 %.o: %.S $(DEPEND)370 $(CC) $(DEFS) $(CFLAGS) $(EXTRA_CFLAGS) $(AS_CFLAGS) -D__ASM__ -c $< -o $@351 %.o: %.S | depend 352 $(CC) -MD $(DEFS) $(CFLAGS) $(EXTRA_CFLAGS) $(AS_CFLAGS) -D__ASM__ -c $< -o $@ 371 353 ifeq ($(PRECHECK),y) 372 354 $(JOBFILE) $(JOB) $< $@ as asm/preproc $(DEFS) $(CFLAGS) $(EXTRA_CFLAGS) -D__ASM__ 373 355 endif 374 356 375 %.o: %.s $(DEPEND)376 $(CC) $(DEFS) $(CFLAGS) $(EXTRA_CFLAGS) $(AS_CFLAGS) -D__ASM__ -c $< -o $@357 %.o: %.s | depend 358 $(CC) -MD $(DEFS) $(CFLAGS) $(EXTRA_CFLAGS) $(AS_CFLAGS) -D__ASM__ -c $< -o $@ 377 359 ifeq ($(PRECHECK),y) 378 360 $(JOBFILE) $(JOB) $< $@ as asm 379 361 endif 380 362 381 %.o: %.c $(DEPEND)382 $(CC) $(DEFS) $(CFLAGS) $(EXTRA_CFLAGS) -c $< -o $@363 %.o: %.c | depend 364 $(CC) -MD $(DEFS) $(CFLAGS) $(EXTRA_CFLAGS) -c $< -o $@ 383 365 ifeq ($(PRECHECK),y) 384 366 $(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS) $(EXTRA_CFLAGS) 385 367 endif 386 368 387 %.test.o: %.c $(DEPEND)388 $(CC) $(DEFS) $(CFLAGS) $(EXTRA_CFLAGS) $(TEST_CFLAGS) -c $< -o $@369 %.test.o: %.c | depend 370 $(CC) -MD $(DEFS) $(CFLAGS) $(EXTRA_CFLAGS) $(TEST_CFLAGS) -c $< -o $@ 389 371 ifeq ($(PRECHECK),y) 390 372 $(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS) $(EXTRA_CFLAGS) $(TEST_CFLAGS) 391 373 endif 392 374 393 %.lo: %.S $(DEPEND)394 $(CC) $(DEFS) $(LIB_CFLAGS) $(EXTRA_CFLAGS) $(AS_CFLAGS) -D__ASM__ -c $< -o $@375 %.lo: %.S | depend 376 $(CC) -MD $(DEFS) $(LIB_CFLAGS) $(EXTRA_CFLAGS) $(AS_CFLAGS) -D__ASM__ -c $< -o $@ 395 377 ifeq ($(PRECHECK),y) 396 378 $(JOBFILE) $(JOB) $< $@ as asm/preproc $(DEFS) $(LIB_CFLAGS) $(EXTRA_CFLAGS) -D__ASM__ 397 379 endif 398 380 399 %.lo: %.s $(DEPEND)400 $(CC) $(DEFS) $(LIB_CFLAGS) $(EXTRA_CFLAGS) $(AS_CFLAGS) -D__ASM__ -c $< -o $@381 %.lo: %.s | depend 382 $(CC) -MD $(DEFS) $(LIB_CFLAGS) $(EXTRA_CFLAGS) $(AS_CFLAGS) -D__ASM__ -c $< -o $@ 401 383 ifeq ($(PRECHECK),y) 402 384 $(JOBFILE) $(JOB) $< $@ as asm 403 385 endif 404 386 405 %.lo: %.c $(DEPEND)406 $(CC) $(DEFS) $(LIB_CFLAGS) $(EXTRA_CFLAGS) -c $< -o $@387 %.lo: %.c | depend 388 $(CC) -MD $(DEFS) $(LIB_CFLAGS) $(EXTRA_CFLAGS) -c $< -o $@ 407 389 ifeq ($(PRECHECK),y) 408 390 $(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(LIB_CFLAGS) $(EXTRA_CFLAGS) 409 391 endif 410 392 411 $(DEPEND): $(PRE_DEPEND) 412 makedepend -f - -- $(DEPEND_DEFS) $(CFLAGS) $(EXTRA_CFLAGS) -- $(SOURCES) > $@ 2> /dev/null 413 makedepend -f - -o.test.o -- $(DEPEND_DEFS) $(CFLAGS) $(EXTRA_CFLAGS) $(TEST_CFLAGS) -- $(TEST_SOURCES) >> $@ 2> /dev/null 414 -[ -f $(DEPEND_PREV) ] && diff -q $(DEPEND_PREV) $@ && mv -f $(DEPEND_PREV) $@ 393 depend: $(PRE_DEPEND) 415 394 416 395 ## -
uspace/app/devctl/devctl.c
r31cca4f3 re160bfe8 337 337 } 338 338 339 static int drv_unload(const char *drvname) 340 { 341 int rc; 342 devman_handle_t drvh; 343 344 rc = devman_driver_get_handle(drvname, &drvh); 345 if (rc != EOK) { 346 printf("Failed resolving driver '%s' (%d).\n", drvname, rc); 347 return rc; 348 } 349 350 rc = devman_driver_unload(drvh); 351 if (rc != EOK) { 352 printf("Failed unloading driver '%s' (%d).\n", drvname, rc); 353 return rc; 354 } 355 356 return EOK; 357 } 358 339 359 static void print_syntax(void) 340 360 { … … 346 366 printf("\tdevctl show-drv <driver-name>\n"); 347 367 printf("\tdevctl load-drv <driver-name>\n"); 368 printf("\tdevctl unload-drv <driver-name>\n"); 348 369 } 349 370 … … 412 433 if (rc != EOK) 413 434 return 2; 435 } else if (str_cmp(argv[1], "unload-drv") == 0) { 436 if (argc < 3) { 437 printf(NAME ": Argument missing.\n"); 438 print_syntax(); 439 return 1; 440 } 441 442 rc = drv_unload(argv[2]); 443 if (rc != EOK) 444 return 2; 414 445 } else { 415 446 printf(NAME ": Invalid argument '%s'.\n", argv[1]); -
uspace/lib/c/generic/devman.c
r31cca4f3 re160bfe8 719 719 } 720 720 721 int devman_driver_unload(devman_handle_t drvh) 722 { 723 async_exch_t *exch = devman_exchange_begin(INTERFACE_DDF_CLIENT); 724 if (exch == NULL) 725 return ENOMEM; 726 727 int rc = async_req_1_0(exch, DEVMAN_DRIVER_UNLOAD, drvh); 728 729 devman_exchange_end(exch); 730 return rc; 731 } 732 721 733 /** @} 722 734 */ -
uspace/lib/c/include/devman.h
r31cca4f3 re160bfe8 82 82 extern int devman_driver_get_state(devman_handle_t, driver_state_t *); 83 83 extern int devman_driver_load(devman_handle_t); 84 extern int devman_driver_unload(devman_handle_t); 84 85 85 86 #endif -
uspace/lib/c/include/ipc/devman.h
r31cca4f3 re160bfe8 156 156 DRIVER_FUN_ONLINE, 157 157 DRIVER_FUN_OFFLINE, 158 DRIVER_STOP 158 159 } devman_to_driver_t; 159 160 … … 176 177 DEVMAN_DRIVER_GET_NAME, 177 178 DEVMAN_DRIVER_GET_STATE, 178 DEVMAN_DRIVER_LOAD 179 DEVMAN_DRIVER_LOAD, 180 DEVMAN_DRIVER_UNLOAD 179 181 } client_to_devman_t; 180 182 -
uspace/lib/drv/generic/driver.c
r31cca4f3 re160bfe8 68 68 FIBRIL_MUTEX_INITIALIZE(functions_mutex); 69 69 70 FIBRIL_RWLOCK_INITIALIZE(stopping_lock); 71 static bool stopping = false; 72 70 73 static ddf_dev_t *create_device(void); 71 74 static void delete_device(ddf_dev_t *); … … 127 130 } 128 131 132 fibril_rwlock_read_lock(&stopping_lock); 133 134 if (stopping) { 135 fibril_rwlock_read_unlock(&stopping_lock); 136 async_answer_0(iid, EIO); 137 return; 138 } 139 129 140 ddf_dev_t *dev = create_device(); 130 141 if (!dev) { 142 fibril_rwlock_read_unlock(&stopping_lock); 131 143 free(dev_name); 132 144 async_answer_0(iid, ENOMEM); … … 148 160 149 161 if (res != EOK) { 162 fibril_rwlock_read_unlock(&stopping_lock); 150 163 dev_del_ref(dev); 151 164 async_answer_0(iid, res); … … 156 169 list_append(&dev->link, &devices); 157 170 fibril_mutex_unlock(&devices_mutex); 171 fibril_rwlock_read_unlock(&stopping_lock); 158 172 159 173 async_answer_0(iid, res); … … 282 296 283 297 async_answer_0(iid, (sysarg_t) rc); 298 } 299 300 static void driver_stop(ipc_callid_t iid, ipc_call_t *icall) 301 { 302 /* Prevent new devices from being added */ 303 fibril_rwlock_write_lock(&stopping_lock); 304 stopping = true; 305 306 /* Check if there are any devices */ 307 fibril_mutex_lock(&devices_mutex); 308 if (list_first(&devices) != NULL) { 309 /* Devices exist, roll back */ 310 fibril_mutex_unlock(&devices_mutex); 311 stopping = false; 312 fibril_rwlock_write_unlock(&stopping_lock); 313 async_answer_0(iid, EBUSY); 314 return; 315 } 316 317 fibril_rwlock_write_unlock(&stopping_lock); 318 319 /* There should be no functions at this point */ 320 fibril_mutex_lock(&functions_mutex); 321 assert(list_first(&functions) == NULL); 322 fibril_mutex_unlock(&functions_mutex); 323 324 /* Reply with success and terminate */ 325 async_answer_0(iid, EOK); 326 exit(0); 284 327 } 285 328 … … 312 355 case DRIVER_FUN_OFFLINE: 313 356 driver_fun_offline(callid, &call); 357 break; 358 case DRIVER_STOP: 359 driver_stop(callid, &call); 314 360 break; 315 361 default: -
uspace/srv/devman/client_conn.c
r31cca4f3 re160bfe8 726 726 } 727 727 728 /** Unload a driver by user request. */ 729 static void devman_driver_unload(ipc_callid_t iid, ipc_call_t *icall) 730 { 731 driver_t *drv; 732 int rc; 733 734 drv = driver_find(&drivers_list, IPC_GET_ARG1(*icall)); 735 if (drv == NULL) { 736 async_answer_0(iid, ENOENT); 737 return; 738 } 739 740 fibril_mutex_lock(&drv->driver_mutex); 741 rc = stop_driver(drv); 742 fibril_mutex_unlock(&drv->driver_mutex); 743 744 async_answer_0(iid, rc); 745 } 746 728 747 /** Function for handling connections from a client to the device manager. */ 729 748 void devman_connection_client(ipc_callid_t iid, ipc_call_t *icall, void *arg) … … 794 813 devman_driver_load(callid, &call); 795 814 break; 815 case DEVMAN_DRIVER_UNLOAD: 816 devman_driver_unload(callid, &call); 817 break; 796 818 default: 797 819 async_answer_0(callid, ENOENT); -
uspace/srv/devman/driver.c
r31cca4f3 re160bfe8 298 298 drv->state = DRIVER_STARTING; 299 299 return true; 300 } 301 302 /** Stop a driver 303 * 304 * @param drv The driver's structure. 305 * @return True if the driver's task is successfully spawned, false 306 * otherwise. 307 */ 308 int stop_driver(driver_t *drv) 309 { 310 async_exch_t *exch; 311 sysarg_t retval; 312 313 log_msg(LOG_DEFAULT, LVL_DEBUG, "stop_driver(drv=\"%s\")", drv->name); 314 315 exch = async_exchange_begin(drv->sess); 316 retval = async_req_0_0(exch, DRIVER_STOP); 317 loc_exchange_end(exch); 318 319 if (retval != EOK) 320 return retval; 321 322 drv->state = DRIVER_NOT_STARTED; 323 async_hangup(drv->sess); 324 drv->sess = NULL; 325 return EOK; 300 326 } 301 327 -
uspace/srv/devman/driver.h
r31cca4f3 re160bfe8 50 50 extern void detach_driver(dev_tree_t *, dev_node_t *); 51 51 extern bool start_driver(driver_t *); 52 extern int stop_driver(driver_t *); 52 53 extern void add_device(driver_t *, dev_node_t *, dev_tree_t *); 53 54 extern int driver_dev_remove(dev_tree_t *, dev_node_t *);
Note:
See TracChangeset
for help on using the changeset viewer.