blob: 36d54d9e24454ad01d1b3702950e3850d884c44d (
plain)
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
|
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,119 @@
+PROJECT = dparse
+DESCR = "Library for lexing and parsing D source code"
+DC = ldc2
+PREFIX = usr
+DESTDIR =
+
+VERSION := 0.25.1
+MAJOR_VERSION := 0
+
+BASENAME := $(PROJECT)-$(DC)
+LIBRARY := lib$(BASENAME)
+PCFILE_NAME := $(BASENAME).pc
+PCFILE_NAME_ST := $(BASENAME)-static.pc
+OBJFILE := $(LIBRARY).o
+SHLIB_BASE := $(LIBRARY).so
+STLIB_NAME := $(LIBRARY).a
+SHLIB_WITH_VERSION := $(SHLIB_BASE).$(VERSION)
+SHLIB_WITH_MAJOR_VERSION := $(SHLIB_BASE).$(MAJOR_VERSION)
+SHLIB_WITHOUT_VERSION := $(SHLIB_BASE)
+
+B_DIR := build
+OBJECT := $(B_DIR)/$(OBJFILE)
+SHLIB := $(B_DIR)/$(SHLIB_WITH_VERSION)
+STLIB := $(B_DIR)/$(STLIB_NAME)
+PCFILE := $(B_DIR)/$(PCFILE_NAME)
+PCFILE_ST := $(B_DIR)/$(PCFILE_NAME_ST)
+
+SONAME := $(SHLIB_BASE).$(MAJOR_VERSION)
+
+SHLIB_FLAGS := $(shell ./mh.sh $(DC) shared-flags $(SONAME))
+DEBUG_FLAGS := $(shell ./mh.sh $(DC) debug-flags)
+RELEASE_FLAGS := $(shell ./mh.sh $(DC) release-flags)
+OTHER_FLAGS := -J.
+BUILD_MODE ?= debug
+ifeq ($(BUILD_MODE),release)
+ BUILD_OPTS := $(RELEASE_FLAGS) $(OTHER_FLAGS)
+else
+ BUILD_OPTS := $(DEBUG_FLAGS) $(OTHER_FLAGS)
+endif
+
+SOURCES := $(wildcard src/$(PROJECT)/*.d src/std/experimental/*.d)
+RESOURCES := $(wildcard res/*)
+
+LIBDIR := $(shell ./mh.sh $(DC) library-path)
+INCDIR := $(shell ./mh.sh $(DC) include-path)
+INST_LIBDIR := $(DESTDIR)/$(PREFIX)/$(LIBDIR)
+INST_INCDIR_TOP := $(DESTDIR)/$(PREFIX)/$(INCDIR)
+INST_INCDIR := $(INST_INCDIR_TOP)/$(PROJECT)
+INST_PCDIR := $(INST_LIBDIR)/pkgconfig
+
+OUT := -of
+TESTFLAGS := -unittest -main
+ifeq ($(DC),gdc)
+ OUT := -o
+ TESTFLAGS := -funittest -fmain
+endif
+
+.PHONY: all clean *install *-settings shared static generate-pc
+
+release:
+ $(MAKE) BUILD_MODE=release shared
+ $(MAKE) BUILD_MODE=release static
+
+debug:
+ $(MAKE) BUILD_MODE=debug shared
+ $(MAKE) BUILD_MODE=debug static
+
+
+shared: $(SHLIB)
+ @echo "Compiled to" $(SHLIB)
+
+static: $(STLIB)
+ @echo "Compiled to" $(STLIB)
+
+$(OBJECT): $(SOURCES)
+ mkdir -p $(B_DIR)
+ $(DC) $^ -c $(OUT)$@ $(BUILD_OPTS)
+
+$(SHLIB): $(OBJECT)
+ $(DC) $^ $(OUT)$@ $(SHLIB_FLAGS)
+
+$(STLIB): $(OBJECT)
+ ar r $@ $^
+
+clean:
+ rm -rf build/ doc/ meson_builddir/
+
+install: generate-pc
+ mkdir -p "$(INST_INCDIR)" "$(INST_LIBDIR)" "$(INST_PCDIR)"
+ cp $(SHLIB) "$(INST_LIBDIR)"
+ cp $(STLIB) "$(INST_LIBDIR)"
+ cp -r src/* "$(INST_INCDIR)"
+ ln -sf $(SHLIB_WITH_VERSION) "$(INST_LIBDIR)/$(SHLIB_WITH_MAJOR_VERSION)"
+ ln -sf $(SHLIB_WITH_MAJOR_VERSION) "$(INST_LIBDIR)/$(SHLIB_WITHOUT_VERSION)"
+ cp $(PCFILE) $(PCFILE_ST) "$(INST_PCDIR)/"
+
+DESCR_ENDING := "the $(shell echo $(DC) | tr a-z A-Z) version"
+PC_DESCR := "Description: $(DESCR), $(DESCR_ENDING)"
+PC_LDIR := $(subst //,/,/$(PREFIX)/$(LIBDIR))
+PC_IDIR := $(subst //,/,/$(PREFIX)/$(INCDIR))/dparse
+LPATH_OPT := $(shell ./mh.sh $(DC) libpath-opt)
+LN_OPT := $(shell ./mh.sh $(DC) libname-opt)
+SHARED_OPTS := $(LPATH_OPT)$(PC_LDIR) $(LN_OPT)$(BASENAME)
+STATIC_OPTS := $(LPATH_OPT)$(PC_LDIR) $(LN_OPT):lib$(BASENAME).a
+
+generate-pc:
+ mkdir -p $(B_DIR)
+ # for dynamic version
+ echo "Name: $(BASENAME)" > $(PCFILE)
+ echo "$(PC_DESCR)" >> $(PCFILE)
+ echo "Version: $(VERSION)" >> $(PCFILE)
+ echo "Libs: $(SHARED_OPTS)" >> $(PCFILE)
+ echo "Cflags: -I$(PC_IDIR)" >> $(PCFILE)
+ # for static version
+ echo "Name: $(BASENAME)-static" > $(PCFILE_ST)
+ echo "$(PC_DESCR). Static library" >> $(PCFILE_ST)
+ echo "Version: $(VERSION)" >> $(PCFILE_ST)
+ echo "Libs: $(STATIC_OPTS)" >> $(PCFILE_ST)
+ echo "Cflags: -I$(PC_IDIR)" >> $(PCFILE_ST)
|