Skip to content
This repository was archived by the owner on Aug 8, 2023. It is now read-only.

Commit b4e0f4b

Browse files
kkaefer1ec5
authored andcommitted
[build] merge iOS and macOS projects
1 parent b3fe467 commit b4e0f4b

21 files changed

+70
-136
lines changed

CMakeLists.txt

+6-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
cmake_minimum_required(VERSION 3.1)
2-
project(mbgl LANGUAGES CXX C)
2+
3+
if(NOT MBGL_PROJECT_NAME)
4+
set(MBGL_PROJECT_NAME mbgl)
5+
endif()
6+
7+
project(${MBGL_PROJECT_NAME} LANGUAGES CXX C)
38
set(CMAKE_CXX_STANDARD 14)
49

510
include(cmake/mbgl.cmake)

Makefile

+34-43
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ ifeq ($(HOST_PLATFORM), macos)
5959
export PATH := $(shell pwd)/platform/macos:$(PATH)
6060

6161
MACOS_OUTPUT_PATH = build/macos
62-
MACOS_PROJ_PATH = $(MACOS_OUTPUT_PATH)/mbgl.xcodeproj
62+
MACOS_PROJ_PATH = $(MACOS_OUTPUT_PATH)/mbgl-macos.xcodeproj
6363
MACOS_WORK_PATH = platform/macos/macos.xcworkspace
6464
MACOS_USER_DATA_PATH = $(MACOS_WORK_PATH)/xcuserdata/$(USER).xcuserdatad
6565
MACOS_COMPDB_PATH = $(MACOS_OUTPUT_PATH)/compdb/$(BUILDTYPE)
@@ -76,39 +76,35 @@ MACOS_XCSCHEMES += platform/macos/scripts/node.xcscheme
7676

7777
$(MACOS_PROJ_PATH): $(BUILD_DEPS) $(MACOS_USER_DATA_PATH)/WorkspaceSettings.xcsettings $(MACOS_XCSCHEMES)
7878
mkdir -p $(MACOS_OUTPUT_PATH)
79-
(cd $(MACOS_OUTPUT_PATH) && cmake -G Xcode ../..)
79+
(cd $(MACOS_OUTPUT_PATH) && cmake -G Xcode -DMBGL_PROJECT_NAME=mbgl-macos ../..)
8080

8181
@# Create Xcode schemes so that we can use xcodebuild from the command line. CMake doesn't
8282
@# create these automatically.
83-
SCHEME_NAME=mbgl-test SCHEME_TYPE=executable platform/macos/scripts/create_scheme.sh
84-
SCHEME_NAME=mbgl-benchmark SCHEME_TYPE=executable platform/macos/scripts/create_scheme.sh
85-
SCHEME_NAME=mbgl-render SCHEME_TYPE=executable platform/macos/scripts/create_scheme.sh
86-
SCHEME_NAME=mbgl-offline SCHEME_TYPE=executable platform/macos/scripts/create_scheme.sh
87-
SCHEME_NAME=mbgl-glfw SCHEME_TYPE=executable platform/macos/scripts/create_scheme.sh
88-
SCHEME_NAME=mbgl-core SCHEME_TYPE=library BUILDABLE_NAME=libmbgl-core.a BLUEPRINT_NAME=mbgl-core platform/macos/scripts/create_scheme.sh
89-
SCHEME_NAME=mbgl-node SCHEME_TYPE=library BUILDABLE_NAME=mbgl-node.node BLUEPRINT_NAME=mbgl-node platform/macos/scripts/create_scheme.sh
83+
XCODEPROJ=$(MACOS_PROJ_PATH) SCHEME_NAME="macOS unit tests" SCHEME_TYPE=executable BLUEPRINT_NAME=mbgl-test BUILDABLE_NAME=mbgl-test platform/macos/scripts/create_scheme.sh
84+
XCODEPROJ=$(MACOS_PROJ_PATH) SCHEME_NAME="macOS benchmark" SCHEME_TYPE=executable BLUEPRINT_NAME=mbgl-benchmark BUILDABLE_NAME=mbgl-benchmark platform/macos/scripts/create_scheme.sh
85+
XCODEPROJ=$(MACOS_PROJ_PATH) SCHEME_NAME="macOS render" SCHEME_TYPE=executable BLUEPRINT_NAME=mbgl-render BUILDABLE_NAME=mbgl-render platform/macos/scripts/create_scheme.sh
86+
XCODEPROJ=$(MACOS_PROJ_PATH) SCHEME_NAME="macOS offline" SCHEME_TYPE=executable BLUEPRINT_NAME=mbgl-offline BUILDABLE_NAME=mbgl-offline platform/macos/scripts/create_scheme.sh
87+
XCODEPROJ=$(MACOS_PROJ_PATH) SCHEME_NAME="macOS GLFW app" SCHEME_TYPE=executable BLUEPRINT_NAME=mbgl-glfw BUILDABLE_NAME=mbgl-glfw platform/macos/scripts/create_scheme.sh
88+
XCODEPROJ=$(MACOS_PROJ_PATH) SCHEME_NAME="macOS core library" SCHEME_TYPE=library BLUEPRINT_NAME=mbgl-core BUILDABLE_NAME=libmbgl-core.a BLUEPRINT_NAME=mbgl-core platform/macos/scripts/create_scheme.sh
9089

