xref: /trunk/main/bridges/source/cpp_uno/s5abi_macosx_aarch64/makefile.mk (revision 5e139d9fe42a654147771da4118aea6285c03168)
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