Changeset e16e036a in mainline for Makefile


Ignore:
Timestamp:
2005-11-07T20:04:30Z (19 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
c4e8ed9d
Parents:
d90ca68
Message:

major build system revision (unfinished)
this patchset most definitively breaks a lot of things, be patient

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Makefile

    rd90ca68 re16e036a  
     1#
     2# Copyright (C) 2005 Martin Decky
     3# All rights reserved.
     4#
     5# Redistribution and use in source and binary forms, with or without
     6# modification, are permitted provided that the following conditions
     7# are met:
     8#
     9# - Redistributions of source code must retain the above copyright
     10#   notice, this list of conditions and the following disclaimer.
     11# - Redistributions in binary form must reproduce the above copyright
     12#   notice, this list of conditions and the following disclaimer in the
     13#   documentation and/or other materials provided with the distribution.
     14# - The name of the author may not be used to endorse or promote products
     15#   derived from this software without specific prior written permission.
     16#
     17# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
     18# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     19# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
     20# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
     21# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
     22# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     23# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     24# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     25# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
     26# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     27#
     28
     29## Kernel release
     30#
     31
     32VERSION = 0
     33PATCHLEVEL = 1
     34SUBLEVEL = 0
     35EXTRAVERSION =
     36NAME = Dawn
     37RELEASE = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
     38
     39## Make some default assumptions
     40#
     41
     42ifndef ARCH
     43        ARCH = ia32
     44endif
     45
     46## Common compiler flags
     47#
     48
     49CFLAGS = -fno-builtin -fomit-frame-pointer -Werror-implicit-function-declaration -Wmissing-prototypes -Werror -O3 -nostdlib -nostdinc -Igeneric/include/
     50LFLAGS = -M
     51
     52## Setup kernel configuration
     53#
     54
    155include Makefile.config
    256include arch/$(ARCH)/Makefile.inc
    357include genarch/Makefile.inc
    458
    5 sources=generic/src/cpu/cpu.c \
     59ifeq ($(CONFIG_DEBUG),n)
     60        DEFS += -DNDEBUG
     61endif
     62ifeq ($(CONFIG_DEBUG_SPINLOCK),y)
     63        DEFS += -DDEBUG_SPINLOCK
     64endif
     65
     66## Toolchain configuration
     67#
     68
     69ifeq ($(COMPILER),native)
     70        CC = gcc
     71        AS = as
     72        LD = ld
     73        OBJCOPY = objcopy
     74        OBJDUMP = objdump
     75else
     76        CC = $(TOOLCHAIN_DIR)/$(TARGET)-gcc
     77        AS = $(TOOLCHAIN_DIR)/$(TARGET)-as
     78        LD = $(TOOLCHAIN_DIR)/$(TARGET)-ld
     79        OBJCOPY = $(TOOLCHAIN_DIR)/$(TARGET)-objcopy
     80        OBJDUMP = $(TOOLCHAIN_DIR)/$(TARGET)-objdump
     81endif
     82
     83## Generic kernel sources
     84#
     85
     86GENERIC_SOURCES = \
     87        generic/src/cpu/cpu.c \
    688        generic/src/main/main.c \
    789        generic/src/main/kinit.c \
     
    36118        generic/src/fb/font-8x16.c
    37119
    38 # CFLAGS options same for all targets
    39 CFLAGS+=-nostdinc -Igeneric/include/ -Werror-implicit-function-declaration -Wmissing-prototypes -Werror
     120GENERIC_OBJECTS := $(addsuffix .o,$(basename $(GENERIC_SOURCES)))
     121ARCH_OBJECTS := $(addsuffix .o,$(basename $(ARCH_SOURCES)))
     122GENARCH_OBJECTS := $(addsuffix .o,$(basename $(GENARCH_SOURCES)))
    40123
    41 ifdef DEBUG_SPINLOCK
    42 CFLAGS+=-D$(DEBUG_SPINLOCK)
    43 endif
     124.PHONY: all clean config depend
    44125
    45 ifdef USERSPACE
    46 CFLAGS+=-D$(USERSPACE)
    47 endif
    48 
    49 ifdef TEST
    50 test_objects:=$(addsuffix .o,$(basename test/$(TEST_DIR)/$(TEST_FILE)))
    51 CFLAGS+=-D$(TEST)
    52 endif
    53 arch_objects:=$(addsuffix .o,$(basename $(arch_sources)))
    54 genarch_objects:=$(addsuffix .o,$(basename $(genarch_sources)))
    55 objects:=$(addsuffix .o,$(basename $(sources)))
    56 
    57 .PHONY : all config depend build clean dist-clean boot
    58 
    59 all: dist-clean config depend build
     126all: kernel.bin
    60127
    61128-include Makefile.depend
    62129
     130clean:
     131        find generic/src/ arch/$(ARCH)/src/ genarch/src/ -name '*.o' -exec rm \{\} \;
     132        -rm -f kernel.bin kernel.map kernel.map.pre kernel.objdump src/debug/real_map.bin Makefile.depend generic/include/arch generic/include/genarch
     133
    63134config:
    64         find generic/src/ generic/include/ -name arch -type l -exec rm \{\} \;
    65         find generic/src/ generic/include/ -name genarch -type l -exec rm \{\} \;       
    66         ln -s ../../arch/$(ARCH)/src/ generic/src/arch
    67         ln -s ../../arch/$(ARCH)/include/ generic/include/arch
    68         ln -s ../../genarch/src/ generic/src/genarch
    69         ln -s ../../genarch/include/ generic/include/genarch
     135        ln -sfn ../../arch/$(ARCH)/include/ generic/include/arch
     136        ln -sfn ../../genarch/include/ generic/include/genarch
    70137
    71 depend:
    72         $(CC) $(CFLAGS) -M $(arch_sources) $(genarch_sources) $(sources) >Makefile.depend
     138depend: config
     139        $(CC) $(CFLAGS) -M $(ARCH_SOURCES) $(GENARCH_SOURCES) $(GENERIC_SOURCES) > Makefile.depend
    73140
    74 build: kernel.bin boot
     141arch/$(ARCH)/_link.ld: arch/$(ARCH)/_link.ld.in
     142        $(CC) $(CFLAGS) -E -x c $< | grep -v "^\#" > $@
    75143
    76 clean:
    77         find generic/src/ arch/$(ARCH)/src/ genarch/src/ test/ -name '*.o' -exec rm \{\} \;
    78         -rm *.bin kernel.map kernel.map.pre kernel.objdump generic/src/debug/real_map.bin
    79         $(MAKE) -C arch/$(ARCH)/boot/ clean
    80 
    81 dist-clean:
    82         find generic/src/ generic/include/ -name arch -type l -exec rm \{\} \;
    83         find generic/src/ generic/include/ -name genarch -type l -exec rm \{\} \;       
    84         -rm Makefile.depend
    85         -$(MAKE) clean
    86 
    87 generic/src/debug/real_map.bin: $(arch_objects) $(genarch_objects) $(objects) $(test_objects) arch/$(ARCH)/_link.ld
     144generic/src/debug/real_map.bin: depend arch/$(ARCH)/_link.ld $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS)
    88145        $(OBJCOPY) -I binary -O $(BFD_NAME) -B $(BFD_ARCH) --prefix-sections=symtab Makefile generic/src/debug/empty_map.o
    89         $(LD) -T arch/$(ARCH)/_link.ld $(LFLAGS) $(arch_objects) $(genarch_objects) $(objects) $(test_objects) generic/src/debug/empty_map.o -o $@ -Map kernel.map.pre
    90         $(OBJDUMP) -t $(arch_objects) $(genarch_objects) $(objects) $(test_objects) > kernel.objdump
     146        $(LD) -T arch/$(ARCH)/_link.ld $(LFLAGS) $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS) generic/src/debug/empty_map.o -o $@ -Map kernel.map.pre
     147        $(OBJDUMP) -t $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS) > kernel.objdump
    91148        tools/genmap.py kernel.map.pre kernel.objdump generic/src/debug/real_map.bin
    92149
     
    94151        $(OBJCOPY) -I binary -O $(BFD_NAME) -B $(BFD_ARCH) --prefix-sections=symtab $< $@
    95152
    96 
    97 kernel.bin: $(arch_objects) $(genarch_objects) $(objects) $(test_objects) arch/$(ARCH)/_link.ld generic/src/debug/real_map.o
    98         $(LD) -T arch/$(ARCH)/_link.ld $(LFLAGS) $(arch_objects) $(genarch_objects) $(objects) $(test_objects) generic/src/debug/real_map.o -o $@ -Map kernel.map
     153kernel.bin: depend arch/$(ARCH)/_link.ld $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS) generic/src/debug/real_map.o
     154        $(LD) -T arch/$(ARCH)/_link.ld $(LFLAGS) $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS) generic/src/debug/real_map.o -o $@ -Map kernel.map
    99155
    100156%.o: %.S
     
    106162%.o: %.c
    107163        $(CC) $(CFLAGS) -c $< -o $@
    108 
    109 KS=`cat kernel.bin | wc -c`
    110 
    111 boot:
    112         $(MAKE) -C arch/$(ARCH)/boot build KERNEL_SIZE=$(KS)
Note: See TracChangeset for help on using the changeset viewer.