project64/Source/Glide64/Makefile.gcc

190 lines
3.6 KiB
Makefile

# This MUST be processed by GNU make
#
# Glide64 Makefile
# Version: 1.0
#
# this is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# this is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GNU Make; see the file COPYING. If not, write to
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
#
#
# Available options:
#
# Environment variables:
# DEBUG=1 enable debugging checks and messages
# default = no
#
# Environment variables:
#
# Targets:
# all: build dynamic module
# clean: remove object files
# realclean: remove all generated files
#
#
# Requirements:
#
# Compiler:
# GCC 4.2
#
# Libraries:
# glide3x - build Glitch64 first, copy the result dll to 'lib' folder
# wx-widgets 2.8 (http://www.wxwidgets.org)
#
#
# GCC does not have SEH (structured exception handling)
#
.PHONY: all clean realclean ostype
OS=$(shell uname)
ifeq ($(findstring MINGW,$(OS)),MINGW)
OS := WINDOWS
endif
ifeq ($(findstring CYGWIN,$(OS)),CYGWIN)
OS=WINDOWS
endif
ifeq ($(findstring WINNT,$(OS)),WINNT)
OS=WINDOWS
endif
ifeq ($(OS),Darwin)
OS=MACOSX
endif
ifeq ($(OS), WINDOWS)
DLLNAME = Glide64.dll
else
DLLNAME = Glide64.so
endif
EXT_INC = ./inc
EXT_LIB = ./lib
CC = g++
STRIP = strip
CFLAGS = -DBUILDING_DLL=1 -fexceptions
LDLIBS = -L"." -L"lib" `wx-config --libs`
ifeq ($(OS), Linux)
CC += -V 4.2
LDFLAGS = -shared -lstdc++
CFLAGS += -D__unix__
LDLIBS += $(EXT_LIB)/glide3x.so
endif
ifeq ($(OS), MACOSX)
LDFLAGS = -dynamiclib -lstdc++
CFLAGS += -D__unix__ -Dmacintosh
LDLIBS += $(EXT_LIB)/glide3x.dylib
endif
ifeq ($(OS), WINDOWS)
LDFLAGS = -shared -mwindows
CFLAGS += -D__WIN32__ -DWIN32 -D_WIN32
LDLIBS += $(EXT_LIB)/glide3x.lib
endif
CFLAGS += -ffast-math -funroll-loops
#CFLAGS += -fexpensive-optimizations -march=k6
CFLAGS += -I. -I$(EXT_INC) `wx-config --cppflags`
ifdef DEBUG
CFLAGS += -g -DDEBUG
endif
LD = g++
AS = nasm
ifeq ($(OS), Linux)
ASFLAGS = -O6 -felf -D__linux__
ASM_OBJ = \
3dmathSIMD.o \
FixedPoint.o \
Texture.o
else
ifeq ($(OS), MACOSX)
ASFLAGS = -O6 -fmacho --prefix _
ASM_OBJ = \
3dmathSIMD.o \
FixedPoint.o \
Texture.o
else
ifeq ($(OS), WINDOWS)
ASFLAGS = -O6 -fwin32 -D__WIN32__ --prefix _
ASM_OBJ = \
3dmathSIMD.obj \
FixedPoint.obj \
Texture.obj
endif
endif
endif
RM = rm
SOURCES = \
3dmath.cpp \
Combine.cpp \
Config.cpp \
CRC.cpp \
Debugger.cpp \
DepthBufferRender.cpp \
Ext_TxFilter.cpp \
FBtoScreen.cpp \
Main.cpp \
Keys.cpp \
rdp.cpp \
TexBuffer.cpp \
TexCache.cpp \
Util.cpp
OBJECTS = $(SOURCES:.cpp=.o)
.cpp.o:
$(CC) -o $@ $(CFLAGS) -c $<
all: $(DLLNAME)
$(DLLNAME): $(OBJECTS) $(ASM_OBJ)
$(LD) -o $@ $(LDFLAGS) $^ $(LDLIBS)
ifeq ($(OS), Linux)
$(STRIP) $@
endif
ifneq ($(OS), WINDOWS)
3dmathSIMD.o: 3dmathSIMD.asm
$(AS) -o $@ $(ASFLAGS) $<
FixedPoint.o: FixedPoint.asm
$(AS) -o $@ $(ASFLAGS) $<
Texture.o: Texture.asm
$(AS) -o $@ $(ASFLAGS) $<
else
3dmathSIMD.obj: 3dmathSIMD.asm
$(AS) -o $@ $(ASFLAGS) $<
FixedPoint.obj: FixedPoint.asm
$(AS) -o $@ $(ASFLAGS) $<
Texture.obj: Texture.asm
$(AS) -o $@ $(ASFLAGS) $<
endif
clean:
-$(RM) *.o
realclean: clean
-$(RM) $(DLLNAME)
ostype:
echo $(OS)
-include depend