9190
@# Create schemes for running node tests. These have all of the environment variables set to
9291
@# launch in the correct location.
93-
SCHEME_NAME="node tests" SCHEME_TYPE=node BUILDABLE_NAME=mbgl-node.node BLUEPRINT_NAME=mbgl-node NODE_ARGUMENT="`npm bin tape`/tape platform/node/test/js/**/*.test.js" platform/macos/scripts/create_scheme.sh
94-
SCHEME_NAME="node render tests" SCHEME_TYPE=node BUILDABLE_NAME=mbgl-node.node BLUEPRINT_NAME=mbgl-node NODE_ARGUMENT="platform/node/test/render.test.js" platform/macos/scripts/create_scheme.sh
95-
SCHEME_NAME="node query tests" SCHEME_TYPE=node BUILDABLE_NAME=mbgl-node.node BLUEPRINT_NAME=mbgl-node NODE_ARGUMENT="platform/node/test/query.test.js" platform/macos/scripts/create_scheme.sh
92+
XCODEPROJ=$(MACOS_PROJ_PATH) SCHEME_NAME="node module" SCHEME_TYPE=library BLUEPRINT_NAME=mbgl-node BUILDABLE_NAME=mbgl-node.node BLUEPRINT_NAME=mbgl-node platform/macos/scripts/create_scheme.sh
93+
XCODEPROJ=$(MACOS_PROJ_PATH) SCHEME_NAME="node tests" SCHEME_TYPE=node BUILDABLE_NAME=mbgl-node.node BLUEPRINT_NAME=mbgl-node NODE_ARGUMENT="`npm bin tape`/tape platform/node/test/js/**/*.test.js" platform/macos/scripts/create_scheme.sh
94+
XCODEPROJ=$(MACOS_PROJ_PATH) SCHEME_NAME="node render tests" SCHEME_TYPE=node BUILDABLE_NAME=mbgl-node.node BLUEPRINT_NAME=mbgl-node NODE_ARGUMENT="platform/node/test/render.test.js" platform/macos/scripts/create_scheme.sh
95+
XCODEPROJ=$(MACOS_PROJ_PATH) SCHEME_NAME="node query tests" SCHEME_TYPE=node BUILDABLE_NAME=mbgl-node.node BLUEPRINT_NAME=mbgl-node NODE_ARGUMENT="platform/node/test/query.test.js" platform/macos/scripts/create_scheme.sh
9696

