1
- VERSION := 10.0 .0
2
- MAJOR_VERSION := $(shell echo $(VERSION ) | head -c 1 )
1
+ VERSION := 10.1 .0
2
+ MAJOR_VERSION := $(shell echo $(VERSION ) | cut -d'.' -f1 )
3
3
4
4
# installation directory (/usr/local by default)
5
5
DESTDIR ?= /usr/local
6
6
MANDIR ?= share/man/man3
7
7
8
8
SRC := src/cs50.c
9
9
INCLUDE := src/cs50.h
10
- MANS := $(wildcard docs/* .3)
10
+ MANS := $(wildcard docs/* .3.gz )
11
11
12
- CFLAGS =-Wall -Wextra -Werror -pedantic -std=c99
12
+ CFLAGS =-Wall -Wextra -Werror -pedantic -std=c11
13
+ BASENAME =libcs50
14
+ LIB_STATIC =$(BASENAME ) .a
15
+ LIB_OBJ =$(BASENAME ) .o
13
16
14
17
OS := $(shell uname)
15
18
16
19
# Linux
17
20
ifeq ($(OS ) ,Linux)
18
- LIB_BASE := libcs50 .so
19
- LIB_MAJOR := libcs50 .so.$(MAJOR_VERSION)
20
- LIB_VERSION := libcs50 .so.$(VERSION)
21
+ LIB_BASE := $(BASENAME) .so
22
+ LIB_MAJOR := $(BASENAME) .so.$(MAJOR_VERSION)
23
+ LIB_VERSION := $(BASENAME) .so.$(VERSION)
21
24
LINKER_FLAGS := -Wl,-soname,$(LIB_MAJOR)
22
25
# Mac
23
26
else ifeq ($(OS),Darwin)
24
- LIB_BASE := libcs50 .dylib
25
- LIB_MAJOR := libcs50 -$(MAJOR_VERSION).dylib
26
- LIB_VERSION := libcs50 -$(VERSION).dylib
27
+ LIB_BASE := $(BASENAME) .dylib
28
+ LIB_MAJOR := $(BASENAME) -$(MAJOR_VERSION).dylib
29
+ LIB_VERSION := $(BASENAME) -$(VERSION).dylib
27
30
LINKER_FLAGS := -Wl,-install_name,$(LIB_VERSION)
28
31
endif
29
32
@@ -34,11 +37,15 @@ all: $(LIBS) $(MANS)
34
37
35
38
$(LIBS ) : $(SRC ) $(INCLUDE ) Makefile
36
39
$(CC ) $(CFLAGS ) -fPIC -shared $(LINKER_FLAGS ) -o $(LIB_VERSION ) $(SRC )
40
+ $(CC ) $(CFLAGS ) -c -o $(LIB_OBJ ) $(SRC )
41
+ ar rcs $(LIB_STATIC ) $(LIB_OBJ )
42
+ chmod 644 $(LIB_STATIC )
43
+ rm -f $(LIB_OBJ )
37
44
ln -sf $(LIB_VERSION ) $(LIB_BASE )
38
45
mkdir -p $(addprefix build/, include lib src)
39
46
install -m 644 $(SRC ) build/src
40
47
install -m 644 $(INCLUDE ) build/include
41
- mv $(LIB_VERSION ) $(LIB_BASE ) build/lib
48
+ mv $(LIB_VERSION ) $(LIB_BASE ) $( LIB_STATIC ) build/lib
42
49
43
50
.PHONY : install
44
51
install : all
@@ -59,68 +66,71 @@ deb: $(LIBS) $(MANS)
59
66
rm -rf build/deb
60
67
61
68
# temporary fpm source
62
- mkdir -p build/deb/libcs50/usr/local
63
- cp -r $(addprefix build/, include lib src) build/deb/libcs50/usr/local
64
- mkdir -p build/deb/libcs50/usr/local/share/man/man3
65
- cp -r $(MANS) build/deb/libcs50/usr/local/share/man/man3
69
+ mkdir -p build/deb/$(BASENAME)/usr
70
+ cp -r $(addprefix build/, include lib src) build/deb/$(BASENAME)/usr
71
+ mkdir -p build/deb/$(BASENAME)/usr/share/man/man3
72
+ chmod 755 build/deb/$(BASENAME)/usr/share/man/man3
73
+ cp -r $(MANS) build/deb/$(BASENAME)/usr/share/man/man3
74
+ chmod 644 build/deb/$(BASENAME)/usr/share/man/man3/*
66
75
fpm \
67
76
--after-install postinst \
68
77
--after-remove postrm \
69
78
--category libs \
70
- --chdir build/deb/libcs50 \
79
+ --chdir build/deb/$(BASENAME) \
71
80
--conflicts lib50-c \
72
- --conflicts libcs50 \
81
+ --conflicts $(BASENAME) \
73
82
--conflicts library50-c \
83
+ --deb-no-default-config-files \
74
84
--deb-priority optional \
75
85
--description "CS50 library for C" \
76
86
--input-type dir \
77
87
--license "MIT" \
78
88
--maintainer "CS50 <
[email protected] >" \
79
- --name libcs50 \
89
+ --name $(BASENAME) \
80
90
--output-type deb \
81
91
--package build/deb \
82
92
--provides lib50-c \
83
- --provides libcs50 \
93
+ --provides $(BASENAME) \
84
94
--provides library50-c \
85
95
--replaces lib50-c \
86
- --replaces libcs50 \
96
+ --replaces $(BASENAME) \
87
97
--replaces library50-c \
88
98
--url https://github.com/cs50/libcs50 \
89
99
--vendor CS50 \
90
100
--version $(VERSION) \
91
101
.
92
102
93
- rm -rf build/deb/libcs50
103
+ rm -rf build/deb/$(BASENAME)
94
104
95
105
rpm : $(LIBS ) $(MANS )
96
106
rm -rf build/rpm
97
107
98
- # temporary fpm source
99
- mkdir -p build/rpm/libcs50 /usr/local
100
- cp -r $(addprefix build/, include lib src) build/rpm/libcs50 /usr/local
101
- mkdir -p build/rpm/libcs50 /usr/local /share/man/man3
102
- cp -r $(MANS) build/rpm/libcs50 /usr/local /share/man/man3
108
+ # Temporary fpm source
109
+ mkdir -p build/rpm/$(BASENAME) /usr
110
+ cp -r $(addprefix build/, include lib src) build/rpm/$(BASENAME) /usr
111
+ mkdir -p build/rpm/$(BASENAME) /usr/share/man/man3
112
+ cp -r $(MANS) build/rpm/$(BASENAME) /usr/share/man/man3
103
113
fpm \
104
114
--after-install post \
105
115
--after-remove postun \
106
116
--category libs \
107
- --chdir build/rpm/libcs50 \
117
+ --chdir build/rpm/$(BASENAME) \
108
118
--description "CS50 library for C" \
109
119
--input-type dir \
110
120
--license "MIT" \
111
121
--maintainer "CS50 <
[email protected] >" \
112
- --name libcs50 \
122
+ --name $(BASENAME) \
113
123
--output-type rpm \
114
124
--package build/rpm \
115
- --provides libcs50 \
125
+ --provides $(BASENAME) \
116
126
--url https://github.com/cs50/libcs50 \
117
127
--vendor CS50 \
118
128
--version $(VERSION) \
119
129
.
120
130
121
- rm -rf build/rpm/libcs50
131
+ rm -rf build/rpm/$(BASENAME)
122
132
123
- # used by .travis.yml
133
+ # Used by .travis.yml
124
134
.PHONY : version
125
135
version :
126
136
@echo $(VERSION )
0 commit comments