Browse Source

Change Makefile to be thin wrapper around tool

master
cancel 7 years ago
parent
commit
eb74bf89c0
  1. 54
      Makefile
  2. 19
      tool

54
Makefile

@ -1,57 +1,13 @@
basic_flags := -std=c99 -pipe -Wall -Wpedantic -Wextra -Wconversion -Werror=implicit-function-declaration -Werror=implicit-int -Werror=incompatible-pointer-types -Werror=int-conversion -D_XOPEN_SOURCE_EXTENDED=1
debug_flags := -DDEBUG -ggdb
sanitize_flags := -fsanitize=address -fsanitize=undefined
# note: -fsanitize=leak not available on at least Mac 10.12
release_flags := -DNDEBUG -O2 -g0
# safety flags if you want a build that guards. pie doesn't work with clang
# with the other combinations of options in release we're using on linux.
safety_flags := -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fpie -Wl,-pie
cli_library_flags :=
ifeq ($(shell uname -s), Darwin)
# no -Og on Mac clang, use O1 instead
debug_flags := $(debug_flags) -O1
tui_library_flags := -lncurses
# clang on Mac 10.12 is slower with -flto, and -s is deprecated
else
debug_flags := $(debug_flags) -Og -feliminate-unused-debug-symbols
# GCC on Linux is way faster and moderately smaller with -flto, and smaller with -s
release_flags := $(release_flags) -flto -s
tui_library_flags := -lncursesw
endif
common_source_files := field.c mark.c bank.c sim.c
tui_source_files := $(common_source_files) tui_main.c
cli_source_files := $(common_source_files) cli_main.c
all: debug all: debug
build:
@mkdir $@
build/debug build/release: | build
@mkdir $@
.PHONY: debug_cli
debug_cli: | build/debug
@$(CC) $(basic_flags) $(debug_flags) $(sanitize_flags) $(cli_source_files) -o build/debug/orca $(cli_library_flags)
.PHONY: debug_tui
debug_tui: | build/debug
@$(CC) $(basic_flags) $(debug_flags) $(sanitize_flags) $(tui_source_files) -o build/debug/orca_tui $(tui_library_flags)
.PHONY: debug .PHONY: debug
debug: debug_cli debug:
@./tool build debug
.PHONY: release_cli
release_cli: | build/release
@$(CC) $(basic_flags) $(release_flags) $(cli_source_files) -o build/release/orca $(cli_library_flags)
.PHONY: release_tui
release_tui: | build/release
@$(CC) $(basic_flags) $(release_flags) $(tui_source_files) -o build/release/orca_tui $(tui_library_flags)
.PHONY: release .PHONY: release
release: release_cli release:
@./tool build release
.PHONY: clean .PHONY: clean
clean: clean:
rm -rf build @./tool clean

19
tool

@ -1,16 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -eu -o pipefail set -eu -o pipefail
os=
case $(uname -s | awk '{print tolower($0)}') in
linux*) os=linux;;
darwin*) os=mac;;
cygwin*) os=cygwin;;
*bsd*) os=bsd;;
*) os=unknown;;
esac
print_usage() { print_usage() {
cat <<EOF cat <<EOF
Usage: tool [options] command [args] Usage: tool [options] command [args]
@ -35,6 +25,15 @@ Options:
EOF EOF
} }
os=
case $(uname -s | awk '{print tolower($0)}') in
linux*) os=linux;;
darwin*) os=mac;;
cygwin*) os=cygwin;;
*bsd*) os=bsd;;
*) os=unknown;;
esac
compiler_exe="${CC:-cc}" compiler_exe="${CC:-cc}"
verbose=0 verbose=0

Loading…
Cancel
Save