summaryrefslogtreecommitdiff
path: root/config/Make.xcodesdk.rules
blob: 4b19acc7fe905953970efc493e4fdfe0ca15f565 (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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#
# Copyright (c) ZeroC, Inc. All rights reserved.
#

#
# Xcode configuration to build Xcode sdks for Ice.
#
xcodesdk_objdir         = static
xcodesdk_cppflags       = $(static_cppflags)
xcodesdk_ldflags        = $(static_ldflags)

#
# $(call make-xcodesdk,$1=translator)
#
define make-xcodesdk

$(install_sdkdir)/%.sdk/SDKSettings.plist $(top_srcdir)/sdk/%.sdk/SDKSettings.plist: \
	$(top_srcdir)/config/%-SDKSettings.plist
	$(Q)$(MKDIR) -p $$(@D)
	$(Q)$(INSTALL) $$< $$@

srcs all:: $$(foreach p,$$(platforms),$(top_srcdir)/sdk/$$p.sdk/SDKSettings.plist)

install:: $$(foreach p,$$(platforms),$(install_sdkdir)/$$p.sdk/SDKSettings.plist)

endef

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

ifneq ($(filter-out $(sdk_includedirs),$3-$2),)
sdk_includedirs += $3-$2

$$(eval $$(call install-data-files,$$(wildcard $$($2_includedir)/*.h),include,\
        $(top_srcdir)/sdk/$3.sdk/usr/include,$5))
$$(eval $$(call install-data-files,$$(filter include/generated/%,$$($2_generated_headers)),include/generated,\
        $(top_srcdir)/sdk/$3.sdk/usr/include,$5))

$$(eval $$(call install-data-files,$$(wildcard $$($2_includedir)/*.h),include,\
        $(install_sdkdir)/$3.sdk/usr/include,$5_install))
$$(eval $$(call install-data-files,$$(filter include/generated/%,$$($2_generated_headers)),include/generated,\
        $(install_sdkdir)/$3.sdk/usr/include,$5_install))
endif

endef

#
# $(call make-xcode-project-with-config,$1=project,$2=platform,$3=config)
#
define make-xcode-project-with-config

$1/.translator-$2-$3.dep: $$($$($1_slicecompiler)_path)
	$(Q)if [ -f $1/.translator-$2-$3.dep ]; \
	then \
	    xcodebuild -sdk $2 \
	           -project "$1/$$(call $1_project,$2,$3)" \
	           -configuration "$$(call $1_configuration,$2,$3)" \
		   -scheme "$$(call $1_scheme,$2,$3)" \
		   $(if $(V),,-quiet) SYMROOT=./build-$2-$3 OBJROOT=./objs-$2-$3 \
		   clean; \
	fi
	touch $1/.translator-$2-$3.dep

$1[$2-$3]: $$($1_dependencies) $1/.translator-$2-$3.dep
	$(E) "Running xcodebuild for $1 scheme=\"$$(call $1_scheme,$2,$3)\""
	$(Q)xcodebuild -sdk $2 \
	           -project "$1/$$(call $1_project,$2,$3)" \
	           -configuration "$$(call $1_configuration,$2,$3)" \
		   -scheme "$$(call $1_scheme,$2,$3)" \
		   $(if $(ICE_BIN_DIST),HEADER_SEARCH_PATHS=../../Ice\ ../../include\ $(sdkdir)/$2.sdk/usr/include \
                   LIBRARY_SEARCH_PATHS=$(sdkdir)/$2.sdk/usr/lib) \
		   $(if $(V),,-quiet) SYMROOT=./build-$2-$3 OBJROOT=./objs-$2-$3 \
		   build

$1[$2-$3]_clean:
	$(E) "Cleaning $1"
	$(Q)xcodebuild -sdk $2 \
	           -project "$1/$$(call $1_project,$2,$3)" \
	           -configuration "$$(call $1_configuration,$2,$3)" \
		   -scheme "$$(call $1_scheme,$2,$3)" \
		   $(if $(V),,-quiet) SYMROOT=./build-$2-$3 OBJROOT=./objs-$2-$3 \
		   clean

$1:: $1[$2-$3]
$1_clean:: $1[$2-$3]_clean

endef

#
# $(call make-xcode-project,$1=project)
#
define make-xcode-project

#
# Define per-<platform-config> rules for this component.
#
$$(foreach p,$$(filter $(platforms),$$($1_platforms)),\
    $$(foreach c,$$(filter $$(or $$($$p_configs),%),$$(filter $(configs),$$($1_configs))),\
        $$(if $$(filter $(SKIP),$1[$$p-$$c]),,\
            $$(eval $$(call make-xcode-project-with-config,$1,$$p,$$c,$1[$$p-$$c])))))

$1::
$1_clean::
$1_distclean::
	$(Q)$(RM) -r $1/build

all:: $1
clean:: $1_clean
distclean:: $1_distclean
endef