1
- VERSION := 10.0 .0
1
+ VERSION := 10.1 .0
2
2
MAJOR_VERSION := $(shell echo $(VERSION ) | head -c 1)
3
3
4
4
# installation directory (/usr/local by default)
@@ -7,23 +7,26 @@ 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,66 +66,66 @@ 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/local
70
+ cp -r $(addprefix build/, include lib src) build/deb/$(BASENAME) /usr/local
71
+ mkdir -p build/deb/$(BASENAME) /usr/local/share/man/man3
72
+ cp -r $(MANS) build/deb/$(BASENAME) /usr/local/share/man/man3
66
73
fpm \
67
74
--after-install postinst \
68
75
--after-remove postrm \
69
76
--category libs \
70
- --chdir build/deb/libcs50 \
77
+ --chdir build/deb/$(BASENAME) \
71
78
--conflicts lib50-c \
72
- --conflicts libcs50 \
79
+ --conflicts $(BASENAME) \
73
80
--conflicts library50-c \
74
81
--deb-priority optional \
75
82
--description "CS50 library for C" \
76
83
--input-type dir \
77
84
--license "MIT" \
78
85
--maintainer "CS50 <sysadmins@cs50.harvard.edu>" \
79
- --name libcs50 \
86
+ --name $(BASENAME) \
80
87
--output-type deb \
81
88
--package build/deb \
82
89
--provides lib50-c \
83
- --provides libcs50 \
90
+ --provides $(BASENAME) \
84
91
--provides library50-c \
85
92
--replaces lib50-c \
86
- --replaces libcs50 \
93
+ --replaces $(BASENAME) \
87
94
--replaces library50-c \
88
95
--url https://github.com/cs50/libcs50 \
89
96
--vendor CS50 \
90
97
--version $(VERSION) \
91
98
.
92
99
93
- rm -rf build/deb/libcs50
100
+ rm -rf build/deb/$(BASENAME)
94
101
95
102
rpm : $(LIBS ) $(MANS )
96
103
rm -rf build/rpm
97
104
98
105
# 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
106
+ mkdir -p build/rpm/$(BASENAME) /usr/local
107
+ cp -r $(addprefix build/, include lib src) build/rpm/$(BASENAME) /usr/local
108
+ mkdir -p build/rpm/$(BASENAME) /usr/local/share/man/man3
109
+ cp -r $(MANS) build/rpm/$(BASENAME) /usr/local/share/man/man3
103
110
fpm \
104
111
--after-install post \
105
112
--after-remove postun \
106
113
--category libs \
107
- --chdir build/rpm/libcs50 \
114
+ --chdir build/rpm/$(BASENAME) \
108
115
--description "CS50 library for C" \
109
116
--input-type dir \
110
117
--license "MIT" \
111
118
--maintainer "CS50 <sysadmins@cs50.harvard.edu>" \
112
- --name libcs50 \
119
+ --name $(BASENAME) \
113
120
--output-type rpm \
114
121
--package build/rpm \
115
- --provides libcs50 \
122
+ --provides $(BASENAME) \
116
123
--url https://github.com/cs50/libcs50 \
117
124
--vendor CS50 \
118
125
--version $(VERSION) \
119
126
.
120
127
121
- rm -rf build/rpm/libcs50
128
+ rm -rf build/rpm/$(BASENAME)
122
129
123
130
# used by .travis.yml
124
131
.PHONY : version
0 commit comments