# TRACE32 Remote API # Copyright (c) 1998-2020 Lauterbach GmbH # All rights reserved # # Mac OS Makefile # # Builds TRACE32 API shared library. Requires Xtools to be installed. SRCS := hremote.c hlinknet.c t32nettcp.c tcpsimple2.c OBJS := $(SRCS:%.c=%.o) SRCFILES := $(SRCS:%=../src/%) TARGETLIB := t32api.dylib DEPS := ../src/t32.h UNAME-M := $(shell uname -m) CCREDIR := -o$(SPACE) DEFINES := -DT32HOST_UNIX RM := rm XCODE_APP := # /Applications/Xcode-beta.app XCODE_XCRUN := $(if $(XCODE_APP),DEVELOPER_DIR=$(XCODE_APP)) xcrun XCODE_CC := $(strip $(shell $(XCODE_XCRUN) -f clang)) XCODE_STRIP := $(strip $(shell $(XCODE_XCRUN) -f strip)) XCODE_SDK := $(strip $(shell $(XCODE_XCRUN) --sdk macosx --show-sdk-path)) CC := $(XCODE_CC) LD := $(XCODE_CC) CFLAGS := -c -fPIC -isysroot $(XCODE_SDK) $(DEFINES) $(SRCFILES) LDFLAGS := -dynamiclib -isysroot $(XCODE_SDK) -current_version 1.0.0 -compatibility_version 1.0 $(OBJS) TFLAGS_ARM := -target arm64-apple-macos -mmacosx-version-min=11.1 TFLAGS_X64 := -target x86_64-apple-macos -mmacosx-version-min=10.13 CFLAGS_ARM := $(TFLAGS_ARM) $(CFLAGS) CFLAGS_X64 := $(TFLAGS_X64) $(CFLAGS) LDFLAGS_ARM := $(TFLAGS_ARM) $(LDFLAGS) LDFLAGS_X64 := $(TFLAGS_X64) $(LDFLAGS) TARGETLIB_ARM := $(TARGETLIB).arm64 TARGETLIB_X64 := $(TARGETLIB).x64 CLEANOBJS := $(RM) -rf $(OBJS) ifndef XTARGET_CPU XTARGET_CPU := universalbinary endif ifeq ($(XTARGET_CPU),x64) CC1 := $(CC) $(CFLAGS_X64) LD1 := $(CC) $(LDFLAGS_X64) $(CCREDIR)$(TARGETLIB) endif ifeq ($(XTARGET_CPU),arm64) CC1 := $(CC) $(CFLAGS_ARM) LD1 := $(CC) $(LDFLAGS_ARM) $(CCREDIR)$(TARGETLIB) endif ifeq ($(XTARGET_CPU),universalbinary) CC1 := $(CC) $(CFLAGS_X64) LD1 := $(CC) $(LDFLAGS_X64) $(CCREDIR)$(TARGETLIB_X64) CC2 := $(CC) $(CFLAGS_ARM) LD2 := $(CC) $(LDFLAGS_ARM) $(CCREDIR)$(TARGETLIB_ARM) CLEANOBJS2 := $(CLEANOBJS) POSTLINKCMD := lipo -create -output $(TARGETLIB) $(TARGETLIB_ARM) $(TARGETLIB_X64) endif .PHONY: help help: @echo @echo "make [OPTIONS] help .......... Show this help" @echo "make [OPTIONS] all ............ Build the shared library (64bits only)" @echo "make [OPTIONS] clean .......... Delete library, objects and dependencies" @echo @echo "OPTIONS:" @echo "XTARGET_CPU=arm64 ............. Build for Apple silicon" @echo "XTARGET_CPU=x64 ............... Build for Intel silicon" @echo "XTARGET_CPU=universalbinary ... Build for Apple+Intel silicon" @echo @echo "Without XTARGET_CPU universalbinary will be used." @echo .PHONY: all all: $(TARGETLIB) .PHONY: cleanobjs cleanobjs: $(CLEANOBJS) $(TARGETLIB): cleanobjs $(CC1) $(LD1) $(CLEANOBJS2) $(CC2) $(LD2) $(POSTLINKCMD) .PHONY: clean extraclean clean extraclean: -$(RM) -rf $(TARGETLIB) $(TARGETLIB_ARM) $(TARGETLIB_X64) $(OBJS)