Delete obsolete build files under src/MacOSX, which are no longer

needed since the same build can be produced from src/Unix via
./configure --enable-macosx-gui.
This commit is contained in:
Alexei Svitkine 2012-07-03 23:02:29 -04:00
parent 145f6c3d02
commit 4f63169cc9
5 changed files with 0 additions and 1578 deletions

View File

@ -1,55 +0,0 @@
How to build this source
------------------------
1) Install the OS X Development tools
Source now only builds on 10.2 and 10.3. On 10.1, there are a few
compile and link errors that I just can't be bothered to fix.
On 10.4 when doing Xcode builds, there are problems with the way that
I have built libslirp.a. For now, do "make" instead of "make ide".
2) Open a Terminal, and cd to BasiliskII-1.0/src/MacOSX
3) autoconf
autoheader
./configure
This creates some symlinks to files in the Unix source and
/usr/libexec directories, generates ./configure, and runs it.
The end result is a Makefile and some header files
4) make
This should generate the uae_cpu emulator core's source,
compile the SLIRP sources and then the application.
* It is also possible to use the OS X integrated development environment
(i.e. "Project Builder" or Xcode) to build the application, instead of make.
Instead of step 4) above, do these steps:
4) make ide
This should generate the uae_cpu emulator core's source,
and then open the project in the Project Builder or Xcode IDE.
5) From the Build menu, choose 'Build' or 'Build & Run'
This should build everything
Notes:
1) Compiling cpuemu.cpp takes 58 seconds on my 384MB G4 400.
Compiling it as separate files (cpuemu1.cpp thru cpuemu8.cpp)
takes 68 seconds on the same machine. If you have less RAM,
it may be faster to compile it as separate files.
2) If you want to change the addressing default
(which is currently direct), you have to reconfigure.
(i.e. make clean; ./configure --enable-addressing=banks)
3) To emulate a Mac Classic, or any Mac with 24bit addressing,
the app needs to be built with the above (bank) style addressing.

View File

