summaryrefslogtreecommitdiff
path: root/cpp/config/Make.xcodesdk.rules
blob: d35fe59c40fabd564c12525593c561d01f6b1d3c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#
# Copyright (c) ZeroC, Inc. All rights reserved.
#

include $(top_srcdir)/config/Make.xcodesdk.rules

supported-configs       += xcodesdk cpp11-xcodesdk

is-iostest-program      = $(and $(filter-out macosx,$2),$(filter test/%,$1))

#
# Xcode configuration to build Xcode sdks for Ice.
#
xcodesdk_targetdir      = $(if $(filter %/build,$5),xcodesdk,$(if $(is-iostest-program),,$(if $(filter all cpp obj%c,$(ICE_BIN_DIST)),,../)../sdk/$2.sdk/usr/lib))
xcodesdk_installdir     = $(if $(filter %/build,$5),xcodesdk,$(if $(is-iostest-program),,../sdk/$2.sdk/usr/lib))
xcodesdk_targetrule     = $(if $(is-iostest-program),iostest,$(if $(filter-out program,$($1_target)),static))

xcodesdk_components     = Ice IceSSL Glacier2 IceStorm IceGrid IceDiscovery IceLocatorDiscovery IceIAP TestCommon
xcodesdk_projects       = test/Ice/% test/IceSSL/configuration
xcodesdk_excludes       = $(addprefix test/Ice/,background \
                                                faultTolerance \
                                                gc \
                                                logger \
                                                properties \
                                                stringConverter \
                                                threadPoolPriority)

#
# Rule to build an iOS bundle for testing (this is used for packaging client/server programs)
#
define make-iostest-program
$2/$1.bundle/Info.plist:
	$(Q)if [ ! -f $2/$1.bundle/Info.plist ] ; \
	then \
	    $(MKDIR) -p $2/$1.bundle ; \
	    sed "s/NAME/$1/" test/ios/bundles/BundleInfo.plist > $2/$1.bundle/Info.plist ; \
	fi

$2/$1.bundle/$1.dylib: $5 $2/$1.bundle/Info.plist $(foreach d,$6,$($d_targets))
	$(E) "Linking [$8-$9] $$@"
	$(Q)$(RM) $2/$1.bundle/$1.dylib
	$(Q)$(or $($8_cxx),$(platform_cxx)) -bundle $(LDFLAGS) -o $2/$1.bundle/$1.dylib $5 $(strip $7)
endef

get-iostest-program-targets = $2/$1.bundle/$1.dylib $2/$1.bundle/Info.plist

make-iostest-library = $(make-static-library)
get-iostest-library-targets = $(get-static-library-targets)

ifneq ($(findstring xcodesdk,$(configs)),)
$(eval $(call make-xcodesdk,bin/slice2cpp))
component_with_config_extensions := make-cpp-xcodesdk-component-with-config
endif

#
# $(call make-xcodesdk-component-with-config,$1=project,$2=component,$3=platform,$4=config,$5=comp[platform-config])
#
define make-cpp-xcodesdk-component-with-config
ifneq ($(filter src/%,$1),)

$(make-xcodesdk-component-with-config)
ifneq ($$(and $(filter Ice,$2),$(filter-out $(sdk_includedirs),$3-IceUtil)),)
sdk_includedirs += $3-IceUtil
$$(eval $$(call install-data-files,$$(wildcard include/IceUtil/*.h),include,\
        $(top_srcdir)/sdk/$3.sdk/usr/include,$5))
$$(eval $$(call install-data-files,$$(wildcard include/IceUtil/*.h),include,\
        $(install_sdkdir)/$3.sdk/usr/include,$5_install))
endif

$5_clean::
	$(Q)$(RM) -r $(top_srcdir)/sdk/$3.sdk/usr/include/$2

endif
endef