Edward Bartolo <edb...@gmail.com> writes:
> Hi Rainer,
>
> This is Makefile from netman:
>
> ---------------------------------------------------
> all: backend netman
>
> backend:
>         make -C backend_src
>         cp backend_src/bin/backend .
>
> netman: netman.lpr
>         lazbuild -B netman.lpr | awk '/./{print $$0}'
>
> clean:
>         make -C backend_src clean
>         rm -f lib/*/*.*
>         rm -f backend netman
>
> .PHONY: all clean
> ---------------------------------
>
> Please tell me what I should change.

The issues are with the backend_src Makefile which looks like this:

----------------
# Makefile for cli_backend

CC=gcc

OBJECTS=\
        obj/backend.o \
        obj/caller.o \
        obj/core_functions.o \
        obj/file_functions.o \
        obj/essid_encoder.o

CFLAGS += -Wall -Wextra -Iinclude -g -O2
#CFLAGS += -Wall -Wextra -Iinclude -ggdb

all: $(OBJECTS) bin/backend

clean:
        rm -f $(OBJECTS) bin/backend

bin/backend: $(OBJECTS)
        $(CC) -o $@ $(OBJECTS)

obj/%.o : src/%.c
        $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<

-----------------

Problems with this: OBJECTS doesn't contain automated_scanner.o, leading
to a link failure and the linker command (bin/backend target) is missing
a -lm in order to link with the math library (for the pow
function). Further, the obj and bin directories don't exist.

Below is a git-created patch addressing all this (using Timo Burmester's
idea of creating the directories via Makefile as that's less manual
work):

-----------------
diff --git a/backend_src/Makefile b/backend_src/Makefile
index 0b48a1d..ffcaa52 100644
--- a/backend_src/Makefile
+++ b/backend_src/Makefile
@@ -7,7 +7,8 @@ OBJECTS=\
        obj/caller.o \
        obj/core_functions.o \
        obj/file_functions.o \
-       obj/essid_encoder.o
+       obj/essid_encoder.o \
+       obj/automated_scanner.o
 
 CFLAGS += -Wall -Wextra -Iinclude -g -O2
 #CFLAGS += -Wall -Wextra -Iinclude -ggdb
@@ -17,9 +18,11 @@ all: $(OBJECTS) bin/backend
 clean:
        rm -f $(OBJECTS) bin/backend
 
-bin/backend: $(OBJECTS)
-       $(CC) -o $@ $(OBJECTS)
+bin/backend: $(OBJECTS) bin
+       $(CC) -o $@ $(OBJECTS) -lm
 
-obj/%.o : src/%.c
+obj/%.o : src/%.c obj
        $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<
 
+bin obj:
+       mkdir $@
-------------------

In order to apply this, save it to a file, say, /tmp/nm.diff. Go to the
top-level netman directory and run

patch -p1 </tmp/nm.diff

And check the modified backen_src/Makefile into git with some commit
message of your liking.

NB: The patch is a bit overkill here but as the procedure is pretty much
standard for communicating changes to some source tree, I thought you'd
be interested in it.
_______________________________________________
Dng mailing list
Dng@lists.dyne.org
https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng

Reply via email to