1#************************************************************** 2# 3# Licensed to the Apache Software Foundation (ASF) under one 4# or more contributor license agreements. See the NOTICE file 5# distributed with this work for additional information 6# regarding copyright ownership. The ASF licenses this file 7# to you under the Apache License, Version 2.0 (the 8# "License"); you may not use this file except in compliance 9# with the License. You may obtain a copy of the License at 10# 11# http://www.apache.org/licenses/LICENSE-2.0 12# 13# Unless required by applicable law or agreed to in writing, 14# software distributed under the License is distributed on an 15# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16# KIND, either express or implied. See the License for the 17# specific language governing permissions and limitations 18# under the License. 19# 20#************************************************************** 21 22 23 24PRJ=..$/..$/.. 25 26PRJNAME=bridges 27TARGET=$(COMNAME)_uno 28LIBTARGET=no 29ENABLE_EXCEPTIONS=TRUE 30 31# --- Settings ----------------------------------------------------- 32 33.INCLUDE : settings.mk 34 35# --- Files -------------------------------------------------------- 36 37# Apple Silicon (arm64 / AAPCS64) C++-UNO bridge. CPU=R, CPUNAME=AARCH64. 38# Note: the "s5abi" in this directory's name is the macOS-wide COMNAME (see 39# solenv/gbuild/platform/macosx.mk); the actual arm64 calling convention is 40# AAPCS64, so "s5abi" here is a historical label, not a literal ABI claim. 41.IF "$(OS)$(CPU)" == "MACOSXR" 42 43.IF "$(cppu_no_leak)" == "" 44CFLAGS += -DLEAK_STATIC_DATA 45.ENDIF 46 47# In case someone enabled the non-standard -fomit-frame-pointer which does not 48# work with the .cxx sources in this directory: 49CFLAGSCXX += -fno-omit-frame-pointer -fnon-call-exceptions 50 51SLOFILES= \ 52 $(SLO)$/abi.obj \ 53 $(SLO)$/except.obj \ 54 $(SLO)$/cpp2uno.obj \ 55 $(SLO)$/uno2cpp.obj \ 56 $(SLO)$/call.obj 57 58SHL1TARGET= $(TARGET) 59 60SHL1DEF=$(MISC)$/$(SHL1TARGET).def 61SHL1IMPLIB=i$(TARGET) 62SHL1VERSIONMAP=..$/..$/bridge_exports.map 63SHL1RPATH=URELIB 64 65SHL1OBJS = $(SLOFILES) 66SHL1LIBS = $(SLB)$/cpp_uno_shared.lib 67 68SHL1STDLIBS= \ 69 $(CPPULIB) \ 70 $(SALLIB) 71 72.ENDIF 73 74# --- Targets ------------------------------------------------------ 75 76.INCLUDE : target.mk 77 78# Assemble the AArch64 call trampoline (call.s) into call.obj, mirroring the 79# pattern rule used by the gcc3_linux_arm bridge for its armhelper.S. 80$(SLO)$/%.obj: %.s 81 $(CXX) -c -o $(SLO)$/$(@:b).o $< -fPIC ; touch $@ 82