fake-uname: fix gcc argument order and improve preloaded shared library
[grml-debootstrap.git] / packer / Makefile
index 6a94be0..9d60c35 100644 (file)
@@ -1,43 +1,57 @@
 GRML_DEBOOTSTRAP_VERSION=latest
 GRML_DEBOOTSTRAP_LOCAL_PATH=$(shell pwd)/local_dir
 
-compile: fake-uname.so
+CFLAGS ?= -ggdb -O2 -Wall -Wextra -Wno-unused-parameter
+CFLAGS += -fPIC -fvisibility=hidden
+LDLIBS ?=
+LDLIBS += -ldl
+
+PLUGIN = fake-uname.so
+
+$(PLUGIN): fake-uname.c
+       $(CC) $(CFLAGS) $(LDFLAGS) $< $(LDLIBS) -o $@ -shared
+
+UNAME_CHECK = LD_PRELOAD="$(CURDIR)/$(PLUGIN)" uname
+
+check: $(PLUGIN)
+       echo "$(UNAME_CHECK)"
+       test "0.0.0" = "$(shell $(UNAME_CHECK) -r)"
+       test "1.2.3" = "$(shell UTS_RELEASE="1.2.3" $(UNAME_CHECK) -r)"
 
 install:
        cd .. && make DESTDIR=packer/local_dir install
 
 clean:
+       $(RM) *.o *.so
        rm -rf local_dir
 
-fake-uname.so:
-       gcc -shared -fPIC -ldl fake-uname.c -o fake-uname.so
-
 # Debian 11
-bullseye: fake-uname.so clean install
+bullseye: clean fake-uname.so install
        packer build -var debian_version=$@ -var grml_debootstrap_version=$(GRML_DEBOOTSTRAP_VERSION) -var grml_debootstrap_local_path=$(GRML_DEBOOTSTRAP_LOCAL_PATH) debian64.json
 
 # Debian 10
-buster: fake-uname.so clean install
+buster: clean fake-uname.so install
        packer build -var debian_version=$@ -var grml_debootstrap_version=$(GRML_DEBOOTSTRAP_VERSION) -var grml_debootstrap_local_path=$(GRML_DEBOOTSTRAP_LOCAL_PATH) debian64.json
 
 # Debian 9
-stretch: fake-uname.so clean install
+stretch: clean fake-uname.so install
        packer build -var debian_version=$@ -var grml_debootstrap_version=$(GRML_DEBOOTSTRAP_VERSION) -var grml_debootstrap_local_path=$(GRML_DEBOOTSTRAP_LOCAL_PATH) debian64.json
 
 # Debian 8
-jessie: fake-uname.so clean install
+jessie: clean fake-uname.so install
        packer build -var debian_version=$@ -var grml_debootstrap_version=$(GRML_DEBOOTSTRAP_VERSION) -var grml_debootstrap_local_path=$(GRML_DEBOOTSTRAP_LOCAL_PATH) debian64.json
 
 # Debian 7
-wheezy: fake-uname.so clean install
+wheezy: clean fake-uname.so install
        packer build -var debian_version=$@ -var grml_debootstrap_version=$(GRML_DEBOOTSTRAP_VERSION) -var grml_debootstrap_local_path=$(GRML_DEBOOTSTRAP_LOCAL_PATH) debian64.json
 
 # Debian 6.0
-squeeze: fake-uname.so clean install
+squeeze: clean fake-uname.so install
        packer build -var debian_version=$@ -var grml_debootstrap_version=$(GRML_DEBOOTSTRAP_VERSION) -var grml_debootstrap_local_path=$(GRML_DEBOOTSTRAP_LOCAL_PATH) debian64.json
 
 # Debian 5.0
-lenny: fake-uname.so clean install
+lenny: clean fake-uname.so install
        packer build -var debian_version=$@ -var grml_debootstrap_version=$(GRML_DEBOOTSTRAP_VERSION) -var grml_debootstrap_local_path=$(GRML_DEBOOTSTRAP_LOCAL_PATH) debian64.json
 
 .PHONY: compile bullseye buster stretch jessie wheezy squeeze lenny
+.NOTPARALLEL: