PROJ = cblsrv ######################################## # VER_MJ := $(shell gawk '/VERSION_MAJOR/ {print $$3}' src/$(PROJ).h) VER_MN := $(shell gawk '/VERSION_MINOR/ {print $$3}' src/$(PROJ).h) ######################################## # IS_CYGWIN=$(shell uname | grep -i cygwin > /dev/null 2>&1 && echo yes || echo no) ######################################## # Directories SRC_DIR = src ifeq ($(IS_CYGWIN),yes) OBJ_DIR = build/cygwin else OBJ_DIR = build/linux endif ifeq ($(IS_CYGWIN),yes) BIN_EXT = .exe else BIN_EXT = endif PROJ_DIR = $(PROJ)-$(VER_MJ).$(VER_MN) ######################################## # Compiler options SRCS = \ $(SRC_DIR)/$(PROJ).cpp \ $(SRC_DIR)/bits.cpp \ $(SRC_DIR)/cable.cpp \ $(SRC_DIR)/parport.cpp \ $(SRC_DIR)/utils.cpp OBJS = $(addsuffix .o, \ $(addprefix $(OBJ_DIR)/, \ $(basename $(notdir $(SRCS))))) TARG = $(OBJ_DIR)/$(PROJ)$(BIN_EXT) CC = g++ LD = g++ CPFLAGS = -O3 -Wall LDFLAGS = ifeq ($(IS_CYGWIN),yes) LIBS = -L/usr/lib -lioperm else LIBS = endif ######################################## # Rules all: mkdirs $(TARG) clean: -rm -rf $(OBJ_DIR) $(TARG) : $(OBJS) $(LD) $(LDFLAGS) $(OBJS) $(LIBS) -o $@ mkdirs: -mkdir -p $(OBJ_DIR) srctar: tar -cjvf $(PROJ_DIR)-src.tar.bz2 -C .. \ $(PROJ_DIR)/src \ $(PROJ_DIR)/makefile \ $(PROJ_DIR)/$(PROJ).dsp \ $(PROJ_DIR)/$(PROJ).dsw \ $(PROJ_DIR)/readme.txt \ $(PROJ_DIR)/readme.txt winbintar: tar -cjvf $(PROJ_DIR)-win32.tar.bz2 \ readme.txt license.txt \ -C build/win32/Release $(PROJ).exe linuxbintar: tar -cjvf $(PROJ_DIR)-linux.tar.bz2 \ readme.txt license.txt \ -C build/linux $(PROJ) tar: srctar winbintar linuxbintar # $(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp $(CC) -c $(CPFLAGS) $< -o $@