Difference between revisions of "Mac OS X"

From uGFX Wiki
Jump to: navigation, search
(Example)
 
(22 intermediate revisions by the same user not shown)
Line 1: Line 1:
µGFX can be run natively on a Mac OS X system. This simplifies the process of developing your embedded GUI application a lot. <br/>
+
µGFX can be run natively on a MacOS system. This simplifies the process of developing your embedded GUI application a lot.
The following steps are required to run µGFX on Mac OS X system:
+
  
# Make sure you got '''clang''' installed
+
The MacOS port has been tested successfully on MacOS 10.10, 10.11, 10.12 and 11.1.
# Make sure you got '''XQuartz''' installed
+
# Compile using the Makefile below
+
  
 +
== Dependencies ==
 +
Make sure you got the following things installed:
 +
* [http://clang.llvm.org/ clang] (by installing [https://developer.apple.com/xcode/ Xcode])
 +
* [https://www.libsdl.org/ SDL2] (by installing via: <code>brew install sdl2</code>)
  
== Example ==
+
== Makefile ==
The following Makefile has been tested under Mac OS X 10.8. Please let us know when you faced some problems running it under a different version. Modify the highlighted line(s).
+
Copy the makefile that can be found in <code>/boards/base/OSX/example/</code> to your project directory.
 +
You need to set the <code>OSX_SDK</code> and <code>OSX_ARCH</code> variables.
  
'''''Note:''' The performance of the resulting programm is very bad. This is because the X driver just uses setPixel() and doesn't take any advantage of area blitting or double buffering. The application will run A LOT faster on the actual microcontroller.''
+
=== OSX_SDK ===
<syntaxhighlight lang=make line start="1" highlight="15">
+
The <code>OSX_SDK</code> variable needs to contain the path to the OS X SDK. The path can be found by executing <code>xcodebuild -sdk -version</code> in the terminal:
# The name of the project / binary
+
<source lang="bash" highlight="4">
PROJECT = ugfx
+
TecMac:osx joel.bodenmann$ xcodebuild -sdk -version
 +
MacOSX10.11.sdk - OS X 10.11 (macosx10.11)
 +
SDKVersion: 10.11
 +
Path: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk
 +
PlatformVersion: 1.1
 +
PlatformPath: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform
 +
ProductBuildVersion: 15E60
 +
ProductCopyright: 1983-2016 Apple Inc.
 +
ProductName: Mac OS X
 +
ProductUserVisibleVersion: 10.11.4
 +
ProductVersion: 10.11.4
 +
</source>
  
# List C source files here
+
In our case we set the <code>OSX_SDK</code> variable as follows:
SRC    = $(GFXSRC) \
+
<source lang="make">
          main.c
+
OSX_SDK = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk
 +
</source>
  
# List all user directories here
+
=== OSX_ARCH ===
UINCDIR = $(GFXINC) \
+
The <code>OSX_ARCH</code> variable is used to specify on which earliest/oldest version of MacOS X the executable will be able to run on. Usually it's enough to just set it to the version of OS X that you are running which you can find my executing <code>sw_vers</code> in a terminal:
 
+
<source lang="bash" highlight="3">
# List all libraries
+
TecMac:osx joel.bodenmann$ sw_vers
LIBS    = -lX11
+
ProductName: Mac OS X
 
+
ProductVersion: 10.11.4
# Include uGFX
+
BuildVersion: 15E65
GFXLIB  = /path/to/your/ugfx
+
</source>
include $(GFXLIB)/gfx.mk
+
In our case we are running OS X version 10.11:
include $(GFXLIB)/boards/base/Linux/board.mk
+
<source lang="make">
 
+
OSX_ARCH = -mmacosx-version-min=10.11
 
+
</source>
###############################################################################
+
For more information about the <code>macosx-version-min</code> option, please refer to the corresponding compiler documentation.
# Do not change anything below this line unless you know what you're doing    #
+
###############################################################################
+
 
+
# Your toolchain
+
CC      = clang                                                                         
+
INCDIR  = $(patsubst %,-I%,$(DINCDIR) $(UINCDIR)) -I/opt/X11/include           
+
LIBDIR  = $(patsubst %,-L%,$(DLIBDIR) $(ULIBDIR)) -L/opt/X11/lib               
+
OBJS    = $(SRC:.c=.o)
+
CCFLAGS = -O2 -Wall
+
LDFLAGS =  
+
 
+
 
+
###############################################################################
+
# Actual Makefile rules                                                      #
+
###############################################################################
+
 
+
all: $(OBJS) $(PROJECT)
+
 
+
%.o : %.c
+
$(CC) -c $(CCFLAGS) -I . $(INCDIR) $< -o $@
+
 
+
$(PROJECT): $(OBJS)
+
$(CC) $(OBJS) $(LDFLAGS) $(LIBS) $(LIBDIR) -o $@
+
 
+
clean:                                    
+
-rm -f $(OBJS)
+
-rm -f $(PROJECT)
+
</syntaxhighlight>
+

Latest revision as of 11:33, 26 July 2021

µGFX can be run natively on a MacOS system. This simplifies the process of developing your embedded GUI application a lot.

The MacOS port has been tested successfully on MacOS 10.10, 10.11, 10.12 and 11.1.

Dependencies

Make sure you got the following things installed:

  • clang (by installing Xcode)
  • SDL2 (by installing via: brew install sdl2)

Makefile

Copy the makefile that can be found in /boards/base/OSX/example/ to your project directory. You need to set the OSX_SDK and OSX_ARCH variables.

OSX_SDK

The OSX_SDK variable needs to contain the path to the OS X SDK. The path can be found by executing xcodebuild -sdk -version in the terminal:

TecMac:osx joel.bodenmann$ xcodebuild -sdk -version
MacOSX10.11.sdk - OS X 10.11 (macosx10.11)
SDKVersion: 10.11
Path: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdkPlatformVersion: 1.1
PlatformPath: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform
ProductBuildVersion: 15E60
ProductCopyright: 1983-2016 Apple Inc.
ProductName: Mac OS X
ProductUserVisibleVersion: 10.11.4
ProductVersion: 10.11.4

In our case we set the OSX_SDK variable as follows:

OSX_SDK = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk

OSX_ARCH

The OSX_ARCH variable is used to specify on which earliest/oldest version of MacOS X the executable will be able to run on. Usually it's enough to just set it to the version of OS X that you are running which you can find my executing sw_vers in a terminal:

TecMac:osx joel.bodenmann$ sw_vers 
ProductName:	Mac OS X
ProductVersion:	10.11.4BuildVersion:	15E65

In our case we are running OS X version 10.11:

OSX_ARCH = -mmacosx-version-min=10.11

For more information about the macosx-version-min option, please refer to the corresponding compiler documentation.