@ -1,307 +0,0 @@
# Unix makefile for Basilisk II
## System specific configuration
SHELL = /bin/sh
HOST_CC = @CC@
HOST_CXX = @CXX@
CC_PROG = @CC@
CXX_PROG = @CXX@
CFLAGS = @CFLAGS@
CXXFLAGS = @CXXFLAGS@
CPPFLAGS = @CPPFLAGS@ -I../include -I. @CPUINCLUDES@ -I../slirp
DEFS = @DEFS@ @DEFINES@ -D_REENTRANT -DAQUA -DFPU_IEEE
LDFLAGS = @LDFLAGS@
LIBS = @LIBS@
CFLAGS += -g
CPPFLAGS += -I../uae_cpu
CXXFLAGS += -g
LN_S = ln -s
## Compilers selection (XXX hackery for 10.2 cross-compilation...)
SDK_VERSION.ppc = @PPC_SDK_VERSION@
SDK_VERSION = $(SDK_VERSION.$(ARCH))
ifeq ($(SDK_VERSION), 10.2.8)
CC_PROG = gcc-3.3
CXX_PROG = g++-3.3
SDK_ROOT = /Developer/SDKs/MacOSX10.2.8.sdk
CC_ROOT = -F$(SDK_ROOT)/System/Library/Frameworks
LDFLAGS += -Wl,-syslibroot,$(SDK_ROOT)
endif
ifeq ($(SDK_VERSION), 10.3.9)
CC_ROOT = -isysroot /Developer/SDKs/MacOSX10.3.9.sdk -mmacosx-version-min=10.3
endif
ifeq ($(SDK_VERSION), 10.4)
CC_ROOT = -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4
endif
CC = $(CC_PROG) $(CC_ROOT) -arch $(ARCH)
CXX = $(CXX_PROG) $(CC_ROOT) -arch $(ARCH)
SLIRP_CFLAGS = @SLIRP_CFLAGS@
SLIRP_SRCS = @SLIRP_SRCS@
SLIRP_OBJS = $(SLIRP_SRCS:../slirp/%.c=obj/%.o)
## CPU emulation code
WANT_JIT = @WANT_JIT@
WANT_JIT_DEBUG = @WANT_JIT_DEBUG@
USE_JIT = no
CPUSRCS = \
../uae_cpu/basilisk_glue.cpp ../uae_cpu/readcpu.cpp \
../uae_cpu/memory.cpp ../uae_cpu/newcpu.cpp ../uae_cpu/fpu/fpu_ieee.cpp
GEN_CPUSRCS = \
cpustbl.cpp cpudefs.cpp \
cpuemu1.cpp cpuemu2.cpp cpuemu3.cpp cpuemu4.cpp \
cpuemu5.cpp cpuemu6.cpp cpuemu7.cpp cpuemu8.cpp
ifeq ($(ARCH), i386)
USE_JIT = $(WANT_JIT)
DEFS += -DUNALIGNED_PROFITABLE -DREGPARAM="__attribute__((regparm(3)))"
DEFS += -DX86_ASSEMBLY -DOPTIMIZED_FLAGS -DSAHF_SETO_PROFITABLE
endif
ifeq ($(ARCH), x86_64)
USE_JIT = $(WANT_JIT)
DEFS += -DUNALIGNED_PROFITABLE
DEFS += -DX86_64_ASSEMBLY -DOPTIMIZED_FLAGS
endif
ifeq ($(USE_JIT), yes)
DEFS += -DUSE_JIT -DUSE_JIT_FPU
ifeq ($(WANT_JIT_DEBUG), yes)
DEFS += -DJIT_DEBUG
endif
CPUSRCS += \
../uae_cpu/compiler/compemu_support.cpp \
../uae_cpu/compiler/compemu_fpp.cpp
GEN_CPUSRCS += \
cpuemu1_nf.cpp cpuemu2_nf.cpp cpuemu3_nf.cpp cpuemu4_nf.cpp \
cpuemu5_nf.cpp cpuemu6_nf.cpp cpuemu7_nf.cpp cpuemu8_nf.cpp \
compemu1.cpp compemu2.cpp compemu3.cpp compemu4.cpp \
compemu5.cpp compemu6.cpp compemu7.cpp compemu8.cpp \
cpustbl_nf.cpp compstbl.cpp
endif
GEN_DIR = gen
ifneq ($(ARCH),)
GEN_DIR = gen.$(ARCH)
endif
CPUSRCS += $(foreach file, $(GEN_CPUSRCS), $(GEN_DIR)/$(file))
CPPFLAGS += -I$(GEN_DIR)
## Source files thst replace/augment the ones from the Unix directory
SYSSRCS = serial_unix.cpp ../dummy/scsi_dummy.cpp \
audio_macosx.cpp AudioBackEnd.cpp AudioDevice.cpp MacOSX_sound_if.cpp \
clip_macosx.cpp Controller.mm Emulator.mm EmulatorView.mm \
ether_unix.cpp extfs_macosx.cpp main_macosx.mm misc_macosx.mm \
NNThread.m prefs_macosx.cpp PrefsEditor.mm sys_darwin.cpp video_macosx.mm
## Files
SRCS = ../main.cpp ../prefs.cpp ../prefs_items.cpp \
sys_unix.cpp ../rom_patches.cpp ../slot_rom.cpp ../rsrc_patches.cpp \
../emul_op.cpp ../macos_util.cpp ../xpram.cpp xpram_unix.cpp ../timer.cpp \
timer_unix.cpp ../adb.cpp ../serial.cpp ../ether.cpp \
../sony.cpp ../disk.cpp ../cdrom.cpp ../scsi.cpp ../video.cpp \
vm_alloc.cpp sigsegv.cpp ../audio.cpp ../extfs.cpp \
../user_strings.cpp user_strings_unix.cpp sshpty.c strlcpy.c \
$(SYSSRCS) $(CPUSRCS) $(SLIRP_SRCS)
## Source files from Unix source directory that we link to
UNIXSRCS = ether_unix.cpp semaphore.h serial_unix.cpp sigsegv.cpp sigsegv.h \
sshpty.c sshpty.h strlcpy.c strlcpy.h sys_unix.cpp timer_unix.cpp \
user_strings_unix.cpp user_strings_unix.h \
vm_alloc.cpp vm_alloc.h xpram_unix.cpp
## Documentation files
DOCS = README.txt Credits.html ToDo.html HowTo.html Versions.html
## Binaries to build
APP = BasiliskII
APP_APP = $(APP).app
TARGET_ARCHES = @TARGET_ARCHES@
PROGS = $(foreach arch, $(TARGET_ARCHES), $(APP).$(arch))
BLESS = $(OBJ_DIR)/lowmem
## Rules
.PHONY: modules install installdirs uninstall mostlyclean clean distclean depend dep
.SUFFIXES:
.SUFFIXES: .c .cpp .s .o .h
all: $(APP)_app
README.txt: ../../README
$(LN_S) $< $@
$(UNIXSRCS): %: ../Unix/%
$(LN_S) $< $@
OBJ_DIR = obj
ifneq ($(ARCH),)
OBJ_DIR = obj.$(ARCH)
endif
$(OBJ_DIR)::
@[ -d $(OBJ_DIR) ] || mkdir $(OBJ_DIR) > /dev/null 2>&1
define SRCS_LIST_TO_OBJS
$(addprefix $(OBJ_DIR)/, $(addsuffix .o, $(foreach file, $(SRCS), \
$(basename $(notdir $(file))))))
endef
OBJS = $(SRCS_LIST_TO_OBJS)
SRC_PATHS += $(sort $(foreach file, $(SRCS), $(dir $(file))))
VPATH :=
VPATH += $(addprefix :, $(subst ,:, $(filter-out $($(subst, :, ,$(VPATH))), $(SRC_PATHS))))
define PROGS_template
$(APP).$(1): links
+$(MAKE) $(OBJ_DIR).$(1)/$(APP) ARCH=$(1)
$(LN_S) -f $(OBJ_DIR).$(1)/$(APP) $(APP).$(1)
endef
$(APP): $(PROGS)
lipo $(foreach arch, $(TARGET_ARCHES), -arch $(arch) $(APP).$(arch)) \
-create -output $@
$(foreach arch,$(TARGET_ARCHES),$(eval $(call PROGS_template,$(arch))))
links: $(UNIXSRCS)
$(BLESS): $(OBJ_DIR) $(OBJ_DIR)/lowmem.o
$(HOST_CC) -o $@ $(OBJ_DIR)/lowmem.o
$(OBJ_DIR)/lowmem.o: ../Unix/Darwin/lowmem.c
$(HOST_CC) -o $@ -c $<
$(OBJ_DIR)/$(APP): $(OBJ_DIR) $(GEN_DIR) $(OBJS) $(BLESS)
$(CXX) -o $@ $(LDFLAGS) $(OBJS) $(LIBS)
$(BLESS) $@
$(APP)_app: $(APP) $(DOCS) Info.plist $(APP).icns
rm -rf $(APP_APP)/Contents
mkdir -p $(APP_APP)/Contents
cp -f ../MacOSX/Info.plist $(APP_APP)/Contents/
echo -n 'APPL????' > $(APP_APP)/Contents/PkgInfo
mkdir -p $(APP_APP)/Contents/MacOS
cp -f $(APP) $(APP_APP)/Contents/MacOS/
strip -x $(APP_APP)/Contents/MacOS/$(APP)
mkdir -p $(APP_APP)/Contents/Resources
cp -Rp English.lproj $(APP_APP)/Contents/Resources/
cp -f $(APP).icns $(APP_APP)/Contents/Resources/
cp -f $(DOCS) $(APP_APP)/Contents/Resources/
find $(APP_APP) -type d -name CVS | xargs rm -rf
mostlyclean:
rm -f $(PROGS) $(OBJ_DIR)/* core* *.core *~ *.bak
rm -f $(foreach arch, $(TARGET_ARCHES), $(GEN_DIR).$(arch)/*)
rm -f $(foreach arch, $(TARGET_ARCHES), $(OBJ_DIR).$(arch)/*)
clean: mostlyclean
rm -f $(UNIXSRCS)
rm -f README.txt
distclean: clean
rm -rf $(foreach arch, $(TARGET_ARCHES), $(GEN_DIR).$(arch))
rm -rf $(foreach arch, $(TARGET_ARCHES), $(OBJ_DIR).$(arch))
rm -rf autom4te.cache
rm -f Makefile
rm -f config.cache config.log config.status config.h configure
depend dep:
makedepend $(CPPFLAGS) -Y. $(SRCS) 2>/dev/null
$(OBJ_DIR)/%.o : ../slirp/%.c
$(CC) $(CPPFLAGS) $(DEFS) $(CFLAGS) $(SLIRP_CFLAGS) -c $< -o $@
$(OBJ_DIR)/%.o : %.c
$(CC) $(CPPFLAGS) $(DEFS) $(CFLAGS) -c $< -o $@
$(OBJ_DIR)/%.o : %.cpp
$(CXX) $(CPPFLAGS) $(DEFS) $(CXXFLAGS) -c $< -o $@
$(OBJ_DIR)/%.o : %.m
$(CC) $(CPPFLAGS) $(DEFS) $(CFLAGS) -c $< -o $@
$(OBJ_DIR)/%.o : %.mm
$(CXX) $(CPPFLAGS) $(DEFS) $(CXXFLAGS) -c $< -o $@
$(OBJ_DIR)/%.o : %.s
$(CC) $(CPPFLAGS) $(DEFS) $(CFLAGS) -c $< -o $@
$(OBJ_DIR)/%.ho : %.c
$(HOST_CC) $(CPPFLAGS) $(DEFS) $(CFLAGS) -c $< -o $@
$(OBJ_DIR)/%.ho : %.cpp
$(HOST_CXX) $(CPPFLAGS) $(DEFS) $(CXXFLAGS) -c $< -o $@
$(OBJ_DIR)/build68k: $(OBJ_DIR)/build68k.ho
$(HOST_CC) -o $@ $(OBJ_DIR)/build68k.ho
$(OBJ_DIR)/gencpu: $(OBJ_DIR)/gencpu.ho $(OBJ_DIR)/readcpu.ho $(OBJ_DIR)/cpudefs.ho
$(HOST_CXX) -o $@ $(OBJ_DIR)/gencpu.ho $(OBJ_DIR)/readcpu.ho $(OBJ_DIR)/cpudefs.ho
$(OBJ_DIR)/gencomp: $(OBJ_DIR)/gencomp.ho $(OBJ_DIR)/readcpu.ho $(OBJ_DIR)/cpudefs.ho
$(HOST_CXX) -o $@ $(OBJ_DIR)/gencomp.ho $(OBJ_DIR)/readcpu.ho $(OBJ_DIR)/cpudefs.ho
$(GEN_DIR)::
@[ -d $(GEN_DIR) ] || mkdir $(GEN_DIR) > /dev/null 2>&1
$(GEN_DIR)/cpudefs.cpp: $(OBJ_DIR)/build68k ../uae_cpu/table68k
$(OBJ_DIR)/build68k <../uae_cpu/table68k > $@
$(GEN_DIR)/cpustbl.cpp: $(GEN_DIR)/cpuemu.cpp
$(GEN_DIR)/cpustbl_nf.cpp: $(GEN_DIR)/cpustbl.cpp
$(GEN_DIR)/compstbl.cpp: $(GEN_DIR)/compemu.cpp
$(GEN_DIR)/cputbl.h: $(GEN_DIR)/cpuemu.cpp
$(GEN_DIR)/comptbl.h: $(GEN_DIR)/compemu.cpp
$(GEN_DIR)/cpuemu.cpp: $(OBJ_DIR)/gencpu
cd $(GEN_DIR) && ../$(OBJ_DIR)/gencpu
$(GEN_DIR)/compemu.cpp: $(OBJ_DIR)/gencomp
cd $(GEN_DIR) && ../$(OBJ_DIR)/gencomp
$(OBJ_DIR)/cpustbl_nf.o: $(GEN_DIR)/cpustbl.cpp
$(CXX) $(CPPFLAGS) $(DEFS) $(CXXFLAGS) -DNOFLAGS -c $< -o $@
$(OBJ_DIR)/compemu_support.o: compemu_support.cpp $(GEN_DIR)/comptbl.h
$(CXX) $(CPPFLAGS) $(DEFS) $(CXXFLAGS) -c $< -o $@
$(OBJ_DIR)/cpuemu1.o: $(GEN_DIR)/cpuemu.cpp
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_1 $(CXXFLAGS) -c $< -o $@
$(OBJ_DIR)/cpuemu2.o: $(GEN_DIR)/cpuemu.cpp
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_2 $(CXXFLAGS) -c $< -o $@
$(OBJ_DIR)/cpuemu3.o: $(GEN_DIR)/cpuemu.cpp
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_3 $(CXXFLAGS) -c $< -o $@
$(OBJ_DIR)/cpuemu4.o: $(GEN_DIR)/cpuemu.cpp
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_4 $(CXXFLAGS) -c $< -o $@
$(OBJ_DIR)/cpuemu5.o: $(GEN_DIR)/cpuemu.cpp
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_5 $(CXXFLAGS) -c $< -o $@
$(OBJ_DIR)/cpuemu6.o: $(GEN_DIR)/cpuemu.cpp
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_6 $(CXXFLAGS) -c $< -o $@
$(OBJ_DIR)/cpuemu7.o: $(GEN_DIR)/cpuemu.cpp
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_7 $(CXXFLAGS) -c $< -o $@
$(OBJ_DIR)/cpuemu8.o: $(GEN_DIR)/cpuemu.cpp
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_8 $(CXXFLAGS) -c $< -o $@
$(OBJ_DIR)/cpuemu1_nf.o: $(GEN_DIR)/cpuemu.cpp
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_1 -DNOFLAGS $(CXXFLAGS) -c $< -o $@
$(OBJ_DIR)/cpuemu2_nf.o: $(GEN_DIR)/cpuemu.cpp
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_2 -DNOFLAGS $(CXXFLAGS) -c $< -o $@
$(OBJ_DIR)/cpuemu3_nf.o: $(GEN_DIR)/cpuemu.cpp
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_3 -DNOFLAGS $(CXXFLAGS) -c $< -o $@
$(OBJ_DIR)/cpuemu4_nf.o: $(GEN_DIR)/cpuemu.cpp
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_4 -DNOFLAGS $(CXXFLAGS) -c $< -o $@
$(OBJ_DIR)/cpuemu5_nf.o: $(GEN_DIR)/cpuemu.cpp
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_5 -DNOFLAGS $(CXXFLAGS) -c $< -o $@
$(OBJ_DIR)/cpuemu6_nf.o: $(GEN_DIR)/cpuemu.cpp
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_6 -DNOFLAGS $(CXXFLAGS) -c $< -o $@
$(OBJ_DIR)/cpuemu7_nf.o: $(GEN_DIR)/cpuemu.cpp
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_7 -DNOFLAGS $(CXXFLAGS) -c $< -o $@
$(OBJ_DIR)/cpuemu8_nf.o: $(GEN_DIR)/cpuemu.cpp
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_8 -DNOFLAGS $(CXXFLAGS) -c $< -o $@
$(OBJ_DIR)/compemu1.o: $(GEN_DIR)/compemu.cpp
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_1 $(CXXFLAGS) -c $< -o $@
$(OBJ_DIR)/compemu2.o: $(GEN_DIR)/compemu.cpp
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_2 $(CXXFLAGS) -c $< -o $@
$(OBJ_DIR)/compemu3.o: $(GEN_DIR)/compemu.cpp
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_3 $(CXXFLAGS) -c $< -o $@
$(OBJ_DIR)/compemu4.o: $(GEN_DIR)/compemu.cpp
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_4 $(CXXFLAGS) -c $< -o $@
$(OBJ_DIR)/compemu5.o: $(GEN_DIR)/compemu.cpp
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_5 $(CXXFLAGS) -c $< -o $@
$(OBJ_DIR)/compemu6.o: $(GEN_DIR)/compemu.cpp
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_6 $(CXXFLAGS) -c $< -o $@
$(OBJ_DIR)/compemu7.o: $(GEN_DIR)/compemu.cpp
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_7 $(CXXFLAGS) -c $< -o $@
$(OBJ_DIR)/compemu8.o: $(GEN_DIR)/compemu.cpp
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_8 $(CXXFLAGS) -c $< -o $@
#-------------------------------------------------------------------------
# DO NOT DELETE THIS LINE -- make depend depends on it.

View File

@ -1,77 +0,0 @@
/*
* config_macosx.h - MacOS X macros determined at compile-time
*
* $Id$
*
* Basilisk II (C) 1997-2008 Christian Bauer
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/* Supported platforms are: ppc, ppc64, x86, x86_64 */
#if ! defined __ppc__ && ! defined __ppc64__ && ! defined __i386__ && ! defined __x86_64__
# error "Unsupported architecture. Please fix arch-specific macros"
#endif
/* Size of data types */
#define SIZEOF_FLOAT 4
#define SIZEOF_DOUBLE 8
#if defined __ppc__ || defined __ppc64__
# if defined __LONG_DOUBLE_128__
# define SIZEOF_LONG_DOUBLE 16
# else
# define SIZEOF_LONG_DOUBLE 8
# endif
#else
# define SIZEOF_LONG_DOUBLE 16
#endif
#define SIZEOF_SHORT 2
#define SIZEOF_INT 4
#if defined __ppc64__ || defined __x86_64__
# define SIZEOF_LONG 8
#else
# define SIZEOF_LONG 4
#endif
#define SIZEOF_LONG_LONG 8
#define SIZEOF_VOID_P SIZEOF_LONG /* ILP32 or LP64 */
/* Endian-ness of data types */
#if ! defined __LITTLE_ENDIAN__
# define WORDS_BIGENDIAN 1
#endif
/* Define to the floating point format of the host machine. */
#define HOST_FLOAT_FORMAT IEEE_FLOAT_FORMAT
/* Define to 1 if the host machine stores floating point numbers in memory
with the word containing the sign bit at the lowest address, or to 0 if it
does it the other way around. This macro should not be defined if the
ordering is the same as for multi-word integers. */
/* #undef HOST_FLOAT_WORDS_BIG_ENDIAN */
/* Define if your system supports Mach exceptions. */
#define HAVE_MACH_EXCEPTIONS 1
/* Define to 1 if you have the <mach/mach.h> header file. */
#define HAVE_MACH_MACH_H 1
/* Define to 1 if you have the `mach_task_self' function. */
#define HAVE_MACH_TASK_SELF 1
/* Define if your system has a working vm_allocate()-based memory allocator. */
#define HAVE_MACH_VM 1
/* Define if the __PAGEZERO Mach-O Low Memory Globals hack works. */
#define PAGEZERO_HACK 1

