-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
53 lines (42 loc) · 1.51 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
COMPILER_PATH = emojicodec
PACKAGE_NAME = emojihttp
PACKAGE_NAMESPACE = 🌐
PACKAGE_DIR = ./packages
SRC_DIR = ./src
TESTS_DIR = ./tests
BUILD_DIR = ./build
DIST_DIR = ./dist
FILE_EXT = .emojic
MAIN_FILE = main
BUILD_FILES = $(SRC_DIR)/$(MAIN_FILE).o
LIB_FILES = $(SRC_DIR)/🏛 $(SRC_DIR)/lib$(PACKAGE_NAME).a
all: build
build:
@$(COMPILER_PATH) $(SRC_DIR)/$(MAIN_FILE)$(FILE_EXT)
@mkdir -p $(BUILD_DIR) $(DIST_DIR)
@mv $(BUILD_FILES) $(BUILD_DIR)
@mv $(SRC_DIR)/$(MAIN_FILE) $(DIST_DIR)
run: clean_build build
@$(DIST_DIR)/$(MAIN_FILE)
package:
@mkdir -p $(PACKAGE_DIR)/$(PACKAGE_NAME)
@$(COMPILER_PATH) -p $(PACKAGE_NAME) $(SRC_DIR)/$(MAIN_FILE)$(FILE_EXT)
@mv $(LIB_FILES) $(PACKAGE_DIR)/$(PACKAGE_NAME)
@rm -rf $(BUILD_FILES)
test: package
@$(foreach file, $(wildcard $(TESTS_DIR)/*$(FILE_EXT)), \
echo Running $(notdir $(file))...; \
cp $(file) $(PACKAGE_DIR); \
(echo '📦 testtube 🏠'; cat $(SRC_DIR)/*$(FILE_EXT); echo '📦 $(PACKAGE_NAME) $(PACKAGE_NAMESPACE)') | \
grep -i '^📦\.*' | \
cat - $(PACKAGE_DIR)/$(notdir $(file)) > test$(FILE_EXT).tmp; \
mv test$(FILE_EXT).tmp $(PACKAGE_DIR)/$(notdir $(file)); \
$(COMPILER_PATH) $(PACKAGE_DIR)/$(notdir $(file)) && $(PACKAGE_DIR)/$(basename $(notdir $(file))); \
rm $(PACKAGE_DIR)/$(basename $(notdir $(file))) $(PACKAGE_DIR)/$(basename $(notdir $(file))).o; \
echo '\n'; \
)
clean_all:
@rm -rf $(BUILD_DIR) $(DIST_DIR) $(PACKAGE_DIR)
clean_build:
@rm -rf $(BUILD_DIR) $(DIST_DIR)
PHONY: all build run package test clean_all clean_build