* [PATCH liburing v2 1/4] src/Makefile: Remove `-fomit-frame-pointer` from default build
2022-03-10 10:32 [PATCH liburing v2 0/4] Changes for Makefile Alviro Iskandar Setiawan
@ 2022-03-10 10:32 ` Alviro Iskandar Setiawan
2022-03-10 10:32 ` [PATCH liburing v2 2/4] src/Makefile: Add header files as dependency Alviro Iskandar Setiawan
` (2 subsequent siblings)
3 siblings, 0 replies; 7+ messages in thread
From: Alviro Iskandar Setiawan @ 2022-03-10 10:32 UTC (permalink / raw)
To: Jens Axboe
Cc: Alviro Iskandar Setiawan, Pavel Begunkov, Ammar Faizi,
Alviro Iskandar Setiawan, io-uring, gwml
-fomit-frame-pointer is already turned on by -O1 optimization flag.
The liburing default compilation uses -O2 optimization, -O2 turns on
all optimization flags specified by -O1. Therefore, we don't need to
specify -fomit-frame-pointer here. Remove it.
Link: https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
Signed-off-by: Alviro Iskandar Setiawan <[email protected]>
---
src/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/Makefile b/src/Makefile
index 3e1192f..f19d45e 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -8,7 +8,7 @@ libdevdir ?= $(prefix)/lib
CPPFLAGS ?=
override CPPFLAGS += -D_GNU_SOURCE \
-Iinclude/ -include ../config-host.h
-CFLAGS ?= -g -fomit-frame-pointer -O2 -Wall -Wextra -fno-stack-protector
+CFLAGS ?= -g -O2 -Wall -Wextra -fno-stack-protector
override CFLAGS += -Wno-unused-parameter -Wno-sign-compare -DLIBURING_INTERNAL
SO_CFLAGS=-fPIC $(CFLAGS)
L_CFLAGS=$(CFLAGS)
--
2.25.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH liburing v2 2/4] src/Makefile: Add header files as dependency
2022-03-10 10:32 [PATCH liburing v2 0/4] Changes for Makefile Alviro Iskandar Setiawan
2022-03-10 10:32 ` [PATCH liburing v2 1/4] src/Makefile: Remove `-fomit-frame-pointer` from default build Alviro Iskandar Setiawan
@ 2022-03-10 10:32 ` Alviro Iskandar Setiawan
2022-03-10 10:50 ` Ammar Faizi
2022-03-10 10:32 ` [PATCH liburing v2 3/4] test/Makefile: Add liburing.a as a dependency Alviro Iskandar Setiawan
2022-03-10 10:32 ` [PATCH liburing v2 4/4] examples/Makefile: " Alviro Iskandar Setiawan
3 siblings, 1 reply; 7+ messages in thread
From: Alviro Iskandar Setiawan @ 2022-03-10 10:32 UTC (permalink / raw)
To: Jens Axboe
Cc: Alviro Iskandar Setiawan, Pavel Begunkov, Ammar Faizi,
Alviro Iskandar Setiawan, io-uring, gwml
When the header files are modified, the compiled objects are not going
to be recompiled because the header files are not marked as a dependency
for the objects.
- Instruct the compiler to generate dependency files.
- Include those files from src/Makefile. Ensure if any changes are
made, files that depend on the changes are recompiled.
Suggested-by: Ammar Faizi <[email protected]>
Signed-off-by: Alviro Iskandar Setiawan <[email protected]>
---
src/Makefile | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/src/Makefile b/src/Makefile
index f19d45e..bb165fa 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -43,19 +43,20 @@ else
liburing_srcs += syscall.c
endif
+override CPPFLAGS += -MT "$@" -MMD -MP -MF "[email protected]"
liburing_objs := $(patsubst %.c,%.ol,$(liburing_srcs))
liburing_sobjs := $(patsubst %.c,%.os,$(liburing_srcs))
-$(liburing_srcs): syscall.h lib.h
-
-$(liburing_objs) $(liburing_sobjs): include/liburing/io_uring.h
-
%.os: %.c
$(QUIET_CC)$(CC) $(CPPFLAGS) $(SO_CFLAGS) -c -o $@ $<
%.ol: %.c
$(QUIET_CC)$(CC) $(CPPFLAGS) $(L_CFLAGS) -c -o $@ $<
+# Include compiler generated dependency files.
+-include $(liburing_objs:%=%.d)
+-include $(liburing_sobjs:%=%.d)
+
AR ?= ar
RANLIB ?= ranlib
liburing.a: $(liburing_objs)
@@ -78,8 +79,6 @@ ifeq ($(ENABLE_SHARED),1)
ln -sf $(relativelibdir)$(libname) $(libdevdir)/liburing.so
endif
-$(liburing_objs): include/liburing.h
-
clean:
@rm -f $(all_targets) $(liburing_objs) $(liburing_sobjs) $(soname).new
@rm -f *.so* *.a *.o
--
2.25.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH liburing v2 2/4] src/Makefile: Add header files as dependency
2022-03-10 10:32 ` [PATCH liburing v2 2/4] src/Makefile: Add header files as dependency Alviro Iskandar Setiawan
@ 2022-03-10 10:50 ` Ammar Faizi
2022-03-10 10:56 ` Alviro Iskandar Setiawan
0 siblings, 1 reply; 7+ messages in thread
From: Ammar Faizi @ 2022-03-10 10:50 UTC (permalink / raw)
To: Alviro Iskandar Setiawan, Jens Axboe
Cc: Pavel Begunkov, Alviro Iskandar Setiawan, io-uring, gwml
On 3/10/22 5:32 PM, Alviro Iskandar Setiawan wrote:
> When the header files are modified, the compiled objects are not going
> to be recompiled because the header files are not marked as a dependency
> for the objects.
>
> - Instruct the compiler to generate dependency files.
>
> - Include those files from src/Makefile. Ensure if any changes are
> made, files that depend on the changes are recompiled.
>
> Suggested-by: Ammar Faizi <[email protected]>
> Signed-off-by: Alviro Iskandar Setiawan <[email protected]>
You should add the dependency files to .gitignore, otherwise we will have
these files untracked after build.
Untracked files:
(use "git add <file>..." to include in what will be committed)
src/queue.ol.d
src/queue.os.d
src/register.ol.d
src/register.os.d
src/setup.ol.d
src/setup.os.d
src/syscall.ol.d
src/syscall.os.d
Also, when doing `make clean`, the dependency files should be removed.
--
Ammar Faizi
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH liburing v2 2/4] src/Makefile: Add header files as dependency
2022-03-10 10:50 ` Ammar Faizi
@ 2022-03-10 10:56 ` Alviro Iskandar Setiawan
0 siblings, 0 replies; 7+ messages in thread
From: Alviro Iskandar Setiawan @ 2022-03-10 10:56 UTC (permalink / raw)
To: Ammar Faizi
Cc: Jens Axboe, Pavel Begunkov, io-uring, gwml,
Alviro Iskandar Setiawan
On Thu, Mar 10, 2022 at 5:50 PM Ammar Faizi wrote:
> You should add the dependency files to .gitignore, otherwise we will have
> these files untracked after build.
>
> Untracked files:
> (use "git add <file>..." to include in what will be committed)
> src/queue.ol.d
> src/queue.os.d
> src/register.ol.d
> src/register.os.d
> src/setup.ol.d
> src/setup.os.d
> src/syscall.ol.d
> src/syscall.os.d
>
> Also, when doing `make clean`, the dependency files should be removed.
lmao, i forgot, oc, i'll be sending v3
-- Viro
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH liburing v2 3/4] test/Makefile: Add liburing.a as a dependency
2022-03-10 10:32 [PATCH liburing v2 0/4] Changes for Makefile Alviro Iskandar Setiawan
2022-03-10 10:32 ` [PATCH liburing v2 1/4] src/Makefile: Remove `-fomit-frame-pointer` from default build Alviro Iskandar Setiawan
2022-03-10 10:32 ` [PATCH liburing v2 2/4] src/Makefile: Add header files as dependency Alviro Iskandar Setiawan
@ 2022-03-10 10:32 ` Alviro Iskandar Setiawan
2022-03-10 10:32 ` [PATCH liburing v2 4/4] examples/Makefile: " Alviro Iskandar Setiawan
3 siblings, 0 replies; 7+ messages in thread
From: Alviro Iskandar Setiawan @ 2022-03-10 10:32 UTC (permalink / raw)
To: Jens Axboe
Cc: Alviro Iskandar Setiawan, Pavel Begunkov, Ammar Faizi,
Alviro Iskandar Setiawan, io-uring, gwml
The test binaries statically link liburing using liburing.a file. When
liburing.a is recompiled, make sure the tests are also recompiled to
ensure changes are applied to the test binary. It makes "make clean"
command optional when making changes.
Signed-off-by: Alviro Iskandar Setiawan <[email protected]>
---
test/Makefile | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/test/Makefile b/test/Makefile
index f421f53..9dae002 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -196,10 +196,10 @@ all: $(test_targets)
helpers.o: helpers.c
$(QUIET_CC)$(CC) $(CPPFLAGS) $(CFLAGS) -o $@ -c $<
-%: %.c $(helpers) helpers.h
+%: %.c $(helpers) helpers.h ../src/liburing.a
$(QUIET_CC)$(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $< $(helpers) $(LDFLAGS)
-%: %.cc $(helpers) helpers.h
+%: %.cc $(helpers) helpers.h ../src/liburing.a
$(QUIET_CXX)$(CXX) $(CPPFLAGS) $(CXXFLAGS) -o $@ $< $(helpers) $(LDFLAGS)
--
2.25.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH liburing v2 4/4] examples/Makefile: Add liburing.a as a dependency
2022-03-10 10:32 [PATCH liburing v2 0/4] Changes for Makefile Alviro Iskandar Setiawan
` (2 preceding siblings ...)
2022-03-10 10:32 ` [PATCH liburing v2 3/4] test/Makefile: Add liburing.a as a dependency Alviro Iskandar Setiawan
@ 2022-03-10 10:32 ` Alviro Iskandar Setiawan
3 siblings, 0 replies; 7+ messages in thread
From: Alviro Iskandar Setiawan @ 2022-03-10 10:32 UTC (permalink / raw)
To: Jens Axboe
Cc: Alviro Iskandar Setiawan, Pavel Begunkov, Ammar Faizi,
Alviro Iskandar Setiawan, io-uring, gwml
The example binaries statically link liburing using liburing.a file.
When liburing.a is recompiled, make sure the example binaries are also
recompiled to ensure changes are applied to the binaries. It makes
"make clean" command optional when making changes.
Signed-off-by: Alviro Iskandar Setiawan <[email protected]>
---
examples/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/examples/Makefile b/examples/Makefile
index f966f94..95a45f9 100644
--- a/examples/Makefile
+++ b/examples/Makefile
@@ -29,7 +29,7 @@ all_targets += $(example_targets)
all: $(example_targets)
-%: %.c
+%: %.c ../src/liburing.a
$(QUIET_CC)$(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $< $(LDFLAGS)
clean:
--
2.25.1
^ permalink raw reply related [flat|nested] 7+ messages in thread