summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Lillqvist <tml@iki.fi>2011-08-02 22:21:07 +0300
committerTor Lillqvist <tml@iki.fi>2011-08-02 22:21:17 +0300
commitaa43d84e9590d34a096a28043eef3ca14ae4cd5f (patch)
treecb4c7febc556a06018bbaa42df3f4bb25dd53ab8
parentab31a307b1d96fe6c1e3cc7545ad18abb5dba1a7 (diff)
Do build executables for iOS, too
Needed already now for our statically linked cppunit tests. We don't construct complete app bundles. You have to manually copy the executable to replace the one in some app bundle built in Xcode before running it for now. This works fine at least for debugging in the simulator, haven't tried yet on a device.
-rw-r--r--solenv/gbuild/platform/ios.mk29
1 files changed, 22 insertions, 7 deletions
diff --git a/solenv/gbuild/platform/ios.mk b/solenv/gbuild/platform/ios.mk
index 67258863e..29305bda6 100644
--- a/solenv/gbuild/platform/ios.mk
+++ b/solenv/gbuild/platform/ios.mk
@@ -226,7 +226,7 @@ gb_LinkTarget_INCLUDE_STL := $(filter %/stl, $(subst -I. , ,$(SOLARINC)))
# FIXME framework handling very hackish
define gb_LinkTarget__get_liblinkflags
-$(patsubst lib%.dylib,-l%,$(foreach lib,$(filter-out $(gb_Library__FRAMEWORKS),$(1)),$(call gb_Library_get_filename,$(lib)))) \
+$(patsubst lib%.a,-l%,$(foreach lib,$(filter-out $(gb_Library__FRAMEWORKS),$(1)),$(call gb_Library_get_filename,$(lib)))) \
$(addprefix -framework ,$(filter $(gb_Library__FRAMEWORKS),$(1)))
endef
@@ -236,13 +236,24 @@ $(if $(filter Executable,$(1)),\
$$(call gb_Library_get_layer,$(2)))
endef
-# Just create a dummy executable
-# It is pointless to build actual iOS executables here anyway.
-# Hmm, except for the simulator? Nah, use Xcode for that, too.
+
define gb_LinkTarget__command_dynamiclink
-$(call gb_Helper_abbreviate_dirs,\
+ $(if $(filter Library CppunitTest,$(TARGETTYPE)),@echo No dynamic libraries should be built for iOS && exit 1, \
mkdir -p $(dir $(1)) && \
- ((echo '#!/bin/sh' && echo 'echo Nope.') >$(1)))
+ $(gb_CXX) \
+ $(gb_Executable_TARGETTYPEFLAGS) \
+ $(subst \d,$$,$(RPATH)) \
+ $(T_LDFLAGS) \
+ $(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) \
+ $(foreach object,$(CXXOBJECTS),$(call gb_CxxObject_get_target,$(object))) \
+ $(foreach object,$(OBJCOBJECTS),$(call gb_ObjCObject_get_target,$(object))) \
+ $(foreach object,$(OBJCXXOBJECTS),$(call gb_ObjCxxObject_get_target,$(object))) \
+ $(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_target,$(object))) \
+ $(foreach extraobjectlist,$(EXTRAOBJECTLISTS),`cat $(extraobjectlist)`) \
+ $(foreach lib,$(LINKED_STATIC_LIBS),$(call gb_StaticLibrary_get_target,$(lib))) \
+ $(call gb_LinkTarget__get_liblinkflags,$(LINKED_LIBS)) \
+ $(LIBS) \
+ -o $(1))
endef
# parameters: 1-linktarget 2-cobjects 3-cxxobjects
@@ -279,8 +290,12 @@ gb_Library_OOOEXT := $(gb_Library_DLLPOSTFIX)$(gb_Library_PLAINEXT)
gb_Library_UNOEXT := .uno$(gb_Library_PLAINEXT)
gb_Library__FRAMEWORKS := \
+ Foundation \
+ CoreFoundation \
+ CoreGraphics \
gb_Library_PLAINLIBS_NONE += \
+ objc \
jpeg \
m \
pthread \
@@ -331,7 +346,7 @@ gb_StaticLibrary_StaticLibrary_platform =
# Executable class
gb_Executable_EXT :=
-gb_Executable_TARGETTYPEFLAGS := -bind_at_load
+gb_Executable_TARGETTYPEFLAGS := -dead_strip
gb_Executable_LAYER := \
$(foreach exe,$(gb_Executable_UREBIN),$(exe):OOO) \