# Shared include makefile to build a library for protocol analysis with GNU make # Please goto to a sub-folder and call GNU make (e.g. gmake) OF := build VPATH := . .. CC := gcc COPT := -Wall LOPT := ifneq ($(findstring .exe,$(SHELL))$(findstring .EXE,$(SHELL)),) ENV_NAME := WINDOWS PATH+=;C:\cygwin\bin SHELL := C:\cygwin\bin\bash.exe else ENV_NAME := $(shell uname -s) endif $(info $(ENV_NAME)) ifneq ($(findstring CYGWIN,$(ENV_NAME))$(findstring WINDOWS,$(ENV_NAME))$(findstring MINGW,$(ENV_NAME)),) export SHELLOPTS := igncr BIN := $(NAME).dll LOPT += -def ../proto.def -s ifneq ($(findstring CYGWIN,$(ENV_NAME))$(findstring WINDOWS,$(ENV_NAME)),) PLATFORM ?= $(if $(ProgramW6432)$(PROGRAMW6432),64,32) ifeq ($(findstring 64,$(PLATFORM)),64) OF := $(OF)-win64 CC := x86_64-w64-mingw32-gcc BIN := $(NAME)64.dll else GCCVER := $(shell gcc -dumpversion) ifeq ($(firstword $(subst ., ,$(GCCVER))),3) CC := gcc -mno-cygwin else CC := i686-pc-mingw32-gcc.exe ifeq ($(wildcard /bin/i686-pc-mingw32-gcc.exe),) CC := i686-w64-mingw32-gcc endif endif OF := $(OF)-win32 endif endif else OF := $(OF)-$(ENV_NAME) BIN := $(NAME).so.1 ifeq (SunOS,$(ENV_NAME)) COPT += -fPIC LOPT += -fPIC endif ifeq (Linux,$(ENV_NAME)) COPT += -fPIC LOPT += -fPIC endif endif .PHONY : all all: $(OF) $(OF)/$(BIN) cp $(OF)/$(BIN) $(BIN) $(OF): mkdir $@ $(OF)/%.o: %.c proto.h $(CC) $(addprefix -I,$(VPATH)) -c $(COPT) -o $@ $< $(OF)/$(BIN): $(OF)/$(NAME).o $(OF)/proto.o $(CC) -shared $(LOPT) -o $@ $^ $(LIB) .PHONY : clean clean: -rm -rf $(OF)