aboutsummaryrefslogblamecommitdiff
path: root/emulators/bochs/Makefile
blob: 834baafb70fc8542acb7f4265878d7d89dfaddeb (plain) (tree)
1
2
3
4
5
6
7
8
9
                  
 
                     
                      
                 
                         
                  
 
                              
                                                                       
 
                      
 

                                                                                                                                
                                                   
                   
                   

                                                  
                                                           
 

                           


                                      
                                  
 
                                                                       
                                                           
                                                                        
                                               






                                                                           
                                     

                                                                      
                                                                        

                                                                        
 
                                           
                                       
                                               
                                               
                                        
                                             

                                                
                           

                                        
                                        
                                     
                             
                                                                    
                                                 


                                                                             
                                        
                                                          
                                                 
                                        
                                        

                                                   
                             



                                             
                                            
                                           
                                      



                                                         
                                      

                                                                 
                            

                                                                  
                                                   



                                                    
                                        
                                        
                                        
                                                                  
                                                          
                                         
                                                 
                                       

                                             
                                             
                                       
                                       
                                                             
                                                




                                                                         
                                      
                                                               
                                                 






                                                                                
                                       



                                                             
                                          
                                                    
                                
                                        

                                                                 
                                               
                                                                    
                           
                                                  
                            
                                                           
                           



                                                           
                           


                                                          
                                        
                                                                    
                           




                                             
                                                  
                            
                                                                   
                           

                                        

                                                              
                                                      
                                             

                                        
                           

                                        
                                        

                                                       
                                        



                                                 
                                                                    
                                                        
                                      
                                                      
                                      


                                          
                          


                                                       

                                   
                                                       
                                      

                                        
                                

                           


                              


                                                                       

      


                                                                         
      
 

                                                   



                                                       
      
 

                                                  
                                                                                       

                                                    


                
                            
                    
                                                                                                                                                                                                                                                  
                    
      
 
           


                                              







                                                              

                                                              

                                                   


                                                      



                                                                             
                                                    
                                      



                                                         
 


                                                        
             
                             

                                                  



                                                                     

                                                                  

                                                                               

                     
                                       





                                                          
                                            

                                                           
 
                      
# Created by: alex

PORTNAME=	bochs
PORTVERSION=	2.6.11
PORTEPOCH=	2
CATEGORIES=	emulators
MASTER_SITES=	SF

MAINTAINER=	nc@FreeBSD.org
COMMENT=	IA-32 (x86) PC emulator that runs DOS, Win 95, and more

LICENSE=	LGPL21

BROKEN_i386=		does not build on i386 (../cpu.h:4513:117: error: 'regparm' parameter must be between 0 and 3 inclusive)

USES=		gmake libtool:keepla pkgconfig xorg
USE_XORG=	x11
GNU_CONFIGURE=	yes
CONFIGURE_ENV=	ac_cv_header_alsa_asoundlib_h=no \
		ac_cv_header_ltdl_h=no
CONFIGURE_ARGS=	--disable-docbook --disable-instrumentation

SUB_FILES=	pkg-message

CFLAGS+=	-fomit-frame-pointer
CXXFLAGS+=	-fno-exceptions
CPPFLAGS+=	-I${LOCALBASE}/include
LDFLAGS+=	-L${LOCALBASE}/lib

OPTIONS_DEFINE=		A20_PIN ALIGN_CHECK ASSERT_CHECK AVX BUSMOUSE \
			CDROM CHAINING CLGD54XX CONF_MSRS \
			DEBUGGER DEBUGGER_GUI DEBUGGER_X86 DISASM DOCS \
			E1000 ES1370 EVEX FPU \
			GAMEPORT GDB_STUB IDLE_HACK IODEBUG \
			LARGE_RAMFILE LOGGING LONG_PHY_ADDR MEMTYPE MWAIT \
			NE2000 OPTIMIZATIONS \
			PCI PERFMON PNIC PLUGINS USB USB_OHCI USB_XHCI \
			RAW_SERIAL READLINE REPEAT_SPEED \
			SB16 SHOW_IPS SMP STATS SVM TRACE_LINK \
			VMX VOODOO X86_64 XPM
