commit
195329463b
6
Makefile
6
Makefile
@ -16,7 +16,7 @@ endif
|
|||||||
ifeq ($(PLATFORM),windows32)
|
ifeq ($(PLATFORM),windows32)
|
||||||
_ := $(shell chcp 65001)
|
_ := $(shell chcp 65001)
|
||||||
EXESUFFIX:=.exe
|
EXESUFFIX:=.exe
|
||||||
NATIVE_CC = clang -IWindows -Wno-deprecated-declarations
|
NATIVE_CC = clang -IWindows -Wno-deprecated-declarations --target=i386-pc-windows
|
||||||
else
|
else
|
||||||
EXESUFFIX:=
|
EXESUFFIX:=
|
||||||
NATIVE_CC := cc
|
NATIVE_CC := cc
|
||||||
@ -129,8 +129,8 @@ GL_CFLAGS := $(shell $(PKG_CONFIG) --cflags gl)
|
|||||||
GL_LDFLAGS := $(shell $(PKG_CONFIG) --libs gl || echo -lGL)
|
GL_LDFLAGS := $(shell $(PKG_CONFIG) --libs gl || echo -lGL)
|
||||||
endif
|
endif
|
||||||
ifeq ($(PLATFORM),windows32)
|
ifeq ($(PLATFORM),windows32)
|
||||||
CFLAGS += -IWindows -Drandom=rand
|
CFLAGS += -IWindows -Drandom=rand --target=i386-pc-windows
|
||||||
LDFLAGS += -lmsvcrt -lcomdlg32 -luser32 -lSDL2main -Wl,/MANIFESTFILE:NUL
|
LDFLAGS += -lmsvcrt -lcomdlg32 -luser32 -lshell32 -lSDL2main -Wl,/MANIFESTFILE:NUL --target=i386-pc-windows
|
||||||
SDL_LDFLAGS := -lSDL2
|
SDL_LDFLAGS := -lSDL2
|
||||||
GL_LDFLAGS := -lopengl32
|
GL_LDFLAGS := -lopengl32
|
||||||
else
|
else
|
||||||
|
@ -40,14 +40,14 @@ SameBoy is an open-source project licensed under the MIT license, and you're wel
|
|||||||
SameBoy requires the following tools and libraries to build:
|
SameBoy requires the following tools and libraries to build:
|
||||||
* clang
|
* clang
|
||||||
* make
|
* make
|
||||||
* Cocoa port: OS X SDK and Xcode command line tools
|
* macOS Cocoa port: macOS SDK and Xcode (For command line tools and ibtool)
|
||||||
* SDL port: libsdl2
|
* SDL port: libsdl2
|
||||||
* [rgbds](https://github.com/bentley/rgbds/releases/), for boot ROM compilation
|
* [rgbds](https://github.com/bentley/rgbds/releases/), for boot ROM compilation
|
||||||
|
|
||||||
On Windows, SameBoy also requires:
|
On Windows, SameBoy also requires:
|
||||||
* Visual Studio (For headers, etc.)
|
* Visual Studio (For headers, etc.)
|
||||||
* [GnuWin](http://gnuwin32.sourceforge.net/)
|
* [GnuWin](http://gnuwin32.sourceforge.net/)
|
||||||
* Running vcvars32 before running make. Make sure all required tools and libraries are in %PATH% and %lib%, respectively.
|
* Running vcvars32 before running make. Make sure all required tools and libraries are in %PATH% and %lib%, respectively. (see [Build FAQ](https://github.com/LIJI32/SameBoy/blob/master/build-faq.md) for more details on Windows compilation)
|
||||||
|
|
||||||
To compile, simply run `make`. The targets are `cocoa` (Default for macOS), `sdl` (Default for everything else), `libretro`, `bootroms` and `tester`. You may also specify `CONF=debug` (default), `CONF=release`, `CONF=native_release` or `CONF=fat_release` to control optimization, symbols and multi-architectures. `native_release` is faster than `release`, but is optimized to the host's CPU and therefore is not portable. `fat_release` is exclusive to macOS and builds x86-64 and ARM64 fat binaries; this requires using a recent enough `clang` and macOS SDK using `xcode-select`, or setting them explicitly with `CC=` and `SYSROOT=`, respectively. All other configurations will build to your host architecture. You may set `BOOTROMS_DIR=...` to a directory containing precompiled boot ROM files, otherwise the build system will compile and use SameBoy's own boot ROMs.
|
To compile, simply run `make`. The targets are `cocoa` (Default for macOS), `sdl` (Default for everything else), `libretro`, `bootroms` and `tester`. You may also specify `CONF=debug` (default), `CONF=release`, `CONF=native_release` or `CONF=fat_release` to control optimization, symbols and multi-architectures. `native_release` is faster than `release`, but is optimized to the host's CPU and therefore is not portable. `fat_release` is exclusive to macOS and builds x86-64 and ARM64 fat binaries; this requires using a recent enough `clang` and macOS SDK using `xcode-select`, or setting them explicitly with `CC=` and `SYSROOT=`, respectively. All other configurations will build to your host architecture. You may set `BOOTROMS_DIR=...` to a directory containing precompiled boot ROM files, otherwise the build system will compile and use SameBoy's own boot ROMs.
|
||||||
|
|
||||||
|
54
build-faq.md
54
build-faq.md
@ -1,7 +1,57 @@
|
|||||||
# Attempting to build the Cocoa frontend fails with NSInternalInconsistencyException
|
# macOS Specific Issues
|
||||||
|
## Attempting to build the Cocoa frontend fails with NSInternalInconsistencyException
|
||||||
|
|
||||||
When building on macOS, the build system will make a native Cocoa app by default. In this case, the build system uses the Xcode `ibtool` command to build user interface files. If this command fails, you can fix this issue by starting Xcode and letting it install components. After this is done, you should be able to close Xcode and build successfully.
|
When building on macOS, the build system will make a native Cocoa app by default. In this case, the build system uses the Xcode `ibtool` command to build user interface files. If this command fails, you can fix this issue by starting Xcode and letting it install components. After this is done, you should be able to close Xcode and build successfully.
|
||||||
|
|
||||||
# Attempting to build the SDL frontend on macOS fails on linking
|
## Attempting to build the SDL frontend on macOS fails on linking
|
||||||
|
|
||||||
SameBoy on macOS expects you to have SDL2 installed via Brew, and not as a framework. Older versions expected it to be installed as a framework, but this is no longer the case.
|
SameBoy on macOS expects you to have SDL2 installed via Brew, and not as a framework. Older versions expected it to be installed as a framework, but this is no longer the case.
|
||||||
|
|
||||||
|
# Windows Build Process
|
||||||
|
|
||||||
|
## Tools and Libraries Installation
|
||||||
|
|
||||||
|
For the various tools and libraries, follow the below guide to ensure easy, proper configuration for the build environment:
|
||||||
|
|
||||||
|
### SDL2
|
||||||
|
|
||||||
|
For [libSDL2](https://libsdl.org/download-2.0.php), download the Visual C++ Development Library pack. Place the extracted files within a known folder for later. Both the `\x86\` and `\include\` paths will be needed.
|
||||||
|
|
||||||
|
The following examples will be referenced later:
|
||||||
|
|
||||||
|
- `C:\SDL2\lib\x86\*`
|
||||||
|
- `C:\SDL2\include\*`
|
||||||
|
|
||||||
|
### rgbds
|
||||||
|
|
||||||
|
After downloading [rgbds](https://github.com/bentley/rgbds/releases/), ensure that it is added to the `%PATH%`. This may be done by adding it to the user's or SYSTEM's Environment Variables, or may be added to the command line at compilation time via `set path=%path%;C:\path\to\rgbds`.
|
||||||
|
|
||||||
|
### GnuWin
|
||||||
|
|
||||||
|
Ensure that the `gnuwin32\bin\` directory is included in `%PATH%`. Like rgbds above, this may instead be manually included on the command line before installation: `set path=%path%;C:\path\to\gnuwin32\bin`.
|
||||||
|
|
||||||
|
## Building
|
||||||
|
|
||||||
|
Within a command prompt in the project directory:
|
||||||
|
|
||||||
|
```
|
||||||
|
vcvars32
|
||||||
|
set lib=%lib%;C:\SDL2\lib\x86
|
||||||
|
set include=%include%;C:\SDL2\include
|
||||||
|
make
|
||||||
|
```
|
||||||
|
Please note that these directories (`C:\SDL2\*`) are the examples given within the "SDL Port" section above. Ensure that your `%PATH%` properly includes `rgbds` and `gnuwin32\bin`, and that the `lib` and `include` paths include the appropriate SDL2 directories.
|
||||||
|
|
||||||
|
## Common Errors
|
||||||
|
|
||||||
|
### Error -1073741819
|
||||||
|
|
||||||
|
If encountering an error that appears as follows:
|
||||||
|
|
||||||
|
``` make: *** [build/bin/BootROMs/dmg_boot.bin] Error -1073741819```
|
||||||
|
|
||||||
|
Simply run `make` again, and the process will continue. This appears to happen occasionally with `build/bin/BootROMs/dmg_boot.bin` and `build/bin/BootROMs/sgb2_boot.bin`. It does not affect the compiled output. This appears to be an issue with GnuWin.
|
||||||
|
|
||||||
|
### The system cannot find the file specified (`usr/bin/mkdir`)
|
||||||
|
|
||||||
|
If errors arise (i.e., particularly with the `CREATE_PROCESS('usr/bin/mkdir')` calls, also verify that Git for Windows has not been installed with full Linux support. If it has, remove `C:\Program Files\Git\usr\bin` from the SYSTEM %PATH% until after compilation. This happens because the Git for Windows version of `which` is used instead of the GnuWin one, and it returns a Unix-style path instead of a Windows one.
|
||||||
|
Loading…
Reference in New Issue
Block a user