Files
2025-10-14 09:52:32 +09:00

96 lines
2.0 KiB
Makefile

export SHELLOPTS := igncr
APPS := t32rem t32remtest t32apicmd t32apinotify t32fdxhost
ifneq ($(wildcard t32_arc_sim_test.c),)
APPS += t32_arc_sim_test
endif
VPATH := . ../src
ENV_NAME := $(shell uname -s)
PLATFORM := $(findstring $(shell uname -m),x86_64)
LOPT :=
ifneq ($(findstring CYGWIN,$(ENV_NAME)),)
ifneq ($(findstring 64,$(PLATFORM)),)
OF := windows64
CC := x86_64-w64-mingw32-gcc
else
OF := windows
CC := i686-pc-mingw32-gcc
endif
COPT := -DT32HOST_LE
LOPT := -lws2_32
EXE := .exe
endif
ifneq ($(findstring Linux,$(ENV_NAME)),)
ifneq ($(findstring 64,$(PLATFORM)),)
OF := pc_linux64
else
OF := pc_linux
endif
CC := gcc
COPT := -DT32HOST_LE
endif
ifneq ($(findstring SunOS,$(ENV_NAME)),)
OF := sun
CC := cc
COPT := -std=c11 -DT32HOST_BE -DT32HOST_UNIX -DT32HOST_SOL
LOPT := -lsocket
endif
ifeq ($(OF),)
ifneq ($(findstring .exe,$(SHELL))$(findstring .EXE,$(SHELL)),)
$(error Please use nmake on Windows or call GNU make from Cygwin)
endif
endif
OPTIMIZE := -O2 -fno-inline
ifeq ($(DEBUG),1)
OPTIMIZE := -no-pie -Og -g
LOPT := -no-pie -g $(LOPT)
COPT += -DDEBUG
endif
OPT-hremote := -DENABLE_NOTIFICATION
OPT-t32apinotify := -DENABLE_NOTIFICATION
RCLOBJS := $(OF)/hremote.o $(OF)/hlinknet.o $(OF)/t32nettcp.o $(OF)/tcpsimple2.o
EXEPREFIX :=
APPEXES :=
$(foreach APP, $(APPS), $(eval APPEXES := $(APPEXES) $(EXEPREFIX)$(APP)$(EXE)))
all: $(APPEXES)
$(OF):
mkdir $@
define COMPILE_TEMPLATE
$(EXEPREFIX)$(APP)$(EXE) : $(OF)/$(EXEPREFIX)$(APP)$(EXE)
cp $$< $$@
$(OF)/$(EXEPREFIX)$(APP)$(EXE) : $(OF)/$(APP).o $(RCLOBJS)
$(CC) -o $$@ $$^ $(LOPT)
endef
$(foreach APP, $(APPS), $(eval $(COMPILE_TEMPLATE)))
.PRECIOUS : $(OF)/%.o
$(OF)/%.o: %.c t32.h $(MAKEFILE_LIST) | $(OF)
$(CC) $(addprefix -I,$(VPATH)) $(OPTIMIZE) -c $(COPT) -o $@ $< $(OPT-$(basename $(@F)))
ifneq ($(wildcard $(OF)),)
CLEAN:=-rm -rf $(OF)
else
CLEAN:=
endif
.PHONY: clean
clean:
$(CLEAN)