Skip to content

Commit

Permalink
build universal binary for macOS
Browse files Browse the repository at this point in the history
  • Loading branch information
hotbso committed Jun 27, 2023
1 parent d1d5f58 commit 3002749
Showing 1 changed file with 32 additions and 16 deletions.
48 changes: 32 additions & 16 deletions Makefile.mac64
Original file line number Diff line number Diff line change
Expand Up @@ -5,39 +5,55 @@ LIBACFUTILS_VERSION="hotbso subset"
TARGET=mac.xpl
HEADERS=$(wildcard *.h)
SOURCES=$(wildcard *.c)
OBJECTS=$(addprefix $(OBJDIR)/, $(SOURCES:.c=.o))
OBJECTS_arm=$(addprefix $(OBJDIR)/, $(SOURCES:.c=.o_arm))
OBJECTS_x86=$(OBJECTS_arm:.o_arm=.o_x86)

LACFU_SOURCES=$(wildcard libacfutils/src/*.c)
LACFU_OBJECTS=$(addprefix $(OBJDIR)/, $(notdir $(LACFU_SOURCES:.c=.o)))
LACFU_OBJECTS_arm=$(addprefix $(OBJDIR)/, $(notdir $(LACFU_SOURCES:.c=.o_arm)))
LACFU_OBJECTS_x86=$(LACFU_OBJECTS_arm:.o_arm=.o_x86)

OSXC=-arch x86_64 -mmacosx-version-min=10.11
OSXL=-arch x86_64 -mmacosx-version-min=10.11
ARCH_x86= -target x86_64-apple-macos10.11
ARCH_arm= -target arm64-apple-macos11

DEFS= -DAPL=1 -fPIC -fno-stack-protector -fvisibility=hidden -ffast-math -DNDEBUG \
-DXPLM200 -DXPLM210 -DXPLM300 -DXPLM301
DEFS= -DAPL=1 -fPIC -fno-stack-protector -fvisibility=hidden -ffast-math -DNDEBUG

CFLAGS+=-O2 -Wall -I$(SDK)/CHeaders/XPLM -I$(SDK)/CHeaders/Widgets -Ilibacfutils/src $(DEFS) $(OSXC)
CFLAGS+=-O2 -Wall -I$(SDK)/CHeaders/XPLM -I$(SDK)/CHeaders/Widgets -Ilibacfutils/src $(DEFS)
LACFU_CFLAGS=-DLIBACFUTILS_VERSION='$(LIBACFUTILS_VERSION)' $(CFLAGS)

LNFLAGS+=-dynamiclib -shared -rdynamic $(OSXL) -fvisibility=hidden -Wl,-exported_symbols_list -Wl,linkscript.mac
LNFLAGS+=-dynamiclib -shared -rdynamic -fvisibility=hidden -Wl,-exported_symbols_list -Wl,linkscript.mac

# https://pewpewthespells.com/blog/static_and_dynamic_libraries.html
LIBS+= -F $(SDK)/Libraries/Mac -framework XPLM -framework XPWidgets
LIBS+= -F $(SDK)/Libraries/Mac -framework XPWidgets -framework XPLM

# ships with macOS
LIBS+=-liconv

#test:
# $(foreach var,$(.VARIABLES),$(info $(var) = $($(var))))

all: $(TARGET)
$(shell [ -d $(OBJDIR) ] || mkdir $(OBJDIR))

$(OBJDIR)/%.o: %.c
$(CC) $(CFLAGS) -o $@ -c $<
$(OBJDIR)/%.o_arm: %.c
$(CC) $(ARCH_arm) $(CFLAGS) -o $@ -c $<

$(OBJDIR)/%.o_x86: %.c
$(CC) $(ARCH_x86) $(CFLAGS) -o $@ -c $<

$(OBJDIR)/%.o_arm: libacfutils/src/%.c
$(CC) $(ARCH_arm) $(LACFU_CFLAGS) -o $@ -c $<

$(OBJDIR)/%.o_x86: libacfutils/src/%.c
$(CC) $(ARCH_x86) $(LACFU_CFLAGS) -o $@ -c $<

$(TARGET)_arm: $(OBJECTS_arm) $(LACFU_OBJECTS_arm)
$(CC) -o $@ $(ARCH_arm) $(LNFLAGS) $(OBJECTS_arm) $(LACFU_OBJECTS_arm) $(LIBS)

$(OBJDIR)/%.o: libacfutils/src/%.c
$(CC) $(LACFU_CFLAGS) -o $@ -c $<
$(TARGET)_x86: $(OBJECTS_x86) $(LACFU_OBJECTS_x86)
$(CC) -o $@ $(ARCH_x86) $(LNFLAGS) $(OBJECTS_x86) $(LACFU_OBJECTS_x86) $(LIBS)

$(TARGET): $(OBJECTS) $(LACFU_OBJECTS)
$(CC) -o $(TARGET) $(LNFLAGS) $(OBJECTS) $(LACFU_OBJECTS) $(LIBS)
$(TARGET): $(TARGET)_arm $(TARGET)_x86
lipo -create -output $@ $(TARGET)_arm $(TARGET)_x86

clean:
rm -f $(OBJECTS) $(LACFU_OBJECTS) $(TARGET)
rm -f $(TARGET) $(TARGET)_arm $(TARGET)_x86 $(OBJDIR)/*.o*

0 comments on commit 3002749

Please sign in to comment.