| # | |
| # Copyright (c) 2023, 2025, Oracle and/or its affiliates. All rights reserved. | |
| # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | |
| # | |
| # This code is free software; you can redistribute it and/or modify it | |
| # under the terms of the GNU General Public License version 2 only, as | |
| # published by the Free Software Foundation. Oracle designates this | |
| # particular file as subject to the "Classpath" exception as provided | |
| # by Oracle in the LICENSE file that accompanied this code. | |
| # | |
| # This code is distributed in the hope that it will be useful, but WITHOUT | |
| # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
| # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
| # version 2 for more details (a copy is included in the LICENSE file that | |
| # accompanied this code). | |
| # | |
| # You should have received a copy of the GNU General Public License version | |
| # 2 along with this work; if not, write to the Free Software Foundation, | |
| # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | |
| # | |
| # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA | |
| # or visit www.oracle.com if you need additional information or have any | |
| # questions. | |
| # | |
| include MakeFileStart.gmk | |
| ################################################################################ | |
| include CopyFiles.gmk | |
| include Execute.gmk | |
| include JavaCompilation.gmk | |
| ifeq ($(call isTargetOs, macosx), true) | |
| ############################################################################## | |
| # Build the XcodeProjectMaker java tool. | |
| PROJECT_MAKER_DIR := $(TOPDIR)/make/ide/xcode/hotspot | |
| TOOLS_OUTPUTDIR := $(MAKESUPPORT_OUTPUTDIR)/ide/xcode | |
| IDE_OUTPUTDIR := $(OUTPUTDIR)/xcode | |
| PROJECT_FILE_NAME := hotspot.xcodeproj | |
| COMPILE_COMMAND_FILE := $(OUTPUTDIR)/compile_commands.json | |
| LINKER_FLAGS_FILE := $(MAKESUPPORT_OUTPUTDIR)/compile-commands/LIBRARY_hotspot_variant-server_libjvm_libjvm-ldflags.txt | |
| $(eval $(call SetupJavaCompilation, BUILD_PROJECT_CREATOR, \ | |
| TARGET_RELEASE := $(TARGET_RELEASE_BOOTJDK), \ | |
| SRC := $(PROJECT_MAKER_DIR)/src/classes, \ | |
| BIN := $(TOOLS_OUTPUTDIR), \ | |
| DISABLED_WARNINGS := rawtypes unchecked serial, \ | |
| )) | |
| TARGETS += $(BUILD_PROJECT_CREATOR) | |
| # Run the XcodeProjectMaker tool | |
| PROJECT_CREATOR_TOOL := $(JAVA_SMALL) -cp $(TOOLS_OUTPUTDIR) XcodeProjectMaker | |
| ifneq ($(findstring $(LOG_LEVEL), debug trace), ) | |
| XCODE_PROJ_DEBUG_OPTION := -d | |
| endif | |
| XCODE_PROJ_VARDEPS := $(TOPDIR) $(IDE_OUTPUTDIR) \ | |
| $(PROJECT_MAKER_DIR)/data $(COMPILE_COMMAND_FILE) $(LINKER_FLAGS_FILE) | |
| XCODE_PROJ_VARDEPS_FILE := $(call DependOnVariable, XCODE_PROJ_VARDEPS, \ | |
| $(TOOLS_OUTPUTDIR)/xcodeproj.vardeps) | |
| $(eval $(call SetupExecute, build_xcode_project, \ | |
| WARN := Generating Xcode project file, \ | |
| DEPS := $(BUILD_PROJECT_CREATOR) $(COMPILE_COMMAND_FILE) \ | |
| $(LINKER_FLAGS_FILE) $(XCODE_PROJ_VARDEPS_FILE), \ | |
| OUTPUT_DIR := $(TOOLS_OUTPUTDIR), \ | |
| COMMAND := $(PROJECT_CREATOR_TOOL) $(TOPDIR) $(IDE_OUTPUTDIR) \ | |
| $(PROJECT_MAKER_DIR)/data $(COMPILE_COMMAND_FILE) \ | |
| $(LINKER_FLAGS_FILE) $(XCODE_PROJ_DEBUG_OPTION), \ | |
| )) | |
| TARGETS += $(build_xcode_project) | |
| $(eval $(call SetupCopyFiles, copy_xcode_project, \ | |
| DEST := $(IDE_OUTPUTDIR), \ | |
| FILES := $(PROJECT_MAKER_DIR)/data/script_before.sh $(PROJECT_MAKER_DIR)/data/script_after.sh , \ | |
| MACRO := copy-and-chmod-executable, \ | |
| )) | |
| TARGETS += $(copy_xcode_project) | |
| $(eval $(call SetupExecute, open_xcode_project, \ | |
| INFO := Opening Xcode project file, \ | |
| DEPS := $(build_xcodeproject_TARGET) FORCE, \ | |
| OUTPUT_DIR := $(TOOLS_OUTPUTDIR), \ | |
| COMMAND := open $(IDE_OUTPUTDIR)/$(PROJECT_FILE_NAME), \ | |
| )) | |
| TARGETS += $(open_xcode_project) | |
| # Always call open without considering dependencies being up to date | |
| FORCE: | |
| build: $(build_xcode_project) $(copy_xcode_project) | |
| open: $(open_xcode_project) | |
| else | |
| build: | |
| open: | |
| all: | |
| $(info Xcode projects are only supported on macOS) | |
| endif | |
| .PHONY: build open | |
| ################################################################################ | |
| include MakeFileEnd.gmk |