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
|
## System specific configuration
|
||||||
SHELL = /bin/sh
|
SHELL = /bin/sh
|
||||||
|
|
||||||
CC = @CC@
|
HOST_CC = gcc
|
||||||
CXX = @CXX@
|
HOST_CXX = g++
|
||||||
|
CC = @CC@ -arch $(ARCH)
|
||||||
|
CXX = @CXX@ -arch $(ARCH)
|
||||||
CFLAGS = @CFLAGS@ -g
|
CFLAGS = @CFLAGS@ -g
|
||||||
CXXFLAGS = @CXXFLAGS@ -g
|
CXXFLAGS = @CXXFLAGS@ -g
|
||||||
CPPFLAGS = @CPPFLAGS@ -I../include -I. @CPUINCLUDES@
|
CPPFLAGS = @CPPFLAGS@ -I../include -I. -I../uae_cpu
|
||||||
DEFS = @DEFS@ @DEFINES@ -D_REENTRANT -DAQUA
|
DEFS = @DEFS@ @DEFINES@ -D_REENTRANT -DAQUA -DFPU_IEEE
|
||||||
LDFLAGS = @LDFLAGS@
|
LDFLAGS = @LDFLAGS@
|
||||||
LIBS = @LIBS@
|
LIBS = @LIBS@
|
||||||
MONSRCS = @MONSRCS@
|
MONSRCS = @MONSRCS@
|
||||||
@ -27,23 +29,47 @@ endif
|
|||||||
## CPU emulation code
|
## CPU emulation code
|
||||||
WANT_JIT = @WANT_JIT@
|
WANT_JIT = @WANT_JIT@
|
||||||
WANT_JIT_DEBUG = @WANT_JIT_DEBUG@
|
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)
|
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)
|
ifeq ($(USE_JIT), yes)
|
||||||
DEFS += -DUSE_JIT -DUSE_JIT_FPU
|
DEFS += -DUSE_JIT -DUSE_JIT_FPU
|
||||||
ifeq ($(WANT_JIT_DEBUG), yes)
|
ifeq ($(WANT_JIT_DEBUG), yes)
|
||||||
DEFS += -DJIT_DEBUG
|
DEFS += -DJIT_DEBUG
|
||||||
endif
|
endif
|
||||||
CPUSRCS += \
|
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 \
|
cpuemu1_nf.cpp cpuemu2_nf.cpp cpuemu3_nf.cpp cpuemu4_nf.cpp \
|
||||||
cpuemu5_nf.cpp cpuemu6_nf.cpp cpuemu7_nf.cpp cpuemu8_nf.cpp \
|
cpuemu5_nf.cpp cpuemu6_nf.cpp cpuemu7_nf.cpp cpuemu8_nf.cpp \
|
||||||
compemu1.cpp compemu2.cpp compemu3.cpp compemu4.cpp \
|
compemu1.cpp compemu2.cpp compemu3.cpp compemu4.cpp \
|
||||||
compemu5.cpp compemu6.cpp compemu7.cpp compemu8.cpp \
|
compemu5.cpp compemu6.cpp compemu7.cpp compemu8.cpp \
|
||||||
../uae_cpu/compiler/compemu_support.cpp \
|
cpustbl_nf.cpp compstbl.cpp
|
||||||
../uae_cpu/compiler/compemu_fpp.cpp \
|
|
||||||
compstbl.o cpustbl_nf.o
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
GEN_DIR = gen
|
||||||
|
ifneq ($(ARCH),)
|
||||||
|
GEN_DIR = gen.$(ARCH)
|
||||||
|
endif
|
||||||
|
CPUSRCS += $(foreach file, $(GEN_CPUSRCS), $(GEN_DIR)/$(file))
|
||||||
|
CPPFLAGS += -I$(GEN_DIR)
|
||||||
|
|
||||||
## Files
|
## Files
|
||||||
UNIXSRCS = vm_alloc.cpp vm_alloc.h sigsegv.cpp sigsegv.h video_vosf.h video_blit.cpp \
|
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 \
|
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 \
|
NNThread.m Emulator.mm EmulatorView.mm Controller.mm PrefsEditor.mm \
|
||||||
sshpty.c strlcpy.c \
|
sshpty.c strlcpy.c \
|
||||||
$(MONSRCS) $(CPUSRCS) $(SLIRP_SRCS)
|
$(MONSRCS) $(CPUSRCS) $(SLIRP_SRCS)
|
||||||
|
|
||||||
|
## Documentation files
|
||||||
|
DOCS = README.txt Credits.html ToDo.html HowTo.html Versions.html
|
||||||
|
|
||||||
|
## Binaries to build
|
||||||
APP = BasiliskII
|
APP = BasiliskII
|
||||||
APP_APP = $(APP).app
|
APP_APP = $(APP).app
|
||||||
|
TARGET_ARCHES = @TARGET_ARCHES@
|
||||||
PROGS = $(APP)_app
|
PROGS = $(foreach arch, $(TARGET_ARCHES), $(APP).$(arch))
|
||||||
DOCS = README.txt Credits.html ToDo.html HowTo.html Versions.html
|
|
||||||
|
|
||||||
## Rules
|
## Rules
|
||||||
.PHONY: modules install installdirs uninstall mostlyclean clean distclean depend dep
|
.PHONY: modules install installdirs uninstall mostlyclean clean distclean depend dep
|
||||||
.SUFFIXES:
|
.SUFFIXES:
|
||||||
.SUFFIXES: .c .cpp .s .o .h
|
.SUFFIXES: .c .cpp .s .o .h
|
||||||
|
|
||||||
all: $(PROGS)
|
all: $(APP)_app
|
||||||
|
|
||||||
README.txt: ../../README
|
README.txt: ../../README
|
||||||
$(LN_S) $< $@
|
$(LN_S) $< $@
|
||||||
@ -80,6 +110,9 @@ $(UNIXSRCS): %: ../Unix/%
|
|||||||
$(LN_S) $< $@
|
$(LN_S) $< $@
|
||||||
|
|
||||||
OBJ_DIR = obj
|
OBJ_DIR = obj
|
||||||
|
ifneq ($(ARCH),)
|
||||||
|
OBJ_DIR = obj.$(ARCH)
|
||||||
|
endif
|
||||||
$(OBJ_DIR)::
|
$(OBJ_DIR)::
|
||||||
@[ -d $(OBJ_DIR) ] || mkdir $(OBJ_DIR) > /dev/null 2>&1
|
@[ -d $(OBJ_DIR) ] || mkdir $(OBJ_DIR) > /dev/null 2>&1
|
||||||
|
|
||||||
@ -93,11 +126,25 @@ SRC_PATHS += $(sort $(foreach file, $(SRCS), $(dir $(file))))
|
|||||||
VPATH :=
|
VPATH :=
|
||||||
VPATH += $(addprefix :, $(subst ,:, $(filter-out $($(subst, :, ,$(VPATH))), $(SRC_PATHS))))
|
VPATH += $(addprefix :, $(subst ,:, $(filter-out $($(subst, :, ,$(VPATH))), $(SRC_PATHS))))
|
||||||
|
|
||||||
$(APP): $(UNIXSRCS) $(OBJ_DIR) $(OBJS)
|
define PROGS_template
|
||||||
$(CXX) -o $@ $(LDFLAGS) $(OBJS) $(LIBS)
|
$(APP).$(1): links
|
||||||
$(BLESS) $(APP)
|
+$(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
|
mkdir -p $(APP_APP)/Contents
|
||||||
cp -f ../MacOSX/Info.plist $(APP_APP)/Contents/
|
cp -f ../MacOSX/Info.plist $(APP_APP)/Contents/
|
||||||
echo -n 'APPL????' > $(APP_APP)/Contents/PkgInfo
|
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)
|
strip $(APP_APP)/Contents/MacOS/$(APP)
|
||||||
mkdir -p $(APP_APP)/Contents/Resources
|
mkdir -p $(APP_APP)/Contents/Resources
|
||||||
cp -Rp English.lproj $(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/
|
cp -f $(DOCS) $(APP_APP)/Contents/Resources/
|
||||||
find $(APP_APP) -type d -name CVS | xargs rm -rf
|
find $(APP_APP) -type d -name CVS | xargs rm -rf
|
||||||
|
|
||||||
mostlyclean:
|
mostlyclean:
|
||||||
rm -rf $(APP_APP)
|
rm -rf $(APP_APP)
|
||||||
rm -f $(PROGS) $(OBJ_DIR)/* core* *.core *~ *.bak
|
rm -f $(PROGS) $(OBJ_DIR)/* $(OBJ_DIR).*/* core* *.core *~ *.bak
|
||||||
|
|
||||||
clean: mostlyclean
|
clean: mostlyclean
|
||||||
rm -f $(UNIXSRCS)
|
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
|
distclean: clean
|
||||||
rm -rf $(OBJ_DIR)
|
rm -rf $(OBJ_DIR)
|
||||||
@ -140,83 +187,90 @@ $(OBJ_DIR)/%.o : %.mm
|
|||||||
$(CXX) $(CPPFLAGS) $(DEFS) $(CXXFLAGS) -c $< -o $@
|
$(CXX) $(CPPFLAGS) $(DEFS) $(CXXFLAGS) -c $< -o $@
|
||||||
$(OBJ_DIR)/%.o : %.s
|
$(OBJ_DIR)/%.o : %.s
|
||||||
$(CC) $(CPPFLAGS) $(DEFS) $(CFLAGS) -c $< -o $@
|
$(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
|
$(OBJ_DIR)/build68k: $(OBJ_DIR)/build68k.ho
|
||||||
$(CC) $(LDFLAGS) -o $(OBJ_DIR)/build68k $(OBJ_DIR)/build68k.o
|
$(HOST_CC) $(LDFLAGS) -o $@ $(OBJ_DIR)/build68k.ho
|
||||||
$(OBJ_DIR)/gencpu: $(OBJ_DIR)/gencpu.o $(OBJ_DIR)/readcpu.o $(OBJ_DIR)/cpudefs.o
|
$(OBJ_DIR)/gencpu: $(OBJ_DIR)/gencpu.ho $(OBJ_DIR)/readcpu.ho $(OBJ_DIR)/cpudefs.ho
|
||||||
$(CXX) $(LDFLAGS) -o $(OBJ_DIR)/gencpu $(OBJ_DIR)/gencpu.o $(OBJ_DIR)/readcpu.o $(OBJ_DIR)/cpudefs.o
|
$(HOST_CXX) $(LDFLAGS) -o $@ $(OBJ_DIR)/gencpu.ho $(OBJ_DIR)/readcpu.ho $(OBJ_DIR)/cpudefs.ho
|
||||||
$(OBJ_DIR)/gencomp: $(OBJ_DIR)/gencomp.o $(OBJ_DIR)/readcpu.o $(OBJ_DIR)/cpudefs.o
|
$(OBJ_DIR)/gencomp: $(OBJ_DIR)/gencomp.ho $(OBJ_DIR)/readcpu.ho $(OBJ_DIR)/cpudefs.ho
|
||||||
$(CXX) $(LDFLAGS) -o $(OBJ_DIR)/gencomp $(OBJ_DIR)/gencomp.o $(OBJ_DIR)/readcpu.o $(OBJ_DIR)/cpudefs.o
|
$(HOST_CXX) $(LDFLAGS) -o $@ $(OBJ_DIR)/gencomp.ho $(OBJ_DIR)/readcpu.ho $(OBJ_DIR)/cpudefs.ho
|
||||||
|
|
||||||
cpudefs.cpp: $(OBJ_DIR)/build68k ../uae_cpu/table68k
|
$(GEN_DIR)::
|
||||||
$(OBJ_DIR)/build68k <../uae_cpu/table68k >cpudefs.cpp
|
@[ -d $(GEN_DIR) ] || mkdir $(GEN_DIR) > /dev/null 2>&1
|
||||||
cpustbl.cpp: cpuemu.cpp
|
|
||||||
cpustbl_nf.cpp: cpustbl.cpp
|
|
||||||
compstbl.cpp: compemu.cpp
|
|
||||||
cputbl.h: cpuemu.cpp
|
|
||||||
comptbl.h: compemu.cpp
|
|
||||||
|
|
||||||
cpuemu.cpp: $(OBJ_DIR)/gencpu
|
$(GEN_DIR)/cpudefs.cpp: $(OBJ_DIR)/build68k ../uae_cpu/table68k
|
||||||
$(OBJ_DIR)/gencpu
|
$(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
|
$(GEN_DIR)/cpuemu.cpp: $(OBJ_DIR)/gencpu
|
||||||
$(OBJ_DIR)/gencomp
|
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 $@
|
$(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 $@
|
$(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 $@
|
$(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 $@
|
$(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 $@
|
$(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 $@
|
$(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 $@
|
$(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 $@
|
$(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 $@
|
$(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 $@
|
$(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 $@
|
$(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 $@
|
$(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 $@
|
$(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 $@
|
$(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 $@
|
$(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 $@
|
$(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 $@
|
$(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 $@
|
$(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 $@
|
$(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 $@
|
$(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 $@
|
$(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 $@
|
$(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 $@
|
$(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 $@
|
$(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 $@
|
$(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 $@
|
$(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_CONFIG_AUX_DIR(../Unix)
|
||||||
AC_PREREQ(2.12)
|
AC_PREREQ(2.12)
|
||||||
AC_CONFIG_HEADER(config.h)
|
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.
|
dnl Aliases for PACKAGE and VERSION macros.
|
||||||
AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE_NAME", [Define this program name.])
|
AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE_NAME", [Define this program name.])
|
||||||
@ -22,29 +26,26 @@ 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.
|
dnl cores for the configure tests since some are intended to dump core.
|
||||||
ulimit -c 0
|
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.
|
dnl Video options.
|
||||||
AC_ARG_ENABLE(multiwin,
|
AC_ARG_ENABLE(multiwin,
|
||||||
[ --enable-multiwin allow multiple emulator windows [default=no]], [ENABLE_MULTIPLE=$enableval], [ENABLE_MULTIPLE=no])
|
[ --enable-multiwin allow multiple emulator windows [default=no]], [ENABLE_MULTIPLE=$enableval], [ENABLE_MULTIPLE=no])
|
||||||
|
|
||||||
dnl JIT compiler options.
|
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-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])
|
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.
|
dnl Addressing modes.
|
||||||
AC_ARG_ENABLE(addressing,
|
AC_ARG_ENABLE(addressing,
|
||||||
[ --enable-addressing=AM specify the addressing mode to use [default=fastest]],
|
[ --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)
|
AC_CHECK_HEADERS(IOKit/storage/IOBlockStorageDevice.h)
|
||||||
|
|
||||||
dnl Checks for typedefs, structures, and compiler characteristics.
|
dnl Checks for typedefs, structures, and compiler characteristics.
|
||||||
AC_C_BIGENDIAN
|
|
||||||
AC_C_CONST
|
AC_C_CONST
|
||||||
AC_C_INLINE
|
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
|
AC_TYPE_OFF_T
|
||||||
dnl These two symbols are not defined in 10.1's autoconf:
|
dnl These two symbols are not defined in 10.1's autoconf:
|
||||||
dnl AC_CHECK_TYPE(loff_t, off_t)
|
dnl AC_CHECK_TYPE(loff_t, off_t)
|
||||||
@ -968,245 +960,27 @@ if [[ "x$HAVE_GCC30" = "xyes" -a "x$HAVE_ICC" = "xno" ]]; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dnl Select appropriate CPU source and REGPARAM define.
|
dnl Make sure we can enable JIT debug mode.
|
||||||
ASM_OPTIMIZATIONS=none
|
if [[ "x$WANT_JIT_DEBUG" = "xyes" ]]; then
|
||||||
CPUSRCS="cpuemu1.cpp cpuemu2.cpp cpuemu3.cpp cpuemu4.cpp cpuemu5.cpp cpuemu6.cpp cpuemu7.cpp cpuemu8.cpp"
|
if [[ ":$WANT_JIT:$WANT_MON:" != ":yes:yes:" ]]; then
|
||||||
|
AC_MSG_WARN([cxmon not found, ignoring --enable-jit-debug])
|
||||||
dnl Other platforms should define their own set of noflags file variants
|
WANT_JIT_DEBUG=no
|
||||||
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
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dnl Enable JIT compiler, if possible.
|
dnl Additionnal checks for the IEEE FPU emulation code.
|
||||||
if [[ "x$WANT_JIT" = "xyes" -a "x$CAN_JIT" ]]; then
|
|
||||||
if [[ "x$WANT_JIT_DEBUG" = "xyes" ]]; then
|
|
||||||
if [[ "x$WANT_MON" = "xno" ]]; 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
|
|
||||||
AC_CHECK_HEADERS(ieee754.h ieeefp.h floatingpoint.h nan.h)
|
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"
|
|
||||||
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)
|
|
||||||
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(atanh)
|
||||||
AC_CHECK_FUNCS(isnan isinf finite isnormal signbit)
|
AC_CHECK_FUNCS(isnan isinf finite isnormal signbit)
|
||||||
|
dnl Math functions not mandated by C99 standard
|
||||||
dnl UAE CPU sources for all non-m68k-native architectures.
|
AC_CHECK_FUNCS(isnanl isinfl)
|
||||||
CPUINCLUDES="-I../uae_cpu"
|
dnl Math functions required by C99 standard, but probably not
|
||||||
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 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.
|
dnl Remove the "-g" option if set for GCC.
|
||||||
if [[ "x$HAVE_GCC27" = "xyes" ]]; then
|
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'`
|
CXXFLAGS=`echo $CXXFLAGS | sed -e 's/-g\b//g'`
|
||||||
fi
|
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
|
||||||
dnl Some Mac OS X specific stuff:
|
dnl Some Mac OS X specific stuff:
|
||||||
dnl
|
dnl
|
||||||
@ -1242,14 +1008,18 @@ else
|
|||||||
IDEARGS=""
|
IDEARGS=""
|
||||||
fi
|
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!])
|
AC_DEFINE(DATADIR, "~", [unix_ether needs this!])
|
||||||
|
|
||||||
dnl Generate Makefile.
|
dnl Generate Makefile.
|
||||||
AC_SUBST(DEFINES)
|
AC_SUBST(DEFINES)
|
||||||
AC_SUBST(MONSRCS)
|
AC_SUBST(MONSRCS)
|
||||||
AC_SUBST(CPUINCLUDES)
|
AC_SUBST(CPUINCLUDES)
|
||||||
AC_SUBST(CPUSRCS)
|
|
||||||
AC_SUBST(BLESS)
|
AC_SUBST(BLESS)
|
||||||
AC_SUBST(IDE)
|
AC_SUBST(IDE)
|
||||||
AC_SUBST(PROJECT)
|
AC_SUBST(PROJECT)
|
||||||
@ -1267,13 +1037,12 @@ dnl Print summary.
|
|||||||
echo
|
echo
|
||||||
echo Basilisk II configuration summary:
|
echo Basilisk II configuration summary:
|
||||||
echo
|
echo
|
||||||
|
echo Build binaries for ..................... : $WANT_UNIVERSAL
|
||||||
echo Multiple emulator windows .............. : $ENABLE_MULTIPLE
|
echo Multiple emulator windows .............. : $ENABLE_MULTIPLE
|
||||||
echo Enable video on SEGV signals ........... : $WANT_VOSF
|
echo Enable video on SEGV signals ........... : $WANT_VOSF
|
||||||
echo mon debugger support ................... : $WANT_MON
|
echo mon debugger support ................... : $WANT_MON
|
||||||
echo Build JIT compiler ..................... : $WANT_JIT
|
echo Build JIT compiler ..................... : $WANT_JIT
|
||||||
echo Build JIT with debug code .............. : $WANT_JIT_DEBUG
|
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 Addressing mode ........................ : $ADDRESSING_MODE
|
||||||
echo Bad memory access recovery type ........ : $sigsegv_recovery
|
echo Bad memory access recovery type ........ : $sigsegv_recovery
|
||||||
echo Mac OS X development environment ....... : $IDE
|
echo Mac OS X development environment ....... : $IDE
|
||||||
|
Loading…
Reference in New Issue
Block a user