27a59a0cbc
vulkan, wasapi, quake injector features added. irc, avplug, cef plugins/drivers reworked/updated/added openal reverb, doppler effects added. 'dir' console command now attempts to view clicked files. lots of warning fixes, should now only be deprecation warnings for most targets (depending on compiler version anyway...). SendEntity finally reworked to use flags properly. effectinfo improved, other smc-targetted fixes. mapcluster stuff now has support for linux. .basebone+.baseframe now exist in ssqc. qcc: -Fqccx supports qccx syntax, including qccx hacks. don't expect these to work in fteqw nor dp though. qcc: rewrote function call handling to use refs rather than defs. this makes struct passing more efficient and makes the __out keyword usable with fields etc. qccgui: can cope a little better with non-unicode files. can now represent most quake chars. qcc: suppressed warnings from *extensions.qc git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5000 fc73d0e0-1445-4013-8a0c-d673dee63da5
202 lines
8.1 KiB
Makefile
202 lines
8.1 KiB
Makefile
|
|
#windows is special as always, but we don't support itanium, and microsoft don't support anything else (not even arm with the nt win32 api)
|
|
ifeq ($(FTE_TARGET),win32)
|
|
PLUG_NATIVE_EXT=_x86.dll
|
|
PLUG_LDFLAGS=-L../engine/libs/mingw-libs -lzlib
|
|
BITS=32
|
|
endif
|
|
ifeq ($(FTE_TARGET),win64)
|
|
PLUG_NATIVE_EXT=_x64.dll
|
|
PLUG_LDFLAGS=-L../engine/libs/mingw64-libs -lz -Wl,--support-old-code
|
|
BITS=64
|
|
endif
|
|
|
|
PLUG_LDFLAGS?=-L/usr/local/lib -Wl,-R/usr/local/lib -lz -lm
|
|
|
|
ifneq ($(PLUG_NATIVE_EXT),)
|
|
#if we're on windows, we'll put our windows-specific hacks here.
|
|
PLUG_DEFFILE=plugin.def
|
|
PLUG_CFLAGS=
|
|
PLUG_CXXFLAGS=
|
|
endif
|
|
|
|
#cygwin uses dll naming.
|
|
ifeq ($(FTE_TARGET),cygwin)
|
|
ifeq ($(BITS),64)
|
|
PLUG_DEFFILE=plugin.def
|
|
PLUG_NATIVE_EXT=_amd64.dll
|
|
endif
|
|
ifneq ($(BITS),64)
|
|
PLUG_DEFFILE=plugin.def
|
|
PLUG_NATIVE_EXT=_x86.dll
|
|
endif
|
|
endif
|
|
|
|
#if they're not on windows, we'll try asking the compiler directly
|
|
#the check to see if its already set is to avoid asking msvc, which would probably break things.
|
|
ifeq ($(PLUG_NATIVE_EXT),)
|
|
LIBRESOLV=-lresolv
|
|
ifneq ($(shell echo|$(CC) -E -dM -|grep __amd64__),)
|
|
PLUG_NATIVE_EXT=_amd64.so
|
|
endif
|
|
ifneq ($(shell echo|$(CC) -E -dM -|grep __i386__),)
|
|
PLUG_NATIVE_EXT=_x86.so
|
|
endif
|
|
ifneq ($(shell echo|$(CC) -E -dM -|grep __arm__),)
|
|
PLUG_NATIVE_EXT=_arm.so
|
|
endif
|
|
ifneq ($(shell echo|$(CC) -E -dM -|grep __ppc__),)
|
|
PLUG_NATIVE_EXT=_ppc.so
|
|
endif
|
|
endif
|
|
|
|
#fallback
|
|
PLUG_NATIVE_EXT?=_unk.so
|
|
|
|
PLUG_DEFFILE?=
|
|
PLUG_CFLAGS?=-fPIC -Wl,--no-undefined -Bsymbolic -fvisibility=hidden
|
|
PLUG_CXXFLAGS?=-fPIC -Wl,--no-undefined -Bsymbolic -fvisibility=hidden
|
|
PLUG_LDFLAGS?=
|
|
|
|
all: ezscript qi hud irc
|
|
|
|
clean: ezscript-clean qi-clean hud-clean irc-clean
|
|
|
|
.PHONY: all ezscript hud irc native distclean clean
|
|
|
|
help:
|
|
@-echo make a subdirectory
|
|
|
|
ezscript:
|
|
$(MAKE) -C ezscript
|
|
|
|
ezscript-clean:
|
|
$(MAKE) clean -C ezscript
|
|
|
|
hud:
|
|
$(MAKE) -C hud
|
|
|
|
hud-clean:
|
|
$(MAKE) clean -C hud
|
|
|
|
qi:
|
|
$(MAKE) -C qi
|
|
|
|
qi-clean:
|
|
$(MAKE) clean -C qi
|
|
|
|
irc:
|
|
$(MAKE) -C irc
|
|
|
|
irc-clean:
|
|
$(MAKE) clean -C irc
|
|
|
|
#small script to download+install avformat for windows cross compiles.
|
|
#linux users are expected to have the library installed locally already. If your version is too old or missing, run the following command to install it (to /usr/local), then delete the gz and directory.
|
|
#wget http://ffmpeg.org/releases/ffmpeg-1.2.tar.gz && cd tar xvfz ffmpeg-1.2.tar.gz && cd ffmpeg-1.2/ && ./configure --disable-yasm --enable-shared && make && sudo make install
|
|
#we use ffmpeg's version for some reason, as opposed to libav. not sure what the differences are meant to be, but libav seemed to have non-depricated functions defined, docs that say to use them, and these functions missing.
|
|
AV7Z_VER=ffmpeg-3.0.1
|
|
AV7Z_W32=$(AV7Z_VER)-win32-dev.7z
|
|
AV7Z_URL32=http://ffmpeg.zeranoe.com/builds/win32/dev/$(AV7Z_W32)
|
|
AV7Z_PRE32=$(AV7Z_VER)-win32-dev/
|
|
AV7Z_W64=$(AV7Z_VER)-win64-dev.7z
|
|
AV7Z_URL64=http://ffmpeg.zeranoe.com/builds/win64/dev/$(AV7Z_W64)
|
|
AV7Z_PRE64=$(AV7Z_VER)-win64-dev/
|
|
AV_BASE=$(OUT_DIR)/../fte_libav_$(AV7Z_VER)/
|
|
|
|
|
|
ifeq ($(FTE_TARGET),win32)
|
|
#NATIVE_PLUGINS+=avplug
|
|
endif
|
|
ifeq ($(FTE_TARGET),win64)
|
|
#NATIVE_PLUGINS+=avplug
|
|
endif
|
|
|
|
$(AV_BASE)libavformat/avformat.h:
|
|
mkdir -p $(AV_BASE)
|
|
wget $(AV7Z_URL32) -O $(AV_BASE)$(AV7Z_W32)
|
|
mkdir -p $(AV_BASE)libavformat && cd $(AV_BASE)libavformat && 7z e -y ../$(AV7Z_W32) $(AV7Z_PRE32)include/libavformat/ && cd -
|
|
mkdir -p $(AV_BASE)libavcodec && cd $(AV_BASE)libavcodec && 7z e -y ../$(AV7Z_W32) $(AV7Z_PRE32)include/libavcodec/ && cd -
|
|
mkdir -p $(AV_BASE)libavutil && cd $(AV_BASE)libavutil && 7z e -y ../$(AV7Z_W32) $(AV7Z_PRE32)include/libavutil/ && cd -
|
|
mkdir -p $(AV_BASE)libswscale && cd $(AV_BASE)libswscale && 7z e -y ../$(AV7Z_W32) $(AV7Z_PRE32)include/libswscale/ && cd -
|
|
mkdir -p $(AV_BASE)lib32 && cd $(AV_BASE)lib32 && 7z e -y ../$(AV7Z_W32) $(AV7Z_PRE32)lib/avformat.lib $(AV7Z_PRE32)lib/avcodec.lib $(AV7Z_PRE32)lib/avutil.lib $(AV7Z_PRE32)lib/swscale.lib && cd -
|
|
rm $(AV_BASE)$(AV7Z_W32)
|
|
wget $(AV7Z_URL64) -O $(AV_BASE)$(AV7Z_W64)
|
|
mkdir -p $(AV_BASE)lib64 && cd $(AV_BASE)lib64 && 7z e -y ../$(AV7Z_W64) $(AV7Z_PRE64)lib/avformat.lib $(AV7Z_PRE64)lib/avcodec.lib $(AV7Z_PRE64)lib/avutil.lib $(AV7Z_PRE64)lib/swscale.lib && cd -
|
|
rm $(AV_BASE)$(AV7Z_W64)
|
|
distclean:
|
|
rm $(AV_BASE)libavformat/avformat.h
|
|
$(OUT_DIR)/fteplug_avplug$(PLUG_NATIVE_EXT): $(AV_BASE)libavformat/avformat.h
|
|
|
|
$(OUT_DIR)/fteplug_avplug$(PLUG_NATIVE_EXT): avplug/avencode.c avplug/avdecode.c plugin.c qvm_api.c
|
|
$(CC) $(BASE_CFLAGS) $(CFLAGS) -DFTEPLUGIN -s -o $@ -shared $(PLUG_CFLAGS) -L$(AV_BASE)lib$(BITS) -I$(AV_BASE) $^ $(PLUG_DEFFILE) $(PLUG_LDFLAGS) -lavcodec -lavformat -lavutil -lswscale
|
|
|
|
#small script for ode
|
|
#FIXME: ode fails to compile under cygwin
|
|
ODE_ARCH=$(FTE_TARGET)
|
|
ifeq ($(ODE_ARCH),)
|
|
ODE_ARCH=unknown
|
|
endif
|
|
ODE_VER=0.14
|
|
ODE_URL=https://bitbucket.org/odedevs/ode/downloads/ode-$(ODE_VER).tar.gz
|
|
ODE_BASE=$(OUT_DIR)/../ode-$(ODE_VER)_$(ODE_ARCH)/
|
|
ODE_LIB=$(ODE_BASE)ode-$(ODE_VER)/ode/src/.libs/libode.a
|
|
$(OUT_DIR)/../ode-$(ODE_VER).tar.gz:
|
|
mkdir -p $(ODE_BASE)
|
|
wget $(ODE_URL) -O $@
|
|
$(ODE_LIB): $(OUT_DIR)/../ode-$(ODE_VER).tar.gz
|
|
mkdir -p $(ODE_BASE) && cd $(ODE_BASE) && tar xvfz $<
|
|
cd $(ODE_BASE)ode-$(ODE_VER)/ && ./bootstrap && ./configure --enable-double-precision --disable-demos --without-x --with-pic CC="$(CC) $(PLUG_CXXFLAGS)" CXX="$(CC) $(PLUG_CXXFLAGS)" --host=`$(CC) -dumpmachine` && make
|
|
|
|
ODE_FILES=../engine/common/com_phys_ode.c ../engine/common/mathlib.c plugin.c qvm_api.c $(ODE_LIB)
|
|
$(OUT_DIR)/fteplug_ode$(PLUG_NATIVE_EXT): $(ODE_FILES)
|
|
$(CC) -s $(BASE_CFLAGS) $(CFLAGS) -DFTEPLUGIN -DODE_STATIC -o $@ -shared $(PLUG_CFLAGS) -I$(ODE_BASE)ode-$(ODE_VER)/include $(ODE_FILES) $(PLUG_DEFFILE) $(PLUG_LDFLAGS) -lstdc++ -lpthread
|
|
#NATIVE_PLUGINS+=ode
|
|
|
|
|
|
BULLET_VER=2.83.7
|
|
BULLET_URL=https://github.com/bulletphysics/bullet3/archive/$(BULLET_VER).tar.gz
|
|
BULLET_BASE=$(OUT_DIR)/../bullet3-$(ODE_VER)_$(FTE_TARGET)/
|
|
BULLET_LIB=$(ODE_BASE)bullet3-$(ODE_VER)/ode/src/.libs/libode.a
|
|
$(OUT_DIR)/../bullet3-$(BULLET_VER).tar.gz:
|
|
mkdir -p $(BULLET_BASE)
|
|
wget $(BULLET_URL) -O $@
|
|
$(BULLET_LIB): $(OUT_DIR)/../bullet3-$(BULLET_VER).tar.gz
|
|
mkdir -p $(BULLET_BASE) && cd $(BULLET_BASE) && tar xvfz $<
|
|
cd $(BULLET_BASE)bullet3-$(BULLET_VER)/ && ./bootstrap && ./configure --enable-double-precision --disable-demos --without-x CXX="$(CC)" CFLAGS="$(PLUG_CFLAGS)" CXXFLAGS="$(PLUG_CXXFLAGS)" --host=`$(CC) -dumpmachine` && make
|
|
|
|
|
|
$(OUT_DIR)/fteplug_bullet$(PLUG_NATIVE_EXT): bullet/bulletplug.c plugin.c qvm_api.c $(BULLET_LIB)
|
|
$(CC) $(BASE_CFLAGS) $(CFLAGS) -DFTEPLUGIN -o $@ -shared $(PLUG_CFLAGS) $^ $(PLUG_DEFFILE) $(PLUG_LDFLAGS)
|
|
#NATIVE_PLUGINS+=bullet
|
|
|
|
|
|
-include Makefile.private
|
|
|
|
$(OUT_DIR)/fteplug_mpq$(PLUG_NATIVE_EXT): mpq/fs_mpq.c mpq/blast.c plugin.c qvm_api.c
|
|
$(CC) $(BASE_CFLAGS) $(CFLAGS) -DFTEPLUGIN -o $@ -shared $(PLUG_CFLAGS) -Impq $^ $(PLUG_DEFFILE) $(PLUG_LDFLAGS)
|
|
NATIVE_PLUGINS+=mpq
|
|
|
|
$(OUT_DIR)/fteplug_xmpp$(PLUG_NATIVE_EXT): jabber/jabberclient.c jabber/jingle.c jabber/sift.c jabber/xml.c plugin.c qvm_api.c ../engine/common/sha1.c emailnot/md5.c
|
|
$(CC) $(BASE_CFLAGS) $(CFLAGS) -DFTEPLUGIN -o $@ -shared $(PLUG_CFLAGS) -Ijabber $^ $(PLUG_DEFFILE) $(PLUG_LDFLAGS) $(LIBRESOLV)
|
|
NATIVE_PLUGINS+=xmpp
|
|
|
|
$(OUT_DIR)/fteplug_qi$(PLUG_NATIVE_EXT): qi/qi.c jabber/xml.c plugin.c qvm_api.c
|
|
$(CC) $(BASE_CFLAGS) $(CFLAGS) -DFTEPLUGIN -o $@ -shared $(PLUG_CFLAGS) -Ijabber $^ $(PLUG_DEFFILE) $(PLUG_LDFLAGS)
|
|
NATIVE_PLUGINS+=qi
|
|
|
|
$(OUT_DIR)/fteplug_cef$(PLUG_NATIVE_EXT): cef/cef.c plugin.c qvm_api.c
|
|
$(CC) $(BASE_CFLAGS) $(CFLAGS) -DFTEPLUGIN -o $@ -shared $(PLUG_CFLAGS) -Icef/2623 $^ $(PLUG_DEFFILE) $(PLUG_LDFLAGS) -Wl,-rpath,. -ldl
|
|
#NATIVE_PLUGINS+=cef
|
|
|
|
#irc plugin can still be built as a qvm.
|
|
$(OUT_DIR)/fteplug_irc$(PLUG_NATIVE_EXT): irc/ircclient.c plugin.c qvm_api.c
|
|
$(CC) $(BASE_CFLAGS) $(CFLAGS) -DFTEPLUGIN -o $@ -shared $(PLUG_CFLAGS) -Iirc $^ $(PLUG_DEFFILE) $(PLUG_LDFLAGS)
|
|
NATIVE_PLUGINS+=irc
|
|
|
|
#for compat with ezquake
|
|
$(OUT_DIR)/fteplug_ezhud$(PLUG_NATIVE_EXT): ezhud/ezquakeisms.c ezhud/hud.c ezhud/hud_common.c ezhud/hud_editor.c plugin.c qvm_api.c
|
|
$(CC) $(BASE_CFLAGS) $(CFLAGS) -DFTEPLUGIN -o $@ -shared $(PLUG_CFLAGS) -Iezhud $^ $(PLUG_DEFFILE) $(PLUG_LDFLAGS)
|
|
NATIVE_PLUGINS+=ezhud
|
|
|
|
native: $(foreach FOO,$(NATIVE_PLUGINS), $(OUT_DIR)/fteplug_$(FOO)$(PLUG_NATIVE_EXT))
|