mirror of
https://github.com/kanjitalk755/macemu.git
synced 2024-12-25 17:29:19 +00:00
Enable universal builds with --enable-universal
Move arch-dependent definitions to config_macosx.h, i.e. make them compile time instead of configure time. Support IEEE FPU emulation core only.
This commit is contained in:
parent
7015458281
commit
92ff210e4f
@ -3,12 +3,14 @@
|
||||
## System specific configuration
|
||||
SHELL = /bin/sh
|
||||
|
||||
CC = @CC@
|
||||
CXX = @CXX@
|
||||
HOST_CC = gcc
|
||||
HOST_CXX = g++
|
||||
CC = @CC@ -arch $(ARCH)
|
||||
CXX = @CXX@ -arch $(ARCH)
|
||||
CFLAGS = @CFLAGS@ -g
|
||||
CXXFLAGS = @CXXFLAGS@ -g
|
||||
CPPFLAGS = @CPPFLAGS@ -I../include -I. @CPUINCLUDES@
|
||||
DEFS = @DEFS@ @DEFINES@ -D_REENTRANT -DAQUA
|
||||
CPPFLAGS = @CPPFLAGS@ -I../include -I. -I../uae_cpu
|
||||
DEFS = @DEFS@ @DEFINES@ -D_REENTRANT -DAQUA -DFPU_IEEE
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBS = @LIBS@
|
||||
MONSRCS = @MONSRCS@
|
||||
@ -27,23 +29,47 @@ endif
|
||||
## 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)
|
||||
CPUSRCS = @CPUSRCS@
|
||||
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 \
|
||||
../uae_cpu/compiler/compemu_support.cpp \
|
||||
../uae_cpu/compiler/compemu_fpp.cpp \
|
||||
compstbl.o cpustbl_nf.o
|
||||
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)
|
||||
|
||||
## Files
|
||||
UNIXSRCS = vm_alloc.cpp vm_alloc.h sigsegv.cpp sigsegv.h video_vosf.h video_blit.cpp \
|
||||
xpram_unix.cpp user_strings_unix.cpp user_strings_unix.h \
|
||||
@ -61,18 +87,22 @@ SRCS = ../main.cpp main_macosx.mm ../prefs.cpp ../prefs_items.cpp prefs_macosx.m
|
||||
NNThread.m Emulator.mm EmulatorView.mm Controller.mm PrefsEditor.mm \
|
||||
sshpty.c strlcpy.c \
|
||||
$(MONSRCS) $(CPUSRCS) $(SLIRP_SRCS)
|
||||
|
||||
## Documentation files
|
||||
DOCS = README.txt Credits.html ToDo.html HowTo.html Versions.html
|
||||
|
||||
## Binaries to build
|
||||
APP = BasiliskII
|
||||
APP_APP = $(APP).app
|
||||
|
||||
PROGS = $(APP)_app
|
||||
DOCS = README.txt Credits.html ToDo.html HowTo.html Versions.html
|
||||
TARGET_ARCHES = @TARGET_ARCHES@
|
||||
PROGS = $(foreach arch, $(TARGET_ARCHES), $(APP).$(arch))
|
||||
|
||||
## Rules
|
||||
.PHONY: modules install installdirs uninstall mostlyclean clean distclean depend dep
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .c .cpp .s .o .h
|
||||
|
||||
all: $(PROGS)
|
||||
all: $(APP)_app
|
||||
|
||||
README.txt: ../../README
|
||||
$(LN_S) $< $@
|
||||
@ -80,6 +110,9 @@ $(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
|
||||
|
||||
@ -93,11 +126,25 @@ SRC_PATHS += $(sort $(foreach file, $(SRCS), $(dir $(file))))
|
||||
VPATH :=
|
||||
VPATH += $(addprefix :, $(subst ,:, $(filter-out $($(subst, :, ,$(VPATH))), $(SRC_PATHS))))
|
||||
|
||||
$(APP): $(UNIXSRCS) $(OBJ_DIR) $(OBJS)
|
||||
$(CXX) -o $@ $(LDFLAGS) $(OBJS) $(LIBS)
|
||||
$(BLESS) $(APP)
|
||||
define PROGS_template
|
||||
$(APP).$(1): links
|
||||
+$(MAKE) $(OBJ_DIR).$(1)/$(APP) ARCH=$(1)
|
||||
$(LN_S) -f $(OBJ_DIR).$(1)/$(APP) $(APP).$(1)
|
||||
endef
|
||||
|
||||
$(APP)_app: $(APP) $(DOCS) ../MacOSX/Info.plist ../MacOSX/$(APP).icns
|
||||
$(APP): $(PROGS)
|
||||
lipo $(foreach arch, $(TARGET_ARCHES), -arch $(arch) $(APP).$(arch)) \
|
||||
-create -output $@
|
||||
|
||||
$(foreach arch,$(TARGET_ARCHES),$(eval $(call PROGS_template,$(arch))))
|
||||
|
||||
links: $(UNIXSRCS)
|
||||
|
||||
$(OBJ_DIR)/$(APP): $(OBJ_DIR) $(GEN_DIR) $(OBJS)
|
||||
$(CXX) -o $@ $(LDFLAGS) $(OBJS) $(LIBS)
|
||||
$(BLESS) $@
|
||||
|
||||
$(APP)_app: $(APP) $(DOCS) Info.plist $(APP).icns
|
||||
mkdir -p $(APP_APP)/Contents
|
||||
cp -f ../MacOSX/Info.plist $(APP_APP)/Contents/
|
||||
echo -n 'APPL????' > $(APP_APP)/Contents/PkgInfo
|
||||
@ -106,17 +153,17 @@ $(APP)_app: $(APP) $(DOCS) ../MacOSX/Info.plist ../MacOSX/$(APP).icns
|
||||
strip $(APP_APP)/Contents/MacOS/$(APP)
|
||||
mkdir -p $(APP_APP)/Contents/Resources
|
||||
cp -Rp English.lproj $(APP_APP)/Contents/Resources/
|
||||
cp -f ../MacOSX/$(APP).icns $(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 -rf $(APP_APP)
|
||||
rm -f $(PROGS) $(OBJ_DIR)/* core* *.core *~ *.bak
|
||||
rm -f $(PROGS) $(OBJ_DIR)/* $(OBJ_DIR).*/* core* *.core *~ *.bak
|
||||
|
||||
clean: mostlyclean
|
||||
rm -f $(UNIXSRCS)
|
||||
rm -f cpuemu.cpp cpudefs.cpp cputmp*.s cpufast*.s cpustbl.cpp cputbl.h compemu.cpp compstbl.cpp comptbl.h
|
||||
rm -f $(GEN_DIR).*/*
|
||||
|
||||
distclean: clean
|
||||
rm -rf $(OBJ_DIR)
|
||||
@ -140,83 +187,90 @@ $(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.o
|
||||
$(CC) $(LDFLAGS) -o $(OBJ_DIR)/build68k $(OBJ_DIR)/build68k.o
|
||||
$(OBJ_DIR)/gencpu: $(OBJ_DIR)/gencpu.o $(OBJ_DIR)/readcpu.o $(OBJ_DIR)/cpudefs.o
|
||||
$(CXX) $(LDFLAGS) -o $(OBJ_DIR)/gencpu $(OBJ_DIR)/gencpu.o $(OBJ_DIR)/readcpu.o $(OBJ_DIR)/cpudefs.o
|
||||
$(OBJ_DIR)/gencomp: $(OBJ_DIR)/gencomp.o $(OBJ_DIR)/readcpu.o $(OBJ_DIR)/cpudefs.o
|
||||
$(CXX) $(LDFLAGS) -o $(OBJ_DIR)/gencomp $(OBJ_DIR)/gencomp.o $(OBJ_DIR)/readcpu.o $(OBJ_DIR)/cpudefs.o
|
||||
$(OBJ_DIR)/build68k: $(OBJ_DIR)/build68k.ho
|
||||
$(HOST_CC) $(LDFLAGS) -o $@ $(OBJ_DIR)/build68k.ho
|
||||
$(OBJ_DIR)/gencpu: $(OBJ_DIR)/gencpu.ho $(OBJ_DIR)/readcpu.ho $(OBJ_DIR)/cpudefs.ho
|
||||
$(HOST_CXX) $(LDFLAGS) -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) $(LDFLAGS) -o $@ $(OBJ_DIR)/gencomp.ho $(OBJ_DIR)/readcpu.ho $(OBJ_DIR)/cpudefs.ho
|
||||
|
||||
cpudefs.cpp: $(OBJ_DIR)/build68k ../uae_cpu/table68k
|
||||
$(OBJ_DIR)/build68k <../uae_cpu/table68k >cpudefs.cpp
|
||||
cpustbl.cpp: cpuemu.cpp
|
||||
cpustbl_nf.cpp: cpustbl.cpp
|
||||
compstbl.cpp: compemu.cpp
|
||||
cputbl.h: cpuemu.cpp
|
||||
comptbl.h: compemu.cpp
|
||||
$(GEN_DIR)::
|
||||
@[ -d $(GEN_DIR) ] || mkdir $(GEN_DIR) > /dev/null 2>&1
|
||||
|
||||
cpuemu.cpp: $(OBJ_DIR)/gencpu
|
||||
$(OBJ_DIR)/gencpu
|
||||
$(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
|
||||
|
||||
compemu.cpp: $(OBJ_DIR)/gencomp
|
||||
$(OBJ_DIR)/gencomp
|
||||
$(GEN_DIR)/cpuemu.cpp: $(OBJ_DIR)/gencpu
|
||||
cd $(GEN_DIR) && ../$(OBJ_DIR)/gencpu
|
||||
|
||||
$(OBJ_DIR)/cpustbl_nf.o: cpustbl.cpp
|
||||
$(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 comptbl.h
|
||||
$(OBJ_DIR)/compemu_support.o: compemu_support.cpp $(GEN_DIR)/comptbl.h
|
||||
$(CXX) $(CPPFLAGS) $(DEFS) $(CXXFLAGS) -c $< -o $@
|
||||
|
||||
$(OBJ_DIR)/cpuemu1.o: cpuemu.cpp
|
||||
$(OBJ_DIR)/cpuemu1.o: $(GEN_DIR)/cpuemu.cpp
|
||||
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_1 $(CXXFLAGS) -c $< -o $@
|
||||
$(OBJ_DIR)/cpuemu2.o: cpuemu.cpp
|
||||
$(OBJ_DIR)/cpuemu2.o: $(GEN_DIR)/cpuemu.cpp
|
||||
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_2 $(CXXFLAGS) -c $< -o $@
|
||||
$(OBJ_DIR)/cpuemu3.o: cpuemu.cpp
|
||||
$(OBJ_DIR)/cpuemu3.o: $(GEN_DIR)/cpuemu.cpp
|
||||
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_3 $(CXXFLAGS) -c $< -o $@
|
||||
$(OBJ_DIR)/cpuemu4.o: cpuemu.cpp
|
||||
$(OBJ_DIR)/cpuemu4.o: $(GEN_DIR)/cpuemu.cpp
|
||||
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_4 $(CXXFLAGS) -c $< -o $@
|
||||
$(OBJ_DIR)/cpuemu5.o: cpuemu.cpp
|
||||
$(OBJ_DIR)/cpuemu5.o: $(GEN_DIR)/cpuemu.cpp
|
||||
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_5 $(CXXFLAGS) -c $< -o $@
|
||||
$(OBJ_DIR)/cpuemu6.o: cpuemu.cpp
|
||||
$(OBJ_DIR)/cpuemu6.o: $(GEN_DIR)/cpuemu.cpp
|
||||
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_6 $(CXXFLAGS) -c $< -o $@
|
||||
$(OBJ_DIR)/cpuemu7.o: cpuemu.cpp
|
||||
$(OBJ_DIR)/cpuemu7.o: $(GEN_DIR)/cpuemu.cpp
|
||||
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_7 $(CXXFLAGS) -c $< -o $@
|
||||
$(OBJ_DIR)/cpuemu8.o: cpuemu.cpp
|
||||
$(OBJ_DIR)/cpuemu8.o: $(GEN_DIR)/cpuemu.cpp
|
||||
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_8 $(CXXFLAGS) -c $< -o $@
|
||||
|
||||
$(OBJ_DIR)/cpuemu1_nf.o: cpuemu.cpp
|
||||
$(OBJ_DIR)/cpuemu1_nf.o: $(GEN_DIR)/cpuemu.cpp
|
||||
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_1 -DNOFLAGS $(CXXFLAGS) -c $< -o $@
|
||||
$(OBJ_DIR)/cpuemu2_nf.o: cpuemu.cpp
|
||||
$(OBJ_DIR)/cpuemu2_nf.o: $(GEN_DIR)/cpuemu.cpp
|
||||
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_2 -DNOFLAGS $(CXXFLAGS) -c $< -o $@
|
||||
$(OBJ_DIR)/cpuemu3_nf.o: cpuemu.cpp
|
||||
$(OBJ_DIR)/cpuemu3_nf.o: $(GEN_DIR)/cpuemu.cpp
|
||||
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_3 -DNOFLAGS $(CXXFLAGS) -c $< -o $@
|
||||
$(OBJ_DIR)/cpuemu4_nf.o: cpuemu.cpp
|
||||
$(OBJ_DIR)/cpuemu4_nf.o: $(GEN_DIR)/cpuemu.cpp
|
||||
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_4 -DNOFLAGS $(CXXFLAGS) -c $< -o $@
|
||||
$(OBJ_DIR)/cpuemu5_nf.o: cpuemu.cpp
|
||||
$(OBJ_DIR)/cpuemu5_nf.o: $(GEN_DIR)/cpuemu.cpp
|
||||
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_5 -DNOFLAGS $(CXXFLAGS) -c $< -o $@
|
||||
$(OBJ_DIR)/cpuemu6_nf.o: cpuemu.cpp
|
||||
$(OBJ_DIR)/cpuemu6_nf.o: $(GEN_DIR)/cpuemu.cpp
|
||||
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_6 -DNOFLAGS $(CXXFLAGS) -c $< -o $@
|
||||
$(OBJ_DIR)/cpuemu7_nf.o: cpuemu.cpp
|
||||
$(OBJ_DIR)/cpuemu7_nf.o: $(GEN_DIR)/cpuemu.cpp
|
||||
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_7 -DNOFLAGS $(CXXFLAGS) -c $< -o $@
|
||||
$(OBJ_DIR)/cpuemu8_nf.o: cpuemu.cpp
|
||||
$(OBJ_DIR)/cpuemu8_nf.o: $(GEN_DIR)/cpuemu.cpp
|
||||
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_8 -DNOFLAGS $(CXXFLAGS) -c $< -o $@
|
||||
|
||||
$(OBJ_DIR)/compemu1.o: compemu.cpp
|
||||
$(OBJ_DIR)/compemu1.o: $(GEN_DIR)/compemu.cpp
|
||||
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_1 $(CXXFLAGS) -c $< -o $@
|
||||
$(OBJ_DIR)/compemu2.o: compemu.cpp
|
||||
$(OBJ_DIR)/compemu2.o: $(GEN_DIR)/compemu.cpp
|
||||
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_2 $(CXXFLAGS) -c $< -o $@
|
||||
$(OBJ_DIR)/compemu3.o: compemu.cpp
|
||||
$(OBJ_DIR)/compemu3.o: $(GEN_DIR)/compemu.cpp
|
||||
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_3 $(CXXFLAGS) -c $< -o $@
|
||||
$(OBJ_DIR)/compemu4.o: compemu.cpp
|
||||
$(OBJ_DIR)/compemu4.o: $(GEN_DIR)/compemu.cpp
|
||||
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_4 $(CXXFLAGS) -c $< -o $@
|
||||
$(OBJ_DIR)/compemu5.o: compemu.cpp
|
||||
$(OBJ_DIR)/compemu5.o: $(GEN_DIR)/compemu.cpp
|
||||
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_5 $(CXXFLAGS) -c $< -o $@
|
||||
$(OBJ_DIR)/compemu6.o: compemu.cpp
|
||||
$(OBJ_DIR)/compemu6.o: $(GEN_DIR)/compemu.cpp
|
||||
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_6 $(CXXFLAGS) -c $< -o $@
|
||||
$(OBJ_DIR)/compemu7.o: compemu.cpp
|
||||
$(OBJ_DIR)/compemu7.o: $(GEN_DIR)/compemu.cpp
|
||||
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_7 $(CXXFLAGS) -c $< -o $@
|
||||
$(OBJ_DIR)/compemu8.o: compemu.cpp
|
||||
$(OBJ_DIR)/compemu8.o: $(GEN_DIR)/compemu.cpp
|
||||
$(CXX) $(CPPFLAGS) $(DEFS) -DPART_8 $(CXXFLAGS) -c $< -o $@
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
|
62
BasiliskII/src/MacOSX/config_macosx.h
Normal file
62
BasiliskII/src/MacOSX/config_macosx.h
Normal file
@ -0,0 +1,62 @@
|
||||
/*
|
||||
* config_macosx.h - MacOS X macros determined at compile-time
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
* Basilisk II (C) 1997-2005 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 */
|
@ -13,6 +13,10 @@ 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.])
|
||||
@ -22,6 +26,18 @@ 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
|
||||
])
|
||||
|
||||
dnl Video options.
|
||||
AC_ARG_ENABLE(multiwin,
|
||||
[ --enable-multiwin allow multiple emulator windows [default=no]], [ENABLE_MULTIPLE=$enableval], [ENABLE_MULTIPLE=no])
|
||||
@ -30,21 +46,6 @@ 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 FPU emulation core.
|
||||
AC_ARG_ENABLE(fpe,
|
||||
[ --enable-fpe=FPE specify which fpu emulator to use [default=auto]],
|
||||
[ case "$enableval" in
|
||||
dnl default is always ieee, if architecture has this fp format
|
||||
auto) FPE_CORE_TEST_ORDER="ieee uae";;
|
||||
ieee) FPE_CORE_TEST_ORDER="ieee";;
|
||||
uae) FPE_CORE_TEST_ORDER="uae";;
|
||||
x86) FPE_CORE_TEST_ORDER="x86";;
|
||||
*) AC_MSG_ERROR([--enable-fpe takes only one of the following values: auto, x86, ieee, uae]);;
|
||||
esac
|
||||
],
|
||||
[ FPE_CORE_TEST_ORDER="ieee uae"
|
||||
])
|
||||
|
||||
dnl Addressing modes.
|
||||
AC_ARG_ENABLE(addressing,
|
||||
[ --enable-addressing=AM specify the addressing mode to use [default=fastest]],
|
||||
@ -182,17 +183,8 @@ AC_CHECK_HEADERS(AvailabilityMacros.h)
|
||||
AC_CHECK_HEADERS(IOKit/storage/IOBlockStorageDevice.h)
|
||||
|
||||
dnl Checks for typedefs, structures, and compiler characteristics.
|
||||
AC_C_BIGENDIAN
|
||||
AC_C_CONST
|
||||
AC_C_INLINE
|
||||
AC_CHECK_SIZEOF(short, 2)
|
||||
AC_CHECK_SIZEOF(int, 4)
|
||||
AC_CHECK_SIZEOF(long, 4)
|
||||
AC_CHECK_SIZEOF(long long, 8)
|
||||
AC_CHECK_SIZEOF(float, 4)
|
||||
AC_CHECK_SIZEOF(double, 8)
|
||||
AC_CHECK_SIZEOF(long double, 12)
|
||||
AC_CHECK_SIZEOF(void *, 4)
|
||||
AC_TYPE_OFF_T
|
||||
dnl These two symbols are not defined in 10.1's autoconf:
|
||||
dnl AC_CHECK_TYPE(loff_t, off_t)
|
||||
@ -968,201 +960,18 @@ if [[ "x$HAVE_GCC30" = "xyes" -a "x$HAVE_ICC" = "xno" ]]; then
|
||||
fi
|
||||
fi
|
||||
|
||||
dnl Select appropriate CPU source and REGPARAM define.
|
||||
ASM_OPTIMIZATIONS=none
|
||||
CPUSRCS="cpuemu1.cpp cpuemu2.cpp cpuemu3.cpp cpuemu4.cpp cpuemu5.cpp cpuemu6.cpp cpuemu7.cpp cpuemu8.cpp"
|
||||
|
||||
dnl Other platforms should define their own set of noflags file variants
|
||||
CAN_JIT=no
|
||||
if [[ "x$HAVE_GCC27" = "xyes" -a "x$HAVE_I386" = "xyes" ]]; then
|
||||
dnl i386 CPU
|
||||
DEFINES="$DEFINES -DUNALIGNED_PROFITABLE -DREGPARAM=\"__attribute__((regparm(3)))\""
|
||||
if [[ "x$HAVE_GAS" = "xyes" ]]; then
|
||||
ASM_OPTIMIZATIONS=i386
|
||||
DEFINES="$DEFINES -DX86_ASSEMBLY -DOPTIMIZED_FLAGS -DSAHF_SETO_PROFITABLE"
|
||||
CAN_JIT=yes
|
||||
fi
|
||||
elif [[ "x$HAVE_GCC30" = "xyes" -a "x$HAVE_X86_64" = "xyes" ]]; then
|
||||
dnl x86-64 CPU
|
||||
DEFINES="$DEFINES -DUNALIGNED_PROFITABLE"
|
||||
if [[ "x$HAVE_GAS" = "xyes" ]]; then
|
||||
ASM_OPTIMIZATIONS="x86-64"
|
||||
DEFINES="$DEFINES -DX86_64_ASSEMBLY -DOPTIMIZED_FLAGS"
|
||||
CAN_JIT=yes
|
||||
fi
|
||||
fi
|
||||
|
||||
dnl Enable JIT compiler, if possible.
|
||||
if [[ "x$WANT_JIT" = "xyes" -a "x$CAN_JIT" ]]; then
|
||||
dnl Make sure we can enable JIT debug mode.
|
||||
if [[ "x$WANT_JIT_DEBUG" = "xyes" ]]; then
|
||||
if [[ "x$WANT_MON" = "xno" ]]; 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 IEEE core is the only FPU emulator to use with the JIT compiler
|
||||
case $FPE_CORE_TEST_ORDER in
|
||||
ieee*) ;;
|
||||
*) AC_MSG_WARN([Forcing use of the IEEE FPU core, as the JIT compiler supports only this one.]) ;;
|
||||
esac
|
||||
FPE_CORE_TEST_ORDER="ieee"
|
||||
else
|
||||
WANT_JIT=no
|
||||
WANT_JIT_DEBUG=no
|
||||
JITSRCS=""
|
||||
fi
|
||||
|
||||
dnl Utility macro used by next two tests.
|
||||
dnl AC_EXAMINE_OBJECT(C source code,
|
||||
dnl commands examining object file,
|
||||
dnl [commands to run if compile failed]):
|
||||
dnl
|
||||
dnl Compile the source code to an object file; then convert it into a
|
||||
dnl printable representation. All unprintable characters and
|
||||
dnl asterisks (*) are replaced by dots (.). All white space is
|
||||
dnl deleted. Newlines (ASCII 0x10) in the input are preserved in the
|
||||
dnl output, but runs of newlines are compressed to a single newline.
|
||||
dnl Finally, line breaks are forcibly inserted so that no line is
|
||||
dnl longer than 80 columns and the file ends with a newline. The
|
||||
dnl result of all this processing is in the file conftest.dmp, which
|
||||
dnl may be examined by the commands in the second argument.
|
||||
dnl
|
||||
AC_DEFUN([gcc_AC_EXAMINE_OBJECT],
|
||||
[AC_LANG_SAVE
|
||||
AC_LANG_C
|
||||
dnl Next bit cribbed from AC_TRY_COMPILE.
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
[#line __oline__ "configure"
|
||||
#include "confdefs.h"
|
||||
$1
|
||||
]EOF
|
||||
if AC_TRY_EVAL(ac_compile); then
|
||||
od -c conftest.o |
|
||||
sed ['s/^[0-7]*[ ]*/ /
|
||||
s/\*/./g
|
||||
s/ \\n/*/g
|
||||
s/ [0-9][0-9][0-9]/./g
|
||||
s/ \\[^ ]/./g'] |
|
||||
tr -d '
|
||||
' | tr -s '*' '
|
||||
' | fold | sed '$a\
|
||||
' > conftest.dmp
|
||||
$2
|
||||
ifelse($3, , , else
|
||||
$3
|
||||
)dnl
|
||||
fi
|
||||
rm -rf conftest*
|
||||
AC_LANG_RESTORE])
|
||||
|
||||
dnl Floating point format probe.
|
||||
dnl The basic concept is the same as the above: grep the object
|
||||
dnl file for an interesting string. We have to watch out for
|
||||
dnl rounding changing the values in the object, however; this is
|
||||
dnl handled by ignoring the least significant byte of the float.
|
||||
dnl
|
||||
dnl Does not know about VAX G-float or C4x idiosyncratic format.
|
||||
dnl It does know about PDP-10 idiosyncratic format, but this is
|
||||
dnl not presently supported by GCC. S/390 "binary floating point"
|
||||
dnl is in fact IEEE (but maybe we should have that in EBCDIC as well
|
||||
dnl as ASCII?)
|
||||
dnl
|
||||
AC_DEFUN([gcc_AC_C_FLOAT_FORMAT],
|
||||
[AC_CACHE_CHECK(floating point format, ac_cv_c_float_format,
|
||||
[gcc_AC_EXAMINE_OBJECT(
|
||||
[/* This will not work unless sizeof(double) == 8. */
|
||||
extern char sizeof_double_must_be_8 [sizeof(double) == 8 ? 1 : -1];
|
||||
|
||||
/* This structure must have no internal padding. */
|
||||
struct possibility {
|
||||
char prefix[8];
|
||||
double candidate;
|
||||
char postfix[8];
|
||||
};
|
||||
|
||||
#define C(cand) { "\nformat:", cand, ":tamrof\n" }
|
||||
struct possibility table [] =
|
||||
{
|
||||
C( 3.25724264705901305206e+01), /* @@IEEEFP - IEEE 754 */
|
||||
C( 3.53802595280598432000e+18), /* D__float - VAX */
|
||||
C( 5.32201830133125317057e-19), /* D.PDP-10 - PDP-10 - the dot is 0x13a */
|
||||
C( 1.77977764695171661377e+10), /* IBMHEXFP - s/390 format, ascii */
|
||||
C(-5.22995989424860458374e+10) /* IBMHEXFP - s/390 format, EBCDIC */
|
||||
};],
|
||||
[if grep 'format:.@IEEEF.:tamrof' conftest.dmp >/dev/null 2>&1; then
|
||||
ac_cv_c_float_format='IEEE (big-endian)'
|
||||
elif grep 'format:.I@@PFE.:tamrof' conftest.dmp >/dev/null 2>&1; then
|
||||
ac_cv_c_float_format='IEEE (big-endian)'
|
||||
elif grep 'format:.FEEEI@.:tamrof' conftest.dmp >/dev/null 2>&1; then
|
||||
ac_cv_c_float_format='IEEE (little-endian)'
|
||||
elif grep 'format:.EFP@@I.:tamrof' conftest.dmp >/dev/null 2>&1; then
|
||||
ac_cv_c_float_format='IEEE (little-endian)'
|
||||
elif grep 'format:.__floa.:tamrof' conftest.dmp >/dev/null 2>&1; then
|
||||
ac_cv_c_float_format='VAX D-float'
|
||||
elif grep 'format:..PDP-1.:tamrof' conftest.dmp >/dev/null 2>&1; then
|
||||
ac_cv_c_float_format='PDP-10'
|
||||
elif grep 'format:.BMHEXF.:tamrof' conftest.dmp >/dev/null 2>&1; then
|
||||
ac_cv_c_float_format='IBM 370 hex'
|
||||
else
|
||||
AC_MSG_ERROR(Unknown floating point format)
|
||||
fi],
|
||||
[AC_MSG_ERROR(compile failed)])
|
||||
])
|
||||
# IEEE is the default format. If the float endianness isn't the same
|
||||
# as the integer endianness, we have to set FLOAT_WORDS_BIG_ENDIAN
|
||||
# (which is a tristate: yes, no, default). This is only an issue with
|
||||
# IEEE; the other formats are only supported by a few machines each,
|
||||
# all with the same endianness.
|
||||
format=IEEE_FLOAT_FORMAT
|
||||
fbigend=
|
||||
case $ac_cv_c_float_format in
|
||||
'IEEE (big-endian)' )
|
||||
if test $ac_cv_c_bigendian = no; then
|
||||
fbigend=1
|
||||
fi
|
||||
;;
|
||||
'IEEE (little-endian)' )
|
||||
if test $ac_cv_c_bigendian = yes; then
|
||||
fbigend=0
|
||||
fi
|
||||
;;
|
||||
'VAX D-float' )
|
||||
format=VAX_FLOAT_FORMAT
|
||||
;;
|
||||
'PDP-10' )
|
||||
format=PDP10_FLOAT_FORMAT
|
||||
;;
|
||||
'IBM 370 hex' )
|
||||
format=IBM_FLOAT_FORMAT
|
||||
;;
|
||||
esac
|
||||
AC_DEFINE_UNQUOTED(HOST_FLOAT_FORMAT, $format,
|
||||
[Define to the floating point format of the host machine.])
|
||||
if test -n "$fbigend"; then
|
||||
AC_DEFINE_UNQUOTED(HOST_FLOAT_WORDS_BIG_ENDIAN, $fbigend,
|
||||
[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.])
|
||||
fi
|
||||
])
|
||||
|
||||
dnl Select appropriate FPU source.
|
||||
gcc_AC_C_FLOAT_FORMAT
|
||||
dnl Additionnal checks for the IEEE FPU emulation code.
|
||||
AC_CHECK_HEADERS(ieee754.h ieeefp.h floatingpoint.h nan.h)
|
||||
|
||||
for fpe in $FPE_CORE_TEST_ORDER; do
|
||||
case $fpe in
|
||||
ieee)
|
||||
case $ac_cv_c_float_format in
|
||||
IEEE*)
|
||||
FPE_CORE="IEEE fpu core"
|
||||
DEFINES="$DEFINES -DFPU_IEEE"
|
||||
AC_DEFINE(FPU_IEEE, 1, [Floating Point Core emulation method is IEEE.])
|
||||
FPUSRCS="../uae_cpu/fpu/fpu_ieee.cpp"
|
||||
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
|
||||
@ -1172,41 +981,6 @@ for fpe in $FPE_CORE_TEST_ORDER; do
|
||||
AC_CHECK_FUNCS(sinl cosl tanl sinhl coshl tanhl)
|
||||
AC_CHECK_FUNCS(asinl acosl atanl asinhl acoshl atanhl)
|
||||
AC_CHECK_FUNCS(floorl ceill)
|
||||
break
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
x86)
|
||||
if [[ ":$HAVE_GCC27:$HAVE_I386:$HAVE_GAS:" = ":yes:yes:yes:" ]]; then
|
||||
FPE_CORE="i387 fpu core"
|
||||
DEFINES="$DEFINES -DFPU_X86"
|
||||
FPUSRCS="../uae_cpu/fpu/fpu_x86.cpp"
|
||||
break
|
||||
fi
|
||||
;;
|
||||
uae)
|
||||
FPE_CORE="uae fpu core"
|
||||
DEFINES="$DEFINES -DFPU_UAE"
|
||||
AC_DEFINE(FPU_UAE, 1, [Floating Point Core emulation is standard UAE.])
|
||||
FPUSRCS="../uae_cpu/fpu/fpu_uae.cpp"
|
||||
break
|
||||
;;
|
||||
*)
|
||||
AC_MSG_ERROR([Internal configure.in script error for $fpe fpu core])
|
||||
;;
|
||||
esac
|
||||
done
|
||||
if [[ "x$FPE_CORE" = "x" ]]; then
|
||||
AC_MSG_ERROR([Sorry, no suitable FPU core found in $FPE_CORE_TEST_ORDER])
|
||||
fi
|
||||
|
||||
dnl Check for certain math functions
|
||||
AC_CHECK_FUNCS(atanh)
|
||||
AC_CHECK_FUNCS(isnan isinf finite isnormal signbit)
|
||||
|
||||
dnl UAE CPU sources for all non-m68k-native architectures.
|
||||
CPUINCLUDES="-I../uae_cpu"
|
||||
CPUSRCS="../uae_cpu/basilisk_glue.cpp ../uae_cpu/memory.cpp ../uae_cpu/newcpu.cpp ../uae_cpu/readcpu.cpp $FPUSRCS cpustbl.cpp cpudefs.cpp $CPUSRCS $JITSRCS"
|
||||
|
||||
dnl Remove the "-g" option if set for GCC.
|
||||
if [[ "x$HAVE_GCC27" = "xyes" ]]; then
|
||||
@ -1214,14 +988,6 @@ if [[ "x$HAVE_GCC27" = "xyes" ]]; then
|
||||
CXXFLAGS=`echo $CXXFLAGS | sed -e 's/-g\b//g'`
|
||||
fi
|
||||
|
||||
dnl Or if we have -IPA (MIPSPro compilers)
|
||||
if [[ "x$HAVE_IPA" = "xyes" ]]; then
|
||||
CFLAGS="`echo $CFLAGS | sed -e 's/-g//g'` -O3 -OPT:Olimit=0 -IPA"
|
||||
CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-g//g'` -O3 -OPT:Olimit=0 -IPA"
|
||||
CXXFLAGS="-LANG:std $CXXFLAGS"
|
||||
LDFLAGS="$LDFLAGS -O3 -OPT:Olimit=0 -IPA"
|
||||
fi
|
||||
|
||||
dnl
|
||||
dnl Some Mac OS X specific stuff:
|
||||
dnl
|
||||
@ -1242,14 +1008,18 @@ else
|
||||
IDEARGS=""
|
||||
fi
|
||||
|
||||
AC_DEFINE(HAVE_SLIRP, 1, [Try to compile network emulation library!])
|
||||
dnl Universal binaries
|
||||
if [[ -z "$WANT_UNIVERSAL" ]]; then
|
||||
WANT_UNIVERSAL=`echo $target_cpu | sed -e 's/i.86/i386/'`
|
||||
fi
|
||||
AC_SUBST(TARGET_ARCHES, [$WANT_UNIVERSAL])
|
||||
|
||||
AC_DEFINE(DATADIR, "~", [unix_ether needs this!])
|
||||
|
||||
dnl Generate Makefile.
|
||||
AC_SUBST(DEFINES)
|
||||
AC_SUBST(MONSRCS)
|
||||
AC_SUBST(CPUINCLUDES)
|
||||
AC_SUBST(CPUSRCS)
|
||||
AC_SUBST(BLESS)
|
||||
AC_SUBST(IDE)
|
||||
AC_SUBST(PROJECT)
|
||||
@ -1267,13 +1037,12 @@ 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 Floating-Point emulation core .......... : $FPE_CORE
|
||||
echo Assembly optimizations ................. : $ASM_OPTIMIZATIONS
|
||||
echo Addressing mode ........................ : $ADDRESSING_MODE
|
||||
echo Bad memory access recovery type ........ : $sigsegv_recovery
|
||||
echo Mac OS X development environment ....... : $IDE
|
||||
|
Loading…
Reference in New Issue
Block a user