mm/tools/z64compress/Makefile

48 lines
1.4 KiB
Makefile

CC := gcc
CFLAGS := -DNDEBUG -s -Os -flto -Wall -Wextra
# Target platform, specify with TARGET= on the command line, linux64 is default.
# Currently supported: linux64, linux32, win32
TARGET ?= linux64
ifeq ($(TARGET),linux32)
TARGET_CFLAGS := -m32
else ifeq ($(TARGET),win32)
# If using a cross compiler, specify the compiler executable on the command line.
# make TARGET=win32 CC=~/c/mxe/usr/bin/i686-w64-mingw32.static-gcc
TARGET_LIBS := -mconsole -municode
else ifneq ($(TARGET),linux64)
$(error Supported targets: linux64, linux32, win32)
endif
# Whether to use native optimizations, specify with NATIVE_OPT=0/1 on the command line, default is 0.
# This is not supported by all compilers which is particularly an issue on Mac, and may inhibit tests.
NATIVE_OPT ?= 0
ifeq ($(NATIVE_OPT),1)
TARGET_CFLAGS += -march=native -mtune=native
endif
OBJ_DIR := o/$(TARGET)
$(OBJ_DIR)/src/enc/%.o: CFLAGS := -DNDEBUG -s -Ofast -flto -Wall
SRC_DIRS := $(shell find src -type d)
C_FILES := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.c))
O_FILES := $(foreach f,$(C_FILES:.c=.o),$(OBJ_DIR)/$f)
# Make build directories
$(shell mkdir -p $(foreach dir,$(SRC_DIRS),$(OBJ_DIR)/$(dir)))
.PHONY: all clean
all: z64compress
z64compress: $(O_FILES)
$(CC) $(TARGET_CFLAGS) $(CFLAGS) $(O_FILES) -lm -lpthread $(TARGET_LIBS) -o z64compress
$(OBJ_DIR)/%.o: %.c
$(CC) -c $(TARGET_CFLAGS) $(CFLAGS) $< -o $@
clean:
$(RM) -rf z64compress bin o