9797
$(MACOS_USER_DATA_PATH)/WorkspaceSettings.xcsettings: platform/macos/WorkspaceSettings.xcsettings
9898
mkdir -p "$(MACOS_USER_DATA_PATH)"
9999
cp platform/macos/WorkspaceSettings.xcsettings "$@"
100100

101101
.PHONY: macos
102102
macos: $(MACOS_PROJ_PATH)
103-
set -o pipefail && $(MACOS_XCODEBUILD) -scheme 'CI' build $(XCPRETTY)
104-
105-
.PHONY: xproj
106-
xproj: $(MACOS_PROJ_PATH)
107-
open $(MACOS_WORK_PATH)
103+
set -o pipefail && $(MACOS_XCODEBUILD) -scheme 'macOS CI' build $(XCPRETTY)
108104

109105
.PHONY: test
110106
test: $(MACOS_PROJ_PATH)
111-
set -o pipefail && $(MACOS_XCODEBUILD) -scheme 'mbgl-test' build $(XCPRETTY)
107+
set -o pipefail && $(MACOS_XCODEBUILD) -scheme 'macOS unit tests' build $(XCPRETTY)
112108

113109
.PHONY: benchmark
114110
benchmark: $(MACOS_PROJ_PATH)
@@ -120,7 +116,7 @@ run-test: run-test-*
120116
run-test-%: test
121117
ulimit -c unlimited && ($(MACOS_OUTPUT_PATH)/$(BUILDTYPE)/mbgl-test --gtest_catch_exceptions=0 --gtest_filter=$* & pid=$$! && wait $$pid \
122118
|| (lldb -c /cores/core.$$pid --batch --one-line 'thread backtrace all' --one-line 'quit' && exit 1))
123-
set -o pipefail && $(MACOS_XCODEBUILD) -scheme 'CI' test $(XCPRETTY)
119+
set -o pipefail && $(MACOS_XCODEBUILD) -scheme 'macOS CI' test $(XCPRETTY)
124120

125121
.PHONY: run-benchmark
126122
run-benchmark: run-benchmark-.
@@ -130,23 +126,23 @@ run-benchmark-%: benchmark
130126

131127
.PHONY: glfw-app
132128
glfw-app: $(MACOS_PROJ_PATH)
133-
set -o pipefail && $(MACOS_XCODEBUILD) -scheme 'mbgl-glfw' build $(XCPRETTY)
129+
set -o pipefail && $(MACOS_XCODEBUILD) -scheme 'macOS GLFW app' build $(XCPRETTY)
134130

135131
.PHONY: run-glfw-app
136132
run-glfw-app: glfw-app
137133
"$(MACOS_OUTPUT_PATH)/$(BUILDTYPE)/mbgl-glfw"
138134

139135
.PHONY: render
140136
render: $(MACOS_PROJ_PATH)
141-
set -o pipefail && $(MACOS_XCODEBUILD) -scheme 'mbgl-render' build $(XCPRETTY)
137+
set -o pipefail && $(MACOS_XCODEBUILD) -scheme 'macOS render' build $(XCPRETTY)
142138

143139
.PHONY: offline
144140
offline: $(MACOS_PROJ_PATH)
145-
set -o pipefail && $(MACOS_XCODEBUILD) -scheme 'mbgl-offline' build $(XCPRETTY)
141+
set -o pipefail && $(MACOS_XCODEBUILD) -scheme 'macOS offline' build $(XCPRETTY)
146142

147143
.PHONY: node
148144
node: $(MACOS_PROJ_PATH)
149-
set -o pipefail && $(MACOS_XCODEBUILD) -scheme 'mbgl-node' build $(XCPRETTY)
145+
set -o pipefail && $(MACOS_XCODEBUILD) -scheme 'node module' build $(XCPRETTY)
150146

151147
.PHONY: macos-test
152148
macos-test: $(MACOS_PROJ_PATH)
@@ -191,54 +187,43 @@ tidy: compdb
191187
check: compdb
192188
scripts/clang-tools.sh $(MACOS_COMPDB_PATH) --diff
193189

