view makefile.mingw @ 1960:22e3e829be13

Win: Switch to using winsock 2.x, this will remove support for ancient versions of Windows like 95 and NT 3.5 and older... This allows us to use unix domain sockets with Windows 10 for the sockpipe() macro... (used in my HandyFTP application) When compiled with Visual Studio 2017 5.5 and newer will use unix domain sockets, however this may fail on older Windows 10 versions and older versions of Windows. I am not sure it is worth the effort to dual mode it, when it can just be compiled with an older compiler and function on older versions of Windows if necessary.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Fri, 26 Jul 2019 06:58:41 +0000
parents 43c6ecfc598a
children 87d574dda8f5
line wrap: on
line source


# Dynamic Windows MINGW Makefile

CC = gcc
RM = del /f

DEFS =
LIBS =

ifndef TARGET_CPU
TARGET_CPU=x86
endif

ifeq ($(TARGET_CPU), x86)
PLATFORM_DEF=-DWIN32
PLATFORM_CFLAGS=-m32
PLATFORM_TARGET=pe-i386
else
PLATFORM_DEF=-DWIN64
PLATFORM_CFLAGS=-m64
PLATFORM_TARGET=pe-x86-64 -DDW64
endif

# Had to disable -Wunused-value due to every Win32 macro generating this warning...
# GCC has marked this as  WONTFIX http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24900
CFLAGS = -O -g -DMSVC $(PLATFORM_DEF) $(PLATFORM_CFLAGS) -D__WIN32__ -DBUILD_DLL -DGDIPLUS -DTOOLBAR -DUNICODE -D_UNICODE -DISOLATION_AWARE_ENABLED=1 -I./win -I. -I./platform -Wall -Wno-unused-value -mthreads -o $(@)
LDFLAGS = -shared -mwindows -mthreads -lcomctl32 -lole32 -loleaut32 -luserenv -lmsimg32 -lgdiplus -luuid

COMPATOBJECTS = dwcompat.o dirent.o
OBJECTS = dw.o browser.o XBrowseForFolder.o

VPATH=../ ../win

all: dw.dll dwcompat.dll dwtest.exe

dw.res:  win/dw.rc
	windres --target=$(PLATFORM_TARGET) --input win/dw.rc --output dw.res --output-format=coff
   
dw.dll:  $(OBJECTS) win/dw-mingw.def dw.res
	$(CC) $(CFLAGS) $(DEFS) -o dw.dll dw.res $(OBJECTS) $(LDFLAGS) \
	-Wl,--out-implib,dw.a -Wl,-Map,dw.dll.map -Wl,--cref  -Wl,--enable-stdcall-fixup win/dw-mingw.def 

dwcompat.dll:  $(COMPATOBJECTS) win/dwcompat-mingw.def
	$(CC) $(CFLAGS) $(DEFS) -o dwcompat.dll $(COMPATOBJECTS) $(LDFLAGS) -lwsock32 \
  -Wl,--out-implib,dwcompat.a -Wl,-Map,dwcompat.dll.map -Wl,--cref  -Wl,--enable-stdcall-fixup win/dwcompat-mingw.def 

dwtest.res: win/dwtest.rc
	windres --target=$(PLATFORM_TARGET) --input win/dwtest.rc --output dwtest.res --output-format=coff
   
dwtest.exe: dwtest.o dw.a dwcompat.a dwtest.res
	$(CC) $(CFLAGS) -o dwtest.exe dwtest.res dwtest.o dw.a dwcompat.a

clean:
	$(RM) *.obj *.o *.lib *.res *~ dwtest.exe dw.dll dwcompat.dll SVN.REV

dw.o: win/dw.c
	$(CC) $(CFLAGS) -DBUILD_DLL -c $<	

browser.o: win/browser.c
	$(CC) $(CFLAGS) -DBUILD_DLL -c $<	

XBrowseForFolder.o: win/XBrowseForFolder.cpp
	$(CC) $(CFLAGS) -DBUILD_DLL -c $<	

dwcompat.o: dwcompat.c
	$(CC) $(CFLAGS) -DBUILD_DLL -c $<	

dirent.o: win/dirent.c
	$(CC) $(CFLAGS) -DBUILD_DLL -c $<	

dwtest.o: dwtest.c
	$(CC) $(CFLAGS) -c $<	

DEPS := $(wildcard *.d)
ifneq ($(DEPS),)
include $(DEPS)
endif