GNU Build system limps for Linux-based targets.

This commit is contained in:
Clifford T. Matthews 2009-06-21 21:56:27 -06:00
parent 4e5e56c45a
commit 3374007809
9 changed files with 294 additions and 88 deletions

View File

@ -2,7 +2,7 @@
bin_PROGRAMS = executor
noinst_PROGRAMS = map_to_c mkseedtables mkultable mksspairtable opfind
noinst_PROGRAMS = map_to_c mkseedtables mkultable mksspairtable
ctl_bitmap_c_files = arrow_up_active.c arrow_up_inactive.c \
arrow_down_active.c arrow_down_inactive.c \
@ -20,10 +20,6 @@ $(ctl_bitmap_c_files) apple.c $(wind_bitmap_c_files): map_to_c
.map.c: map_to_c
./map_to_c < $< > $@
opfind_SOURCES = config/arch/i386/opfind.c
opfind_CPPFLAGS = -DCOMPILE_FOR_BUILD $(AM_CPPFLAGS)
seedtables.c: mkseedtables
./mkseedtables > $@
@ -39,7 +35,6 @@ rawpatstubs.c: $(srcdir)/makerawblt.pl $(srcdir)/pat-blitters.tmpl
rawsrcstubs.c: $(srcdir)/makerawblt.pl $(srcdir)/src-blitters.tmpl
$(PERL) $(srcdir)/makerawblt.pl < $(srcdir)/src-blitters.tmpl > rawsrcstubs.c
ctlArrows.$(OBJEXT): $(ctl_bitmap_c_files)
stdmbdf.$(OBJEXT): apple.c
qIMIV.$(OBJEXT): seedtables.c
@ -99,7 +94,6 @@ sound_sources = sounddriver.c sound.c soundIMVI.c soundfake.c snth5.c
num_sources = bindec.c float4.c float5.c float7.c floatnext.c toolmath.c \
mathlib.c
misc_sources = desk.c device.c disk.c diskinit.c dump.c trapname.c font.c \
gestalt.c globals.c iu.c launch.c main.c mman.c mmansubr.c notify.c hle.c \
osevent.c osutil.c pack.c scrap.c script.c segment.c serial.c setuid.c \
@ -115,43 +109,22 @@ misc_sources = desk.c device.c disk.c diskinit.c dump.c trapname.c font.c \
emutrap.c emutraptables.c emustubs.c unix_like.c parse.y check_structs.c \
executor.c mkvol/mkvol.c crc.c
front_end_sdl_sources = config/front-ends/sdl/SDL_bmp.c \
config/front-ends/sdl/sdlevents.c \
config/front-ends/sdl/sdl_mem.c \
config/front-ends/sdl/sdlquit.c \
config/front-ends/sdl/sdlscrap.c \
config/front-ends/sdl/sdlwin.c \
config/front-ends/sdl/sdlwm.c \
config/front-ends/sdl/sdlX.c \
config/front-ends/sdl/syswm_map.c \
config/front-ends/sdl/winmain.c
AM_CPPFLAGS=-I$(srcdir)/include -I$(srcdir)/config/front-ends/$(front_end) -I$(srcdir)/config/os/$(host_os) -I$(srcdir)/config/arch/$(host_cpu)
sound_sdl_sources = config/sound/sdl/sdl-sound.c
if CONFIG_ARCH_ALPHA
arch_sources = config/arch/alpha/alpha.c
endif CONFIG_ARCH_ALPHA
os_linux_sources = config/os/linux/linux.c \
config/os/linux/linux_except.c \
config/os/linux/lowglobals-mem.c
if CONFIG_ARCH_I386
arch_alpha_sources = config/arch/alpha/alpha.c
noinst_PROGRAMS += opfind
arch_i386_sources = config/arch/i386/x86patblt.S \
config/arch/i386/x86srcblt.S \
config/arch/i386/xdstubtables.c \
config/arch/i386/sbstubtables.c \
config/arch/i386/i386.c
CLEANFILES += src-blitters.h src-blitters.s pat-blitters.h pat-blitters.s \
asmsamples.h src-blitters-stamp pat-blitters-stamp
# TODO: If we ever support the m68k target again we'll need to make it so that
# we build m68k-callback-stubs.s
opfind_SOURCES = config/arch/i386/opfind.c
arch_m68k_sources = config/arch/m68k/m68k.c \
config/arch/m68k/m68k-callback.c \
config/arch/m68k/m68k-callback-handler.s \
config/arch/m68k/m68k-call-emulator.s \
config/arch/m68k/m68k-destroy.c \
config/arch/m68k/m68k-stack.c \
config/arch/m68k/m68k-trap-handler.s \
config/arch/m68k/trap.S \
config/arch/m68k/m68k-callback-stubs.s
opfind_CPPFLAGS = -DCOMPILE_FOR_BUILD $(AM_CPPFLAGS)
x86patblt.$(OBJEXT): pat-blitters.s
@ -185,12 +158,193 @@ src-blitters-stamp src-blitters.h src-blitters.s: \
$(RM) opfind
touch src-blitters-stamp
executor_SOURCES = $(ctl_sources) $(dial_sources) $(file_sources) \
$(hfs_sources) $(list_sources) $(menu_sources) \
$(print_sources) $(qd_sources) $(res_sources) \
$(te_sources) $(wind_sources) $(ae_sources) \
$(sound_sources) $(num_sources) $(misc_sources) \
$(front_end_sdl_sources) $(sound_sdl_sources) \
$(os_linux_sources) $(arch_i386_sources)
arch_sources = config/arch/i386/x86patblt.S \
config/arch/i386/x86srcblt.S \
config/arch/i386/xdstubtables.c \
config/arch/i386/sbstubtables.c \
config/arch/i386/i386.c
AM_CPPFLAGS=-I$(srcdir)/include -I$(srcdir)/config/front-ends/$(front_end) -I$(srcdir)/config/os/$(host_os) -I$(srcdir)/config/arch/$(host_cpu)
endif CONFIG_ARCH_I386
if CONFIG_ARCH_M68K
arch_sources = config/arch/m68k/m68k.c \
config/arch/m68k/m68k-callback.c \
config/arch/m68k/m68k-callback-handler.s \
config/arch/m68k/m68k-call-emulator.s \
config/arch/m68k/m68k-destroy.c \
config/arch/m68k/m68k-stack.c \
config/arch/m68k/m68k-trap-handler.s \
config/arch/m68k/trap.S \
config/arch/m68k/m68k-callback-stubs.s
max_callbacks=4352 # 4096 plus extra slop
m68k-callback-stubs.s: config/arch/m68k/make_callback_stubs.pl \
config/arch/m68k/m68k-callback-handler.s
$(srcdir)/config/arch/m68k/make_callback_stubs.pl $(max_callbacks)\
$(srcdir)/config/arch/m68k/m68k-callback-handler.s\
./m68k-callback-stubs.s
# Right now we need -DNUM_CALLBACK_SLOTS on the command line when compiling
# m68k-callback.o, but I don't know of an elegant way to do this with automake.
# Since the m68k build is unlikely to work anytime soon, I'll just leave this
# code from our old build system here, but commented out. This will fail, but
# at least it will give anyone playing with the 68k build a hint.
#
# m68k-callback.o: m68k-callback.c
# $(BUILD_GCC) $(BUILD_CFLAGS) -DNUM_CALLBACK_SLOTS=$(max_callbacks)\
# $(HOST_ARCH_DIR)/m68k-callback.c -c -o m68k-callback.o
endif CONFIG_ARCH_M68K
if CONFIG_ARCH_POWERPC
# NOTE: we used to be able to use -mcall-aix when compiling ppc_stubs and
# get the compiler to help us run PPC binaries. That ability hasn't
# worked since we started doing PPC builds on Mac OS X.
arch_sources = powerpc.c ppc_call.c ppc_stubs.c
AM_CPPFLAGS += -D_GNU_SOURCE
endif CONFIG_ARCH_POWERPC
if CONFIG_FRONT_END_DOS
# The DOS port of Executor hasn't ever been built using automake. Most likely
# we'll rip all the DOS support out of the code before ever making it go, but
# if you're adventurous and want to play, feel free.
front_end_sources = config/front-ends/dos/dosclip.c \
config/front-ends/dos/dosdisk.c \
config/front-ends/dos/dosevents.c \
config/front-ends/dos/vga.c \
config/front-ends/dos/aspi.c \
config/front-ends/dos/dosevq.c \
config/front-ends/dos/dpmilock.c \
config/front-ends/dos/deintr.S \
config/front-ends/dos/dosmem.c \
config/front-ends/dos/dosserial.c \
vgavdriver.c
METAASM_ARGS = -define 'DST_SEG=%es:'
endif CONFIG_FRONT_END_DOS
if CONFIG_FRONT_END_NEXTSTEP
# It seems really unlikely that anyone will be building the NEXTSTEP version
# of Executor again, especially with the new GNU Build system. Should you
# really wish to try, look at the Executor source on Github and look for the
# config/front-ends/nextstep directory for source and nextstep.make to see
# the source we used to use as well as some linker flags.
endif CONFIG_FRONT_END_NEXTSTEP
if CONFIG_FRONT_END_SDL
front_end_sources = config/front-ends/sdl/SDL_bmp.c \
config/front-ends/sdl/sdlevents.c \
config/front-ends/sdl/sdl_mem.c \
config/front-ends/sdl/sdlquit.c \
config/front-ends/sdl/sdlscrap.c \
config/front-ends/sdl/sdlwin.c \
config/front-ends/sdl/sdlwm.c \
config/front-ends/sdl/sdlX.c \
config/front-ends/sdl/syswm_map.c \
config/front-ends/sdl/winmain.c
endif CONFIG_FRONT_END_SDL
if CONFIG_FRONT_END_SVGALIB
# This is unlikely to work. Nobody has built the svgalib version of Executor
# in a long time.
front_end_sources = config/front-ends/svgalib/svgalib.c \
config/front-ends/svgalib/svgalibevent.c \
vgavdriver.c
endif CONFIG_FRONT_END_SVGALIB
if CONFIG_FRONT_END_WIN32
# This too is unlikely to work. I believe we stopped working on the win32
# port when Sam created SDL.
front_end_sources = config/front-ends/win32/winevents.c \
config/front-ends/win32/wincursor.c \
config/front-ends/win32/windriver.c
endif CONFIG_FRONT_END_WIN32
if CONFIG_FRONT_END_X
front_end_sources = config/front-ends/x/x.c config/front-ends/x/x_keycodes.c
HAVE_IV = yes
endif CONFIG_FRONT_END_X
if CONFIG_HOST_ALPHA_DEC_OSF
host_sources = config/hosts/alpha-dec-osf/alpha-lowglobals-mem.c
else !CONFIG_HOST_ALPHA_DEC_OSF
host_sources =
endif !CONFIG_HOST_ALPHA_DEC_OSF
if CONFIG_OS_CYGWIN32
os_sources = config/os/cygwin32/cygwin32.c \
config/os/cygwin32/winfs.c \
config/os/cygwin32/win_disk.c \
config/os/cygwin32/win_stat.c \
config/os/cygwin32/win_memory.c \
config/os/cygwin32/win_serial.c \
config/os/cygwin32/win_ntcd.c \
config/os/cygwin32/win_print.c \
config/os/cygwin32/win_beep.c \
config/os/cygwin32/win_cookie.c \
config/os/cygwin32/win_clip.c \
config/os/cygwin32/win_temp.c \
config/os/cygwin32/win_except.c \
config/os/cygwin32/win_time.c \
config/os/cygwin32/win_dongle.c \
config/os/cygwin32/win_queue.c \
config/os/cygwin32/win_screen.c \
config/os/cygwin32/win_vxdiface.c \
config/os/cygwin32/win_keyboard.c \
config/os/cygwin32/win_launch.c \
config/os/cygwin32/win_stdfile.c
bin_PROGRAMS += exemove
endif CONFIG_OS_CYGWIN32
if CONFIG_OS_LINUX
os_sources = config/os/linux/linux.c \
config/os/linux/linux_except.c \
config/os/linux/lowglobals-mem.c
endif CONFIG_OS_LINUX
if CONFIG_OS_MSDOS
os_sources = config/os/msdos/msdos.c \
config/os/msdos/dpmimem.c \
config/os/msdos/dpmicall.c \
config/os/msdos/openmany.c \
config/os/msdos/rmint70.S
endif CONFIG_OS_MSDOS
if CONFIG_OS_NEXT
os_sources = next.c
endif CONFIG_OS_NEXT
if CONFIG_SOUND_DJGPP
sound_sources += config/sound/djgpp/djgpp-sound.c
endif CONFIG_SOUND_DJGPP
if CONFIG_SOUND_LINUX
sound_sources += config/sound/linux/linux-sound.c
endif CONFIG_SOUND_LINUX
if CONFIG_SOUND_SDL
sound_sources += config/sound/sdl/sdl-sound.c
endif CONFIG_SOUND_SDL
executor_SOURCES = $(ctl_sources) $(dial_sources) $(file_sources) \
$(hfs_sources) $(list_sources) $(menu_sources) \
$(print_sources) $(qd_sources) $(res_sources) \
$(te_sources) $(wind_sources) $(ae_sources) \
$(sound_sources) $(num_sources) $(misc_sources) \
$(arch_sources) $(front_end_sources) $(host_sources) \
$(os_sources)