OPTIONS_DEFINE_i386=	FAST_FUNCCALL
OPTIONS_GROUP=		UI
OPTIONS_GROUP_UI=	RFB SDL1 SDL2 SVGALIB TERM VNCSERVER WXGTK X11
OPTIONS_DEFAULT=	A20_PIN ALIGN_CHECK CDROM CONF_MSRS DISASM FPU \
			LARGE_RAMFILE LOGGING NE2000 OPTIMIZATIONS PCI \
			SB16 SHOW_IPS STATS X11

A20_PIN_DESC=		Support for A20 pin
A20_PIN_CONFIGURE_ENABLE=	a20-pin
ALIGN_CHECK_DESC=	Alignment check support
ALIGN_CHECK_CONFIGURE_ENABLE=	alignment-check
ASSERT_CHECK_DESC=	BX_ASSERT checks
ASSERT_CHECK_CONFIGURE_ENABLE=	assert-checks
ASSERT_CHECK_IMPLIES=	DEBUGGER
AVX_DESC=		AVX instructions support
AVX_CONFIGURE_ENABLE=	avx
AVX_IMPLIES=		X86_64
BUSMOUSE_DESC=		Busmouse support
BUSMOUSE_CONFIGURE_ENABLE=	busmouse
CDROM_DESC=		CDROM support
CDROM_CONFIGURE_ENABLE=	cdrom
CHAINING_DESC=		Support handlers-chaining emulation speedups
CHAINING_CONFIGURE_ENABLE=	handlers-chaining
CHAINING_PREVENTS=	ASSERT_CHECK DEBUGGER DEBUGGER_GUI IODEBUG GDB_STUB \
			READLINE
CLGD54XX_DESC=		Cirrus Logic GD54xx video card
CLGD54XX_CONFIGURE_ENABLE=	clgd54xx
CONF_MSRS_DESC=		Configurable MSR registers support
CONF_MSRS_CONFIGURE_ENABLE=	configurable-msrs
DEBUGGER_DESC=		Debugger support
DEBUGGER_CONFIGURE_ENABLE=	debugger
DEBUGGER_IMPLIES=	DISASM
DEBUGGER_GUI_DESC=	GTK+ 2 GUI debugger support
DEBUGGER_GUI_USES=	gnome
DEBUGGER_GUI_USE=	GNOME=gtk20
DEBUGGER_GUI_CONFIGURE_ENABLE=	debugger-gui
DEBUGGER_GUI_IMPLIES=	DEBUGGER
DEBUGGER_X86_DESC=	X86 hardware debugger
DEBUGGER_X86_CONFIGURE_ENABLE=	x86-debugger
DISASM_DESC=		Disassemler support
DISASM_CONFIGURE_ENABLE=	disasm
E1000_DESC=		Intel(R) Gigabit Ethernet support
E1000_CONFIGURE_ENABLE=	e1000
E1000_IMPLIES=		PCI
ES1370_DESC=		ES1370 soundcard support
ES1370_CONFIGURE_ENABLE=	es1370
ES1370_IMPLIES=		PCI
EVEX_DESC=		EVEX prefix and AVX-512 extensios support
EVEX_CONFIGURE_ENABLE=	evex
EVEX_IMPLIES=		AVX
FAST_FUNCCALL_DESC=	Support for fast function calls (x86 only)
FAST_FUNCCALL_CONFIGURE_ENABLE=	fast-function-calls
FPU_DESC=		FPU emulator
FPU_CONFIGURE_ENABLE=	fpu
FPU_VARS_OFF=		WITH_CPU_LEVEL=3
GAMEPORT_DESC=		Standard PC gameport support
GAMEPORT_CONFIGURE_ENABLE=	gameport
GDB_STUB_DESC=		GDB stub support
GDB_STUB_CONFIGURE_ENABLE=	gdb-stub
GDB_STUB_PREVENTS=	ASSERT_CHECK DEBUGGER DEBUGGER_GUI IODEBUG
IDLE_HACK_DESC=		Keep Bochs from using all CPU time
IDLE_HACK_CONFIGURE_ENABLE=	idle-hack
IODEBUG_DESC=		I/O interface to debugger
IODEBUG_CONFIGURE_ENABLE=	iodebug
IODEBUG_IMPLIES=	DEBUGGER
LARGE_RAMFILE_DESC=	Large ramfile support
LARGE_RAMFILE_CONFIGURE_ENABLE=	large-ramfile
LOGGING_DESC=		Logging support
LOGGING_CONFIGURE_ENABLE=	logging
LONG_PHY_ADDR_DESC=	Support for physical address >= 32bit
LONG_PHY_ADDR_CONFIGURE_ENABLE=	long-phy-address
MEMTYPE_DESC=		Memory type calculation support
MEMTYPE_CONFIGURE_ENABLE=	memtype
MWAIT_DESC=		MONITOR/MWAIT instructions support (experimemtal)
MWAIT_CONFIGURE_ENABLE=	monitor-mwait
NE2000_DESC=		NE2000 support
NE2000_CONFIGURE_ENABLE=	ne2000
OPTIMIZATIONS_DESC=	Compile in all safe speed optimizations
OPTIMIZATIONS_CONFIGURE_ENABLE=	all-optimizations
OPTIMIZATIONS_IMPLIES=	CHAINING FAST_FUNCCALL REPEAT_SPEED TRACE_LINK
OPTIMIZATIONS_PREVENTS=	ASSERT_CHECK DEBUGGER DEBUGGER_GUI IODEBUG GDB_STUB \
			READLINE
