Última atividade 1722969073 Unlisted

Scaffold script for running C code

scaffold.sh Bruto
1#!/usr/bin/env bash
2
3name=$1
4
5if [ -d "$name" ]; then
6 echo "program $name already exists"
7 exit 1
8fi
9
10mkdir -p "$name"/{src,include}/
11touch "$name"/makefile
12
13cat <<EOT >> "$name"/makefile
14program = $name
15
16CC = gcc
17SRC_DIR := src
18OBJ_DIR := obj
19BIN_DIR := bin
20INCLUDES := -Iinclude
21
22EXE := \$(BIN_DIR)/\$(program).out
23SRC := \$(wildcard \$(SRC_DIR)/*.c)
24OBJ := \$(SRC:\$(SRC_DIR)/%.c=\$(OBJ_DIR)/%.o)
25
26CPPFLAGS := \$(INCLUDES) -MMD -MP
27CFLAGS = -O -Wall -W -pedantic -ansi -std=c99
28LDFLAGS := -Llib
29LDLIBS := -lm
30
31.PHONY: all clean
32
33all: \$(EXE)
34
35\$(EXE): \$(OBJ) | \$(BIN_DIR)
36 \$(CC) \$(LDFLAGS) \$^ \$(LDLIBS) -o \$@
37
38\$(OBJ_DIR)/%.o: \$(SRC_DIR)/%.c | \$(OBJ_DIR)
39 \$(CC) \$(CPPFLAGS) \$(CFLAGS) -c $< -o \$@
40
41\$(BIN_DIR) \$(OBJ_DIR):
42 @mkdir -p \$@
43
44clean:
45 @rm -rv \$(BIN_DIR) \$(OBJ_DIR)
46
47-include \$(OBJ:.o=.d)
48EOT
49
50cat <<EOT >> "$name"/src/"$name".c
51/********************************************************************************
52 C Programming (2nd ed.) A Modern Approach, by
53 K. N. King
54 ISBN: 9780393871845
55********************************************************************************/
56EOT