View File

@ -1,16 +1,9 @@
GNU build fixes
stuff is being left behind
can clean up a bunch of repeated partial paths by making
things like archdir=config/arch/$host_arch
{src,pat}-blitters.{h,s}
asmsamples.h
parse.c
Make it so people can select the front-end and the
sound, but that we default to SDL if it's available
Make it so if we don't find libsyn68k, we die properly
(unless we're on a 68k)
figure out how to deal with -framework for mac os x port
See if there's a more elegant solution to the blitters
code (can we nuke the config/arch/i386 prefixes in the
@ -19,12 +12,6 @@
test parallel builds
Add in as much for the targets we don't currently have
a machine for as possible
arch/alpha
arch/m68k
CToPascalCall -- look hard for arguments that sometimes take a pointer
and sometimes take a long

View File

@ -754,7 +754,7 @@ vdriver_set_colors (int first_color, int num_colors, const ColorSpec *colors)
num_colors * sizeof colors[0]);
conversion_func = NULL; /* Invalidate old conversion stuff. */
repaint_screen ();
vdriver_flush_display (); /* Make sure changed colors are visible. */
vdriver_flush_display(); /* Make sure changed colors are visible. */
}
}

View File

@ -20,8 +20,6 @@ AC_GNU_SOURCE
AC_SYS_LARGEFILE
AC_CHECK_LIB(syn68k, initialize_68k_emulator)
# Normalize to our old names
case ${build_cpu} in
@ -54,27 +52,63 @@ case ${host_os} in
;;
esac
# This is a temporary cheat that forces us to use SDL.
# Check for libraries
front_end=sdl
sound_config=sdl
# end of cheat
AC_ARG_WITH(front-end, [AS_HELP_STRING([--with-front-end=arg], [arg must be sdl or x (default is sdl)])])
AC_ARG_WITH(sound, [AS_HELP_STRING([--with-sound=arg], [arg must be linux or sdl (default is sdl)])])
# Right now we blindly look for the libraries we need for the SDL Linux
# port since that's the first one I'll get going with the this file.
if test x$host_cpu != xm68k; then
AC_CHECK_LIB(syn68k, initialize_68k_emulator,,[AC_MSG_ERROR([Can't build Executor for $host_cpu without Syn68k])])
fi
AC_CHECK_LIB(SDL, SDL_Init)
AC_CHECK_LIB(db, __db_ndbm_open)
AC_CHECK_LIB(X11, XInitThreads)
AC_ARG_WITH(front-end,
[AS_HELP_STRING([--with-front-end=arg],
[arg must be sdl or x (default is sdl)])],
[front_end="$withval"],
[if test x"$ac_cv_lib_SDL_SDL_Init" = xyes; then
front_end=sdl
elif test x"$ac_cv_lib_X11_XInitThreads" = xyes; then
front_end=x
else
AC_MSG_ERROR([Must use --with-front-end=sdl or --with-front-end=x])
fi])
if test x$front_end = xsvgalib; then
AC_CHECK_LIB(vga, vga_setmode,,[AC_MSG_ERROR([Can't build Executor with the SVGAlib front-end without svgalib])])
fi
if test x$front_end = xx; then
AC_CHECK_LIB(Xext, XShmPutImage,,[AC_MSG_ERROR([Can't build Executor with the X front-end without libXext])])
fi
AC_ARG_WITH(sound,
[AS_HELP_STRING([--with-sound=arg],
[arg must be linux or sdl (default is sdl)])],
[sound_config="$withval"],
[if test x"$ac_cv_lib_SDL_SDL_Init" = xyes; then
sound_config=sdl
elif test x"$host_os" = xxlinux; then
sound_config=linux
else
AC_MSG_ERROR([Must use --with-sound=sdl or --with-sound=x])
fi])
if test x$host_os = xcygwin32; then
# None of this is tested yet
AC_CHECK_LIB(dxguid, GUID_Valid_Start_Time)
AC_CHECK_LIB(winmm, OpenDriver)
AC_CHECK_LIB(gdi32, CreateDIBitmap)
AC_CHECK_LIB(user32, OpenClipboard)
fi
if test x"$sound_config" = xsdl; then
AC_CHECK_LIB(pthread, pthread_create)
fi
AC_CHECK_LIB(db, __db_ndbm_open)
AC_CHECK_LIB(m, pow)
AC_SUBST(host_cpu)
AC_SUBST(host_os)
AC_SUBST(front_end)
@ -87,6 +121,37 @@ AC_CONFIG_LINKS([build-arch-config.h:config/arch/$build_cpu/$build_cpu.h
front-end-config.h:config/front-ends/$front_end/$front_end.h
sound-config.h:config/sound/$sound_config/$sound_config-sound.h])
# Many of the config options here have not actually been made to work since
# we converted to the modern GNU build system.
AM_CONDITIONAL([CONFIG_ARCH_ALPHA], [test x$host_cpu = xalpha])
AM_CONDITIONAL([CONFIG_ARCH_I386], [test x$host_cpu = xi386])
AM_CONDITIONAL([CONFIG_ARCH_M68K], [test x$host_cpu = xm68k])
AM_CONDITIONAL([CONFIG_ARCH_POWERPC], [test x$host_cpu = xpowerpc])
AM_CONDITIONAL([CONFIG_FRONT_END_DOS], [test x$front_end = xdos])
AM_CONDITIONAL([CONFIG_FRONT_END_NEXTSTEP], [test x$front_end = xnextstep])
AM_CONDITIONAL([CONFIG_FRONT_END_SDL], [test x$front_end = xsdl])
AM_CONDITIONAL([CONFIG_FRONT_END_SVGALIB], [test x$front_end = xsvgalib])
AM_CONDITIONAL([CONFIG_FRONT_END_WIN32], [test x$front_end = xwin32])
AM_CONDITIONAL([CONFIG_FRONT_END_X], [test x$front_end = xx])
AM_CONDITIONAL([CONFIG_HOST_ALPHA_DEC_OSF], [false])
AM_CONDITIONAL([CONFIG_HOST_I386_MSDOS_GO32], [test x$host_os = xmsdos])
AM_CONDITIONAL([CONFIG_HOST_I486_LINUX], [false])
AM_CONDITIONAL([CONFIG_HOST_I486_NEXT_NS3], [test x$host_os = xnext -a x$host_cpu = xi386])
AM_CONDITIONAL([CONFIG_HOST_M68K_NEXT_NS3], [test x$host_os = xnext -a x$host_cpu = xm68k])
AM_CONDITIONAL([CONFIG_OS_CYGWIN32], [test x$host_os = xcygwin32])
AM_CONDITIONAL([CONFIG_OS_LINUX], [test x$host_os = xlinux])
AM_CONDITIONAL([CONFIG_OS_MACOSX], [test x$host_os = xmacosx])
AM_CONDITIONAL([CONFIG_OS_MSDOS], [test x$host_os = xmsdos])
AM_CONDITIONAL([CONFIG_OS_NEXT], [test x$host_os = xnext])
AM_CONDITIONAL([CONFIG_SOUND_DJGPP], [test x$sound_config = xdjgpp])
AM_CONDITIONAL([CONFIG_SOUND_LINUX], [test x$sound_config = xlinux])
AM_CONDITIONAL([CONFIG_SOUND_SDL], [test x$sound_config = xsdl])
AC_CONFIG_FILES([Makefile])
AC_OUTPUT

View File

@ -438,7 +438,7 @@ update_port (DialogPtr dp)
EraseRect (&r);
HideDItem (dp, LAYOUT_PORT_LABEL_NO);
HideDItem (dp, LAYOUT_PORT_MENU_NO);
vdriver_flush_display ();
vdriver_flush_display();
#endif
ShowDItem (dp, LAYOUT_FILENAME_LABEL_NO);
if (!filename_chosen_p)
@ -467,7 +467,7 @@ update_port (DialogPtr dp)
HideDItem (dp, LAYOUT_PORT_MENU_NO);
HideDItem (dp, LAYOUT_FILENAME_LABEL_NO);
HideDItem (dp, LAYOUT_FILENAME_NO);
vdriver_flush_display ();
vdriver_flush_display();
print_where = PRINT_TO_WIN32;
}
}
@ -488,7 +488,7 @@ update_port (DialogPtr dp)
InvalRect (&r);
}
#else
vdriver_flush_display ();
vdriver_flush_display();
#endif
print_where = PRINT_TO_PORT;
}

View File

@ -58,7 +58,7 @@ cursor_debug (const uint8 *datap, const uint8 *maskp, int hot_x, int hot_y)
}
dirty_rect_accrue (0, 0, 16, 16);
dirty_rect_update_screen ();
vdriver_flush_display ();
vdriver_flush_display();
}
#define HOST_SET_CURSOR(d,m,x,y) \

View File

@ -225,7 +225,7 @@ ROMlib_blt_rgn_update_dirty_rect
if (ROMlib_when == WriteInBltrgn)
{
dirty_rect_update_screen ();
vdriver_flush_display ();
vdriver_flush_display();
}
}
@ -367,7 +367,7 @@ blt_pattern_to_bitmap_simple_mode (RgnHandle rh, INTEGER mode,
if (ROMlib_when == WriteInBltrgn)
{
dirty_rect_update_screen ();
vdriver_flush_display ();
vdriver_flush_display();
}
}
}
@ -480,7 +480,7 @@ blt_pixpat_to_pixmap_simple_mode (RgnHandle rh, INTEGER mode,
if (ROMlib_when == WriteInBltrgn)
{
dirty_rect_update_screen ();
vdriver_flush_display ();
vdriver_flush_display();
}
}
}
@ -643,7 +643,7 @@ blt_fancy_pat_mode_to_pixmap (RgnHandle rh, int mode,
if (ROMlib_when == WriteInBltrgn)
{
dirty_rect_update_screen ();
vdriver_flush_display ();
vdriver_flush_display();
}
}

View File

@ -176,7 +176,7 @@ splash_screen_display (boolean_t button_p, char *basename)
}
vdriver_update_screen (0, 0, vdriver_height, vdriver_width, FALSE);
vdriver_flush_display ();
vdriver_flush_display();
return TRUE;
}