PCI_DESC=		Intel(R) i440FX PCI support
PCI_CONFIGURE_ENABLE=	pci
PERFMON_DESC=		Hardware performance monitoring emulation (experimental)
PERFMON_CONFIGURE_ENABLE=	perfmon
PLUGINS_CONFIGURE_ENABLE=	plugins
PNIC_DESC=		PCI pseudo NIC (network card) support
PNIC_CONFIGURE_ENABLE=	pnic
PNIC_IMPLIES=		PCI
RAW_SERIAL_DESC=	Raw serial port access
RAW_SERIAL_CONFIGURE_ENABLE=	raw-serial
READLINE_DESC=		Readline support in debugger
READLINE_USES=		readline
READLINE_CONFIGURE_ENABLE=	readline
READLINE_IMPLIES=	DEBUGGER
REPEAT_SPEED_DESC=	Support repeated IO and mem copy speedups
REPEAT_SPEED_CONFIGURE_ENABLE=	repeat-speedups
RFB_DESC=		RFB protocol support (works with VNC viewer)
RFB_CONFIGURE_WITH=	rfb
SB16_DESC=		Sound Blaster 16 emulation
SB16_CONFIGURE_ENABLE=	sb16
SDL1_DESC=		Simple Direct Media Layer 1 support
SDL1_USES=		sdl
SDL1_USE=		SDL=sdl
SDL1_CONFIGURE_WITH=	sdl
SDL1_PREVENTS=		SDL2
SDL2_DESC=		Simple Direct Media Layer 2 support
SDL2_USES=		sdl
SDL2_USE=		SDL=sdl2
SDL2_CONFIGURE_WITH=	sdl2
SHOW_IPS_DESC=		Show IPS in status bar or log file
SHOW_IPS_CONFIGURE_ENABLE=	show-ips
SMP_DESC=		Support for SMP configurations (CPU level 6)
SMP_CONFIGURE_ENABLE=	smp
SMP_VARS=		WITH_CPU_LEVEL=6
SMP_IMPLIES=		FPU
SMP_PREVENTS=		GDB_STUB
STATS_DESC=		Statistics collection
STATS_CONFIGURE_ENABLE=	stats
SVGALIB_LIB_DEPENDS=	libvga.so:graphics/svgalib
SVGALIB_CONFIGURE_WITH=	svga
SVM_DESC=		SVM (AMD: secure virtual machine) emulation
SVM_CONFIGURE_ENABLE=	svm
SVM_VARS=		WITH_CPU_LEVEL=6
SVM_IMPLIES=		X86_64
TERM_DESC=		Use text only, console based interface
TERM_CONFIGURE_WITH=	term
TRACE_LINK_DESC=	Support trace linking speedups
TRACE_LINK_CONFIGURE_ENABLE=	trace-linking
UI_DESC=		User Interface
USB_DESC=		USB UHCI support
USB_CONFIGURE_ENABLE=	usb
USB_IMPLIES=		PCI
USB_OHCI_DESC=		USB OHCI support
USB_OHCI_CONFIGURE_ENABLE=	usb-ohci
USB_OHCI_IMPLIES=	PCI
USB_XHCI_DESC=		USB xHCI support (experimental)
USB_XHCI_CONFIGURE_ENABLE=	usb-xhci
USB_XHCI_IMPLIES=	PCI
VMX_DESC=		Virtialization extensions
VMX_VARS=		WITH_CPU_LEVEL=6
VMX_IMPLIES=		FPU
VNCSERVER_DESC=		LibVNCServer support (works with VNC viewer)
VNCSERVER_LIB_DEPENDS=	libvncserver.so:net/libvncserver
VNCSERVER_CONFIGURE_WITH=	vncsrv
VOODOO_DESC=		3dfx Voodoo Graphics emulation
VOODOO_CONFIGURE_ENABLE=	voodoo
VOODOO_IMPLIES=		PCI
WXGTK_USES=		compiler:c++11-lib
WXGTK_USE=		WX=3.0
WXGTK_CONFIGURE_WITH=	wx
WXGTK_CXXFLAGS_OFF=	-fno-rtti
WXGTK_CPPFLAGS=		$$(pkg-config --cflags gdk-2.0)
WXGTK_IMPLIES=		X11
X11_USE=		XORG=xrandr
X11_CONFIGURE_WITH=	x11
X86_64_DESC=		Support for x86-64 instructions
X86_64_CONFIGURE_ENABLE=	x86-64
X86_64_VARS=		WITH_CPU_LEVEL=6
X86_64_IMPLIES=		FPU
XPM_USE=		XORG=xpm
XPM_CONFIGURE_ENABLE=	xpm
XPM_IMPLIES=		X11

