File: Makefile

package info (click to toggle)
valabind 1.8.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 520 kB
  • sloc: sh: 671; makefile: 171; ansic: 87; python: 72; java: 68; cs: 10; cpp: 8; perl: 6; ruby: 5
file content (133 lines) | stat: -rw-r--r-- 3,868 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
_VERSION=?
-include config.mk

PWD:=$(shell pwd)
#GIT_TIP=$(shell [ -d .git ] && git log HEAD^..HEAD 2>/dev/null |head -n1|cut -d ' ' -f2)
GIT_TIP=$(shell git describe --tags)
DESTDIR?=
PREFIX?=/usr
MANDIR?=$(PREFIX)/share/man
CC?=gcc
VALAFLAGS:=$(foreach w,$(CPPFLAGS) $(CFLAGS) $(LDFLAGS),-X $(w))
VALAC?=valac -g --cc="$(CC)" $(VALAFLAGS)
RTLIBS=gobject-2.0 glib-2.0
VALAPKG:=lib$(shell ./getvv)
BUILD?=build
BIN=valabind
SRC=config.vala main.vala valabindwriter.vala nodeffiwriter.vala utils.vala
SRC+=girwriter.vala swigwriter.vala cxxwriter.vala ctypeswriter.vala dlangwriter.vala gowriter.vala
SRC+=vlangwriter.vala
VAPIS:=$(SRC:%.vala=$(BUILD)/%.vapi)
CSRC:=$(SRC:%.vala=$(BUILD)/%.c)
VALA_FILTER=$(filter %.vala,$?)
TEMPS=$(addprefix --use-fast-vapi=,$(filter-out $(VALA_FILTER:%.vala=$(BUILD)/%.vapi),$(VAPIS)))
TEMPS+=$(VALA_FILTER) $(patsubst %.vala,$(BUILD)/%.c,$(filter-out $?,$^))

ifneq ($(GIT_TIP),)
SGIT_TIP=$(shell echo ${GIT_TIP} | sed -e s,${_VERSION},,)
else
SGIT_TIP=$(GIT_TIP)
endif
ifneq ($(SGIT_TIP),)
VERSION=$(_VERSION)-$(SGIT_TIP)
else
VERSION=$(_VERSION)
endif

INSTALL_MAN?=install -m0644
INSTALL_PROGRAM?=install -m0755

ifneq ($(W32),)
VALAFLAGS+=-D W32=1
PREFIX=/opt/gtk3w32/
PKG_CONFIG_PATH=$(W32_PREFIX)/lib/pkgconfig
CFLAGS=-I$(PREFIX)/include/glib
CFLAGS+=-I$(PREFIX)/include/glib
LDFLAGS=-L$(PREFIX)/lib
CC=i686-pc-mingw32-gcc
all: $(BIN).exe
else
all: $(BIN)
endif

VALA_VERSION=$(shell ./getvv)
VALA_PKGLIBDIR=$(shell pkg-config --variable=pkglibdir lib${VALA_VERSION})
ifeq ($(VALA_PKGLIBDIR),)
VALA_LIBDIR=$(shell pkg-config --variable=libdir lib${VALA_VERSION})
VALA_PKGLIBDIR=$(VALA_LIBDIR)/$(shell ./getvv)
endif
VALA_PRIVATE_CODEGEN=--pkg $(VALAPKG)
VALA_PRIVATE_CODEGEN+=--vapidir=$(PWD)/private --pkg codegen -X -I$(PWD)/private
VALA_PRIVATE_CODEGEN+=--vapidir=${R2PM_PREFIX}/share/vala/vapi/
VALA_PRIVATE_CODEGEN+=-X -L$(VALA_PKGLIBDIR) -X -lvalaccodegen
ifneq ($(shell uname),Darwin)
VALA_PRIVATE_CODEGEN+=-X -Wl,-rpath=$(VALA_PKGLIBDIR)
endif

w32:
	$(MAKE) W32=1

.PRECIOUS: $(BUILD)/%.c $(BUILD)/%.vapi
$(BIN).exe: $(SRC) | $(VAPIS)
	@echo 'Compiling $(VALA_FILTER) -> $@'
	$(VALAC) --vapidir=. -D W32 -X "${CFLAGS}" -X "${LDFLAGS}" -o $@ --pkg $(VALAPKG) --save-temps ${TEMPS} windows.c --pkg windows
	@mv $(VALA_FILTER:%.vala=%.c) $(BUILD)

$(BIN): $(SRC) | $(VAPIS)
	@echo 'Compiling $(VALA_FILTER) -> $@'
	$(VALAC) -o $@ --pkg posix $(VALA_PRIVATE_CODEGEN) --save-temps ${TEMPS}
	@mv $(VALA_FILTER:%.vala=%.c) $(BUILD)

$(BUILD)/%.vapi: %.vala | $(BUILD)
	@echo 'Generating $< -> $@'
	@$(VALAC) $(VALAFLAGS) --fast-vapi=$@ $<
	@${MAKE} config.vala

config.vala: Makefile
	@echo 'Generating $@'
	@echo 'const string version_string = "$(VERSION)";' > $@

$(BUILD):
	mkdir -p $@

install_dirs:
	mkdir -p $(DESTDIR)$(PREFIX)/bin
	mkdir -p $(DESTDIR)$(MANDIR)/man1

install: install_dirs
	$(INSTALL_MAN) $(BIN).1 $(DESTDIR)$(MANDIR)/man1
	$(INSTALL_MAN) $(BIN)-cc.1 $(DESTDIR)$(MANDIR)/man1
	$(INSTALL_PROGRAM) $(BIN) $(DESTDIR)$(PREFIX)/bin
	$(INSTALL_PROGRAM) $(BIN)-cc $(DESTDIR)$(PREFIX)/bin

symstall: install_dirs
	chmod +x $(PWD)/$(BIN)-cc
	ln -fs $(PWD)/$(BIN).1 $(DESTDIR)$(MANDIR)/man1
	ln -fs $(PWD)/$(BIN)-cc.1 $(DESTDIR)$(MANDIR)/man1
	ln -fs $(PWD)/$(BIN) $(DESTDIR)$(PREFIX)/bin
	ln -fs $(PWD)/$(BIN)-cc $(DESTDIR)$(PREFIX)/bin

dist:
	$(MAKE) shot GIT_TIP=

shot:
	rm -rf valabind-$(VERSION)
	git clone . valabind-$(VERSION)
	cd valabind-$(VERSION) && $(MAKE) config.vala
	rm -rf valabind-$(VERSION)/.git
	tar czvf valabind-$(VERSION).tar.gz valabind-$(VERSION)

mrproper clean:
	rm -f config.vala
	rm -rf $(BUILD) $(BIN)
	rm -rf $(CSRC)

deinstall: uninstall

uninstall:
	-rm $(DESTDIR)$(MANDIR)/man1/$(BIN).1
	-rm $(DESTDIR)$(MANDIR)/man1/$(BIN)-cc.1
	-rm $(DESTDIR)$(PREFIX)/bin/$(BIN)
	-rm $(DESTDIR)$(PREFIX)/bin/$(BIN)-cc

.PHONY: all clean dist install symstall uninstall deinstall mrproper