Skip to content

Commit

Permalink
[makefile] switch to building with Xcode (RIP Theos)
Browse files Browse the repository at this point in the history
  • Loading branch information
kirb committed Nov 17, 2019
1 parent e8c8878 commit deb636a
Show file tree
Hide file tree
Showing 5 changed files with 152 additions and 85 deletions.
10 changes: 10 additions & 0 deletions Common/External/Preferences.framework/Preferences.tbd
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
archs: [ armv7, armv7s, arm64 ]
platform: ios
install-name: /System/Library/PrivateFrameworks/Preferences.framework/Preferences
current-version: 1
compatibility-version: 1
exports:
- archs: [ armv7, armv7s, arm64 ]
objc-classes: [ _PSSpecifier, _PSRootController ]
...
43 changes: 8 additions & 35 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,52 +1,25 @@
ifeq ($(PLATFORM),mac)
export TARGET = uikitformac:latest:13.0
else
export TARGET = iphone:latest:10.0
export TARGET = iphone:13.2:10.0
export ARCHS = arm64
LINK_CEPHEI := 1
endif

PROJECT_DIR := $(PWD)/NewTerm
INCLUDES := -I$(PROJECT_DIR) -I$(PROJECT_DIR)/External -I$(PROJECT_DIR)/External/ncurses

export ADDITIONAL_CFLAGS = -fobjc-arc $(INCLUDES)
export ADDITIONAL_SWIFTFLAGS = $(INCLUDES)
INSTALL_TARGET_PROCESSES = NewTerm

include $(THEOS)/makefiles/common.mk

APPLICATION_NAME = NewTerm

NewTerm_FILES = $(shell find NewTerm -name \*.x -or -name \*.m -or -name \*.swift)
NewTerm_SWIFT_BRIDGING_HEADER = $(PROJECT_DIR)/SupportingFiles/BridgingHeader.h
NewTerm_LIBRARIES = curses
NewTerm_CODESIGN_FLAGS = -S$(PROJECT_DIR)/entitlements.plist

ifeq ($(LINK_CEPHEI),1)
ADDITIONAL_CFLAGS += -DLINK_CEPHEI
ADDITIONAL_SWIFTFLAGS += -DLINK_CEPHEI -Xcc -DLINK_CEPHEI
XCODEPROJ_NAME = NewTerm

NewTerm_PRIVATE_FRAMEWORKS = Preferences
NewTerm_EXTRA_FRAMEWORKS = Cephei CepheiUI
endif
NewTerm_XCODEFLAGS = LINK_CEPHEI=-DLINK_CEPHEI CEPHEI_LDFLAGS="-framework Cephei -framework Preferences"
NewTerm_XCODE_SCHEME = NewTerm (iOS)
NewTerm_CODESIGN_FLAGS = -SiOS/entitlements.plist

include $(THEOS_MAKE_PATH)/application.mk
include $(THEOS_MAKE_PATH)/xcodeproj.mk

ifeq ($(LINK_CEPHEI),1)
SUBPROJECTS = prefs

include $(THEOS_MAKE_PATH)/aggregate.mk
endif

after-stage::
ifeq ($(NEWTERM_EMBEDDED),1)
mkdir -p $(THEOS_STAGING_DIR)/Applications/NewTerm.app/Frameworks
cp -r $(THEOS_LIBRARY_PATH)/Cephei{,Prefs,UI}.framework $(THEOS_STAGING_DIR)/Applications/NewTerm.app/Frameworks
endif

