Source

skulltag / Makefile.winelib

# Sub-makefile autogenerated by premake
# And then tweaked by hand

# Where did you install the FMOD API to? Change this line so that the build process can find it.
#FMODDIR = "c:/Programme/util/fmodapi375win/"

WINCMD=0
NOASM=1

CC = winegcc
CXX = wineg++

CONFIG ?= Release
OPTLEVEL ?= 2
ARCH_TYPE ?= pentium
TUNE_TYPE ?= i686
RELEASETARGET ?= zdoomgcc.exe
DEBUGTARGET ?= zdoomgccd.exe
DEBUGOBJDIR ?= debugobj
RELEASEOBJDIR ?= releaseobj

CCDV ?= @./ccdv
RE2C = tools/re2c/re2c

CPPFLAGS = -mno-cygwin -DWIN32 -D_WIN32 -D_WINDOWS -DHAVE_STRUPR -DHAVE_FILELENGTH -DI_DO_NOT_LIKE_BIG_DOWNLOADS -D__forceinline=inline -MMD -Izlib -IFLAC -Ijpeg-6b -Isrc -Isrc/win32 -Isrc/g_doom -Isrc/g_heretic -I src/g_hexen -Isrc/g_raven -Isrc/g_strife -Isrc/g_shared -Isrc/MD5 -Isrc/oplsynth -Isrc/sound -I../fmodapi375linux/api/inc/
LDFLAGS += -lFLAC++ -lFLAC -lz -ljpeg -lfmod -lwsock32 -lwinmm -lddraw -ldsound -ldinput8 -ldinput -lole32 -luser32 -lgdi32 -lcomctl32 -lcomdlg32 -lsetupapi -lws2_32 -lopengl32 -lglu32 -mno-cygwin -mwindows -ldxguid
#-ldxguid 

ifdef FMODDIR
  CPPFLAGS += -I$(FMODDIR)/api/inc
  LDFLAGS += -L$(FMODDIR)/api/lib
endif

CFLAGS += -fno-strict-aliasing

ifeq ($(CONFIG),Debug)
  OBJDIR = $(DEBUGOBJDIR)
  CFLAGS += $(CPPFLAGS) -Wall -Wno-unused -g3
  CPPFLAGS += -D_DEBUG
  CXXFLAGS = $(CFLAGS)
  TARGET = $(DEBUGTARGET)
endif
ifeq ($(CONFIG),Release)
  OBJDIR = $(RELEASEOBJDIR)
  CFLAGS += $(CPPFLAGS) -march=$(ARCH_TYPE) -mtune=$(TUNE_TYPE) -Wall -Wno-unused -O$(OPTLEVEL) -fomit-frame-pointer -pipe
  CFLAGS += -ffunction-sections -fno-rtti
  CPPFLAGS += -DNDEBUG
  CXXFLAGS = $(CFLAGS)
  LDFLAGS += -s -Wl,-Map=zdoomgcc.map -Wl,--gc-sections
  TARGET = $(RELEASETARGET)
endif

SRCDIRS = src/ $(addprefix src/,g_doom/ g_heretic/ g_hexen/ g_raven/ g_shared/ g_strife/ gl/ gl/r_render/ MD5/ oplsynth/ sound/ win32/ textures/)
VPATH = $(SRCDIRS)

CPPSRCS = $(wildcard $(addsuffix *.cpp,$(SRCDIRS)))
CSRCS = $(wildcard $(addsuffix *.c,$(SRCDIRS)))
RCSRCS = $(wildcard $(addsuffix *.rc,$(SRCDIRS)))
ifdef NOASM
  CFLAGS += -DNOASM
else
  ASRCS = $(wildcard src/*.nas)
  CFLAGS += -DUSEASM=1
endif
SRCS = $(CSRCS) $(CPPSRCS) $(ASRCS)
CPPOBJFILES = $(notdir $(CPPSRCS:%.cpp=%.o))
COBJFILES = $(notdir $(CSRCS:%.c=%.o))
# win32/wrappers.nas should be built *only* for Visual C++ 2005 to enable execution on Windows 95
AOBJFILES = $(filter-out %/wrappers.o,$(notdir $(ASRCS:%.nas=%.o)))
RCOBJFILES = $(notdir $(RCSRCS:%.rc=%.o))

COBJS = $(addprefix $(OBJDIR)/,$(CPPOBJFILES) $(COBJFILES) $(RCOBJFILES))
DEPS = $(patsubst %.o,%.d,$(COBJS))
UNORDEREDOBJS = $(addprefix $(OBJDIR)/,$(AOBJFILES)) $(COBJS)

OBJS = $(OBJDIR)/autostart.o $(filter-out %/autostart.o %/autozend.o,$(UNORDEREDOBJS)) $(OBJDIR)/autozend.o

all: $(TARGET)

# This file needs special handling so that it actually gets compiled with SSE2 support.
$(OBJDIR)/nodebuild_classify_sse2.o: src/nodebuild_classify_sse2.cpp
    $(CCDV) $(CXX) $(CXXFLAGS) -msse2 -mfpmath=sse -c -o $@ $<

src/sc_man_scanner.h: src/sc_man_scanner.re
    $(CCDV) $(RE2C) -s -o $@ $<

$(OBJDIR)/%.o : %.cpp
    $(CCDV) $(CXX) $(CXXFLAGS) -o $@ -c $<

$(OBJDIR)/%.o : %.nas
    $(CCDV) nasm -o $@ -f elf -DM_TARGET_LINUX $<

$(OBJDIR)/%.o : %.rc
    $(CCDV) wrc -DNO_MANIFEST --include-dir=src/win32 -o $@ -i $<


$(TARGET): testobjdir updaterev $(OBJS)
    $(CCDV) $(CXX) -o $@ $(OBJS) $(LDFLAGS)

ifeq (1,$(WINCMD))
clean:
    -del /q /f $(RELEASETARGET) 2>nul
    -del /q /f $(DEBUGTARGET) 2>nul
    -del /q /f $(DEBUGOBJDIR) 2>nul
    -del /q /f $(RELEASEOBJDIR) 2>nul

cleandep:
    -del /q /f $(DEBUGOBJDIR)\*.d 2>nul
    -del /q /f $(RELEASEOBJDIR)\*.d 2>nul
else
clean:
    rm -f $(RELEASETARGET)
    rm -f $(DEBUGTARGET)
    rm -fr $(DEBUGOBJDIR)
    rm -fr $(RELEASEOBJDIR)

cleandep:
    rm -f $(DEBUGOBJDIR)\*.d
    rm -f $(RELEASEOBJDIR)\*.d
endif
    
testobjdir:
ifeq (1,$(WINCMD))
    -@if not exist $(OBJDIR) mkdir $(OBJDIR)
else
    -@if [ ! -e $(OBJDIR) ]; then mkdir $(OBJDIR); fi
endif

updaterev: tools/updaterevision/updaterevision.exe
    @tools/updaterevision/updaterevision . src/svnrevision.h

tools/updaterevision/updaterevision.exe:
    $(MAKE) -C tools/updaterevision


ifeq (,$(findstring $(MAKECMDGOALS),clean cleandep updaterev))
-include $(DEPS)
endif

.PHONY: clean all updaterev testobjdir cleandep