.include <bsd.port.options.mk>

.if ${PORT_OPTIONS:MDEBUGGER_GUI} && empty(PORT_OPTIONS:MSDL1) && \
	empty(PORT_OPTIONS:MSDL2) && empty(PORT_OPTIONS:MX11)
IGNORE=		option DEBUGGER_GUI requires SDL1, SDL2, or X11 support
.endif

.if ${PORT_OPTIONS:MGAMEPORT} && empty(PORT_OPTIONS:MES1370) && \
	empty(PORT_OPTIONS:MSB16)
IGNORE=		option GAMEPORT requires SB16 or ES1370 soundcard support
.endif

.if ${PORT_OPTIONS:MVMX} && ${PORT_OPTIONS:MX86_64}
CONFIGURE_ARGS+=--enable-vmx=2
.endif

.if ${PORT_OPTIONS:MVMX} && empty(PORT_OPTIONS:MX86_64)
CONFIGURE_ARGS+=--enable-vmx=1
.endif

.if defined(WITH_CPU_LEVEL)
.if ${WITH_CPU_LEVEL} < 3 || ${WITH_CPU_LEVEL} > 6
IGNORE=		cannot install: WITH_CPU_LEVEL must be an integer value between 3 and 6
.endif
CONFIGURE_ARGS+=--enable-cpu-level=${WITH_CPU_LEVEL}
.endif

