quakeforge/config.d/build_control.m4
Bill Currie 6d5ffa9f8e [build] Move to non-recursive make
There's still some cleanup to do, but everything seems to be working
nicely: `make -j` works, `make distcheck` passes. There is probably
plenty of bitrot in the package directories (RPM, debian), though.

The vc project files have been removed since those versions are way out
of date and quakeforge is pretty much dependent on gcc now anyway.

Most of the old Makefile.am files  are now Makemodule.am.  This should
allow for new Makefile.am files that allow local building (to be added
on an as-needed bases).  The current remaining Makefile.am files are for
standalone sub-projects.a

The installable bins are currently built in the top-level build
directory. This may change if the clutter gets to be too much.

While this does make a noticeable difference in build times, the main
reason for the switch was to take care of the growing dependency issues:
now it's possible to build tools for code generation (eg, using qfcc and
ruamoko programs for code-gen).
2020-06-25 11:35:37 +09:00

459 lines
13 KiB
Text

dnl ==================================================================
dnl Find out what to build
dnl ==================================================================
QF_WITH_TARGETS(
clients,
[ --with-clients=<list> compile clients in <list>:],
[fbdev,sdl,svga,x11],dummy
)
QF_WITH_TARGETS(
servers,
[ --with-servers=<list> compile dedicated server:],
[master,nq,qw,qtv],dummy
)
QF_WITH_TARGETS(
tools,
[ --with-tools=<list> compile qf tools:],
[bsp2img,carne,gsc,pak,qfbsp,qfcc,qflight,qflmp,qfmodelgen,qfspritegen,qfvis,qwaq,wad,wav],dummy
)
unset CL_TARGETS
HW_TARGETS=""
QTV_TARGETS=""
QW_TARGETS=""
NQ_TARGETS=""
QWAQ_TARGETS=""
QW_DESKTOP_DATA=""
NQ_DESKTOP_DATA=""
CD_TARGETS=""
SND_TARGETS=""
VID_MODEL_TARGETS=""
VID_REND_TARGETS=""
VID_REND_NOINST_TARGETS=""
VID_TARGETS=""
if test "x$HAVE_FBDEV" = xyes; then
if test "x$ENABLE_clients_fbdev" = xyes; then
QW_TARGETS="$QW_TARGETS qw-client-fbdev\$(EXEEXT)"
NQ_TARGETS="$NQ_TARGETS nq-fbdev\$(EXEEXT)"
CL_TARGETS="$CL_TARGETS FBDEV"
VID_TARGETS="$VID_TARGETS libs/video/targets/libQFfbdev.la"
QF_NEED(vid_render, [sw])
QF_NEED(models, [sw])
QF_NEED(alias, [sw])
QF_NEED(brush, [sw])
QF_NEED(iqm, [sw])
QF_NEED(sprite, [sw])
if test "x$ASM_ARCH" = "xyes"; then
QF_NEED(swrend, [asm])
fi
QF_NEED(vid, [common])
QF_NEED(qw, [client common])
QF_NEED(nq, [client common])
QF_NEED(console, [client])
QF_NEED(libs,[util gamecode ruamoko gib audio image models video console net qw client])
fi
fi
if test "x$HAVE_X" = xyes; then
if test "x$ENABLE_clients_glx" = xyes; then
QF_NEED(vid, [common x11])
fi
if test "x$ENABLE_clients_glslx" = xyes; then
QF_NEED(vid, [common x11])
fi
if test "x$ENABLE_clients_x11" = xyes; then
QW_TARGETS="$QW_TARGETS qw-client-x11\$(EXEEXT)"
NQ_TARGETS="$NQ_TARGETS nq-x11\$(EXEEXT)"
QWAQ_TARGETS="$QWAQ_TARGETS ruamoko/qwaq/qwaq-x11\$(EXEEXT)"
QW_DESKTOP_DATA="$QW_DESKTOP_DATA desktop/quakeforge-qw-x11.desktop"
NQ_DESKTOP_DATA="$NQ_DESKTOP_DATA desktop/quakeforge-nq-x11.desktop"
CL_TARGETS="$CL_TARGETS X11"
VID_TARGETS="$VID_TARGETS libs/video/targets/libQFx11.la"
QF_NEED(vid_render, [sw sw32 gl glsl])
QF_NEED(models, [sw gl glsl])
QF_NEED(alias, [sw gl glsl])
QF_NEED(brush, [sw gl glsl])
QF_NEED(iqm, [sw gl glsl])
QF_NEED(sprite, [sw gl glsl])
if test "x$ASM_ARCH" = "xyes"; then
QF_NEED(swrend, [asm])
fi
QF_NEED(vid, [common x11])
QF_NEED(qw, [client common])
QF_NEED(nq, [client common])
QF_NEED(console, [client])
QF_NEED(libs,[util gamecode ruamoko gib audio image models video console net qw client])
fi
fi
if test "x$HAVE_SDL" = xyes; then
if test "x$ENABLE_clients_sdl" = xyes; then
QW_TARGETS="$QW_TARGETS qw-client-sdl\$(EXEEXT)"
NQ_TARGETS="$NQ_TARGETS nq-sdl\$(EXEEXT)"
QW_DESKTOP_DATA="$QW_DESKTOP_DATA desktop/quakeforge-qw-sdl.desktop"
NQ_DESKTOP_DATA="$NQ_DESKTOP_DATA desktop/quakeforge-nq-sdl.desktop"
CL_TARGETS="$CL_TARGETS SDL"
VID_TARGETS="$VID_TARGETS libs/video/targets/libQFsdl.la"
QF_NEED(vid_render, [sw sw32 gl glsl])
QF_NEED(models, [sw gl glsl])
QF_NEED(alias, [sw gl glsl])
QF_NEED(brush, [sw gl glsl])
QF_NEED(iqm, [sw gl glsl])
QF_NEED(sprite, [sw gl glsl])
if test "x$ASM_ARCH" = "xyes"; then
QF_NEED(swrend, [asm])
fi
QF_NEED(vid, [common sdl])
QF_NEED(qw, [client common sdl])
QF_NEED(nq, [client common sdl])
QF_NEED(console, [client])
QF_NEED(libs,[util gamecode ruamoko gib audio image models video console net qw client])
fi
fi
if test "x$HAVE_SVGA" = xyes; then
if test "x$ENABLE_clients_svga" = xyes; then
QW_TARGETS="$QW_TARGETS qw-client-svga\$(EXEEXT)"
NQ_TARGETS="$NQ_TARGETS nq-svga\$(EXEEXT)"
CL_TARGETS="$CL_TARGETS SVGAlib"
VID_TARGETS="$VID_TARGETS libs/video/targets/libQFsvga.la"
QF_NEED(vid_render, [sw])
QF_NEED(models, [sw])
QF_NEED(alias, [sw])
QF_NEED(brush, [sw])
QF_NEED(iqm, [sw])
QF_NEED(sprite, [sw])
if test "x$ASM_ARCH" = "xyes"; then
QF_NEED(swrend, [asm])
fi
QF_NEED(vid, [common svga])
QF_NEED(qw, [client common])
QF_NEED(nq, [client common])
QF_NEED(console, [client])
QF_NEED(libs,[util gamecode ruamoko gib audio image models video console net qw client])
fi
fi
#if test "x$mingw" = xyes; then
# if test "x$ENABLE_clients_wgl" = xyes; then
# QW_TARGETS="$QW_TARGETS qw-client-wgl\$(EXEEXT)"
# NQ_TARGETS="$NQ_TARGETS nq-wgl\$(EXEEXT)"
# CL_TARGETS="$CL_TARGETS WGL"
# VID_TARGETS="$VID_TARGETS libs/video/targets/libQFwgl.la"
# QF_NEED(vid_render, [gl])
# QF_NEED(models, [gl])
# QF_NEED(alias, [gl])
# QF_NEED(brush, [gl])
# QF_NEED(iqm, [gl])
# QF_NEED(sprite, [gl])
# QF_NEED(vid, [common])
# QF_NEED(qw, [client common])
# QF_NEED(nq, [client common])
# QF_NEED(console, [client])
# QF_NEED(libs,[util gamecode ruamoko gib audio image models video console net qw client])
# fi
#fi
unset SV_TARGETS
if test "x$ENABLE_servers_nq" = xyes; then
NQ_TARGETS="nq-server\$(EXEEXT) $NQ_TARGETS"
SV_TARGETS="$SV_TARGETS nq"
QF_NEED(nq, [common server])
QF_NEED(console, [server])
QF_NEED(top, [nq])
QF_NEED(libs,[util gamecode ruamoko gib image models console net])
fi
if test "x$ENABLE_servers_qtv" = xyes; then
QTV_TARGETS="qtv-server\$(EXEEXT) $QTV_TARGETS"
SV_TARGETS="$SV_TARGETS qtv-server"
# QF_NEED(qtv, [common server])
QF_NEED(console, [server])
QF_NEED(top, [qtv])
QF_NEED(libs,[util models console net qw])
fi
if test "x$ENABLE_servers_master" = xyes; then
HW_TARGETS="hw-master\$(EXEEXT) $HW_TARGETS"
QW_TARGETS="qw-master\$(EXEEXT) $QW_TARGETS"
SV_TARGETS="$SV_TARGETS master"
QF_NEED(top, [hw qw])
QF_NEED(libs,[util console net qw])
fi
if test "x$ENABLE_servers_qw" = xyes; then
QW_TARGETS="qw-server\$(EXEEXT) $QW_TARGETS"
SV_TARGETS="$SV_TARGETS qw"
QF_NEED(qw, [common server])
QF_NEED(console, [server])
QF_NEED(top, [qw])
QF_NEED(libs,[util gamecode ruamoko gib models console net qw])
fi
if test "x$ENABLE_tools_bsp2img" = xyes; then
QF_NEED(tools,[bsp2img])
QF_NEED(libs,[image util])
fi
if test "x$ENABLE_tools_carne" = xyes; then
QF_NEED(tools,[carne])
QF_NEED(libs,[gib ruamoko gamecode util])
fi
if test "x$ENABLE_tools_pak" = xyes; then
QF_NEED(tools,[pak])
QF_NEED(libs,[util])
fi
if test "x$ENABLE_tools_qfbsp" = xyes; then
QF_NEED(tools,[qfbsp])
QF_NEED(libs,[models image util])
fi
if test "x$ENABLE_tools_qfcc" = xyes; then
QF_NEED(tools,[qfcc])
QF_NEED(libs,[gamecode util])
fi
if test "x$ENABLE_tools_qflight" = xyes; then
QF_NEED(tools,[qflight])
QF_NEED(libs,[util])
fi
if test "x$ENABLE_tools_qflmp" = xyes; then
QF_NEED(tools,[qflmp])
QF_NEED(libs,[util])
fi
if test "x$ENABLE_tools_qfmodelgen" = xyes; then
QF_NEED(tools,[qfmodelgen])
QF_NEED(libs,[util])
fi
if test "x$ENABLE_tools_qfspritegen" = xyes; then
QF_NEED(tools,[qfspritegen])
QF_NEED(libs,[util])
fi
if test "x$ENABLE_tools_qfvis" = xyes; then
QF_NEED(tools,[qfvis])
QF_NEED(libs,[util])
fi
if test "x$ENABLE_tools_qwaq" = xyes; then
if test "x$HAVE_PANEL" = xyes -a "x$HAVE_PTHREAD" = xyes; then
QWAQ_TARGETS="$QWAQ_TARGETS ruamoko/qwaq/qwaq-curses\$(EXEEXT)"
fi
QF_NEED(tools,[qfcc])
QF_NEED(ruamoko,[qwaq])
QF_NEED(libs,[ruamoko gamecode util])
fi
if test "x$ENABLE_tools_wad" = xyes; then
QF_NEED(tools,[wad])
QF_NEED(libs,[image util])
fi
if test "x$ENABLE_tools_wav" = xyes; then
QF_NEED(tools,[wav])
QF_NEED(libs,[util])
fi
QF_NEED(top, [libs hw nq qtv qw])
QF_PROCESS_NEED_DIRS(tools,[bsp2img carne pak qfbsp qfcc qflight qflmp qfmodelgen qfspritegen qfvis wad wav])
QF_PROCESS_NEED_FUNC(tools,[bsp2img carne pak qfbsp qfcc qflight qflmp qfmodelgen qfspritegen qfvis wad wav], QF_NEED(top,tools))
QF_PROCESS_NEED_DIRS(libs,[util gamecode ruamoko gib audio image models video console net qw client])
QF_PROCESS_NEED_DIRS(ruamoko,[qwaq])
if test "$ENABLE_tools_qfcc" = "yes" -a "$ENABLE_tools_pak" = "yes"; then
QF_NEED(top, [ruamoko])
qfac_qfcc_include_qf="\$(qfcc_include_qf)"
fi
QF_SUBST(qfac_qfcc_include_qf)
if test x"${top_need_libs}" = xyes; then
qfac_include_qf="\$(include_qf)"
qfac_include_qf_gl="\$(include_qf_gl)"
qfac_include_qf_glsl="\$(include_qf_glsl)"
qfac_include_qf_math="\$(include_qf_math)"
qfac_include_qf_plugin="\$(include_qf_plugin)"
fi
QF_SUBST(qfac_include_qf)
QF_SUBST(qfac_include_qf_gl)
QF_SUBST(qfac_include_qf_glsl)
QF_SUBST(qfac_include_qf_math)
QF_SUBST(qfac_include_qf_plugin)
progs_gz=
if test "$HAVE_ZLIB" = "yes"; then
progs_gz=".gz"
fi
QF_SUBST(progs_gz)
QF_PROCESS_NEED_DIRS(top, [libs hw nq qtv qw tools ruamoko])
QF_PROCESS_NEED_LIBS(swrend, [asm])
QF_PROCESS_NEED_DIRS(vid_render, [gl glsl sw sw32])
QF_PROCESS_NEED_LIBS(models, [gl glsl sw], [libs/models])
QF_PROCESS_NEED_LIBS(alias, [gl glsl sw], [libs/models/alias])
QF_PROCESS_NEED_LIBS(brush, [gl glsl sw], [libs/models/brush])
QF_PROCESS_NEED_LIBS(iqm, [gl glsl sw], [libs/models/iqm])
QF_PROCESS_NEED_LIBS(sprite, [gl glsl sw], [libs/models/sprite])
QF_PROCESS_NEED_LIBS(vid, [common sdl svga x11], [libs/video/targets])
QF_PROCESS_NEED_LIBS(qw, [client common sdl server], [qw/source], a)
QF_PROCESS_NEED_LIBS(nq, [client common sdl server], [nq/source], a)
if test -n "$CL_TARGETS"; then
CD_TARGETS="libs/audio/libQFcd.la"
SND_TARGETS="libs/audio/libQFsound.la"
AUDIO_TARGETS="testsound\$(EXEEXT)"
JOY_TARGETS="libs/video/targets/libQFjs.la"
else
unset CDTYPE
unset SOUND_TYPES
CD_TARGETS=""
JOY_TARGETS=""
SND_TARGETS=""
AUDIO_TARGETS=""
fi
if test "x$enable_shared" = xno; then
PREFER_PIC=
PREFER_NON_PIC=
else
PREFER_PIC="-prefer-pic ${VISIBILITY}"
PREFER_NON_PIC="-prefer-non-pic ${VISIBILITY}"
fi
if test "x$enable_static" = xno; then
STATIC=
else
STATIC=-static
fi
QF_SUBST(PREFER_PIC)
QF_SUBST(PREFER_NON_PIC)
QF_SUBST(STATIC)
AC_ARG_WITH(static-plugins,
[ --with-static-plugins build plugins into executable rather than separate],
static_plugins="$withval", static_plugins=auto)
if test "x$static_plugins" = xauto; then
if test "x$enable_shared" = xno -o "x$SYSTYPE" = xWIN32; then
static_plugins=yes
fi
fi
if test "x$static_plugins" = xyes; then
QF_PROCESS_NEED_STATIC_PLUGINS(vid_render, [sw sw32 glsl gl], [libs/video/renderer])
QF_PROCESS_NEED_STATIC_PLUGINS(console, [server], [libs/console], [server])
QF_PROCESS_NEED_STATIC_PLUGINS(console, [client], [libs/console], [client])
QF_PROCESS_NEED_STATIC_PLUGINS(snd_output, [sdl mme sgi sun win dx oss alsa], [libs/audio/targets])
QF_PROCESS_NEED_STATIC_PLUGINS(snd_render, [jack default], [libs/audio/renderer])
QF_PROCESS_NEED_STATIC_PLUGINS(cd, [xmms sdl sgi win linux file], [libs/audio])
AC_DEFINE(STATIC_PLUGINS, 1, [Define this if you are building static plugins])
if test -n "$SOUND_TYPES"; then
SOUND_TYPES="$SOUND_TYPES (static)"
fi
if test -n "$CDTYPE"; then
CDTYPE="$CDTYPE (static)"
fi
else
QF_PROCESS_NEED_PLUGINS(vid_render, [sw sw32 glsl gl], [libs/video/renderer])
QF_PROCESS_NEED_PLUGINS(console, [server], [libs/console], [server])
QF_PROCESS_NEED_PLUGINS(console, [client], [libs/console], [client])
QF_PROCESS_NEED_PLUGINS(snd_output, [sdl mme sgi sun win dx oss alsa], [libs/audio/targets])
QF_PROCESS_NEED_PLUGINS(snd_render, [jack default], [libs/audio/renderer])
QF_PROCESS_NEED_PLUGINS(cd, [xmms sdl sgi win linux file], [libs/audio])
fi
dnl Do not use -module here, it belongs in makefile.am due to automake
dnl needing it there to work correctly
QF_SUBST(HW_TARGETS)
QF_SUBST(NQ_TARGETS)
QF_SUBST(NQ_DESKTOP_DATA)
QF_SUBST(QTV_TARGETS)
QF_SUBST(QWAQ_TARGETS)
QF_SUBST(QW_TARGETS)
QF_SUBST(QW_DESKTOP_DATA)
QF_SUBST(CD_TARGETS)
QF_SUBST(JOY_TARGETS)
QF_SUBST(SND_TARGETS)
QF_SUBST(AUDIO_TARGETS)
QF_SUBST(VID_MODEL_TARGETS)
QF_SUBST(VID_REND_TARGETS)
QF_SUBST(VID_REND_NOINST_TARGETS)
QF_SUBST(VID_TARGETS)
QF_DEPS(BSP2IMG,
[],
[$(top_builddir)/libs/image/libQFimage.la
$(top_builddir)/libs/util/libQFutil.la],
[$(WIN32_LIBS)],
)
QF_DEPS(QFBSP,
[-I$(top_srcdir)/tools/qfbsp/include],
[$(top_builddir)/libs/models/libQFmodels.la
$(top_builddir)/libs/image/libQFimage.la
$(top_builddir)/libs/util/libQFutil.la],
[$(WIN32_LIBS)],
)
QF_DEPS(QFCC,
[-I$(top_srcdir)/tools/qfcc/include],
[$(top_builddir)/libs/gamecode/libQFgamecode.la
$(top_builddir)/libs/util/libQFutil.la],
[$(WIN32_LIBS)],
)
QF_DEPS(QFCC_TEST,
[],
[$(top_builddir)/libs/ruamoko/libQFruamoko.la
$(top_builddir)/libs/gamecode/libQFgamecode.la
$(top_builddir)/libs/util/libQFutil.la],
[$(WIN32_LIBS)],
)
QF_DEPS(QFLIGHT,
[-I$(top_srcdir)/tools/qflight/include],
[$(top_builddir)/libs/gamecode/libQFgamecode.la
$(top_builddir)/libs/util/libQFutil.la],
[$(WIN32_LIBS)],
)
QF_DEPS(QFLMP,
[],
[$(top_builddir)/libs/image/libQFimage.la
$(top_builddir)/libs/util/libQFutil.la],
[$(WIN32_LIBS)],
)
QF_DEPS(QFMODELGEN,
[-I$(top_srcdir)/tools/qfmodelgen/include],
[$(top_builddir)/libs/util/libQFutil.la],
[$(WIN32_LIBS)],
)
QF_DEPS(QFSPRITEGEN,
[],
[$(top_builddir)/libs/image/libQFimage.la
$(top_builddir)/libs/util/libQFutil.la],
[$(WIN32_LIBS)],
)
QF_DEPS(QFVIS,
[-I$(top_srcdir)/tools/qfvis/include],
[$(top_builddir)/libs/util/libQFutil.la],
[$(WIN32_LIBS)],
)
QF_DEPS(QWAQ,
[-I$(top_srcdir)/ruamoko/qwaq],
[$(top_builddir)/libs/ruamoko/libQFruamoko.la
$(top_builddir)/libs/gamecode/libQFgamecode.la
$(top_builddir)/libs/util/libQFutil.la],
[$(WIN32_LIBS)],
)
QF_DEPS(CARNE,
[],
[$(top_builddir)/libs/gib/libQFgib.la
$(top_builddir)/libs/ruamoko/libQFruamoko.la
$(top_builddir)/libs/gamecode/libQFgamecode.la
$(top_builddir)/libs/util/libQFutil.la],
[$(WIN32_LIBS)],
)
QF_DEPS(PAK,
[],
[$(top_builddir)/libs/util/libQFutil.la],
[$(WIN32_LIBS)],
)
QF_DEPS(WAD,
[],
[$(top_builddir)/libs/image/libQFimage.la
$(top_builddir)/libs/util/libQFutil.la],
[$(WIN32_LIBS)],
)
QF_DEPS(WAV,
[],
[$(top_builddir)/libs/util/libQFutil.la],
[$(WIN32_LIBS)],
)