diff options
Diffstat (limited to 'frontends/cocoa/Makefile')
-rw-r--r-- | frontends/cocoa/Makefile | 247 |
1 files changed, 247 insertions, 0 deletions
diff --git a/frontends/cocoa/Makefile b/frontends/cocoa/Makefile new file mode 100644 index 000000000..92dec45a8 --- /dev/null +++ b/frontends/cocoa/Makefile @@ -0,0 +1,247 @@ +# ---------------------------------------------------------------------------- +# Mac OS X target setup +# ---------------------------------------------------------------------------- + +POSTEXES += NetSurf.app + +NETSURF_FEATURE_RSVG_CFLAGS := -DWITH_RSVG +$(eval $(call pkg_config_find_and_add_enabled,RSVG,librsvg-2.0,SVG)) + + +SDK_PARAM := $(shell xcodebuild -showsdks | awk '/^$$/{p=0};p; /(OS X|macOS) SDKs:/{p=1}' | head -1 | cut -f3) + +ifeq ($(DEPLOYMENT_TARGET),) + DEPLOYMENT_TARGET := 10.7 +endif + +SDK_PATH ?= $(shell xcodebuild -version $(SDK_PARAM) Path) +SDK_FLAGS := -isysroot $(SDK_PATH) -mmacosx-version-min=$(DEPLOYMENT_TARGET) +CFLAGS := $(SDK_FLAGS) $(CFLAGS) +LDFLAGS := $(SDK_FLAGS) -Wl,-syslibroot,$(SDK_PATH) $(LDFLAGS) +CXXFLAGS := $(SDK_FLAGS) $(CXXFLAGS) + +# for timerisset() +CFLAGS += -D_DARWIN_C_SOURCE + +CFLAGS += -Dnscocoa -D_BSD_SOURCE -D_POSIX_C_SOURCE -std=c99 -fobjc-arc + +CFLAGS += -include cocoa/Prefix.pch + +VERSION_FULL := $(shell sed -n '/_version.*=.*"/{s/.*"\(.*\)".*/\1/;p;}' desktop/version.c) +VERSION_MAJ := $(shell sed -n '/_major/{s/.* = \([0-9]*\).*/\1/;p;}' desktop/version.c) +VERSION_MIN := $(shell sed -n '/_minor/{s/.* = \([0-9]*\).*/\1/;p;}' desktop/version.c) + +LDFLAGS += -Wl,-framework,Cocoa -Wl,-framework,Carbon $(NETLDFLAGS) + +$(eval $(call feature_enabled,IMAGEIO,-DWITH_APPLE_IMAGE,,Apple ImageIO )) + +ifneq ($(UNIVERSAL),) + UNIVERSAL_FLAGS := $(foreach arch,$(UNIVERSAL),-arch $(arch) ) + CFLAGS += $(UNIVERSAL_FLAGS) + LDFLAGS += $(UNIVERSAL_FLAGS) + CXXFLAGS += $(UNIVERSAL_FLAGS) +endif + + +ifeq ($(VARIANT),debug) + CFLAGS += -g +endif + +# ---------------------------------------------------------------------------- +# Source file setup +# ---------------------------------------------------------------------------- + +# sources purely for the Mac OS X build +S_FRONTEND := \ + BookmarksController.m \ + BrowserView.m \ + BrowserViewController.m \ + BrowserWindowController.m \ + BrowserWindow.m \ + DownloadWindowController.m \ + NetSurfAppDelegate.m \ + NetsurfApp.m \ + PreferencesWindowController.m \ + ScrollableView.m \ + SearchWindowController.m \ + URLFieldCell.m \ + Tree.m \ + desktop-tree.m \ + TreeView.m \ + HistoryView.m \ + HistoryWindowController.m \ + FormSelectMenu.m \ + bitmap.m \ + fetch.m \ + font.m \ + gui.m \ + plotter.m \ + schedule.m \ + selection.m \ + ArrowBox.m \ + ArrowWindow.m \ + LocalHistoryController.m \ + apple_image.m + +S_TABBAR := \ + NSBezierPath_AMShading.m \ + NSString_AITruncation.m \ + PSMOverflowPopUpButton.m \ + PSMProgressIndicator.m \ + PSMRolloverButton.m \ + PSMTabBarCell.m \ + PSMTabBarControl.m \ + PSMTabBarController.m \ + PSMTabDragAssistant.m \ + PSMTabDragView.m \ + PSMTabDragWindow.m \ + PSMTabDragWindowController.m \ + PSMUnifiedTabStyle.m + +S_FRONTEND += $(addprefix PSMTabBarControl/,$(S_TABBAR)) + +# This is the final source build list +# Note this is deliberately *not* expanded here as common and image +# are not yet available +SOURCES = $(addprefix $(shell pwd)/,$(S_COMMON) $(S_IMAGE) $(S_BROWSER) $(S_FRONTEND)) + +# Since we prefix the sources with the pwd, also create a special +# prefixed rule so that the testament is run +$(shell pwd)/content/fetchers/about.c: testament + +EXETARGET := NetSurf + +S_XIBS := \ + MainMenu.xib \ + Browser.xib \ + BrowserWindow.xib \ + DownloadWindow.xib \ + SearchWindow.xib \ + PreferencesWindow.xib \ + HistoryWindow.xib \ + BookmarksWindow.xib \ + LocalHistoryPanel.xib + +R_RESOURCES := \ + default.css \ + adblock.css \ + internal.css \ + quirks.css \ + NetSurf.icns \ + HomeTemplate.pdf \ + Icons \ + ca-bundle \ + netsurf.png + + +TABBAR_RESOURCES := \ + AquaTabClose_Front_Pressed.png \ + AquaTabClose_Front_Rollover.png \ + AquaTabClose_Front.png \ + AquaTabCloseDirty_Front_Pressed.png \ + AquaTabCloseDirty_Front_Rollover.png \ + AquaTabCloseDirty_Front.png \ + AquaTabNew.png \ + AquaTabNewPressed.png \ + AquaTabNewRollover.png \ + overflowImage.png \ + overflowImagePressed.png \ + pi.png + +R_RESOURCES := $(addprefix $(FRONTEND_RESOURCES_DIR)/,$(R_RESOURCES)) + +R_RESOURCES += $(addprefix $(FRONTEND_SOURCE_DIR)/PSMTabBarControl/Images/,$(TABBAR_RESOURCES)) + +LANGUAGES := de en fr it nl +LOCALIZED_RESOURCES := \ + Localizable.strings \ + welcome.html \ + maps.html \ + licence.html + + +#languiage project macro +# $1 is language name +# $2 is list of resources per language +define make_lproj +R_RESOURCES += $$(OBJROOT)/$(1).lproj +$(2): +$$(OBJROOT)/$(1).lproj: $(2) + $(VQ)echo Bundling language $(1) + $(Q)$(MKDIR) -p $$@ + $(Q)for file in $(2) ; do if [ -e $$$$file ]; then cp -pLR $$$$file $$@ ; fi; done + $(Q)$(SPLIT_MESSAGES) -l $(1) -p cocoa -f messages resources/FatMessages > $$@/Messages +endef + +# compile_xib (xib) (lang) +define compile_xib +$$(OBJROOT)/$(2).lproj: $$(OBJROOT)/$(2).lproj/$(1:.xib=.nib) + +$$(OBJROOT)/$(2).lproj/$(1:.xib=.nib): $(FRONTEND_RESOURCES_DIR)/$(1) $$(OBJROOT)/created + $(VQ)echo Compiling XIB $(1) for language $(2) + $(Q)$(MKDIR) -p $$(OBJROOT)/$(2).lproj + $(Q)$(FRONTEND_SOURCE_DIR)/compile-xib.sh $(FRONTEND_RESOURCES_DIR)/$(1) $(2) $$@ + +ifeq ($(wildcard $(FRONTEND_RESOURCES_DIR)/$(2).lproj/$(1).strings),$(FRONTEND_RESOURCES_DIR)/$(2).lproj/$(1).strings) +$$(OBJROOT)/$(2).lproj/$(1:.xib=.nib): $(FRONTEND_RESOURCES_DIR)/$(2).lproj/$(1).strings +endif + +endef + +$(foreach lang,$(LANGUAGES),$(eval $(call make_lproj,$(lang),$(addprefix $(FRONTEND_RESOURCES_DIR)/$(lang).lproj/,$(LOCALIZED_RESOURCES))))) +$(foreach lang,$(LANGUAGES),$(foreach xib,$(S_XIBS),$(eval $(call compile_xib,$(xib),$(lang))))) + +# ---------------------------------------------------------------------------- +# Install target +# ---------------------------------------------------------------------------- + +install-cocoa: NetSurf.app + +NetSurf.app: NetSurf $(FRONTEND_SOURCE_DIR)/Makefile $(R_RESOURCES) NetSurf.app/Contents/Info.plist + $(VQ)echo Assembling NetSurf.app bundle + $(Q)$(MKDIR) -p NetSurf.app/Contents/MacOS + $(Q)cp NetSurf NetSurf.app/Contents/MacOS + $(Q)rm -rf NetSurf.app/Contents/Resources + $(Q)$(MKDIR) -p NetSurf.app/Contents/Resources + $(Q)cp -pLR $(R_RESOURCES) NetSurf.app/Contents/Resources + $(Q)echo 'APPL????' > NetSurf.app/Contents/PkgInfo + +NetSurf.app/Contents/Info.plist: $(FRONTEND_RESOURCES_DIR)/NetSurf-Info.plist $(FRONTEND_SOURCE_DIR)/Makefile + $(VQ)echo Generating Info.plist + $(Q)$(MKDIR) -p NetSurf.app/Contents + $(Q)sed -e 's/$${EXECUTABLE_NAME}/$(EXETARGET)/' \ + -e 's/$${PRODUCT_NAME.*}/$(EXETARGET)/' \ + -e 's/$${MACOSX_DEPLOYMENT_TARGET}/$(DEPLOYMENT_TARGET)/' \ + -e 's/$${NETSURF_VERSION}/$(VERSION_FULL)/' \ + -e 's/$${NETSURF_SHORT_VERSION}/$(VERSION_MAJ).$(VERSION_MIN)/' \ + < $(FRONTEND_RESOURCES_DIR)/NetSurf-Info.plist > NetSurf.app/Contents/Info.plist + +# ---------------------------------------------------------------------------- +# Package target +# ---------------------------------------------------------------------------- + +package-cocoa: NetSurf.dmg + +.INTERMEDIATE: NetSurf.tmp.dmg + +NetSurf.tmp.dmg: NetSurf.app + hdiutil create -size 8m -fs HFS+ -volname "NetSurf" $@ + sleep 2 + hdiutil attach $@ + sleep 2 + cp -pPR $^ /Volumes/NetSurf/ + hdiutil detach $$(echo $$(hdiutil attach $@ | cut -f 1) | cut -f 1 -d ' ') + sleep 2 + +NetSurf.dmg: NetSurf.tmp.dmg + hdiutil convert $^ -format UDZO -o $@ + +CLEANS += clean-package-cocoa + +clean-package-cocoa: + $(VQ)echo " CLEAN: NetSurf.tmp.dmg" + $(Q)$(RM) NetSurf.tmp.dmg + $(VQ)echo " CLEAN: NetSurf.dmg" + $(Q)$(RM) NetSurf.dmg + $(VQ)echo " CLEAN: NetSurf.app" + $(Q)$(RM) -r NetSurf.app |