pre-everything::
.if !defined(WITH_CPU_LEVEL)
	@${ECHO_CMD}
	@${ECHO_CMD} "If you want to change the processor level to emulate (default is 5, aka Pentium), set WITH_CPU_LEVEL to the desired value. Choices are 3, 4, 5 and 6 which mean target 386, 486, Pentium or Pentium Pro emulation." | ${FMT}
	@${ECHO_CMD}
.endif

post-patch:
	@${REINPLACE_CMD} -e \
		'/DEFAULT_GUI=/s|x11|nogui|' \
		 ${WRKSRC}/configure
	@${REINPLACE_CMD} -Ee \
		's|$$BXSHARE/|${DATADIR}/|; \
		 s|^#clock: sync=none|clock: sync=realtime|; \
		 s|^log: .+|log: /dev/null|; \
		 s|^panic: .+|panic: action=ask|; \
		 s|^parport1: .+|#&|' \
		 ${WRKSRC}/.bochsrc
	@${REINPLACE_CMD} -Ee \
		's|install_share install_doc|install_share|; \
		 s|(^sharedir.+=).+|\1 ${DATADIR}|; \
		 s|(^docdir.+=).+|\1 ${DOCSDIR}|' \
		 ${WRKSRC}/Makefile.in
	@${REINPLACE_CMD} -Ee \
		's|(@GUI_.+FLAGS@)$$|\1 @CPPFLAGS@|' \
		 ${WRKSRC}/bx_debug/Makefile.in
	@${REINPLACE_CMD} -e \
		's|/usr/local/share/bochs|${DATADIR}|; \
		 s|/usr/local/share/doc/bochs|${DOCSDIR}|' \
		 ${WRKSRC}/doc/docbook/user/user.dbk ${WRKSRC}/doc/man/*.[15]
	@${REINPLACE_CMD} -e 's|</usr/include/|<|' \
		 ${WRKSRC}/gui/svga.cc
	@${REINPLACE_CMD} -Ee \
		's|(^LOCAL_CXXFLAGS.+=)|\1 @CPPFLAGS@|; \
		 s|(-lvgagl)$$|\1 @LDFLAGS@|' \
		 ${WRKSRC}/gui/Makefile.in

post-build:
	@${LN} -sf .bochsrc ${WRKSRC}/bochsrc-sample.txt

post-install:
.for f in bochs bxhub bximage
	${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/${f}
.endfor

post-install-PLUGINS-on:
	@${FIND} ${STAGEDIR}${PREFIX}/lib/bochs -name "libbx_*.so*" \
		-type f -print0 | ${XARGS} -0 ${STRIP_CMD}
	@${FIND} ${STAGEDIR}${PREFIX}/lib/bochs ! -type d | \
		${SED} 's,^${STAGEDIR}${PREFIX}/,,' >> ${TMPPLIST}
	@${FIND} ${STAGEDIR}${PREFIX}/lib/bochs -type d -empty | ${SORT} -r | \
		${SED} 's,^${STAGEDIR}${PREFIX}/,@dir ,' >> ${TMPPLIST}

post-install-DOCS-on:
	@${MKDIR} ${STAGEDIR}${DOCSDIR}
.for i in CHANGES README TODO bochsrc-sample.txt
	(cd ${WRKSRC} && ${INSTALL_DATA} ${i} \
		${STAGEDIR}${DOCSDIR})
.endfor
	(cd ${WRKSRC}/docs-html && ${INSTALL_DATA} *.txt \
		${STAGEDIR}${DOCSDIR})
	@${MKDIR} ${STAGEDIR}${DOCSDIR}/html
	(cd ${WRKSRC}/docs-html && ${INSTALL_DATA} *.html \
		${STAGEDIR}${DOCSDIR}/html)

.include <bsd.port.mk>