RMICompilation.gmk 4.2 KB
Newer Older
1
#
M
msheppar 已提交
2
# Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
# 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.
#

define SetupRMICompilation
    # param 1 is a name for a variable to depend on.
    # param 2 and up are named args.
    #   CLASSES:=List of classes to generate stubs for
    #   CLASSES_DIR:=Directory where to look for classes
    #   STUB_CLASSES_DIR:=Directory in where to put stub classes
    #   RUN_V11:=Set to run rmic with -v1.1
    #   RUN_V12:=Set to run rmic with -v1.2
    #   RUN_IIOP:=Set to run rmic with -iiop
    #   RUN_IIOP_STDPKG:=Set to run rmic with -iiop -standardPackage
    #   KEEP_GENERATED:=Set to keep generated sources around
O
ohair 已提交
37 38 39
    $(foreach i,2 3 4 5 6 7 8 9 10 11 12 13 14 15, $(if $($i),$1_$(strip $($i)))$(NEWLINE))
    $(call LogSetupMacroEntry,SetupRMICompilation($1),$2,$3,$4,$5,$6,$7,$8,$9,$(10),$(11),$(12),$(13),$(14),$(15))
    $(if $(16),$(error Internal makefile error: Too many arguments to SetupRMICompilation, please update RMICompilation.gmk))
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62

    $1_DEP_FILE := $$($1_STUB_CLASSES_DIR)/$1_rmic

    $1_CLASSES_SLASH := $$(subst .,/,$$($1_CLASSES))
    $1_CLASS_FILES := $$(addprefix $$($1_CLASSES_DIR)/,$$(addsuffix .class,$$($1_CLASSES_SLASH)))
    $1_STUB_FILES := $$(addprefix $$($1_STUB_CLASSES_DIR)/,$$(addsuffix _Stub.class,$$($1_CLASSES_SLASH)))
    $1_TARGETS := $$($1_STUB_FILES)
    $1_ARGS :=
    ifneq (,$$($1_RUN_V11))
        $1_SKEL_FILES := $$(addprefix $$($1_STUB_CLASSES_DIR)/,$$(addsuffix _Skel.class,$$($1_CLASSES_SLASH)))
        $1_TARGETS += $$($1_SKEL_FILES)
        $1_ARGS += -v1.1
    endif
    ifneq (,$$($1_RUN_V12))
        $1_ARGS += -v1.2
    endif

    $1_TIE_BASE_FILES := $$(foreach f,$$($1_CLASSES_SLASH),$$(dir $$f)_$$(notdir $$f))
    $1_TIE_FILES := $$(addprefix $$($1_STUB_CLASSES_DIR)/org/omg/stub/,$$(addsuffix _Tie.class,$$($1_TIE_BASE_FILES)))
    $1_TIE_STDPKG_FILES := $$(addprefix $$($1_STUB_CLASSES_DIR)/,$$(addsuffix _Tie.class,$$($1_TIE_BASE_FILES)))

    ifneq (,$$($1_RUN_IIOP))
        $1_TARGETS += $$($1_TIE_FILES)
M
msheppar 已提交
63
        $1_ARGS += -iiop -emitPermissionCheck
64 65 66
    endif
    ifneq (,$$($1_RUN_IIOP_STDPKG))
        $1_TARGETS += $$($1_TIE_STDPKG_FILES)
M
msheppar 已提交
67
        $1_ARGS2 := -iiop -emitPermissionCheck -standardPackage
68 69 70 71 72 73 74 75 76 77 78 79 80 81
    endif

    ifneq (,$$($1_KEEP_GENERATED))
        $1_ARGS += -keepgenerated
        $1_TARGETS += $$(subst .class,.java,$$($1_TARGETS))
    endif

    $1_DOLLAR_SAFE_CLASSES := $$(subst $$$$,\$$$$,$$($1_CLASSES))

    $$($1_TARGETS): $$($1_DEP_FILE) $$($1_CLASS_FILES)

    $$($1_DEP_FILE): $$($1_CLASS_FILES)
	$(MKDIR) -p $$($1_STUB_CLASSES_DIR)
	if [ "x$$($1_ARGS)" != "x" ]; then \
O
ohair 已提交
82
	    $(ECHO) $(LOG_INFO) Running rmic $$($1_ARGS) for $$($1_DOLLAR_SAFE_CLASSES) &&\
83 84 85 86
	    $(RMIC) $$($1_ARGS) -classpath "$$($1_CLASSES_DIR)" \
			-d $$($1_STUB_CLASSES_DIR) $$($1_DOLLAR_SAFE_CLASSES);\
	fi;
	if [ "x$$($1_ARGS2)" != "x" ]; then \
O
ohair 已提交
87
	    $(ECHO) $(LOG_INFO) Running rmic $$($1_ARGS2) for $$($1_DOLLAR_SAFE_CLASSES) &&\
88 89 90 91 92 93 94 95 96 97
	    $(RMIC) $$($1_ARGS2) -classpath "$$($1_CLASSES_DIR)" \
			-d $$($1_STUB_CLASSES_DIR) $$($1_DOLLAR_SAFE_CLASSES);\
	fi;


    $1 := $$($1_TARGETS)

    # By marking as secondary, this "touch" file doesn't need to be touched and will never exist.
    .SECONDARY: $$($1_DEP_FILE)
endef