| # |
| # 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 |