194-
endif
195-
196190
#### iOS targets ##############################################################
197191

198-
ifeq ($(HOST_PLATFORM), macos)
199-
200192
IOS_OUTPUT_PATH = build/ios
201-
IOS_PROJ_PATH = $(IOS_OUTPUT_PATH)/mbgl.xcodeproj
202-
IOS_WORK_PATH = platform/ios/ios.xcworkspace
203-
IOS_USER_DATA_PATH = $(IOS_WORK_PATH)/xcuserdata/$(USER).xcuserdatad
193+
IOS_PROJ_PATH = $(IOS_OUTPUT_PATH)/mbgl-ios.xcodeproj
204194

205195
IOS_XCODEBUILD_SIM = xcodebuild \
206196
ARCHS=x86_64 ONLY_ACTIVE_ARCH=YES \
207197
-derivedDataPath $(IOS_OUTPUT_PATH) \
208198
-configuration $(BUILDTYPE) -sdk iphonesimulator \
209199
-destination 'platform=iOS Simulator,name=iPhone 6,OS=latest' \
210-
-workspace $(IOS_WORK_PATH)
200+
-workspace $(MACOS_WORK_PATH)
211201

212-
$(IOS_PROJ_PATH): $(IOS_USER_DATA_PATH)/WorkspaceSettings.xcsettings $(BUILD_DEPS)
202+
$(IOS_PROJ_PATH): $(BUILD_DEPS) $(MACOS_USER_DATA_PATH)/WorkspaceSettings.xcsettings $(MACOS_XCSCHEMES)
213203
mkdir -p $(IOS_OUTPUT_PATH)
214204
(cd $(IOS_OUTPUT_PATH) && cmake -G Xcode ../.. \
205+
-DMBGL_PROJECT_NAME=mbgl-ios \
215206
-DCMAKE_TOOLCHAIN_FILE=../../platform/ios/toolchain.cmake \
216207
-DMBGL_PLATFORM=ios \
217208
-DMASON_PLATFORM=ios)
218209

219-
$(IOS_USER_DATA_PATH)/WorkspaceSettings.xcsettings: platform/ios/WorkspaceSettings.xcsettings
220-
mkdir -p "$(IOS_USER_DATA_PATH)"
221-
cp platform/ios/WorkspaceSettings.xcsettings "$@"
210+
XCODEPROJ=$(IOS_PROJ_PATH) SCHEME_NAME="iOS core library" SCHEME_TYPE=library BLUEPRINT_NAME=mbgl-core BUILDABLE_NAME=libmbgl-core.a BLUEPRINT_NAME=mbgl-core platform/macos/scripts/create_scheme.sh
222211

223212
.PHONY: ios
224213
ios: $(IOS_PROJ_PATH)
225-
set -o pipefail && $(IOS_XCODEBUILD_SIM) -scheme 'CI' build $(XCPRETTY)
226-
227-
.PHONY: iproj
228-
iproj: $(IOS_PROJ_PATH)
229-
open $(IOS_WORK_PATH)
214+
set -o pipefail && $(IOS_XCODEBUILD_SIM) -scheme 'iOS CI' build $(XCPRETTY)
230215

231216
.PHONY: ios-test
232217
ios-test: $(IOS_PROJ_PATH)
233-
set -o pipefail && $(IOS_XCODEBUILD_SIM) -scheme 'CI' test $(XCPRETTY)
218+
set -o pipefail && $(IOS_XCODEBUILD_SIM) -scheme 'iOS CI' test $(XCPRETTY)
234219

235220
.PHONY: ipackage
236221
ipackage: $(IOS_PROJ_PATH)
237222
FORMAT=$(FORMAT) BUILD_DEVICE=$(BUILD_DEVICE) SYMBOLS=$(SYMBOLS) \
238223
./platform/ios/scripts/package.sh
239224

