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)