View File

@ -1,794 +0,0 @@
dnl Mac OS X configuration driver
dnl $Id$
dnl Process this file with autoconf to produce a configure script.
dnl Based on Unix/configure.in
dnl Written in 1999 by Christian Bauer et al.
dnl Occasionally re-synchronised (merged?) with latest version
dnl Written in 2002 by Christian Bauer et al.
dnl autoconf on 10.1 doesn't understand these
dnl AC_INIT([Basilisk II], 1.0, [Christian.Bauer@uni-mainz.de], BasiliskII)
dnl AC_CONFIG_SRCDIR(main_macosx.mm)
AC_INIT(main_macosx.mm)
AC_CONFIG_AUX_DIR(../Unix)
AC_PREREQ(2.12)
AC_CONFIG_HEADER(config.h)
AH_TOP([
/* Include MacOS X macros determined at compile-time */
#include "config_macosx.h"
])
dnl Aliases for PACKAGE and VERSION macros.
AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE_NAME", [Define this program name.])
AC_DEFINE_UNQUOTED(VERSION, "$PACKAGE_VERSION", [Define this program version.])
dnl Some systems do not put corefiles in the currect directory, avoid saving
dnl cores for the configure tests since some are intended to dump core.
ulimit -c 0
dnl Universal binaries.
AC_ARG_ENABLE(universal,
[ --enable-universal enable universal binaries for selected arches [default=no]],
[ WANT_UNIVERSAL=""
for arch in $enableval; do
case $arch in
yes) WANT_UNIVERSAL="i386 ppc";;
ppc|ppc64|i386|x86_64) WANT_UNIVERSAL="$WANT_UNIVERSAL $arch";;
esac
done
])
AC_ARG_WITH(ppc-sdk, [ --with-ppc-sdk=VERSION use specific SDK VERSION for ppc builds [default=earliest]], [PPC_SDK_VERSION=$withval])
dnl Video options.
AC_ARG_ENABLE(multiwin,
[ --enable-multiwin allow multiple emulator windows [default=no]], [ENABLE_MULTIPLE=$enableval], [ENABLE_MULTIPLE=no])
dnl JIT compiler options.
AC_ARG_ENABLE(jit-compiler, [ --enable-jit-compiler enable JIT compiler [default=no]], [WANT_JIT=$enableval], [WANT_JIT=no])
AC_ARG_ENABLE(jit-debug, [ --enable-jit-debug activate native code disassemblers [default=no]], [WANT_JIT_DEBUG=$enableval], [WANT_JIT_DEBUG=no])
dnl Addressing modes.
AC_ARG_ENABLE(addressing,
[ --enable-addressing=AM specify the addressing mode to use [default=fastest]],
[ case "$enableval" in
real) ADDRESSING_TEST_ORDER="real";;
direct) ADDRESSING_TEST_ORDER="direct";;
banks) ADDRESSING_TEST_ORDER="banks";;
fastest)ADDRESSING_TEST_ORDER="direct banks";;
*) AC_MSG_ERROR([--enable-addressing takes only one of the following values: fastest, real, direct, banks]);;
esac
],
[ ADDRESSING_TEST_ORDER="direct banks"
])
dnl External packages.
AC_ARG_WITH(mon, [ --with-mon use mon as debugger [default=yes]], [WANT_MON=$withval], [WANT_MON=no])
dnl Canonical system information.
AC_CANONICAL_HOST
AC_CANONICAL_TARGET
dnl Target OS type (target is host if not cross-compiling).
case "$target_os" in
linux*) OS_TYPE=linux;;
netbsd*) OS_TYPE=netbsd;;
freebsd*) OS_TYPE=freebsd;;
solaris*) OS_TYPE=solaris;;
darwin*) OS_TYPE=darwin;;
*) OS_TYPE=`echo $target_os | sed -e 's/-/_/g' | sed -e 's/\./_/g'`;;
esac
DEFINES="$DEFINES -DOS_$OS_TYPE"
dnl Target CPU type.
HAVE_I386=no
HAVE_M68K=no
HAVE_SPARC=no
HAVE_POWERPC=no
HAVE_X86_64=no
case "$target_cpu" in
i386* | i486* | i586* | i686* | i786* ) HAVE_I386=yes;;
m68k* ) HAVE_M68K=yes;;
sparc* ) HAVE_SPARC=yes;;
powerpc* ) HAVE_POWERPC=yes;;
x86_64* ) HAVE_X86_64=yes;;
esac
dnl Checks for programs.
AC_PROG_CC
AC_PROG_CC_C_O
AC_PROG_CPP
AC_PROG_CXX
AC_PROG_MAKE_SET
AC_PROG_INSTALL
AC_PROG_EGREP
dnl We use mon if possible.
MONSRCS=
if [[ "x$WANT_MON" = "xyes" ]]; then
AC_MSG_CHECKING(for mon)
mon_srcdir=../../../mon/src
if grep mon_init $mon_srcdir/mon.h >/dev/null 2>/dev/null; then
AC_MSG_RESULT(yes)
AC_DEFINE(ENABLE_MON, 1, [Define if using "mon".])
MONSRCS="$mon_srcdir/mon.cpp $mon_srcdir/mon_6502.cpp $mon_srcdir/mon_z80.cpp $mon_srcdir/mon_cmd.cpp $mon_srcdir/mon_disass.cpp $mon_srcdir/mon_ppc.cpp $mon_srcdir/mon_lowmem.cpp $mon_srcdir/disass/floatformat.c $mon_srcdir/disass/i386-dis.c $mon_srcdir/disass/m68k-dis.c $mon_srcdir/disass/m68k-opc.c $mon_srcdir/disass/mips-dis.c $mon_srcdir/disass/mips-opc.c $mon_srcdir/disass/mips16-opc.c"
AC_SUBST(MONSRCS)
CXXFLAGS="$CXXFLAGS -I$mon_srcdir -I$mon_srcdir/disass"
AC_CHECK_LIB(ncurses, tgetent, ,
[AC_CHECK_LIB(termcap, tgetent, ,
[AC_CHECK_LIB(termlib, tgetent, ,
[AC_CHECK_LIB(terminfo, tgetent, ,
[AC_CHECK_LIB(Hcurses, tgetent, ,
[AC_CHECK_LIB(curses, tgetent)])])])])])
AC_CHECK_LIB(readline, readline)
else
AC_MSG_RESULT(no)
AC_MSG_WARN([Could not find mon, ignoring --with-mon.])
WANT_MON=no
fi
fi
dnl We want pthreads. Try libpthread first, then libc_r (FreeBSD), then PTL.
HAVE_PTHREADS=yes
AC_CHECK_LIB(pthread, pthread_create, , [
AC_CHECK_LIB(c_r, pthread_create, , [
AC_CHECK_LIB(PTL, pthread_create, , [
HAVE_PTHREADS=no
])
])
])
dnl OS X does have pthreads, but not in any of the above locations:
HAVE_PTHREADS=yes
if [[ "x$HAVE_PTHREADS" = "xyes" ]]; then
AC_DEFINE(HAVE_PTHREADS, 1, [Define if pthreads are available.])
fi
AC_CHECK_FUNCS(pthread_cond_init)
AC_CHECK_FUNCS(pthread_cancel pthread_testcancel)
AC_CHECK_FUNCS(pthread_mutexattr_setprotocol)
AC_CHECK_FUNCS(pthread_mutexattr_settype)
AC_CHECK_FUNCS(pthread_mutexattr_setpshared)
dnl If POSIX.4 semaphores are not available, we emulate them with pthread mutexes.
SEMSRC=
AC_CHECK_FUNCS(sem_init, , [
if test "x$HAVE_PTHREADS" = "xyes"; then
SEMSRC=posix_sem.cpp
fi
])
dnl We want to enable multiple window support if possible
if [[ "x$WANT_MWIN" = "xyes" ]]; then
WANT_MWIN=yes
DEFINES="$DEFINES -DENABLE_MULTIPLE"
fi
dnl We use 64-bit file size support if possible.
AC_SYS_LARGEFILE
dnl Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS(stdlib.h stdint.h)
AC_CHECK_HEADERS(unistd.h fcntl.h sys/types.h sys/time.h sys/mman.h mach/mach.h)
AC_CHECK_HEADERS(readline.h history.h readline/readline.h readline/history.h)
AC_CHECK_HEADERS(sys/socket.h sys/ioctl.h sys/filio.h sys/bitypes.h sys/wait.h)
AC_CHECK_HEADERS(sys/poll.h sys/select.h)
AC_CHECK_HEADERS(arpa/inet.h)
AC_CHECK_HEADERS(linux/if.h linux/if_tun.h net/if.h net/if_tun.h, [], [], [
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
])
AC_CHECK_HEADERS(AvailabilityMacros.h)
AC_CHECK_HEADERS(IOKit/storage/IOBlockStorageDevice.h)
dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_C_INLINE
AC_TYPE_OFF_T
dnl These two symbols are not defined in 10.1's autoconf:
dnl AC_CHECK_TYPE(loff_t, off_t)
dnl AC_CHECK_TYPE(caddr_t, [char *])
dnl We define loff_t as a typedef of off_t in sysdeps.h if we don't have LOFF_T
dnl OS X does have caddr_t, but the above check doesn't work, so we have to do:
AC_DEFINE(HAVE_CADDR_T, 1, [The type "caddr_t" does exist on MacOS X.])
AC_TYPE_SIZE_T
AC_TYPE_SIGNAL
AC_HEADER_TIME
AC_STRUCT_TM
dnl Check whether sys/socket.h defines type socklen_t.
dnl (extracted from ac-archive/Miscellaneous)
AC_CACHE_CHECK([for socklen_t],
ac_cv_type_socklen_t, [
AC_TRY_COMPILE([
#include <sys/types.h>
#include <sys/socket.h>
], [socklen_t len = 42; return 0;],
ac_cv_type_socklen_t=yes, ac_cv_type_socklen_t=no,
dnl When cross-compiling, do not assume anything.
ac_cv_type_socklen_t="guessing no"
)
])
if [[ "x$ac_cv_type_socklen_t" != "xyes" ]]; then
AC_DEFINE(socklen_t, int, [Define to 'int' if <sys/types.h> doesn't define.])
fi
dnl Checks for library functions.
AC_CHECK_FUNCS(strdup strerror cfmakeraw)
AC_CHECK_FUNCS(clock_gettime timer_create)
AC_CHECK_FUNCS(sigaction signal)
AC_CHECK_FUNCS(poll inet_aton)
dnl Darwin seems to define mach_task_self() instead of task_self().
AC_CHECK_FUNCS(mach_task_self task_self)
dnl Check for headers and functions related to pty support (sshpty.c)
dnl From openssh-3.2.2p1 configure.ac
AC_CHECK_HEADERS(strings.h login.h sys/bsdtty.h sys/stat.h util.h pty.h)
AC_CHECK_FUNCS(_getpty vhangup strlcpy)
if test -z "$no_dev_ptmx" ; then
if test "x$disable_ptmx_check" != "xyes" ; then
AC_CHECK_FILE([/dev/ptmx],
[
AC_DEFINE_UNQUOTED(HAVE_DEV_PTMX, 1, [Define if you have /dev/ptmx.])
have_dev_ptmx=1
]
)
fi
fi
AC_CHECK_FILE([/dev/ptc],
[
AC_DEFINE_UNQUOTED(HAVE_DEV_PTS_AND_PTC, 1, [Define if you have /dev/ptc.])
have_dev_ptc=1
]
)
dnl (end of code from openssh-3.2.2p1 configure.ac)
dnl Check for systems where POSIX-style non-blocking I/O (O_NONBLOCK)
dnl doesn't work or is unimplemented. On these systems (mostly older
dnl ones), use the old BSD-style FIONBIO approach instead. [tcl.m4]
AC_CACHE_CHECK([FIONBIO vs. O_NONBLOCK for non-blocking I/O],
ac_cv_nonblocking_io, [
case "$host" in
*-*-osf*)
ac_cv_nonblocking_io=FIONBIO
;;
*-*-sunos4*)
ac_cv_nonblocking_io=FIONBIO
;;
*-*-ultrix*)
ac_cv_nonblocking_io=FIONBIO
;;
*)
ac_cv_nonblocking_io=O_NONBLOCK
;;
esac
])
if [[ "$ac_cv_nonblocking_io" = "FIONBIO" ]]; then
AC_DEFINE(USE_FIONBIO, 1, [Define if BSD-style non-blocking I/O is to be used])
fi
dnl Check whether compiler supports byte bit-fields
AC_CACHE_CHECK([whether compiler supports byte bit-fields],
ac_cv_have_byte_bitfields, [
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
AC_TRY_RUN([
struct A {
unsigned char b1:4;
unsigned char b2:4;
unsigned char c;
unsigned short s;
unsigned char a[4];
};
int main(void) {
A a;
return ! (sizeof(A) == 8 && &a.c == ((unsigned char *)&a + 1));
}],
[ac_cv_have_byte_bitfields=yes],
[ac_cv_have_byte_bitfields=no],
dnl When cross-compiling, assume only GCC supports this
[if [[ "$GCC" = "yes" ]]; then
ac_cv_have_byte_bitfields="guessing yes"
else
ac_cv_have_byte_bitfields="guessing no"
fi]
)
AC_LANG_RESTORE
])
dnl AC_CHECK_FRAMEWORK($1=NAME, $2=INCLUDES)
AC_DEFUN([AC_CHECK_FRAMEWORK], [
AS_VAR_PUSHDEF([ac_Framework], [ac_cv_framework_$1])dnl
AC_CACHE_CHECK([whether compiler supports framework $1],
ac_Framework, [
saved_LIBS="$LIBS"
LIBS="$LIBS -framework $1"
AC_TRY_LINK(
[$2], [],
[AS_VAR_SET(ac_Framework, yes)], [AS_VAR_SET(ac_Framework, no); LIBS="$saved_LIBS"]
)
])
AS_IF([test AS_VAR_GET(ac_Framework) = yes],
[AC_DEFINE(AS_TR_CPP(HAVE_FRAMEWORK_$1), 1, [Define if framework $1 is available.])]
)
AS_VAR_POPDEF([ac_Framework])dnl
])
dnl Check for some MacOS X frameworks
AC_CHECK_FRAMEWORK(AppKit, [])
AC_CHECK_FRAMEWORK(Carbon, [#include <Carbon/Carbon.h>])
AC_CHECK_FRAMEWORK(IOKit, [#include <IOKit/IOKitLib.h>])
AC_CHECK_FRAMEWORK(CoreFoundation, [#include <CoreFoundation/CoreFoundation.h>])
AC_CHECK_FRAMEWORK(CoreAudio, [#include <CoreAudio/CoreAudio.h>])
AC_CHECK_FRAMEWORK(AudioUnit, [#include <AudioUnit/AudioUnit.h>])
AC_CHECK_FRAMEWORK(AudioToolbox, [#include <AudioToolbox/AudioToolbox.h>])
dnl Select system-dependant source files.
ETHERSRC=ether_unix.cpp
DEFINES="$DEFINES -DBSD_COMP"
CXXFLAGS="$CXXFLAGS -fpermissive"
dnl Check for the CAM library
AC_CHECK_LIB(cam, cam_open_btl, HAVE_LIBCAM=yes, HAVE_LIBCAM=no)
if [[ "x$HAVE_LIBCAM" = "xno" ]]; then
AC_MSG_WARN([Cannot find libcam for SCSI management, disabling SCSI support.])
else
dnl Check for the sys kernel includes
AC_CHECK_HEADER(camlib.h)
if [[ "x$ac_cv_header_camlib_h" = "xno" ]]; then
dnl In this case I should fix this thing including a "patch"
dnl to access directly to the functions in the kernel :) --Orlando
AC_MSG_WARN([Cannot find includes for CAM library, disabling SCSI support.])
else
SCSISRC=FreeBSD/scsi_freebsd.cpp
LIBS="$LIBS -lcam"
DEFINES="$DEFINES -DCAM"
fi
fi
dnl Is the slirp library supported?
WANT_SLIRP=no
case "$ac_cv_have_byte_bitfields" in
yes|"guessing yes")
WANT_SLIRP=yes
ETHERSRC=ether_unix.cpp
;;
esac
if [[ "x$WANT_SLIRP" = "xyes" ]]; then
AC_DEFINE(HAVE_SLIRP, 1, [Define if slirp library is supported])
SLIRP_SRCS="\
../slirp/bootp.c ../slirp/ip_output.c ../slirp/tcp_input.c \
../slirp/cksum.c ../slirp/mbuf.c ../slirp/tcp_output.c \
../slirp/debug.c ../slirp/misc.c ../slirp/tcp_subr.c \
../slirp/if.c ../slirp/sbuf.c ../slirp/tcp_timer.c \
../slirp/ip_icmp.c ../slirp/slirp.c ../slirp/tftp.c \
../slirp/ip_input.c ../slirp/socket.c ../slirp/udp.c"
fi
AC_SUBST(WANT_SLIRP)
AC_SUBST(SLIRP_SRCS)
dnl Define a macro that translates a yesno-variable into a C macro definition
dnl to be put into the config.h file
dnl $1 -- the macro to define
dnl $2 -- the value to translate
dnl $3 -- template name
AC_DEFUN([AC_TRANSLATE_DEFINE], [
if [[ "x$2" = "xyes" -o "x$2" = "xguessing yes" ]]; then
AC_DEFINE($1, 1, $3)
fi
])
dnl Check that the host supports TUN/TAP devices
AC_CACHE_CHECK([whether TUN/TAP is supported],
ac_cv_tun_tap_support, [
AC_TRY_COMPILE([
#if defined(HAVE_LINUX_IF_H) && defined(HAVE_LINUX_IF_TUN_H)
#include <linux/if.h>
#include <linux/if_tun.h>
#endif
#if defined(HAVE_NET_IF_H) && defined(HAVE_NET_IF_TUN_H)
#include <net/if.h>
#include <net/if_tun.h>
#endif
], [
struct ifreq ifr;
memset(&ifr, 0, sizeof(ifr));
ifr.ifr_flags = IFF_TAP | IFF_NO_PI;
],
ac_cv_tun_tap_support=yes, ac_cv_tun_tap_support=no
)
])
AC_TRANSLATE_DEFINE(ENABLE_TUNTAP, "$ac_cv_tun_tap_support",
[Define if your system supports TUN/TAP devices.])
dnl Check signal handlers need to be reinstalled
AC_CACHE_CHECK([whether signal handlers need to be reinstalled],
ac_cv_signal_need_reinstall, [
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
AC_TRY_RUN([
#include <stdlib.h>
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#include <signal.h>
static int handled_signal = 0;
RETSIGTYPE sigusr1_handler(int) { handled_signal++; }
int main(void) { /* returns 0 if signals need not to be reinstalled */
signal(SIGUSR1, sigusr1_handler); raise(SIGUSR1); raise(SIGUSR1);
exit(handled_signal == 2);
}
], ac_cv_signal_need_reinstall=yes, ac_cv_signal_need_reinstall=no,
dnl When cross-compiling, do not assume anything.
ac_cv_signal_need_reinstall="guessing yes"
)
AC_LANG_RESTORE
]
)
AC_TRANSLATE_DEFINE(SIGNAL_NEED_REINSTALL, "$ac_cv_signal_need_reinstall",
[Define if your system requires signals to be reinstalled.])
dnl Check if sigaction handlers need to be reinstalled
AC_CACHE_CHECK([whether sigaction handlers need to be reinstalled],
ac_cv_sigaction_need_reinstall, [
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
AC_TRY_RUN([
#include <stdlib.h>
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#include <signal.h>
static int handled_signal = 0;
RETSIGTYPE sigusr1_handler(int) { handled_signal++; }
typedef RETSIGTYPE (*signal_handler)(int);
static signal_handler mysignal(int sig, signal_handler handler) {
struct sigaction old_sa;
struct sigaction new_sa;
new_sa.sa_handler = handler;
return ((sigaction(sig,&new_sa,&old_sa) < 0) ? SIG_IGN : old_sa.sa_handler);
}
int main(void) { /* returns 0 if signals need not to be reinstalled */
mysignal(SIGUSR1, sigusr1_handler); raise(SIGUSR1); raise(SIGUSR1);
exit(handled_signal == 2);
}
], ac_cv_sigaction_need_reinstall=yes, ac_cv_sigaction_need_reinstall=no,
dnl When cross-compiling, do not assume anything.
ac_cv_sigaction_need_reinstall="guessing yes"
)
AC_LANG_RESTORE
]
)
AC_TRANSLATE_DEFINE(SIGACTION_NEED_REINSTALL, "$ac_cv_sigaction_need_reinstall",
[Define if your system requires sigactions to be reinstalled.])
dnl Check if we can ignore the fault (instruction skipping in SIGSEGV handler)
AC_CACHE_CHECK([whether we can skip instruction in SIGSEGV handler],
ac_cv_have_skip_instruction, [
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
AC_TRY_RUN([
#include "config_macosx.h"
#define HAVE_SIGSEGV_SKIP_INSTRUCTION 1
#define CONFIGURE_TEST_SIGSEGV_RECOVERY
#include "../Unix/vm_alloc.cpp"
#include "../Unix/sigsegv.cpp"
], ac_cv_have_skip_instruction=yes, ac_cv_have_skip_instruction=no,
dnl When cross-compiling, do not assume anything.
ac_cv_have_skip_instruction=no
)
AC_LANG_RESTORE
]
)
AC_TRANSLATE_DEFINE(HAVE_SIGSEGV_SKIP_INSTRUCTION, "$ac_cv_have_skip_instruction",
[Define if we can ignore the fault (instruction skipping in SIGSEGV handler).])
dnl We can do Video on SEGV Signals
CAN_VOSF=yes
dnl A dummy program that returns always true
AC_PATH_PROG([BLESS], "true")
dnl Check for linker script support
case $target_os:$target_cpu in
linux*:i?86) LINKER_SCRIPT_FLAGS="-Wl,-T,ldscripts/linux-i386.ld";;
linux*:x86_64) LINKER_SCRIPT_FLAGS="-Wl,-T,ldscripts/linux-x86_64.ld";;
linux*:powerpc) LINKER_SCRIPT_FLAGS="-Wl,-T,ldscripts/linux-ppc.ld";;
netbsd*:i?86) LINKER_SCRIPT_FLAGS="-Wl,-T,ldscripts/linux-i386.ld";;
freebsd*:i?86) LINKER_SCRIPT_FLAGS="-Wl,-T,ldscripts/freebsd-i386.ld";;
darwin*:*) LINKER_SCRIPT_FLAGS="-Wl,-seg1addr,0x78048000";;
esac
if [[ -n "$LINKER_SCRIPT_FLAGS" ]]; then
AC_CACHE_CHECK([whether linker script is usable],
ac_cv_linker_script_works, [
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
saved_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS $LINKER_SCRIPT_FLAGS"
AC_TRY_RUN(
[int main() {if ((char *)&main < (char *)0x70000000) return 1;}],
[ac_cv_linker_script_works=yes],
[ac_cv_linker_script_works=no],
dnl When cross-compiling, assume it works
[ac_cv_linker_script_works="guessing yes"]
)
AC_LANG_RESTORE
if [[ "$ac_cv_linker_script_works" = "no" ]]; then
LDFLAGS="$saved_LDFLAGS"
LINKER_SCRIPT_FLAGS=""
fi
])
fi
AC_TRANSLATE_DEFINE(HAVE_LINKER_SCRIPT, "$ac_cv_linker_script_works",
[Define if there is a linker script to relocate the executable above 0x70000000.])
dnl Determine the addressing mode to use
ADDRESSING_MODE=""
AC_MSG_CHECKING([for the addressing mode to use])
for am in $ADDRESSING_TEST_ORDER; do
case $am in
real)
dnl Requires VOSF screen updates
if [[ "x$CAN_VOSF" = "xno" ]]; then
continue
fi
dnl Real addressing will probably work.
ADDRESSING_MODE="real"
WANT_VOSF=yes dnl we can use VOSF and we need it actually
DEFINES="$DEFINES -DREAL_ADDRESSING"
AC_DEFINE(REAL_ADDRESSING, 1, [Emulated memory is memory mapped to actual address.])
LDFLAGS="$LDFLAGS -pagezero_size 0x2000"
break
;;
direct)
dnl Requires VOSF screen updates
if [[ "x$CAN_VOSF" = "xyes" ]]; then
ADDRESSING_MODE="direct"
WANT_VOSF=yes dnl we can use VOSF and we need it actually
DEFINES="$DEFINES -DDIRECT_ADDRESSING"
AC_DEFINE(DIRECT_ADDRESSING, 1, [Emulated memory is an offset from actual address.])
break
fi
;;
banks)
dnl Default addressing mode
ADDRESSING_MODE="memory banks"
break
;;
*)
AC_MSG_ERROR([Internal configure.in script error for $am addressing mode])
esac
done
AC_MSG_RESULT($ADDRESSING_MODE)
if [[ "x$ADDRESSING_MODE" = "x" ]]; then
AC_MSG_WARN([Sorry, no suitable addressing mode in $ADDRESSING_TEST_ORDER])
ADDRESSING_MODE="memory banks"
fi
dnl Banked Memory Addressing mode is not supported by the JIT compiler
if [[ "x$WANT_JIT" = "xyes" -a "x$ADDRESSING_MODE" = "xmemory banks" ]]; then
AC_MSG_ERROR([Sorry, the JIT Compiler requires Direct Addressing, at least])
fi
dnl Enable VOSF screen updates with this feature is requested and feasible
if [[ "x$WANT_VOSF" = "xyes" -a "x$CAN_VOSF" = "xyes" ]]; then
AC_DEFINE(ENABLE_VOSF, 1, [Define if using video enabled on SEGV signals.])
else
WANT_VOSF=no
fi
dnl Check for GAS.
HAVE_GAS=no
AC_MSG_CHECKING(for GAS .p2align feature)
cat >conftest.S << EOF
.text
.p2align 5
EOF
if $CC conftest.S -c -o conftest.o >/dev/null 2>&1 ; then HAVE_GAS=yes; fi
AC_MSG_RESULT($HAVE_GAS)
dnl Check for GCC 2.7 or higher.
HAVE_GCC27=no
AC_MSG_CHECKING(for GCC 2.7 or higher)
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#if ! (__GNUC__ - 1 > 1 || __GNUC_MINOR__ - 1 > 5)
# error gcc < 2.7
#endif
]])],
[AC_MSG_RESULT(yes); HAVE_GCC27=yes],
[AC_MSG_RESULT(no)])
dnl Check for GCC 3.0 or higher.
HAVE_GCC30=no
AC_MSG_CHECKING(for GCC 3.0 or higher)
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#if ! (__GNUC__ >= 3)
# error gcc < 3
#endif
]])],
[AC_MSG_RESULT(yes); HAVE_GCC30=yes],
[AC_MSG_RESULT(no)])
dnl Check for ICC.
AC_MSG_CHECKING(for ICC)
HAVE_ICC=no
if $CXX -V -v 2>&1 | grep -q "Intel(R) C++ Compiler"; then
HAVE_ICC=yes
fi
AC_MSG_RESULT($HAVE_ICC)
dnl Set "-fomit-frame-pointer" on i386 GCC 2.7 or higher.
dnl Also set "-fno-exceptions" for C++ because exception handling requires
dnl the frame pointer.
if [[ "x$HAVE_GCC27" = "xyes" -a "x$HAVE_I386" = "xyes" ]]; then
CFLAGS="$CFLAGS -fomit-frame-pointer"
CXXFLAGS="$CXXFLAGS -fomit-frame-pointer -fno-exceptions"
fi
dnl (gb) Do not merge constants since it breaks fpu/fpu_x86.cpp.
dnl As of 2001/08/02, this affects the following compilers:
dnl Official: probably gcc-3.1 (mainline CVS)
dnl Mandrake: gcc-2.96 >= 0.59mdk, gcc-3.0.1 >= 0.1mdk
dnl Red Hat : gcc-2.96 >= 89, gcc-3.0 >= 1
if [[ "x$HAVE_GCC27" = "xyes" -a "x$HAVE_ICC" = "xno" ]]; then
SAVED_CXXFLAGS="$CXXFLAGS"
CXXFLAGS="$CXXFLAGS -fno-merge-constants"
AC_CACHE_CHECK([whether GCC supports constants merging], ac_cv_gcc_constants_merging, [
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
AC_TRY_COMPILE([],[],[ac_cv_gcc_constants_merging=yes],[ac_cv_gcc_constants_merging=no])
AC_LANG_RESTORE
])
if [[ "x$ac_cv_gcc_constants_merging" != "xyes" ]]; then
CXXFLAGS="$SAVED_CXXFLAGS"
fi
fi
dnl Store motion was introduced in 3.3-hammer branch and any gcc >= 3.4
dnl However, there are some corner cases exposed on x86-64
if [[ "x$HAVE_GCC27" = "xyes" -a "x$HAVE_ICC" = "xno" ]]; then
SAVED_CXXFLAGS="$CXXFLAGS"
CXXFLAGS="$CXXFLAGS -fno-gcse-sm"
AC_CACHE_CHECK([whether GCC supports store motion], ac_cv_gcc_store_motion, [
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
AC_TRY_COMPILE([],[],[ac_cv_gcc_store_motion=yes],[ac_cv_gcc_store_motion=no])
AC_LANG_RESTORE
])
if [[ "x$ac_cv_gcc_store_motion" != "xyes" ]]; then
CXXFLAGS="$SAVED_CXXFLAGS"
fi
fi
dnl Add -fno-strict-aliasing for slirp sources
if [[ "x$HAVE_GCC30" = "xyes" ]]; then
SAVED_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -fno-strict-aliasing"
AC_CACHE_CHECK([whether the compiler supports -fno-strict-aliasing],
ac_cv_gcc_no_strict_aliasing, [
AC_TRY_COMPILE([],[],[ac_cv_gcc_no_strict_aliasing=yes],[ac_cv_gcc_no_strict_aliasing=no])
])
if [[ "x$ac_cv_gcc_no_strict_aliasing" = "xyes" ]]; then
AC_SUBST(SLIRP_CFLAGS, "-fno-strict-aliasing")
fi
CFLAGS="$SAVED_CFLAGS"
fi
dnl Add -mdynamic-no-pic for MacOS X (XXX icc10 will support MacOS X)
if [[ "x$HAVE_GCC30" = "xyes" -a "x$HAVE_ICC" = "xno" ]]; then
SAVED_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -mdynamic-no-pic"
AC_CACHE_CHECK([whether the compiler supports -mdynamic-no-pic],
ac_cv_gcc_mdynamic_no_pic, [
AC_TRY_COMPILE([],[],[ac_cv_gcc_mdynamic_no_pic=yes],[ac_cv_gcc_mdynamic_no_pic=no])
])
if [[ "x$ac_cv_gcc_mdynamic_no_pic" = "xyes" ]]; then
CXXFLAGS="$CXXFLAGS -mdynamic-no-pic"
else
CFLAGS="$SAVED_CFLAGS"
fi
fi
dnl Make sure we can enable JIT debug mode.
if [[ "x$WANT_JIT_DEBUG" = "xyes" ]]; then
if [[ ":$WANT_JIT:$WANT_MON:" != ":yes:yes:" ]]; then
AC_MSG_WARN([cxmon not found, ignoring --enable-jit-debug])
WANT_JIT_DEBUG=no
fi
fi
dnl Additionnal checks for the IEEE FPU emulation code.
AC_CHECK_HEADERS(ieee754.h ieeefp.h floatingpoint.h nan.h)
AC_CHECK_FUNCS(atanh)
AC_CHECK_FUNCS(isnan isinf finite isnormal signbit)
dnl Math functions not mandated by C99 standard
AC_CHECK_FUNCS(isnanl isinfl)
dnl Math functions required by C99 standard, but probably not
dnl implemented everywhere. In that case, we fall back to the
dnl regular variant for doubles.
AC_CHECK_FUNCS(logl log10l expl powl fabsl sqrtl)
AC_CHECK_FUNCS(sinl cosl tanl sinhl coshl tanhl)
AC_CHECK_FUNCS(asinl acosl atanl asinhl acoshl atanhl)
AC_CHECK_FUNCS(floorl ceill)
dnl Remove the "-g" option if set for GCC.
if [[ "x$HAVE_GCC27" = "xyes" ]]; then
CFLAGS=`echo $CFLAGS | sed -e 's/-g\b//g'`
CXXFLAGS=`echo $CXXFLAGS | sed -e 's/-g\b//g'`
fi
dnl
dnl Some Mac OS X specific stuff:
dnl
dnl MacOS 10.2 (and later?) have a particular header for defining the OS version
if [[ "x$ac_cv_header_AvailabilityMacros_h" = "xyes" ]]; then
AC_DEFINE(AVAILABILITYMACROS, 1, [Header specific to 10.2 and later.])
fi
dnl Which IDE do we use?
if test -d "/Developer/Applications/Xcode.app"; then
IDE=xcodebuild
PROJECT=BasiliskII.xcode
IDEARGS="-project BasiliskII.xcode"
else
IDE=pbxbuild
PROJECT=BasiliskII.pbproj
IDEARGS=""
fi
dnl Universal binaries
if [[ -z "$WANT_UNIVERSAL" ]]; then
WANT_UNIVERSAL=`echo $target_cpu | sed -e 's/i.86/i386/' | sed -e 's/powerpc/ppc/'`
fi
AC_SUBST(TARGET_ARCHES, [$WANT_UNIVERSAL])
AC_MSG_CHECKING(for PowerPC SDK)
for version in $PPC_SDK_VERSION 10.2.8 10.3.9 10.4; do
sdk=`echo /Developer/SDKs/MacOSX$version*.sdk`
if [[ -d "$sdk" ]]; then
PPC_SDK_VERSION="$version"
break
fi
done
AC_MSG_RESULT($PPC_SDK_VERSION)
AC_SUBST(PPC_SDK_VERSION)
AC_DEFINE(DATADIR, "~", [unix_ether needs this!])
dnl Generate Makefile.
AC_SUBST(DEFINES)
AC_SUBST(MONSRCS)
AC_SUBST(CPUINCLUDES)
AC_SUBST(BLESS)
AC_SUBST(IDE)
AC_SUBST(PROJECT)
AC_SUBST(IDEARGS)
AC_SUBST(SLIRP_SRCS)
AC_SUBST(KEYCODES)
AC_SUBST(WANT_JIT)
AC_SUBST(WANT_JIT_DEBUG)
dnl autoconf on 10.1 doesn't understand these
dnl AC_CONFIG_FILES([Makefile])
dnl AC_OUTPUT
AC_OUTPUT(Makefile)
dnl Print summary.
echo
echo Basilisk II configuration summary:
echo
echo Build binaries for ..................... : $WANT_UNIVERSAL
echo Multiple emulator windows .............. : $ENABLE_MULTIPLE
echo Enable video on SEGV signals ........... : $WANT_VOSF
echo mon debugger support ................... : $WANT_MON
echo Build JIT compiler ..................... : $WANT_JIT
echo Build JIT with debug code .............. : $WANT_JIT_DEBUG
echo Addressing mode ........................ : $ADDRESSING_MODE
echo Mac OS X development environment ....... : $IDE
echo
echo "Configuration done. Now type \"make\" (or \"make ide\")."

