1 dnl Autoconf configure script for GDB, the GNU debugger.
2 dnl Copyright 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
4 dnl This file is part of GDB.
6 dnl This program is free software; you can redistribute it and/or modify
7 dnl it under the terms of the GNU General Public License as published by
8 dnl the Free Software Foundation; either version 2 of the License, or
9 dnl (at your option) any later version.
11 dnl This program is distributed in the hope that it will be useful,
12 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
13 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 dnl GNU General Public License for more details.
16 dnl You should have received a copy of the GNU General Public License
17 dnl along with this program; if not, write to the Free Software
18 dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20 dnl Process this file with autoconf to produce a configure script.
24 AC_CONFIG_HEADER(config.h:config.in)
31 DLLTOOL=${DLLTOOL-dlltool}
34 AC_CONFIG_AUX_DIR(`cd $srcdir;pwd`/..)
37 dnl gdb doesn't use gettext, but bfd does. We call this to ensure we
38 dnl link with the correct libraries.
42 dnl List of object files added by configure.
48 configdirs="doc testsuite"
53 . ${srcdir}/configure.host
55 . ${srcdir}/configure.tgt
62 AC_CHECK_TOOL(RANLIB, ranlib, :)
71 AC_CHECK_HEADERS(ctype.h curses.h endian.h libintl.h limits.h link.h \
72 memory.h objlist.h ptrace.h sgtty.h stddef.h stdlib.h \
73 string.h strings.h sys/procfs.h sys/ptrace.h sys/reg.h \
74 term.h termio.h termios.h unistd.h wait.h sys/wait.h \
81 AC_CHECK_FUNCS(setpgid sbrk select poll sigaction isascii bzero bcopy \
85 BFD_NEED_DECLARATION(malloc)
86 BFD_NEED_DECLARATION(realloc)
87 BFD_NEED_DECLARATION(free)
88 BFD_NEED_DECLARATION(strerror)
89 BFD_NEED_DECLARATION(strdup)
91 # If we are configured native on GNU/Linux, work around problems with sys/procfs.h
92 if test "${target}" = "${host}"; then
95 AC_DEFINE(START_INFERIOR_TRAPS_EXPECTED,2)
96 AC_DEFINE(sys_quotactl)
101 AC_MSG_CHECKING([for gregset_t type])
102 AC_CACHE_VAL(gdb_cv_have_gregset_t,
103 [AC_TRY_LINK([#include <sys/procfs.h>],[gregset_t *gregsetp = 0],
104 gdb_cv_have_gregset_t=yes, gdb_cv_have_gregset_t=no)])
105 AC_MSG_RESULT($gdb_cv_have_gregset_t)
106 if test $gdb_cv_have_gregset_t = yes; then
107 AC_DEFINE(HAVE_GREGSET_T)
110 AC_MSG_CHECKING([for fpregset_t type])
111 AC_CACHE_VAL(gdb_cv_have_fpregset_t,
112 [AC_TRY_LINK([#include <sys/procfs.h>],[fpregset_t *fpregsetp = 0],
113 gdb_cv_have_fpregset_t=yes, gdb_cv_have_fpregset_t=no)])
114 AC_MSG_RESULT($gdb_cv_have_fpregset_t)
115 if test $gdb_cv_have_fpregset_t = yes; then
116 AC_DEFINE(HAVE_FPREGSET_T)
119 dnl See if host has libm. This is usually needed by simulators.
120 AC_CHECK_LIB(m, main)
122 dnl See if compiler supports "long long" type.
124 AC_MSG_CHECKING(for long long support in compiler)
125 AC_CACHE_VAL(gdb_cv_c_long_long,
127 extern long long foo;
128 switch (foo & 2) { case 0: return 1; }
130 gdb_cv_c_long_long=yes, gdb_cv_c_long_long=no)])
131 AC_MSG_RESULT($gdb_cv_c_long_long)
132 if test $gdb_cv_c_long_long = yes; then
133 AC_DEFINE(CC_HAS_LONG_LONG)
136 dnl See if the compiler and runtime support printing long long
138 AC_MSG_CHECKING(for long long support in printf)
139 AC_CACHE_VAL(gdb_cv_printf_has_long_long,
144 l = (l << 16) + 0x0123;
145 l = (l << 16) + 0x4567;
146 l = (l << 16) + 0x89ab;
147 l = (l << 16) + 0xcdef;
148 sprintf (buf, "0x%016llx", l);
149 return (strcmp ("0x0123456789abcdef", buf));
151 gdb_cv_printf_has_long_long=yes,
152 gdb_cv_printf_has_long_long=no,
153 gdb_cv_printf_has_long_long=no)])
154 if test $gdb_cv_printf_has_long_long = yes; then
155 AC_DEFINE(PRINTF_HAS_LONG_LONG)
157 AC_MSG_RESULT($gdb_cv_printf_has_long_long)
159 dnl See if compiler supports "long double" type. Can't use AC_C_LONG_DOUBLE
160 dnl because autoconf complains about cross-compilation issues. However, this
161 dnl code uses the same variables as the macro for compatibility.
163 AC_MSG_CHECKING(for long double support in compiler)
164 AC_CACHE_VAL(ac_cv_c_long_double,
165 [AC_TRY_COMPILE(, [long double foo;],
166 ac_cv_c_long_double=yes, ac_cv_c_long_double=no)])
167 AC_MSG_RESULT($ac_cv_c_long_double)
168 if test $ac_cv_c_long_double = yes; then
169 AC_DEFINE(HAVE_LONG_DOUBLE)
172 dnl See if the compiler and runtime support printing long doubles
174 AC_MSG_CHECKING(for long double support in printf)
175 AC_CACHE_VAL(gdb_cv_printf_has_long_double,
179 long double f = 3.141592653;
180 sprintf (buf, "%Lg", f);
181 return (strncmp ("3.14159", buf, 7));
183 gdb_cv_printf_has_long_double=yes,
184 gdb_cv_printf_has_long_double=no,
185 gdb_cv_printf_has_long_double=no)])
186 if test $gdb_cv_printf_has_long_double = yes; then
187 AC_DEFINE(PRINTF_HAS_LONG_DOUBLE)
189 AC_MSG_RESULT($gdb_cv_printf_has_long_double)
191 dnl See if the compiler and runtime support scanning long doubles
193 AC_MSG_CHECKING(for long double support in scanf)
194 AC_CACHE_VAL(gdb_cv_scanf_has_long_double,
197 char *buf = "3.141592653";
199 sscanf (buf, "%Lg", &f);
200 return !(f > 3.14159 && f < 3.14160);
202 gdb_cv_scanf_has_long_double=yes,
203 gdb_cv_scanf_has_long_double=no,
204 gdb_cv_scanf_has_long_double=no)])
205 if test $gdb_cv_scanf_has_long_double = yes; then
206 AC_DEFINE(SCANF_HAS_LONG_DOUBLE)
208 AC_MSG_RESULT($gdb_cv_scanf_has_long_double)
212 dnl See if thread_db library is around for Solaris thread debugging. Note that
213 dnl we must explicitly test for version 1 of the library because version 0
214 dnl (present on Solaris 2.4 or earlier) doesn't have the same API.
216 dnl Note that we only want this if we are both native (host == target), and
217 dnl not doing a canadian cross build (build == host).
219 if test ${build} = ${host} -a ${host} = ${target} ; then
222 AC_MSG_CHECKING(for HPUX/OSF thread support)
223 if test -f /usr/include/dce/cma_config.h ; then
224 if test "$GCC" = "yes" ; then
226 AC_DEFINE(HAVE_HPUX_THREAD_SUPPORT)
227 CONFIG_OBS="${CONFIG_OJS} hpux-thread.o"
228 CONFIG_SRCS="${CONFIG_SRCS} hpux-thread.c"
230 AC_MSG_RESULT(no (suppressed because you are not using GCC))
237 AC_MSG_CHECKING(for Solaris thread debugging library)
238 if test -f /usr/lib/libthread_db.so.1 ; then
240 AC_DEFINE(HAVE_THREAD_DB_LIB)
241 CONFIG_OBS="${CONFIG_OBS} sol-thread.o"
242 CONFIG_SRCS="${CONFIG_SRCS} sol-thread.c"
243 AC_CHECK_LIB(dl, dlopen)
244 if test "$GCC" = "yes" ; then
245 # The GNU linker requires the -export-dynamic option to make
246 # all symbols visible in the dynamic symbol table.
247 hold_ldflags=$LDFLAGS
248 AC_MSG_CHECKING(for the ld -export-dynamic flag)
249 LDFLAGS="${LDFLAGS} -Wl,-export-dynamic"
250 AC_TRY_LINK(, [int i;], found=yes, found=no)
251 LDFLAGS=$hold_ldflags
252 AC_MSG_RESULT($found)
253 if test $found = yes; then
254 CONFIG_LDFLAGS="${CONFIG_LDFLAGS} -Wl,-export-dynamic"
262 AC_SUBST(CONFIG_LDFLAGS)
265 dnl Handle optional features that can be enabled.
268 AC_ARG_ENABLE(netrom,
270 [case "${enableval}" in
271 yes) enable_netrom=yes ;;
272 no) enable_netrom=no ;;
273 *) AC_MSG_ERROR(bad value ${enableval} given for netrom option) ;;
276 if test "${enable_netrom}" = "yes"; then
277 CONFIG_OBS="${CONFIG_OBS} remote-nrom.o"
278 CONFIG_SRCS="${CONFIG_SRCS} remote-nrom.c"
281 AC_ARG_ENABLE(warnings,
282 [ --enable-build-warnings Enable compiler warnings if gcc is used],
283 [case "${enableval}" in
284 yes) enable_build_warnings=yes ;;
285 no) enable_build_warnings=no ;;
286 *) AC_MSG_ERROR(bad value ${enableval} given for warnings options) ;;
289 if test "x$enable_build_warnings" = xyes -a "x$GCC" = xyes
291 WARN_CFLAGS="-Wall -Wstrict-prototypes -Wmissing-prototypes"
295 AC_SUBST(WARN_CFLAGS)
299 AC_SUBST(MMALLOC_CFLAGS)
303 [ --with-mmalloc Use memory mapped malloc package],
304 [case "${withval}" in
305 yes) want_mmalloc=true ;;
306 no) want_mmalloc=false;;
307 *) AC_MSG_ERROR(bad value ${withval} for GDB with-mmalloc option) ;;
308 esac],[want_mmalloc=false])dnl
310 if test x$want_mmalloc = xtrue; then
311 AC_DEFINE(USE_MMALLOC)
312 AC_DEFINE(MMCHECK_FORCE)
313 MMALLOC_CFLAGS="-I$srcdir/../mmalloc"
314 MMALLOC='../mmalloc/libmmalloc.a'
317 # start-sanitize-gdbtk
320 AC_ARG_ENABLE(ide, [ --enable-ide Enable IDE support])
321 if test "$enable_ide" = yes; then
329 AC_ARG_WITH(foundry-libs,
330 [ --with-foundry-libs=DIR Use the Foundry SDK in DIR],
331 [FOUNDRY_LIB_BASE=${withval}])
332 AC_SUBST(FOUNDRY_LIB_BASE)
335 # This is the Foundry SDK
337 # These variables are used to determine where the Foundry libs and
338 # header files are located.
340 if test "$FOUNDRY_LIB_BASE" != ""; then
341 LIBGUI="${FOUNDRY_LIB_BASE}/lib/libgui.a"
342 GUI_CFLAGS_X="-I${FOUNDRY_LIB_BASE}/include"
343 if test x$enable_ide = xyes; then
344 IDE_CFLAGS_X="-I${FOUNDRY_LIB_BASE}/include -DIDE"
345 IDE_X="-L${FOUNDRY_LIB_BASE}/lib -lilu-Tk -lilu-c -lilu"
347 IDE_CFLAGS_X="-I${FOUNDRY_LIB_BASE}/include"
349 LIBIDETCL="${FOUNDRY_LIB_BASE}/lib/libidetcl.a"
350 LIBIDE="${FOUNDRY_LIB_BASE}/lib/libide.a"
351 IDE_DEPS="${FOUNDRY_LIB_BASE}/lib/libilu-Tk.a ${FOUNDRY_LIB_BASE}/lib/libilu-c.a ${FOUNDRY_LIB_BASE}/lib/libilu.a"
353 LIBGUI="../libgui/src/libgui.a"
354 GUI_CFLAGS_X="-I${srcdir}/../libgui/src"
355 if test x$enable_ide = xyes; then
356 IDE_CFLAGS_X="-I${srcdir}/../libidetcl/src -I${srcdir}/../libide/src -DIDE -I${srcdir}/../ilu/runtime/mainloop"
357 IDE_X="-L../ilu/runtime/mainloop -lilu-Tk -L../ilu/runtime/c -lilu-c -L../ilu/runtime/kernel -lilu"
359 IDE_CFLAGS_X="-I${srcdir}/../libidetcl/src -I${srcdir}/../libide/src"
361 LIBIDETCL="../libidetcl/src/libidetcl.a"
362 LIBIDE="../libide/src/libide.a"
363 IDE_DEPS="../ilu/runtime/mainloop/libilu-Tk.a ../ilu/runtime/c/libilu-c.a ../ilu/runtime/kernel/libilu.a"
366 AC_SUBST(GUI_CFLAGS_X)
367 AC_SUBST(IDE_CFLAGS_X)
377 [ --enable-gdbtk Enable GDBTK GUI front end],
378 [case "${enableval}" in
382 AC_MSG_WARN([GDB does not support GDBtk on host ${host}. GDBtk will be disabled.])
385 AC_MSG_WARN([GDB does not support GDBtk on host ${host}. GDBtk will be disabled.])
393 AC_MSG_ERROR(bad value ${enableval} given for gdbtk option) ;;
396 # Default is on for everything but go32 and cygwin32
405 # In the cygwin32 environment, we need some additional flags.
406 AC_CACHE_CHECK([for cygwin32], gdb_cv_os_cygwin32,
407 [AC_EGREP_CPP(lose, [
410 #endif],[gdb_cv_os_cygwin32=yes],[gdb_cv_os_cygwin32=no])])
417 WINDRES=${WINDRES-windres}
420 if test x$gdb_cv_os_cygwin32 = xyes; then
421 if test x$enable_ide = xyes; then
422 WIN32LIBS="-ladvapi32"
429 if test "${enable_gdbtk}" = "yes"; then
432 if test -z "${no_tcl}"; then
436 # If $no_tk is nonempty, then we can't do Tk, and there is no
437 # point to doing Tcl.
438 if test -z "${no_tk}"; then
445 # now look for tix library stuff
447 . ${ac_cv_c_tclconfig}/tclConfig.sh
450 tixdir=../tix/win/tcl8.0
453 tixdir=../tix/unix/tk8.0
456 if test "${TCL_SHARED_BUILD}" = "1"; then
457 TIX_LIB_EXT="${TCL_SHLIB_SUFFIX}"
459 # Can't win them all: SunOS 4 (others?) appends a version
460 # number after the ".so"
463 TIX_LIB_EXT="${TIX_LIB_EXT}.1.0" ;;
470 if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then
471 TIXLIB="-L${tixdir} -ltix${TIXVERSION}"
472 TIX_DEPS="${tixdir}/libtix${TIXVERSION}${TIX_LIB_EXT}"
474 TIXLIB="-L${tixdir} -ltix`echo ${TIXVERSION} | tr -d .`"
475 TIX_DEPS="${tixdir}/libtix`echo ${TIXVERSION} | tr -d .`${TIX_LIB_EXT}"
479 ENABLE_CFLAGS="${ENABLE_CFLAGS} -DGDBTK"
481 # Include some libraries that Tcl and Tk want.
482 if test "${enable_ide}" = "yes"; then
483 TCL_LIBS='$(LIBIDETCL) $(LIBIDE) $(LIBGUI) $(IDE) $(ITCL) $(TIX) $(TK) $(TCL) $(X11_LDFLAGS) $(X11_LIBS)'
484 CONFIG_DEPS='$(LIBIDETCL) $(LIBIDE) $(LIBGUI) $(IDE_DEPS) $(ITCL_DEPS) $(TIX_DEPS) $(TK_DEPS) $(TCL_DEPS)'
486 TCL_LIBS='$(LIBGUI) $(ITCL) $(TIX) $(TK) $(TCL) $(X11_LDFLAGS) $(X11_LIBS)'
487 CONFIG_DEPS='$(LIBGUI) $(ITCL_DEPS) $(TIX_DEPS) $(TK_DEPS) $(TCL_DEPS)'
489 # Yes, the ordering seems wrong here. But it isn't.
490 # TK_LIBS is the list of libraries that need to be linked
491 # after Tcl/Tk. Note that this isn't put into LIBS. If it
492 # were in LIBS then any link tests after this point would
493 # try to include things like `$(LIBGUI)', which wouldn't work.
494 GDBTKLIBS="${TCL_LIBS} ${TK_LIBS}"
495 CONFIG_OBS="${CONFIG_OBS} gdbtk.o gdbtk-cmds.o gdbtk-hooks.o"
497 if test x$gdb_cv_os_cygwin32 = xyes; then
498 WIN32LIBS="${WIN32LIBS} -lshell32 -lgdi32 -lcomdlg32 -ladvapi32 -luser32"
499 WIN32LDAPP="-Wl,--subsystem,console"
500 CONFIG_OBS="${CONFIG_OBS} gdbres.o"
506 AC_SUBST(ENABLE_GDBTK)
517 # Enable GPU2 library for MIPS simulator
518 AC_ARG_WITH(sim-gpu2,
519 [ --with-sim-gpu2=DIR Use GPU2 library under given DIR],
522 if test -d "${withval}"
524 LIBS="${LIBS} -L${withval}/lib -lgpu2 -L${x_libraries} -lX11 -lXext"
526 AC_MSG_WARN([Directory ${withval} does not exist.])
528 *) AC_MSG_WARN([--with-sim-gpu2 option invalid for target ${target}])
531 # Enable target accurate FP library
532 AC_ARG_WITH(sim-funit,
533 [ --with-sim-funit=DIR Use target FP lib under given DIR],
536 if test -d "${withval}"
538 LIBS="${LIBS} -L${withval}/lib -lfunit"
540 AC_MSG_WARN([Directory ${withval} does not exist.])
542 *) AC_MSG_WARN([--with-sim-funit option invalid for target ${target}])
546 dnl Solaris puts wctype in /usr/lib/libw.a
547 AC_CHECK_LIB(w, wctype, [LIBS="$LIBS -lw"])
549 AC_SUBST(ENABLE_CFLAGS)
552 AC_SUBST(CONFIG_DEPS)
553 AC_SUBST(CONFIG_SRCS)
555 # Begin stuff to support --enable-shared
556 AC_ARG_ENABLE(shared,
557 [ --enable-shared Use shared libraries],
558 [case "${enableval}" in
566 # If we have shared libraries, try to set rpath reasonably.
567 if test "${shared}" = "true"; then
570 HLDFLAGS='-Wl,+s,+b,$(libdir)'
572 *-*-irix5* | *-*-irix6*)
573 HLDFLAGS='-Wl,-rpath,$(libdir)'
577 *-*-linux* | *-pc-linux-gnu)
578 HLDFLAGS='-Wl,-rpath,$(libdir)'
581 HLDFLAGS='-R $(libdir)'
584 HLDENV='if test -z "$${LD_RUN_PATH}"; then LD_RUN_PATH=$(libdir); else LD_RUN_PATH=$${LD_RUN_PATH}:$(libdir); fi; export LD_RUN_PATH;'
589 # On SunOS, if the linker supports the -rpath option, use it to
590 # prevent ../bfd and ../opcodes from being included in the run time
594 echo 'main () { }' > conftest.c
595 ${CC} -o conftest -Wl,-rpath= conftest.c >/dev/null 2>conftest.t
596 if grep 'unrecognized' conftest.t >/dev/null 2>&1; then
598 elif grep 'No such file' conftest.t >/dev/null 2>&1; then
600 elif grep 'do not mix' conftest.t >/dev/null 2>&1; then
602 elif grep 'some text already loaded' conftest.t >/dev/null 2>&1; then
604 elif test "${shared}" = "true"; then
605 HLDFLAGS='-Wl,-rpath=$(libdir)'
607 HLDFLAGS='-Wl,-rpath='
609 rm -f conftest.t conftest.c conftest
614 # End stuff to support --enable-shared
616 # target_subdir is used by the testsuite to find the target libraries.
618 if test "${host}" != "${target}"; then
619 target_subdir="${target_alias}/"
621 AC_SUBST(target_subdir)
624 host_makefile_frag=${srcdir}/config/${gdb_host_cpu}/${gdb_host}.mh
625 if test ! -f ${host_makefile_frag}; then
626 AC_MSG_ERROR("*** Gdb does not support host ${host}")
628 frags="$frags $host_makefile_frag"
630 target_makefile_frag=${srcdir}/config/${gdb_target_cpu}/${gdb_target}.mt
631 if test ! -f ${target_makefile_frag}; then
632 AC_MSG_ERROR("*** Gdb does not support target ${target}")
634 frags="$frags $target_makefile_frag"
636 AC_SUBST_FILE(host_makefile_frag)
637 AC_SUBST_FILE(target_makefile_frag)
642 s/XM_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
643 ' ${host_makefile_frag}`
646 s/TM_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
647 ' ${target_makefile_frag}`
649 # these really aren't orthogonal true/false values of the same condition,
650 # but shells are slow enough that I like to reuse the test conditions
652 if test "${target}" = "${host}"; then
654 s/NAT_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
655 ' ${host_makefile_frag}`
657 # GDBserver is only useful in a "native" enviroment
658 # configdirs=`echo $configdirs | sed 's/gdbserver//'`
662 # If hostfile (XM_FILE) and/or targetfile (TM_FILE) and/or nativefile
663 # (NAT_FILE) is not set in config/*/*.m[ht] files, we don't make the
664 # corresponding links. But we have to remove the xm.h files and tm.h
665 # files anyway, e.g. when switching from "configure host" to
671 if test "${hostfile}" != ""; then
672 files="${files} config/${gdb_host_cpu}/${hostfile}"
673 links="${links} xm.h"
676 if test "${targetfile}" != ""; then
677 files="${files} config/${gdb_target_cpu}/${targetfile}"
678 links="${links} tm.h"
681 if test "${nativefile}" != ""; then
682 files="${files} config/${gdb_host_cpu}/${nativefile}"
683 links="${links} nm.h"
685 # A cross-only configuration.
686 files="${files} config/nm-empty.h"
687 links="${links} nm.h"
689 # start-sanitize-gdbtk
691 # Make it possible to use the GUI without doing a full install
692 if test "${enable_gdbtk}" = "yes" -a ! -d gdbtcl ; then
693 if test "$LN_S" = "ln -s" -a ! -f gdbtcl ; then
694 echo linking $srcdir/gdbtcl to gdbtcl
695 $LN_S $srcdir/gdbtcl gdbtcl
697 echo Warning: Unable to link $srcdir/gdbtcl to gdbtcl. You will need to do a
698 echo " " make install before you are able to run the GUI.
703 AC_LINK_FILES($files, $links)
705 dnl Check for exe extension set on certain hosts (e.g. Win32)
708 AC_CONFIG_SUBDIRS($configdirs)
709 AC_OUTPUT(Makefile .gdbinit:gdbinit.in,
711 dnl Autoconf doesn't provide a mechanism for modifying definitions
712 dnl provided by makefile fragments.
714 if test "${nativefile}" = ""; then
715 sed -e '/^NATDEPFILES[[ ]]*=[[ ]]*/s//# NATDEPFILES=/' \
716 < Makefile > Makefile.tem
717 mv -f Makefile.tem Makefile
721 sed -e '/^TM_FILE[ ]*=/s,^TM_FILE[ ]*=[ ]*,&config/'"${gdb_target_cpu}"'/,
722 /^XM_FILE[ ]*=/s,^XM_FILE[ ]*=[ ]*,&config/'"${gdb_host_cpu}"'/,
723 /^NAT_FILE[ ]*=/s,^NAT_FILE[ ]*=[ ]*,&config/'"${gdb_host_cpu}"'/,' <Makefile >Makefile.tmp
724 mv -f Makefile.tmp Makefile
727 case x$CONFIG_HEADERS in
733 gdb_host_cpu=$gdb_host_cpu
734 gdb_target_cpu=$gdb_target_cpu
735 nativefile=$nativefile