388 lines
11 KiB
Plaintext
388 lines
11 KiB
Plaintext
dnl - Process this file with autoconf to produce a configure script.
|
|
dnl
|
|
dnl Copyright (C) 1997-2007 ZSNES Team ( zsKnight, _Demo_, pagefault, Nach )
|
|
dnl
|
|
dnl http://www.zsnes.com
|
|
dnl http://sourceforge.net/projects/zsnes
|
|
dnl https://zsnes.bountysource.com
|
|
dnl
|
|
dnl This program is free software; you can redistribute it and/or
|
|
dnl modify it under the terms of the GNU General Public License
|
|
dnl version 2 as published by the Free Software Foundation.
|
|
dnl
|
|
dnl This program is distributed in the hope that it will be useful,
|
|
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
dnl GNU General Public License for more details.
|
|
dnl
|
|
dnl You should have received a copy of the GNU General Public License
|
|
dnl along with this program; if not, write to the Free Software
|
|
dnl Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
|
|
AC_INIT([zsnes], [], [http://www.zsnes.com])
|
|
AC_PREREQ(2.50)
|
|
AC_CONFIG_SRCDIR(init.asm)
|
|
AC_CONFIG_HEADER(config.h)
|
|
|
|
VERSION=1.51
|
|
|
|
CFLAGS="$CFLAGS -pipe -I. -I/usr/local/include -I/usr/include"
|
|
dnl - You might wanna change -I/usr/include if you're trying to do this with
|
|
dnl Mingw, because it doesnt have a standard file tree. Maybe if ming do this
|
|
dnl else do -I/usr/include. Or some shit. You figure it out.
|
|
|
|
LDFLAGS="$LDFLAGS -L/usr/local/lib -L/usr/lib"
|
|
dnl - Same thing here.
|
|
|
|
dnl - Where are our compilers, and who are we compiling for?
|
|
AC_CANONICAL_TARGET
|
|
AC_PROG_INSTALL
|
|
AC_PROG_CC
|
|
AC_PROG_CXX
|
|
|
|
AC_ARG_WITH(nasm-prefix,
|
|
[ --with-nasm-prefix=PFX Prefix where nasm is installed (optional)],
|
|
nasm_prefix="$withval",
|
|
nasm_prefix="")
|
|
AC_CHECK_TOOL(NASMPATH,nasm,"no",$nasm_prefix:$PATH)
|
|
if test x$NASMPATH = xno; then
|
|
AC_MSG_ERROR(You need NASM installed to compile ZSNES)
|
|
fi
|
|
|
|
AC_ARG_WITH(zconf-path,
|
|
[ --with-zconf-path=PATH Path where ZSNES looks for zsnesl.cfg (default is .zsnes)],
|
|
ZCONF="$withval",
|
|
ZCONF="")
|
|
|
|
CFLAGS="$CFLAGS -D__UNIXSDL__"
|
|
NFLAGS="$NFLAGS -w-orphan-labels -D__UNIXSDL__"
|
|
PSRFLAGS="$PSRFLAGS -D__UNIXSDL__"
|
|
MMLIB_FILES="\$(MMLIB_D)/mm.o"
|
|
STRIP="-s"
|
|
case x$target in
|
|
*-*-linux*)
|
|
NFLAGS="$NFLAGS -f elf -DELF"
|
|
MMLIB_FILES="$MMLIB_FILES \$(MMLIB_D)/linux.o"
|
|
;;
|
|
*-*-beos*)
|
|
CFLAGS="$CFLAGS -D__BEOS__"
|
|
NFLAGS="$NFLAGS -D__BEOS__ -f elf -DELF"
|
|
;;
|
|
*-*-*bsd*)
|
|
CFLAGS="$CFLAGS -D__BSDSDL__"
|
|
NFLAGS="$NFLAGS -D__BSDSDL__ -f elf -DELF"
|
|
;;
|
|
*-*-darwin* )
|
|
CFLAGS="$CFLAGS -D__MACOSX__ -D__OPENGL__ -arch i386 -mdynamic-no-pic -mstackrealign -fno-unit-at-a-time"
|
|
NFLAGS="$NFLAGS -D__MACOSX__ -D__OPENGL__ -f macho -DMACHO"
|
|
PSRFLAGS="$PSRFLAGS -D__OPENGL__"
|
|
MMLIB_FILES="$MMLIB_FILES \$(MMLIB_D)/osx.o"
|
|
STRIP=""
|
|
LDFLAGS="$LDFLAGS -framework Carbon -framework IOKit -framework Foundation -framework OpenGL -mdynamic-no-pic -read_only_relocs suppress -undefined dynamic_lookup"
|
|
GL_DRAW="\$(PORT_D)/gl_draw.o"
|
|
found_opengl=yes
|
|
;;
|
|
*-*-cygwin* | *-*-*ming*)
|
|
NFLAGS="$NFLAGS -f win32"
|
|
;;
|
|
*)
|
|
AC_MSG_ERROR(This target is not supported)
|
|
;;
|
|
esac
|
|
|
|
if test x$ZCONF != x; then
|
|
CFLAGS="$CFLAGS -DZCONF=\"\\\"$ZCONF\\\"\""
|
|
fi
|
|
|
|
dnl - Library checks (requisites marked *, others optionnal):
|
|
dnl - libSDL*, zlib*, libpng, curses, libao, OpenGL, JMAlib
|
|
|
|
dnl - libsdl stuff
|
|
AM_PATH_SDL(1.2.0,,[AC_MSG_ERROR(SDL >= 1.2.0 is required)])
|
|
|
|
dnl - zlib stuff
|
|
AM_PATH_ZLIB(1.2.3,,[AC_MSG_ERROR(zlib >= 1.2.3 is required)])
|
|
CFLAGS="$CFLAGS $ZLIB_CFLAGS"
|
|
LDFLAGS="$LDFLAGS $ZLIB_LIBS"
|
|
|
|
dnl - libpng stuff
|
|
AM_PATH_LIBPNG(1.2.0,,)
|
|
CFLAGS="$CFLAGS $SDL_CFLAGS"
|
|
LDFLAGS="$LDFLAGS $SDL_LIBS"
|
|
|
|
if test x$with_libpng != xyes; then
|
|
CFLAGS="$CFLAGS -DNO_PNG"
|
|
NFLAGS="$NFLAGS -DNO_PNG"
|
|
PSRFLAGS="$PSRFLAGS -DNO_PNG"
|
|
else
|
|
CFLAGS="$CFLAGS $LIBPNG_CFLAGS"
|
|
LDFLAGS="$LDFLAGS $LIBPNG_LIBS"
|
|
fi
|
|
|
|
dnl - debugger stuff
|
|
AC_ARG_ENABLE(debugger,
|
|
[ --disable-debugger Build without the zsnes debugger],
|
|
,
|
|
enable_debugger=yes)
|
|
AC_MSG_CHECKING(if you want the zsnes debugger)
|
|
AC_MSG_RESULT($enable_debugger)
|
|
if test x$enable_debugger != xyes; then
|
|
CFLAGS="$CFLAGS -DNO_DEBUGGER"
|
|
NFLAGS="$NFLAGS -DNO_DEBUGGER"
|
|
PSRFLAGS="$PSRFLAGS -DNO_DEBUGGER"
|
|
DEBUGGER_FILES=""
|
|
else
|
|
DEBUGGER_FILES="debugasm.o debugger.o"
|
|
|
|
AC_CHECK_LIB(curses, initscr, found_curses=yes,found_curses=no)
|
|
AC_CHECK_LIB(ncurses, initscr, found_ncurses=yes,found_ncurses=no)
|
|
AC_CHECK_LIB(pdcurses, initscr, found_pdcurses=yes,found_pdcurses=no)
|
|
|
|
if test x$found_curses = xyes; then
|
|
LDFLAGS="$LDFLAGS -lcurses"
|
|
else
|
|
if test x$found_ncurses = xyes; then
|
|
CFLAGS="$CFLAGS -DNCURSES"
|
|
LDFLAGS="$LDFLAGS -lncurses"
|
|
else
|
|
if test x$found_pdcurses = xyes; then
|
|
LDFLAGS="$LDFLAGS -lpdcurses"
|
|
else
|
|
AC_MSG_ERROR(A curses library is required to use the debugger)
|
|
DEBUGGER_FILES=""
|
|
fi
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
dnl - libao stuff
|
|
AC_ARG_ENABLE(libao,
|
|
[ --enable-libao Build with libao support],
|
|
want_ao=$enableval,
|
|
want_ao=no)
|
|
AC_MSG_CHECKING(if you want libao support)
|
|
AC_MSG_RESULT($want_ao)
|
|
if test x$want_ao = xyes; then
|
|
AC_CHECK_LIB(ao, ao_initialize, got_ao=yes, got_ao=no)
|
|
|
|
if test x$got_ao = xyes; then
|
|
CFLAGS="$CFLAGS -D__LIBAO__"
|
|
LDFLAGS="$LDFLAGS -lao"
|
|
else
|
|
AC_MSG_ERROR(Couldn't find libao)
|
|
fi
|
|
fi
|
|
|
|
dnl - opengl stuff
|
|
if test x$found_opengl != xyes; then
|
|
AC_ARG_ENABLE(opengl,
|
|
[ --disable-opengl Build without OpenGL support],
|
|
,
|
|
enable_opengl=yes)
|
|
AC_ARG_WITH(
|
|
opengl-prefix,
|
|
[ --with-opengl-prefix=PFX Prefix where OpenGL is installed (optional)],
|
|
opengl_prefix="$withval",
|
|
opengl_prefix="")
|
|
if test x$enable_opengl != xno; then
|
|
AC_PATH_X
|
|
if test x$opengl_prefix != x; then
|
|
CFLAGS="$CFLAGS -I$opengl_prefix/include"
|
|
LDFLAGS-"$LDFLAGS -L$opengl_prefix/lib"
|
|
fi
|
|
if test x$x_libraries != x; then
|
|
LDFLAGS="$LDFLAGS -L$x_libraries"
|
|
fi
|
|
AC_CHECK_LIB(GL, glGetError, found_opengl=yes,found_opengl=no)
|
|
fi
|
|
|
|
AC_MSG_CHECKING(for OpenGL)
|
|
if test x$enable_opengl != xno; then
|
|
if test x$found_opengl = xyes; then
|
|
LDFLAGS="$LDFLAGS -lGL"
|
|
CFLAGS="$CFLAGS -D__OPENGL__"
|
|
NFLAGS="$NFLAGS -D__OPENGL__"
|
|
PSRFLAGS="$PSRFLAGS -D__OPENGL__"
|
|
GL_DRAW="\$(PORT_D)/gl_draw.o"
|
|
fi
|
|
AC_MSG_RESULT($found_opengl)
|
|
else
|
|
AC_MSG_RESULT(disabled by user)
|
|
fi
|
|
fi
|
|
|
|
dnl - jma stuff
|
|
AC_ARG_ENABLE(jma,
|
|
[ --disable-jma Build without JMA support],
|
|
,
|
|
enable_jma=yes)
|
|
AC_MSG_CHECKING(for JMA support)
|
|
AC_MSG_RESULT($enable_jma)
|
|
if test x$enable_jma != xyes; then
|
|
CFLAGS="$CFLAGS -DNO_JMA"
|
|
NFLAGS="$NFLAGS -DNO_JMA"
|
|
PSRFLAGS="$PSRFLAGS -DNO_JMA"
|
|
fi
|
|
|
|
dnl - Various debug and optimization option checks
|
|
AM_ARCH_DETECT()
|
|
|
|
AC_ARG_ENABLE(debug,
|
|
[ --enable-debug Build GDB friendly binary (zsnesd)],
|
|
debug=$enableval,
|
|
debug=no)
|
|
AC_MSG_CHECKING(if you want gdb friendly executable)
|
|
AC_MSG_RESULT($debug)
|
|
if test x$debug = xyes; then
|
|
dnl - It is easier to debug zsnes with no optimization enabled.
|
|
ZSNESEXE="zsnesd"
|
|
PSR_TEMP=""
|
|
CFLAGS="$CFLAGS -Wall -W -DDEBUG -O0 -fno-omit-frame-pointer -gstabs3"
|
|
NFLAGS="$NFLAGS -DDEBUG -g -F stabs -s -O0"
|
|
else
|
|
ZSNESEXE="zsnes"
|
|
PSR_TEMP=" rm -f t_\$*.c"
|
|
|
|
CFLAGSBAK="$CFLAGS"
|
|
AC_ARG_VAR(force_arch, [Force architecture to optimize GCC/G++ for])
|
|
AC_MSG_CHECKING(which cpu architecture to optimize for)
|
|
if test x$force_arch != x; then
|
|
CFLAGS="$CFLAGS -march=$force_arch"
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]])],
|
|
[AC_MSG_RESULT(forcing $force_arch)],
|
|
[AC_MSG_RESULT($force_arch ??)
|
|
AC_MSG_WARN(incorrect force_arch parameter)
|
|
force_arch=""
|
|
CFLAGS="$CFLAGSBAK"
|
|
AC_MSG_CHECKING(for autodetected architecture)])
|
|
else
|
|
if test x$ARCH_INFO = x; then
|
|
case x$target in
|
|
i686-*-*)
|
|
AC_MSG_RESULT(guessing i686)
|
|
CFLAGS="$CFLAGS -march=i686"
|
|
;;
|
|
i586-*-*)
|
|
AC_MSG_RESULT(guessing i586)
|
|
CFLAGS="$CFLAGS -march=i586"
|
|
;;
|
|
i486-*-*)
|
|
AC_MSG_RESULT(guessing i486)
|
|
CFLAGS="$CFLAGS -march=i486"
|
|
;;
|
|
*)
|
|
AC_MSG_RESULT(guessing i386)
|
|
CFLAGS="$CFLAGS -march=i386"
|
|
AC_MSG_WARN([This is not what you want, use --target or force-arch])
|
|
;;
|
|
esac
|
|
else
|
|
AC_MSG_RESULT($ARCH_INFO)
|
|
CFLAGS="$CFLAGS -march=$ARCH_INFO"
|
|
fi
|
|
fi
|
|
|
|
AC_ARG_ENABLE(release,
|
|
[ --enable-release Build ultra-optimized release binary (zsnes)],
|
|
release=$enableval,
|
|
release=no)
|
|
AC_MSG_CHECKING(if you want crazy optimizations)
|
|
AC_MSG_RESULT($release)
|
|
if test x$release = xyes; then
|
|
if test x$force_arch = x; then
|
|
AC_MSG_WARN([If you intend to distribute this binary, make sure you use force_arch and set to i586 (or whichever CPU Arch you intend for)])
|
|
fi
|
|
CFLAGS="$CFLAGS -O3 -fomit-frame-pointer -fprefetch-loop-arrays -fforce-addr $STRIP -D__RELEASE__"
|
|
NFLAGS="$NFLAGS -O99999999 -D__RELEASE__"
|
|
else
|
|
CFLAGS="$CFLAGS -O3 -fomit-frame-pointer $STRIP"
|
|
NFLAGS="$NFLAGS -O1"
|
|
fi
|
|
fi
|
|
CXXFLAGS="$CFLAGS -fno-rtti"
|
|
|
|
if test x$enable_jma != xno; then
|
|
JMA_FILES="\$(JMA_D)/7zlzma.o \$(JMA_D)/crc32.o \$(JMA_D)/iiostrm.o\
|
|
\$(JMA_D)/inbyte.o \$(JMA_D)/jma.o \$(JMA_D)/lzma.o\
|
|
\$(JMA_D)/lzmadec.o \$(JMA_D)/winout.o \$(JMA_D)/zsnesjma.o"
|
|
ZC="$CXX"
|
|
ZCFLAGS="$CXXFLAGS"
|
|
else
|
|
JMA_FILES=""
|
|
ZC="$CC"
|
|
ZCFLAGS="$CFLAGS"
|
|
fi
|
|
|
|
dnl - Check for header files
|
|
AC_HEADER_STDC
|
|
AC_HEADER_MAJOR
|
|
|
|
dnl - Create Makefile
|
|
AC_SUBST(VERSION)
|
|
AC_SUBST(NASMPATH)
|
|
AC_SUBST(ZC)
|
|
AC_SUBST(ZCFLAGS)
|
|
AC_SUBST(PSRFLAGS)
|
|
AC_SUBST(NFLAGS)
|
|
AC_SUBST(ZSNESEXE)
|
|
AC_SUBST(GL_DRAW)
|
|
AC_SUBST(JMA_FILES)
|
|
AC_SUBST(MMLIB_FILES)
|
|
AC_SUBST(DEBUGGER_FILES)
|
|
AC_SUBST(PSR_TEMP)
|
|
|
|
AC_CONFIG_FILES(Makefile)
|
|
touch -t 198001010000 makefile.dep
|
|
|
|
AC_OUTPUT
|
|
|
|
dnl - Info output
|
|
echo
|
|
echo
|
|
echo ZSNES v$VERSION
|
|
echo
|
|
echo "SDL support Version `$SDL_CONFIG --version`"
|
|
echo "NASM support `nasm -v`"
|
|
echo "zlib support Version $ZLIB_VERSION"
|
|
echo $ECHO_N "PNG support $ECHO_C"
|
|
if test x$with_libpng = xyes; then
|
|
echo "${ECHO_T}Yes, version $LIBPNG_VERSION"
|
|
elif test x$enable_libpng = xno; then
|
|
echo "${ECHO_T}Disabled by user"
|
|
else
|
|
echo "${ECHO_T}Disabled, library not found"
|
|
fi
|
|
echo $ECHO_N "OpenGL support $ECHO_C"
|
|
if test x$found_opengl = xyes; then
|
|
echo "${ECHO_T}Yes"
|
|
elif test x$enable_opengl = xno; then
|
|
echo "${ECHO_T}Disabled by user"
|
|
else
|
|
echo "${ECHO_T}Disabled, library not found"
|
|
fi
|
|
echo $ECHO_N "JMA support $ECHO_C"
|
|
if test x$enable_jma = xno; then
|
|
echo "${ECHO_T}Disabled by user"
|
|
else
|
|
echo "${ECHO_T}Yes"
|
|
fi
|
|
echo $ECHO_N "ZSNES debugger $ECHO_C"
|
|
if test x$enable_debugger = xno; then
|
|
echo "${ECHO_T}Disabled"
|
|
else
|
|
echo "${ECHO_T}Enabled"
|
|
fi
|
|
echo
|
|
echo The binary will be installed in $prefix/bin
|
|
echo
|
|
echo $ECHO_N "Configure complete, now type '$ECHO_C"
|
|
case x$target in
|
|
*-*-*bsd*)
|
|
echo $ECHO_N "${ECHO_T}g$ECHO_C"
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
echo "${ECHO_T}make' and pray."
|
|
echo
|