-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathMakefile
More file actions
98 lines (88 loc) · 2.01 KB
/
Makefile
File metadata and controls
98 lines (88 loc) · 2.01 KB
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
# useful paths
CC = g++
SRC_DIR = src
HDR = $(SRC_DIR)/cs50.hpp
SRC = $(SRC_DIR)/cs50.cpp
BUILD_DIR = build
OBJ = $(BUILD_DIR)/cs50++.o
USR_DIR = $(BUILD_DIR)/usr
INCLUDE_DIR = $(USR_DIR)/include
LIB_DIR = $(USR_DIR)/lib
BUILD_SRC = $(USR_DIR)/src
# deb package info
DESCRIPTION = CS50 Library for C++
MAINTAINER = CS50 <sysadmins@cs50.harvard.edu>
NAME = libcs50++
VERSION = 1.0.0
.PHONY: bash
bash:
docker run -i --rm -t -v "$(PWD):/root" cs50/cli
.PHONY: build
build: clean Makefile $(SRC) $(HDR)
mkdir -p "$(INCLUDE_DIR)" "$(LIB_DIR)" "$(BUILD_SRC)"
$(CC) -c -fPIC -std=c++11 -Wall -o "$(OBJ)" "$(SRC)"
$(CC) -o "$(LIB_DIR)/libcs50++.so" -shared "$(OBJ)"
rm -f "$(OBJ)"
cp "$(HDR)" "$(INCLUDE_DIR)"
cp "$(SRC)" "$(BUILD_SRC)"
#cp -r docs/* "$(MAN_DIR)"
find "$(BUILD_DIR)" -type d -exec chmod 0755 {} +
find "$(BUILD_DIR)" -type f -exec chmod 0644 {} +
.PHONY: clean
clean:
rm -rf "$(BUILD_DIR)"
.PHONY: deb
deb: build
fpm \
-C "$(BUILD_DIR)" \
-m "$(MAINTAINER)" \
-n "$(NAME)" \
-p "$(BUILD_DIR)" \
-s dir \
-t deb \
-v "$(VERSION)" \
--conflicts "$(NAME) (<< $(VERSION))" \
--deb-no-default-config-files \
--depends c-compiler \
--description "$(DESCRIPTION)" \
--provides "$(NAME)" \
--replaces "$(NAME) (<= $(VERSION))" \
usr
.PHONY: hackerrank
hackerrank: build
cat "$(HDR)" > "$(HR_HDR)"
echo "\n#ifndef _CS50_C\n#define _CS50_C\n" >> "$(HR_HDR)"
cat "$(SRC)" >> "$(HR_HDR)"
echo "\n#endif" >> "$(HR_HDR)"
.PHONY: install
install: build
cp "$(INCLUDE_DIR)"/* /usr/include
cp "$(LIB_DIR)"/* /usr/lib
# TODO: add dependencies
.PHONY: pacman
pacman: build
rm -f "$(NAME)-$(VERSION)-"*.pkg.tar.xz
fpm \
-C "$(BUILD_DIR)" \
-m "$(MAINTAINER)" \
-n "$(NAME)" \
-p "$(BUILD_DIR)" \
-s dir \
-t pacman \
-v "$(VERSION)" \
--description "$(DESCRIPTION)" \
usr
# TODO: add dependencies
.PHONY: rpm
rpm: build
rm -f "$(NAME)-$(VERSION)-"*.rpm
fpm \
-C "$(BUILD_DIR)" \
-m "$(MAINTAINER)" \
-n "$(NAME)" \
-p "$(BUILD_DIR)" \
-s dir \
-t rpm \
-v "$(VERSION)" \
--description "$(DESCRIPTION)" \
usr