-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
61 lines (48 loc) · 2.05 KB
/
Makefile
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
############################################
# SPDX-License-Identifier: MIT #
# Copyright (C) 2021-.... Jing Leng #
# Contact: Jing Leng <[email protected]> #
############################################
PACKAGE_NAME = ljson
staticlib = libljson.a
majorver = $(shell cat json.h | grep JSON_VERSION | sed 's/.*0x//g' | cut -b 1-2 | sed 's/^0//g')
minorver = $(shell cat json.h | grep JSON_VERSION | sed 's/.*0x//g' | cut -b 3-4 | sed 's/^0//g')
patchver = $(shell cat json.h | grep JSON_VERSION | sed 's/.*0x//g' | cut -b 5-6 | sed 's/^0//g')
sharedlib = libljson.so $(majorver) $(minorver) $(patchver)
testedbin = ljson
testednum = jnum_test
INSTALL_HEADERS = json.h jnum.h
FMUL ?= 1
DTOA ?= 0
TCMP ?= 2
libsrcs := json.c jnum.c
ifeq ($(DTOA),2)
libsrcs += grisu2.c
endif
ifeq ($(DTOA),3)
libsrcs += dragonbox.c
endif
CPFLAGS += -DUSING_FLOAT_MUL=$(FMUL)
CPFLAGS += -DJSON_DTOA_ALGORITHM=$(DTOA) # 0:ldouble 1:sprintf 2:grisu2 3:dragonbox
CPFLAGS += -DAPPROX_TAIL_CMP_VAL=$(TCMP) # 0 <= TCMP <= 4
.PHONY: all clean install
all:
@echo "Build $(PACKAGE_NAME) Done!"
INC_MAKES := app
object_byte_size=10240
include inc.makes
$(eval $(call add-liba-build,$(staticlib),$(libsrcs)))
$(eval $(call add-libso-build,$(sharedlib),$(libsrcs),-lm))
$(eval $(call add-bin-build,$(testedbin),json_test.c,-L $(OBJ_PREFIX) $(call set_links,ljson,m),,$(OBJ_PREFIX)/$(staticlib)))
numsrcs := jnum.c grisu2.c dragonbox.c jnum_test.c
$(eval $(call add-bin-build,$(testednum),$(numsrcs),-lm))
all: $(BIN_TARGETS) $(LIB_TARGETS)
clean: clean_objs
@rm -f $(LIB_TARGETS) $(BIN_TARGETS)
@echo "Clean $(PACKAGE_NAME) Done."
pkgconfigdir := /usr/lib/pkgconfig
INSTALL_PKGCONFIGS := pcfiles/*
$(eval $(call install_obj,pkgconfig))
install: install_hdrs install_libs install_bins install_pkgconfigs
@sed -i "s/@Version@/$(majorver).$(minorver).$(patchver)/g" $(INS_PREFIX)$(pkgconfigdir)/ljson.pc
@echo "Install $(PACKAGE_NAME) to $(INS_PREFIX) Done!"