View File

@ -1,345 +0,0 @@
/*
* sysdeps.h - System dependent definitions for Mac OS X.
* Based on Unix version
*
* $Id$
*
* Basilisk II (C) 1997-2008 Christian Bauer
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef SYSDEPS_H
#define SYSDEPS_H
#ifndef __STDC__
#error "Your compiler is not ANSI. Get a real one."
#endif
#include "config.h"
#include "user_strings_unix.h"
#ifndef STDC_HEADERS
#error "You don't have ANSI C header files."
#endif
#ifdef HAVE_UNISTD_H
# include <sys/types.h>
# include <unistd.h>
#endif
#include <netinet/in.h>
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifdef HAVE_PTHREADS
# include <pthread.h>
#endif
#ifdef HAVE_FCNTL_H
# include <fcntl.h>
#endif
#ifdef TIME_WITH_SYS_TIME
# include <sys/time.h>
# include <time.h>
#else
# ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
# else
# include <time.h>
# endif
#endif
#if defined(__MACH__)
#include <mach/clock.h>
#endif
/* Symbol to distinguish Nigel's Aqua port from a normal Darwin X11 build */
/* (this sysdeps.h file is currently specific to the Mac OS X Aqua port) */
#define AQUA 1
/* Header which defines OS X version for selecting APIs */
#ifdef AVAILABILITYMACROS
# include <AvailabilityMacros.h>
#endif
#ifdef ENABLE_NATIVE_M68K
/* Mac and host address space are the same */
#define REAL_ADDRESSING 1
/* Using 68k natively */
#define EMULATED_68K 0
/* Mac ROM is not write protected */
#define ROM_IS_WRITE_PROTECTED 0
#define USE_SCRATCHMEM_SUBTERFUGE 1
#else
/* Mac and host address space are distinct */
#ifndef REAL_ADDRESSING
#define REAL_ADDRESSING 0
#endif
/* Using 68k emulator */
#define EMULATED_68K 1
/* The m68k emulator uses a prefetch buffer ? */
#define USE_PREFETCH_BUFFER 0
/* Mac ROM is write protected when banked memory is used */
#if REAL_ADDRESSING || DIRECT_ADDRESSING
# define ROM_IS_WRITE_PROTECTED 0
# define USE_SCRATCHMEM_SUBTERFUGE 1
#else
# define ROM_IS_WRITE_PROTECTED 1
#endif
#endif
/* Direct Addressing requires Video on SEGV signals */
#if DIRECT_ADDRESSING && !ENABLE_VOSF
# undef ENABLE_VOSF
# define ENABLE_VOSF 1
#endif
/* ExtFS is supported */
#define SUPPORTS_EXTFS 1
/* BSD socket API supported */
#define SUPPORTS_UDP_TUNNEL 1
/* Data types */
typedef unsigned char uint8;
typedef signed char int8;
#if SIZEOF_SHORT == 2
typedef unsigned short uint16;
typedef short int16;
#elif SIZEOF_INT == 2
typedef unsigned int uint16;
typedef int int16;
#else
#error "No 2 byte type, you lose."
#endif
#if SIZEOF_INT == 4
typedef unsigned int uint32;
typedef int int32;
#elif SIZEOF_LONG == 4
typedef unsigned long uint32;
typedef long int32;
#else
#error "No 4 byte type, you lose."
#endif
#if SIZEOF_LONG == 8
typedef unsigned long uint64;
typedef long int64;
#define VAL64(a) (a ## l)
#define UVAL64(a) (a ## ul)
#elif SIZEOF_LONG_LONG == 8
typedef unsigned long long uint64;
typedef long long int64;
#define VAL64(a) (a ## LL)
#define UVAL64(a) (a ## uLL)
#else
#error "No 8 byte type, you lose."
#endif
#if SIZEOF_VOID_P == 4
typedef uint32 uintptr;
typedef int32 intptr;
#elif SIZEOF_VOID_P == 8
typedef uint64 uintptr;
typedef int64 intptr;
#else
#error "Unsupported size of pointer"
#endif
#ifndef HAVE_LOFF_T
typedef off_t loff_t;
#endif
#ifndef HAVE_CADDR_T
typedef char * caddr_t;
#endif
/* Time data type for Time Manager emulation */
#ifdef HAVE_CLOCK_GETTIME
typedef struct timespec tm_time_t;
#elif defined(__MACH__)
typedef mach_timespec_t tm_time_t;
#else
typedef struct timeval tm_time_t;
#endif
/* Define codes for all the float formats that we know of.
* Though we only handle IEEE format. */
#define UNKNOWN_FLOAT_FORMAT 0
#define IEEE_FLOAT_FORMAT 1
#define VAX_FLOAT_FORMAT 2
#define IBM_FLOAT_FORMAT 3
#define C4X_FLOAT_FORMAT 4
/* UAE CPU data types */
#define uae_s8 int8
#define uae_u8 uint8
#define uae_s16 int16
#define uae_u16 uint16
#define uae_s32 int32
#define uae_u32 uint32
#define uae_s64 int64
#define uae_u64 uint64
typedef uae_u32 uaecptr;
/* Alignment restrictions */
#if defined(__i386__) || defined(__powerpc__) || defined(__m68k__) || defined(__x86_64__)
# define CPU_CAN_ACCESS_UNALIGNED
#endif
/* Timing functions */
extern uint64 GetTicks_usec(void);
extern void Delay_usec(uint32 usec);
#ifdef HAVE_PTHREADS
/* Centralized pthread attribute setup */
void Set_pthread_attr(pthread_attr_t *attr, int priority);
#endif
/* UAE CPU defines */
#ifdef WORDS_BIGENDIAN
#ifdef CPU_CAN_ACCESS_UNALIGNED
/* Big-endian CPUs which can do unaligned accesses */
static inline uae_u32 do_get_mem_long(uae_u32 *a) {return *a;}
static inline uae_u32 do_get_mem_word(uae_u16 *a) {return *a;}
static inline void do_put_mem_long(uae_u32 *a, uae_u32 v) {*a = v;}
static inline void do_put_mem_word(uae_u16 *a, uae_u32 v) {*a = v;}
#else /* CPU_CAN_ACCESS_UNALIGNED */
#ifdef sgi
/* The SGI MIPSPro compilers can do unaligned accesses given enough hints.
* They will automatically inline these routines. */
#ifdef __cplusplus
extern "C" { /* only the C compiler does unaligned accesses */
#endif
extern uae_u32 do_get_mem_long(uae_u32 *a);
extern uae_u32 do_get_mem_word(uae_u16 *a);
extern void do_put_mem_long(uae_u32 *a, uae_u32 v);
extern void do_put_mem_word(uae_u16 *a, uae_u32 v);
#ifdef __cplusplus
}
#endif
#else /* sgi */
/* Big-endian CPUs which can not do unaligned accesses (this is not the most efficient way to do this...) */
static inline uae_u32 do_get_mem_long(uae_u32 *a) {uint8 *b = (uint8 *)a; return (b[0] << 24) | (b[1] << 16) | (b[2] << 8) | b[3];}
static inline uae_u32 do_get_mem_word(uae_u16 *a) {uint8 *b = (uint8 *)a; return (b[0] << 8) | b[1];}
static inline void do_put_mem_long(uae_u32 *a, uae_u32 v) {uint8 *b = (uint8 *)a; b[0] = v >> 24; b[1] = v >> 16; b[2] = v >> 8; b[3] = v;}
static inline void do_put_mem_word(uae_u16 *a, uae_u32 v) {uint8 *b = (uint8 *)a; b[0] = v >> 8; b[1] = v;}
#endif /* sgi */
#endif /* CPU_CAN_ACCESS_UNALIGNED */
#else /* WORDS_BIGENDIAN */
#if defined(__i386__) || defined(__x86_64__)
/* Intel x86 */
#define X86_PPRO_OPT
static inline uae_u32 do_get_mem_long(uae_u32 *a) {uint32 retval; __asm__ ("bswap %0" : "=r" (retval) : "0" (*a) : "cc"); return retval;}
#ifdef X86_PPRO_OPT
static inline uae_u32 do_get_mem_word(uae_u16 *a) {uint32 retval; __asm__ ("movzwl %w1,%k0\n\tshll $16,%k0\n\tbswapl %k0\n" : "=&r" (retval) : "m" (*a) : "cc"); return retval;}
#else
static inline uae_u32 do_get_mem_word(uae_u16 *a) {uint32 retval; __asm__ ("xorl %k0,%k0\n\tmovw %w1,%w0\n\trolw $8,%w0" : "=&r" (retval) : "m" (*a) : "cc"); return retval;}
#endif
#define HAVE_GET_WORD_UNSWAPPED
#define do_get_mem_word_unswapped(a) ((uae_u32)*((uae_u16 *)(a)))
static inline void do_put_mem_long(uae_u32 *a, uae_u32 v) {__asm__ ("bswap %0" : "=r" (v) : "0" (v) : "cc"); *a = v;}
#ifdef X86_PPRO_OPT
static inline void do_put_mem_word(uae_u16 *a, uae_u32 v) {__asm__ ("bswapl %0" : "=&r" (v) : "0" (v << 16) : "cc"); *a = v;}
#else
static inline void do_put_mem_word(uae_u16 *a, uae_u32 v) {__asm__ ("rolw $8,%0" : "=r" (v) : "0" (v) : "cc"); *a = v;}
#endif
#define HAVE_OPTIMIZED_BYTESWAP_32
/* bswap doesn't affect condition codes */
static inline uae_u32 do_byteswap_32(uae_u32 v) {__asm__ ("bswap %0" : "=r" (v) : "0" (v)); return v;}
#define HAVE_OPTIMIZED_BYTESWAP_16
#ifdef X86_PPRO_OPT
static inline uae_u32 do_byteswap_16(uae_u32 v) {__asm__ ("bswapl %0" : "=&r" (v) : "0" (v << 16) : "cc"); return v;}
#else
static inline uae_u32 do_byteswap_16(uae_u32 v) {__asm__ ("rolw $8,%0" : "=r" (v) : "0" (v) : "cc"); return v;}
#endif
#elif defined(CPU_CAN_ACCESS_UNALIGNED)
/* Other little-endian CPUs which can do unaligned accesses */
static inline uae_u32 do_get_mem_long(uae_u32 *a) {uint32 x = *a; return (x >> 24) | (x >> 8) & 0xff00 | (x << 8) & 0xff0000 | (x << 24);}
static inline uae_u32 do_get_mem_word(uae_u16 *a) {uint16 x = *a; return (x >> 8) | (x << 8);}
static inline void do_put_mem_long(uae_u32 *a, uae_u32 v) {*a = (v >> 24) | (v >> 8) & 0xff00 | (v << 8) & 0xff0000 | (v << 24);}
static inline void do_put_mem_word(uae_u16 *a, uae_u32 v) {*a = (v >> 8) | (v << 8);}
#else /* CPU_CAN_ACCESS_UNALIGNED */
/* Other little-endian CPUs which can not do unaligned accesses (this needs optimization) */
static inline uae_u32 do_get_mem_long(uae_u32 *a) {uint8 *b = (uint8 *)a; return (b[0] << 24) | (b[1] << 16) | (b[2] << 8) | b[3];}
static inline uae_u32 do_get_mem_word(uae_u16 *a) {uint8 *b = (uint8 *)a; return (b[0] << 8) | b[1];}
static inline void do_put_mem_long(uae_u32 *a, uae_u32 v) {uint8 *b = (uint8 *)a; b[0] = v >> 24; b[1] = v >> 16; b[2] = v >> 8; b[3] = v;}
static inline void do_put_mem_word(uae_u16 *a, uae_u32 v) {uint8 *b = (uint8 *)a; b[0] = v >> 8; b[1] = v;}
#endif /* CPU_CAN_ACCESS_UNALIGNED */
#endif /* WORDS_BIGENDIAN */
#ifndef HAVE_OPTIMIZED_BYTESWAP_32
static inline uae_u32 do_byteswap_32(uae_u32 v)
{ return (((v >> 24) & 0xff) | ((v >> 8) & 0xff00) | ((v & 0xff) << 24) | ((v & 0xff00) << 8)); }
#endif
#ifndef HAVE_OPTIMIZED_BYTESWAP_16
static inline uae_u32 do_byteswap_16(uae_u32 v)
{ return (((v >> 8) & 0xff) | ((v & 0xff) << 8)); }
#endif
#define do_get_mem_byte(a) ((uae_u32)*((uae_u8 *)(a)))
#define do_put_mem_byte(a, v) (*(uae_u8 *)(a) = (v))
#define call_mem_get_func(func, addr) ((*func)(addr))
#define call_mem_put_func(func, addr, v) ((*func)(addr, v))
#define __inline__ inline
#define CPU_EMU_SIZE 0
#undef NO_INLINE_MEMORY_ACCESS
#undef MD_HAVE_MEM_1_FUNCS
#define ENUMDECL typedef enum
#define ENUMNAME(name) name
#define write_log printf
#if defined(X86_ASSEMBLY) || defined(X86_64_ASSEMBLY)
#define ASM_SYM_FOR_FUNC(a) __asm__(a)
#else
#define ASM_SYM_FOR_FUNC(a)
#endif
#ifndef REGPARAM
# define REGPARAM
#endif
#define REGPARAM2
#endif