after-install::
ifneq ($(XCODE),1)
ifeq ($(PLATFORM),mac)
install.exec "open /Applications/NewTerm.app"
else
install.exec "killall NewTerm; sleep 0.1; sblaunch ws.hbang.Terminal"
endif
endif
72 changes: 56 additions & 16 deletions NewTerm.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -905,6 +905,7 @@
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
FRAMEWORK_SEARCH_PATHS = Common/External;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
Expand All @@ -917,6 +918,7 @@
Common/External/ncurses,
);
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
LIBRARY_SEARCH_PATHS = Common/External;
MACOSX_DEPLOYMENT_TARGET = 10.15;
ONLY_ACTIVE_ARCH = YES;
OTHER_SWIFT_FLAGS = "";
Expand Down Expand Up @@ -944,6 +946,7 @@
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
ENABLE_STRICT_OBJC_MSGSEND = YES;
FRAMEWORK_SEARCH_PATHS = Common/External;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
Expand All @@ -956,6 +959,7 @@
Common/External/ncurses,
);
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
LIBRARY_SEARCH_PATHS = Common/External;
MACOSX_DEPLOYMENT_TARGET = 10.15;
OTHER_SWIFT_FLAGS = "";
SWIFT_COMPILATION_MODE = wholemodule;
Expand Down Expand Up @@ -995,7 +999,7 @@
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_ENTITLEMENTS = Mac/SupportingFiles/NewTerm.entitlements;
CODE_SIGN_ENTITLEMENTS = "Mac/Supporting Files/NewTerm.entitlements";
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO;
Expand All @@ -1011,7 +1015,7 @@
);
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
INFOPLIST_FILE = Mac/SupportingFiles/Info.plist;
INFOPLIST_FILE = "Mac/Supporting Files/Info.plist";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/../Frameworks",
Expand All @@ -1022,7 +1026,7 @@
PRODUCT_NAME = NewTerm;
SDKROOT = macosx;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OBJC_BRIDGING_HEADER = Mac/SupportingFiles/BridgingHeader.h;
SWIFT_OBJC_BRIDGING_HEADER = "Mac/Supporting Files/BridgingHeader.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
};
Expand All @@ -1045,7 +1049,7 @@
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_ENTITLEMENTS = Mac/SupportingFiles/NewTerm.entitlements;
CODE_SIGN_ENTITLEMENTS = "Mac/Supporting Files/NewTerm.entitlements";
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO;
Expand All @@ -1056,7 +1060,7 @@
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
INFOPLIST_FILE = Mac/SupportingFiles/Info.plist;
INFOPLIST_FILE = "Mac/Supporting Files/Info.plist";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/../Frameworks",
Expand All @@ -1066,7 +1070,7 @@
PRODUCT_BUNDLE_IDENTIFIER = ws.hbang.NewTermMac;
PRODUCT_NAME = NewTerm;
SDKROOT = macosx;
SWIFT_OBJC_BRIDGING_HEADER = Mac/SupportingFiles/BridgingHeader.h;
SWIFT_OBJC_BRIDGING_HEADER = "Mac/Supporting Files/BridgingHeader.h";
SWIFT_OPTIMIZATION_LEVEL = "-O";
SWIFT_VERSION = 5.0;
};
Expand Down Expand Up @@ -1101,15 +1105,15 @@
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_DYNAMIC_NO_PIC = NO;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREFIX_HEADER = Common/SupportingFiles/PrefixHeader.pch;
GCC_PREFIX_HEADER = "Common/Supporting Files/PrefixHeader.pch";
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
HEADER_SEARCH_PATHS = "Common/**";
INFOPLIST_FILE = Common/SupportingFiles/Info.plist;
INFOPLIST_FILE = "Common/Supporting Files/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
Expand Down Expand Up @@ -1159,11 +1163,11 @@
ENABLE_NS_ASSERTIONS = NO;
FRAMEWORK_VERSION = A;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_PREFIX_HEADER = Common/SupportingFiles/PrefixHeader.pch;
GCC_PREFIX_HEADER = "Common/Supporting Files/PrefixHeader.pch";
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
HEADER_SEARCH_PATHS = "Common/**";
INFOPLIST_FILE = Common/SupportingFiles/Info.plist;
INFOPLIST_FILE = "Common/Supporting Files/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
Expand Down Expand Up @@ -1226,6 +1230,11 @@
DEVELOPMENT_TEAM = "";
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(THEOS_VENDOR_LIBRARY_PATH)",
"$(THEOS_LIBRARY_PATH)",
);
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
Expand All @@ -1240,8 +1249,13 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
HEADER_SEARCH_PATHS = iOS;
INFOPLIST_FILE = iOS/SupportingFiles/Info.plist;
HEADER_SEARCH_PATHS = (
"$(THEOS_VENDOR_INCLUDE_PATH)",
"$(THEOS_INCLUDE_PATH)",
"$(inherited)",
iOS,
);
INFOPLIST_FILE = "iOS/Supporting Files/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
HEADER_SEARCH_PATHS = (
"$(THEOS_VENDOR_INCLUDE_PATH)",
Expand All @@ -1255,16 +1269,24 @@
"$(inherited)",
"@executable_path/Frameworks",
);
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(THEOS_VENDOR_LIBRARY_PATH)",
"$(THEOS_LIBRARY_PATH)",
);
MARKETING_VERSION = 3.0;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
ONLY_ACTIVE_ARCH = YES;
OTHER_CFLAGS = "$(LINK_CEPHEI)";
OTHER_LDFLAGS = "$(CEPHEI_LDFLAGS)";
OTHER_SWIFT_FLAGS = "$(LINK_CEPHEI)";
PRODUCT_BUNDLE_IDENTIFIER = ws.hbang.Terminal;
PRODUCT_NAME = NewTerm;
SDKROOT = iphoneos;
SUPPORTS_UIKITFORMAC = NO;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OBJC_BRIDGING_HEADER = iOS/SupportingFiles/BridgingHeader.h;
SWIFT_OBJC_BRIDGING_HEADER = "iOS/Supporting Files/BridgingHeader.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
Expand Down Expand Up @@ -1313,6 +1335,11 @@
DEVELOPMENT_TEAM = "";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(THEOS_VENDOR_LIBRARY_PATH)",
"$(THEOS_LIBRARY_PATH)",
);
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
Expand All @@ -1321,8 +1348,13 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
HEADER_SEARCH_PATHS = iOS;
INFOPLIST_FILE = iOS/SupportingFiles/Info.plist;
HEADER_SEARCH_PATHS = (
"$(THEOS_VENDOR_INCLUDE_PATH)",
"$(THEOS_INCLUDE_PATH)",
"$(inherited)",
iOS,
);
INFOPLIST_FILE = "iOS/Supporting Files/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
HEADER_SEARCH_PATHS = (
"$(THEOS_VENDOR_INCLUDE_PATH)",
Expand All @@ -1336,15 +1368,23 @@
"$(inherited)",
"@executable_path/Frameworks",
);
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(THEOS_VENDOR_LIBRARY_PATH)",
"$(THEOS_LIBRARY_PATH)",
);
MARKETING_VERSION = 3.0;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
OTHER_CFLAGS = "$(LINK_CEPHEI)";
OTHER_LDFLAGS = "$(CEPHEI_LDFLAGS)";
OTHER_SWIFT_FLAGS = "$(LINK_CEPHEI)";
PRODUCT_BUNDLE_IDENTIFIER = ws.hbang.Terminal;
PRODUCT_NAME = NewTerm;
SDKROOT = iphoneos;
SUPPORTS_UIKITFORMAC = NO;
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OBJC_BRIDGING_HEADER = iOS/SupportingFiles/BridgingHeader.h;
SWIFT_OBJC_BRIDGING_HEADER = "iOS/Supporting Files/BridgingHeader.h";
SWIFT_OPTIMIZATION_LEVEL = "-O";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
Expand Down
78 changes: 78 additions & 0 deletions NewTerm.xcodeproj/xcshareddata/xcschemes/NewTerm (macOS).xcscheme
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1120"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "CFBB966022B546DA00585BE6"
BuildableName = "NewTerm.app"
BlueprintName = "NewTerm (iOS)"
ReferencedContainer = "container:NewTerm.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "CFBB966022B546DA00585BE6"
BuildableName = "NewTerm.app"
BlueprintName = "NewTerm (iOS)"
ReferencedContainer = "container:NewTerm.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "CFBB966022B546DA00585BE6"
BuildableName = "NewTerm.app"
BlueprintName = "NewTerm (iOS)"
ReferencedContainer = "container:NewTerm.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
Loading

0 comments on commit deb636a

Please sign in to comment.