## c't-Projekte - Mailinglisten

[Voriger (Datum)] [Nächster (Datum)] [Voriger (Thread)] [Nächster (Thread)]
[Nach Datum][Nach Thread]

### Re: [ct-bot] make-Target für Bibliothek

Absender: Simon Siemens
Datum: Di, 17.05.2011 19:18:30
In-reply-to: <1305221409.10999.72.camel@wbam-laptop>
References: <1305221409.10999.72.camel@wbam-laptop>

    Hi Timo,

    anbei der verbesserte Patch. Damit wird ct-Bot.elf nun mit Hilfe von
    libctbot.a gebaut, wenn man make verwendet. Der neue Patch behebt auch
    zwei kleine Fehler im alten Patch.

    Herzliche GrÃÃe,

    Simon

    Am Donnerstag, den 12.05.2011, 19:30 +0200 schrieb Simon Siemens:
    > Hi Timo,
    >
    > dieser Patch enthÃlt ein neues make-Target. Es baut eine statische
    > Bibliothek aus den C-Datei in
    >
    >       * ct-Bot (auÃer ct-Bot.c),
    >       * mcu,
    >       * pc und
    >       * ui.
    >
    > Dieser Patch fÃgt nur das make-Target hinzu. Eine entsprechende
    > Konfiguration fÃr die Eclipse-Buildumgebung kommt im nÃchsten Patch.
    >
    > Im Moment wird die Bibliothek nur gebaut, aber noch nicht genutzt. (Man
    > kÃnnte sie ja dazu nutzen, ct-Bot.elf usw. zu erzeugen.) Sie zu nutzen
    > wÃrde nur etwa 3 Zeilen Ãnderung im Makefile erfordern. Ich kann sie
    > gerne nachliefern. Nun aber zuerst zum Weshalb und Wozu.
    >
    > Der ct-Bot-Code bietet eine umfangreiche Infrastruktur fÃr verschiedene
    > Roboterverhalten. Wenn man diese aber nicht nutzen will, ist der Ãbrige
    > Teil dennoch generell einsetzbar. Er bietet einige Hilfskomponenten und
    > die MÃglichkeit, einen Simulator zu nutzen. Wir wollen unsere Studenten
    > damit experimentieren lassen, ohne dass sie die volle
    > ct-Bot-Infrastruktur brauchen, verstehen und einrichten mÃssen. (Es sind
    > komplette ProgrammieranfÃnger.) Deshalb arbeiten wir gerade daran, von
    > der Infrastruktur eine Bibliothek (je eine Archivdatei fÃr die PC- und
    > die MCU-Variante) zu erstellen und fÃr verschiedene Linux-Distributionen
    > (im Moment OpenSUSE und Ubuntu) mit Hilfe des OpenSUSE Build Service zu
    > paketieren.
    >
    > GruÃ, Simon
    >
    > _______________________________________________
    > ct-bot-entwickler Mailingliste
    > ct-bot-entwickler@xxxxxxxxxxxxxxxxx
    > http://www.heise.de/bin/newsletter/listinfo/ct-bot-entwickler

    Index: Makefile
    ===================================================================
    --- Makefile	(Revision 1786)
    +++ Makefile	(Arbeitskopie)
    @@ -41,6 +41,9 @@
     # Target file name (without extension).
     TARGET = ct-Bot

    +# Name of the library that contains the hardware abstraction layer
    +LIBRARY = libctbot.a
    +
     # Target Device, either pc or mcu, usually defined on commandline
     DEVICE ?= MCU
     #DEVICE ?= PC
    @@ -52,7 +55,10 @@

     SRCPC = pc/bot-2-sim_pc.c pc/botfs_pc.c pc/botfs-low_pc.c pc/botfs-tools_pc.c pc/cmd-tools_pc.c pc/delay_pc.c pc/display_pc.c pc/eeprom_pc.c pc/ena_pc.c pc/init-low_pc.c pc/ir-rc5_pc.c pc/led_pc.c pc/mini-fat_pc.c pc/mmc-emu_pc.c pc/motor-low_pc.c pc/mouse_pc.c pc/os_thread_pc.c pc/sensor-low_pc.c pc/tcp-server.c pc/tcp.c pc/timer-low_pc.c pc/trace.c

    -SRCCOM = bot-2-bot.c botfs.c command.c $(TARGET).c fifo.c init.c log.c map.c math_utils.c minilog.c mmc-vm.c motor.c pos_store.c sensor.c timer.c
    +SRCCOM = bot-2-bot.c botfs.c command.c fifo.c init.c log.c map.c math_utils.c minilog.c mmc-vm.c motor.c pos_store.c sensor.c timer.c
    +
    +SRCMAIN = $(TARGET).c
    +
     SRCUI = ui/gui.c ui/misc.c ui/rc5.c

     SRCLOGIC = bot-logic/behaviour_avoid_border.c bot-logic/behaviour_avoid_col.c bot-logic/behaviour_calibrate_pid.c bot-logic/behaviour_calibrate_sharps.c bot-logic/behaviour_cancel_behaviour.c bot-logic/behaviour_catch_pillar.c bot-logic/behaviour_classify_objects.c bot-logic/behaviour_delay.c bot-logic/behaviour_drive_area.c bot-logic/behaviour_drive_chess.c bot-logic/behaviour_drive_distance.c bot-logic/behaviour_drive_square.c bot-logic/behaviour_drive_stack.c bot-logic/behaviour_follow_line_enhanced.c bot-logic/behaviour_follow_line.c bot-logic/behaviour_follow_object.c bot-logic/behaviour_follow_wall.c bot-logic/behaviour_get_utilization.c bot-logic/behaviour_goto_obstacle.c bot-logic/behaviour_goto_pos.c bot-logic/behaviour_goto.c bot-logic/behaviour_gotoxy.c bot-logic/behaviour_hang_on.c bot-logic/behaviour_line_shortest_way.c bot-logic/behaviour_measure_distance.c bot-logic/behaviour_olympic.c bot-logic/behaviour_pathplaning.c bot-logic/behaviour_remotecall.c bot-logic/behaviour_scan.c bot-logic/behaviour_scan_beacons.c bot-logic/behaviour_servo.c bot-logic/behaviour_simple.c bot-logic/behaviour_solve_maze.c bot-logic/behaviour_transport_pillar.c bot-logic/behaviour_turn.c bot-logic/behaviour_ubasic.c bot-logic/bot-logic.c bot-logic/tokenizer.c bot-logic/ubasic_call.c bot-logic/ubasic_cvars.c bot-logic/ubasic_ext_proc.c bot-logic/ubasic.c
    @@ -65,7 +71,8 @@
     #else
     #	SRC = $(TARGET).c $(SRCCOM) $(SRCPC)
     #endif
    -SRC =$(SRCCOM) $(SRCUI) $(SRCPC) $(SRCMCU) $(SRCLOGIC)
    +SRCLIBRARY = $(SRCCOM) $(SRCUI) $(SRCPC) $(SRCMCU)
    +SRCBEHAVIOUR = $(SRCMAIN) $(SRCLOGIC)

     # List Assembler source files here.
    @@ -258,7 +265,10 @@

     ASFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))

    +# Flags for the library archiver (ar)
    +ARFLAGS = r

    +
     # Define Messages
     # English
     MSG_ERRORS_NONE = Errors: none
    @@ -276,12 +286,14 @@
     MSG_COMPILING = Compiling:
     MSG_ASSEMBLING = Assembling:
     MSG_CLEANING = Cleaning project:
    +MSG_CREATING_LIBRARY = Creating library:

     # Define all object files.
    -OBJ = $(ASRC:.S=.o) $(SRC:.c=.o)
    +OBJLIBRARY = $(ASRC:.S=.o) $(SRCLIBRARY:.c=.o)
    +OBJBEHAVIOUR = $(SRCBEHAVIOUR:.c=.o)

     # Define all listing files.
     LST = $(ASRC:.S=.lst) $(SRC:.c=.lst)
    @@ -319,6 +331,7 @@
     lss: $(TARGET).lss
     sym: $(TARGET).sym

    +library: $(LIBRARY)

     # Eye candy.
     # AVR Studio 3.x does not check make's exit code but relies on
    @@ -381,6 +394,11 @@
     	$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof

    +$(LIBRARY): $(OBJLIBRARY)
    +	@echo
    +	@echo $(MSG_CREATING_LIBRARY) $@
    +	$(AR) $(ARFLAGS) $@ $^
    +	ranlib $@

     # Create final output files (.hex, .eep) from ELF output file.
     %.hex: %.elf
    @@ -410,11 +428,11 @@

     # Link: create ELF output file from object files.
     .SECONDARY : $(TARGET).elf
    -.PRECIOUS : $(OBJ)
    -%.elf: $(OBJ)
    +.PRECIOUS : $(OBJBEHAVIOUR)
    +%.elf: $(OBJBEHAVIOUR) $(LIBRARY)
     	@echo
     	@echo $(MSG_LINKING) $@
    -	$(CC) --output $@ $(LDFLAGS) $(OBJ) $(MATH_LIB)
    +	$(CC) --output $@ $(LDFLAGS) $^ $(MATH_LIB)

     # Compile: create object files from C source files.
    @@ -454,10 +472,14 @@
     	$(REMOVE) $(TARGET).sym
     	$(REMOVE) $(TARGET).lnk
     	$(REMOVE) $(TARGET).lss
    -	$(REMOVE) $(OBJ)
    +	$(REMOVE) $(LIBRARY)
    +	$(REMOVE) $(OBJBEHAVIOUR)
    +	$(REMOVE) $(OBJLIBRARY)
     	$(REMOVE) $(LST)
    -	$(REMOVE) $(SRC:.c=.s)
    -	$(REMOVE) $(SRC:.c=.d)
    +	$(REMOVE) $(SRCBEHAVIOUR:.c=.s)
    +	$(REMOVE) $(SRCLIBRARY:.c=.s)
    +	$(REMOVE) $(SRCBEHAVIOUR:.c=.d)
    +	$(REMOVE) $(SRCLIBRARY:.c=.d)
     	$(REMOVE) .dep/*

    Index: Changelog.txt
    ===================================================================
    --- Changelog.txt	(Revision 1786)
    +++ Changelog.txt	(Arbeitskopie)
    @@ -1,2 +1,4 @@
     CHANGELOG fuer c't-Bot
     ======================
    +2011-05-12 Simon Siemens [simon.siemens@xxxxxxxx]: Neues make-Target library fÃr eine Bibliothek der Infrastrukturkomponenten (Hardwareabstraktion, OS, ...).
    +

- Antworten:
  - Re: [ct-bot] make-Target für Bibliothek
    - From: Timo Sandmann

- Referenzen:
  - [ct-bot] make-Target für Bibliothek
    - From: Simon Siemens

- Voriger (Datum): Re: [ct-bot] Eclipse-Build-Konfiguration für Bibliothek, Timo Sandmann
- Nächster (Datum): Re: [ct-bot] make-Target für Bibliothek, Timo Sandmann
- Voriger (Thread): [ct-bot] make-Target für Bibliothek, Simon Siemens
- Nächster (Thread): Re: [ct-bot] make-Target für Bibliothek, Timo Sandmann
- Indizes:
  - Datum
  - Thread