240225
.PHONY: ipackage-strip
241-
ipackage-strip: $(IOS_PROJ_PATH)
226+
ipackage-strip§: $(IOS_PROJ_PATH)
242227
FORMAT=$(FORMAT) BUILD_DEVICE=$(BUILD_DEVICE) SYMBOLS=NO \
243228
./platform/ios/scripts/package.sh
244229

@@ -278,6 +263,11 @@ darwin-update-examples:
278263
.PHONY: check-public-symbols
279264
check-public-symbols:
280265
node platform/darwin/scripts/check-public-symbols.js macOS
266+
267+
.PHONY: xproj
268+
xproj: $(MACOS_PROJ_PATH) $(IOS_PROJ_PATH)
269+
open $(MACOS_WORK_PATH)
270+
281271
endif
282272

283273
#### Linux targets #####################################################
@@ -390,10 +380,11 @@ $(QT_BUILD): $(BUILD_DEPS)
390380

391381
ifeq ($(HOST_PLATFORM), macos)
392382

393-
MACOS_QT_PROJ_PATH = $(QT_ROOT_PATH)/xcode/mbgl.xcodeproj
383+
MACOS_QT_PROJ_PATH = $(QT_ROOT_PATH)/xcode/mbgl-qt.xcodeproj
394384
$(MACOS_QT_PROJ_PATH): $(BUILD_DEPS)
395385
mkdir -p $(QT_ROOT_PATH)/xcode
396386
(cd $(QT_ROOT_PATH)/xcode && cmake -G Xcode ../../.. \
387+
-DMBGL_PROJECT_NAME=mbgl-qt \
397388
-DMBGL_PLATFORM=qt \
398389
-DMASON_PLATFORM=$(MASON_PLATFORM) \
399390
-DMASON_PLATFORM_VERSION=$(MASON_PLATFORM_VERSION) \

platform/ios/WorkspaceSettings.xcsettings

-22
This file was deleted.

platform/ios/ios.xcodeproj/xcshareddata/xcschemes/CI.xcscheme platform/ios/ios.xcodeproj/xcshareddata/xcschemes/iOS CI.xcscheme

-14
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,6 @@
66
parallelizeBuildables = "YES"
77
buildImplicitDependencies = "YES">
88
<BuildActionEntries>
9-
<BuildActionEntry
10-
buildForTesting = "YES"
11-
buildForRunning = "YES"
12-
buildForProfiling = "YES"
13-
buildForArchiving = "YES"
14-
buildForAnalyzing = "YES">
15-
<BuildableReference
16-
BuildableIdentifier = "primary"
17-
BlueprintIdentifier = "4E8A9455A3A23B7FD2A8FC52"
18-
BuildableName = "All"
19-
BlueprintName = "All"
20-
ReferencedContainer = "container:../../build/ios/platform/ios/platform.xcodeproj">
21-
</BuildableReference>
22-
</BuildActionEntry>
239
<BuildActionEntry
2410
buildForTesting = "YES"
2511
buildForRunning = "YES"

platform/ios/ios.xcworkspace/contents.xcworkspacedata

-19
This file was deleted.

platform/ios/ios.xcworkspace/xcshareddata/xcdebugger/Breakpoints_v2.xcbkptlist

-25
This file was deleted.

platform/ios/scripts/package.sh

+7-6
Original file line numberDiff line numberDiff line change
@@ -71,12 +71,13 @@ SHORT_VERSION=${SEM_VERSION%-*}
7171

7272
step "Building targets (build ${PROJ_VERSION}, version ${SEM_VERSION})…"
7373

74-
SCHEME='dynamic'
74+
SCHEME='iOS dynamic'
7575
if [[ ${BUILD_DYNAMIC} == true && ${BUILD_STATIC} == true ]]; then
7676
SCHEME+='+static'
7777
elif [[ ${BUILD_STATIC} == true ]]; then
78-
SCHEME='static'
78+
SCHEME='iOS static'
7979
fi
80+
SCHEME+=' framework'
8081

8182
xcodebuild \
8283
CURRENT_PROJECT_VERSION=${PROJ_VERSION} \
@@ -85,8 +86,8 @@ xcodebuild \
8586
CURRENT_COMMIT_HASH=${HASH} \
8687
ONLY_ACTIVE_ARCH=NO \
8788
-derivedDataPath ${DERIVED_DATA} \
88-
-workspace ./platform/ios/ios.xcworkspace \
89-
-scheme ${SCHEME} \
89+
-workspace ./platform/macos/macos.xcworkspace \
90+
-scheme '${SCHEME}' \
9091
-configuration ${BUILDTYPE} \
9192
-sdk iphonesimulator \
9293
-jobs ${JOBS} | xcpretty
@@ -99,8 +100,8 @@ if [[ ${BUILD_FOR_DEVICE} == true ]]; then
99100
CURRENT_COMMIT_HASH=${HASH} \
100101
ONLY_ACTIVE_ARCH=NO \
101102
-derivedDataPath ${DERIVED_DATA} \
102-
-workspace ./platform/ios/ios.xcworkspace \
103-
-scheme ${SCHEME} \
103+
-workspace ./platform/macos/macos.xcworkspace \
104+
-scheme '${SCHEME}' \
104105
-configuration ${BUILDTYPE} \
105106
-sdk iphoneos \
106107
-jobs ${JOBS} | xcpretty

platform/macos/DEVELOPING.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ The Mapbox macOS SDK requires Xcode 7.3 or above.
1212

1313
1. [Install core dependencies](../../INSTALL.md).
1414
1. Run `make xproj`.
15-
1. Switch to the “dynamic” or “macosapp” scheme. The former builds just the Cocoa framework, while the latter also builds a Cocoa demo application based on it.
15+
1. Switch to the “dynamic (macos project)” or “macOS app” scheme. The former builds just the Cocoa framework, while the latter also builds a Cocoa demo application based on it.
1616

1717
### Packaging builds
1818

platform/macos/macos.xcworkspace/contents.xcworkspacedata

+13-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+
<plist version="1.0">
4+
<dict>
5+
<key>IDEWorkspaceSharedSettings_AutocreateContextsIfNeeded</key>
6+
<false/>
7+
</dict>
8+
</plist>

platform/macos/scripts/create_scheme.sh

-3
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
set -u
44

5-
XCODEPROJ=${XCODEPROJ:-build/macos/mbgl.xcodeproj}
65
OUTPUT="${XCODEPROJ}/xcshareddata/xcschemes/${SCHEME_NAME}.xcscheme"
76

87
# Required ENV vars:
@@ -23,8 +22,6 @@ fi
2322
NODE_ARGUMENT=${NODE_ARGUMENT:-}
2423
MAPBOX_ACCESS_TOKEN=${MAPBOX_ACCESS_TOKEN:-}
2524
BLUEPRINT_ID=${BLUEPRINT_ID:-$(hexdump -n 12 -v -e '/1 "%02X"' /dev/urandom)}
26-
BUILDABLE_NAME=${BUILDABLE_NAME:-${SCHEME_NAME}}
27-
BLUEPRINT_NAME=${BLUEPRINT_NAME:-${SCHEME_NAME}}
2825

2926
mkdir -p "${XCODEPROJ}/xcshareddata/xcschemes"
3027

platform/macos/scripts/package.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ xcodebuild \
3131
CURRENT_COMMIT_HASH=${HASH} \
3232
-derivedDataPath ${DERIVED_DATA} \
3333
-workspace ./platform/macos/macos.xcworkspace \
34-
-scheme dynamic \
34+
-scheme 'macOS dynamic framework' \
3535
-configuration ${BUILDTYPE} \
3636
-jobs ${JOBS} | xcpretty
3737

0 commit comments

Comments
 (0)