jdk/makefiles/sun/xawt/Makefile
changeset 12317 9670c1610c53
child 12749 edd0b9d5e304
equal deleted inserted replaced
12316:ba6b7a51e226 12317:9670c1610c53
       
     1 #
       
     2 # Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
       
     3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       
     4 #
       
     5 # This code is free software; you can redistribute it and/or modify it
       
     6 # under the terms of the GNU General Public License version 2 only, as
       
     7 # published by the Free Software Foundation.  Oracle designates this
       
     8 # particular file as subject to the "Classpath" exception as provided
       
     9 # by Oracle in the LICENSE file that accompanied this code.
       
    10 #
       
    11 # This code is distributed in the hope that it will be useful, but WITHOUT
       
    12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
       
    13 # FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
       
    14 # version 2 for more details (a copy is included in the LICENSE file that
       
    15 # accompanied this code).
       
    16 #
       
    17 # You should have received a copy of the GNU General Public License version
       
    18 # 2 along with this work; if not, write to the Free Software Foundation,
       
    19 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
       
    20 #
       
    21 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
       
    22 # or visit www.oracle.com if you need additional information or have any
       
    23 # questions.
       
    24 #
       
    25 
       
    26 BUILDDIR = ../..
       
    27 PACKAGE = sun.awt.X11
       
    28 LIBRARY = awt_xawt
       
    29 PRODUCT = sun
       
    30 
       
    31 include $(BUILDDIR)/common/Defs.gmk
       
    32 
       
    33 GEN_DIR=$(GENSRCDIR)/sun/awt/X11
       
    34 
       
    35 CLASSES_INIT += $(TEMPDIR)/.gen.wrappers $(TEMPDIR)/.gen_icons touch.wrappers
       
    36 
       
    37 .PHONY: generated.clean
       
    38 
       
    39 #
       
    40 # Files
       
    41 #
       
    42 include FILES_c_unix.gmk
       
    43 include FILES_export_unix.gmk
       
    44 AUTO_FILES_JAVA_DIRS = sun/awt/X11
       
    45 AUTO_JAVA_PRUNE = WrapperGenerator.java
       
    46 
       
    47 LDFLAGS += -L$(OPENWIN_LIB)
       
    48 
       
    49 # For Xrender extension.
       
    50 ifeq ($(PLATFORM), solaris)
       
    51 LDFLAGS += -L/usr/openwin/sfw/lib$(ISA_DIR) -R/usr/openwin/sfw/lib$(ISA_DIR)
       
    52 endif
       
    53 
       
    54 ifeq ($(PLATFORM), linux)
       
    55 LDFLAGS += -lpthread
       
    56 dummy := $(shell $(MKDIR) -p $(LIB_LOCATION))
       
    57 endif
       
    58 
       
    59 ifeq ($(PLATFORM), macosx)
       
    60 LDFLAGS += -pthread
       
    61 dummy := $(shell $(MKDIR) -p $(LIB_LOCATION))
       
    62 endif
       
    63 
       
    64 # Since this library will be living in a subdirectory below the other libraries
       
    65 #   we need to add an extra runpath so that libraries in the upper directory
       
    66 #   are found at runtime.
       
    67 LD_RUNPATH_EXTRAS = ..
       
    68 
       
    69 #
       
    70 # Rules.
       
    71 #
       
    72 include $(BUILDDIR)/common/Mapfile-vers.gmk
       
    73 include $(BUILDDIR)/common/Library.gmk
       
    74 
       
    75 #
       
    76 # Add to the ambient vpath to pick up files in subdirectories
       
    77 #
       
    78 vpath %.c   $(SHARE_SRC)/native/sunawt/alphacomposite
       
    79 vpath %.c   $(PLATFORM_SRC)/native/sun/xawt
       
    80 vpath %.c   $(PLATFORM_SRC)/native/sun/awt
       
    81 vpath %.c   $(SHARE_SRC)/native/sun/awt/debug
       
    82 vpath %.c   $(SHARE_SRC)/native/sun/awt/image
       
    83 vpath %.c   $(SHARE_SRC)/native/sun/awt/image/gif
       
    84 vpath %.c   $(SHARE_SRC)/native/sun/awt/image/cvutils
       
    85 vpath %.c   $(SHARE_SRC)/native/sun/awt/shell
       
    86 vpath %.c   $(SHARE_SRC)/native/sun/java2d
       
    87 vpath %.c   $(SHARE_SRC)/native/sun/java2d/loops
       
    88 vpath %.c   $(SHARE_SRC)/native/sun/java2d/pipe
       
    89 vpath %.c   $(SHARE_SRC)/native/sun/awt/medialib
       
    90 vpath %.c   $(SHARE_SRC)/native/sun/awt/utility
       
    91 vpath %.cpp $(SHARE_SRC)/native/sun/image
       
    92 vpath %.c   $(SHARE_SRC)/native/sun/font
       
    93 vpath %.c   $(PLATFORM_SRC)/native/sun/awt/robot_child
       
    94 vpath %.c   $(SHARE_SRC)/native/sun/java2d/opengl
       
    95 vpath %.c   $(PLATFORM_SRC)/native/sun/java2d/opengl
       
    96 vpath %.c   $(PLATFORM_SRC)/native/sun/java2d/x11
       
    97 
       
    98 OTHER_LDLIBS = $(LIBM) -lawt -lXext -lX11 -lXrender $(LIBDL) \
       
    99                    $(LDFLAGS_COMMON) $(AWT_RUNPATH) $(OTHER_LDFLAGS) -lXtst -lXi
       
   100 
       
   101 ifeq  ($(PLATFORM), solaris)
       
   102 CPPFLAGS += -DFUNCPROTO=15
       
   103 dummy := $(shell $(MKDIR) -p $(LIB_LOCATION))
       
   104 endif
       
   105 
       
   106 CPPFLAGS += $(CUPS_CFLAGS)
       
   107 
       
   108 CPPFLAGS += -DXAWT -DXAWT_HACK \
       
   109         -I$(TEMPDIR)/../../sun.awt/awt/CClassHeaders \
       
   110         -I$(PLATFORM_SRC)/native/sun/awt \
       
   111 	-I$(PLATFORM_SRC)/native/sun/xawt \
       
   112         -I$(PLATFORM_SRC)/native/sun/jdga \
       
   113         -I$(SHARE_SRC)/native/sun/awt/debug \
       
   114         -I$(SHARE_SRC)/native/sun/awt/image/cvutils \
       
   115         -I$(SHARE_SRC)/native/sun/java2d \
       
   116 	-I$(SHARE_SRC)/native/sun/java2d/loops \
       
   117 	-I$(SHARE_SRC)/native/sun/awt/image/cvutils \
       
   118 	-I$(SHARE_SRC)/native/sun/awt/image \
       
   119 	-I$(SHARE_SRC)/native/sun/font \
       
   120 	-I$(PLATFORM_SRC)/native/sun/java2d \
       
   121 	-I$(SHARE_SRC)/native/sun/java2d/pipe \
       
   122 	-I$(SHARE_SRC)/native/sun/java2d/opengl \
       
   123 	-I$(PLATFORM_SRC)/native/sun/java2d/opengl \
       
   124 	-I$(PLATFORM_SRC)/native/sun/java2d/x11 \
       
   125 	-I$(SHARE_SRC)/native/sun/dc/path \
       
   126 	-I$(SHARE_SRC)/native/sun/dc/doe \
       
   127 	-I$(SHARE_SRC)/native/sun/awt/alphacomposite \
       
   128         -I$(SHARE_SRC)/native/sun/awt/medialib \
       
   129 	-I$(PLATFORM_SRC)/native/sun/awt/medialib \
       
   130         -I$(PLATFORM_SRC)/native/sun/font \
       
   131         -I$(SHARE_SRC)/native/sun/awt \
       
   132         -I$(PLATFORM_SRC)/native/sun/awt
       
   133 
       
   134 ifeq ($(PLATFORM), linux)
       
   135   ifndef CROSS_COMPILE_ARCH
       
   136     # Allows for builds on Debian GNU Linux, X11 is in a different place 
       
   137     # This should really be handled at a higher-level so we don't have to
       
   138     # work-around this when cross-compiling
       
   139     CPPFLAGS += -I$(SYS_ROOT)/usr/X11R6/include/X11/extensions \
       
   140                 -I$(SYS_ROOT)/usr/include/X11/extensions \
       
   141                 -I$(OPENWIN_HOME)/include 
       
   142   else
       
   143     CPPFLAGS += -I$(OPENWIN_HOME)/include/X11/extensions \
       
   144                 -I$(OPENWIN_HOME)/include 
       
   145   endif
       
   146 endif
       
   147 
       
   148 # We have some odd logic here because some Solaris 10 updates
       
   149 # have a render.h file that suggests gradients are supported, but
       
   150 # the Xrender.h doesn't have the corresponding type definitions.
       
   151 # Earlier updates have neither. We'd like to know if there's a mismatch.
       
   152 # Whilst in the C preprocessor we can tell if the render.h define's are set
       
   153 # we can't tell anything about C declarations.
       
   154 # A grep of Xrender.h is the only way to know this. If they are absent
       
   155 # we will set a flag indicating this mismatch and the JDK source file
       
   156 # will interpret it to resolve the problem.
       
   157 ifeq ($(PLATFORM), solaris)
       
   158   CPPFLAGS += -I$(OPENWIN_HOME)/include/X11/extensions
       
   159   OS_VERSION := $(shell uname -r)
       
   160   XRENDER_H := $(OPENWIN_HOME)/share/include/X11/extensions/Xrender.h
       
   161   ifeq ($(OS_VERSION),5.10) 
       
   162      LINEARGRADIENT_CNT := $(shell $(EGREP) -c XLinearGradient $(XRENDER_H))
       
   163      ifeq ($(LINEARGRADIENT_CNT),0) 
       
   164        CFLAGS+= -DSOLARIS10_NO_XRENDER_STRUCTS
       
   165      endif
       
   166  endif
       
   167 endif
       
   168 
       
   169 ifeq ($(PLATFORM), macosx)
       
   170   CPPFLAGS += -DX11_PATH=\"$(X11_PATH)\" -DPACKAGE_PATH=\"$(PACKAGE_PATH)\"
       
   171 endif
       
   172 
       
   173 ifeq ($(MILESTONE), internal)
       
   174   CPPFLAGS += -DINTERNAL_BUILD
       
   175 endif
       
   176 
       
   177 #
       
   178 # Generation of wrappers
       
   179 #
       
   180 SIZER_DIR=$(GEN_DIR)/generator
       
   181 SIZER = $(SIZER_DIR)/sizer
       
   182 SIZER_32_C = $(SIZER).32.c
       
   183 SIZER_64_C = $(SIZER).64.c
       
   184 CFLAGS_32=$(CFLAGS)
       
   185 CFLAGS_64=$(CFLAGS)
       
   186 
       
   187 ifeq ($(PLATFORM), solaris)
       
   188 
       
   189 isalist:=$(shell $(ISAINFO))
       
   190 
       
   191 ifneq (,$(findstring sparcv9, $(isalist)))
       
   192 # On sparcv9 we generate both 32 and 64-bit sizers in spite of ARCH_DATA_MODEL.
       
   193 # On sparcv9 CFLAGS already contain $(XARCH_OPTION/64), so to generate 32-bit sizer we need to change this option.
       
   194 CFLAGS_32=$(subst $(XARCH_OPTION/64),$(XARCH_OPTION/32),$(CFLAGS))
       
   195 SIZERS = $(SIZER).32 $(SIZER).64
       
   196 SIZERS_C = $(SIZER_32_C) $(SIZER_64_C)
       
   197 SIZES = $(WRAPPER_GENERATOR_DIR)/sizes.32 $(WRAPPER_GENERATOR_DIR)/sizes.64
       
   198 CFLAGS_64=$(CFLAGS) $(XARCH_OPTION/64)
       
   199 else
       
   200 ifneq (,$(findstring amd64, $(isalist)))
       
   201 # On amd64 we generate both 32 and 64-bit sizers in spite of ARCH_DATA_MODEL.
       
   202 # On amd64 CFLAGS already contain $(XARCH_OPTION/64), so to generate 32-bit sizer we need to change this option.
       
   203 CFLAGS_32=$(subst $(XARCH_OPTION/64),$(XARCH_OPTION/32),$(CFLAGS))
       
   204 SIZERS = $(SIZER).32 $(SIZER).64
       
   205 SIZERS_C = $(SIZER_32_C) $(SIZER_64_C)
       
   206 SIZES = $(WRAPPER_GENERATOR_DIR)/sizes.32 $(WRAPPER_GENERATOR_DIR)/sizes.64
       
   207 CFLAGS_64=$(CFLAGS) $(XARCH_OPTION/64)
       
   208 else # !sparcv9 : includes (32-bit) sparc, i586
       
   209 SIZERS = $(SIZER).32
       
   210 SIZERS_C = $(SIZER_32_C)
       
   211 SIZES = $(WRAPPER_GENERATOR_DIR)/sizes.32
       
   212 endif # amd64
       
   213 endif # sparcv9
       
   214 
       
   215 else # !solaris
       
   216 
       
   217 ifeq ($(PLATFORM), macosx)
       
   218 CFLAGS_32=-arch i386
       
   219 SIZERS = $(SIZER).32 $(SIZER).64
       
   220 SIZERS_C = $(SIZER_32_C) $(SIZER_64_C)
       
   221 SIZES = $(WRAPPER_GENERATOR_DIR)/sizes.32 $(WRAPPER_GENERATOR_DIR)/sizes.64
       
   222 CFLAGS_64=-arch x86_64
       
   223 else # !macosx
       
   224 ifeq ($(ARCH_DATA_MODEL), 32)
       
   225 SIZERS = $(SIZER).32
       
   226 SIZERS_C = $(SIZER_32_C)
       
   227 SIZES = $(WRAPPER_GENERATOR_DIR)/sizes.32
       
   228 else # !32
       
   229 SIZERS = $(SIZER).64
       
   230 SIZERS_C = $(SIZER_64_C)
       
   231 SIZES = $(WRAPPER_GENERATOR_DIR)/sizes.64
       
   232 endif # 32
       
   233 endif # !macosx
       
   234 endif # solaris
       
   235 
       
   236 # XXX Hack for 6185483 - use hard-coded sizes.
       
   237 # Add the 64-bit platforms that need to be included into 32-bit build
       
   238 # and have sizes.64-$(PLATFORM)-$(LIBARCH) hardcoded in the workspace
       
   239 ifeq ($(PLATFORM)-$(LIBARCH), solaris-i386)
       
   240 # If you define DOHACK=true for some combination of $(PLATFORM)-$(LIBARCH),
       
   241 # make sure you have sizes.64-$(PLATFORM)-$(LIBARCH) pre-generated in
       
   242 # $(PLATFORM_SRC)/classes/sun/awt/X11/generator/
       
   243 DOHACK=true
       
   244 endif # Hack
       
   245 
       
   246 ifeq ($(DOHACK), true)
       
   247 PREDEFINED_SIZES_TMPL=$(PLATFORM_SRC)/classes/sun/awt/X11/generator/sizes.64-$(PLATFORM)-$(LIBARCH)
       
   248 PREDEFINED_SIZES=$(WRAPPER_GENERATOR_DIR)/sizes.64
       
   249 SIZES += $(WRAPPER_GENERATOR_DIR)/sizes.64
       
   250 endif
       
   251 
       
   252 ifeq ($(PLATFORM)-$(LIBARCH), solaris-amd64)
       
   253 DOCOMPARE=true
       
   254 endif
       
   255 # 64 bit sizers are generated on platform-libarch (left) for use 
       
   256 # on platform-libarch (right) and stored under the latter name.
       
   257 # Do compare manually stored and automatically generated pair(s) 
       
   258 # if DOCOMPARE=true, just after the generation.
       
   259 STORED_SIZES_TMPL_solaris_amd64=$(PLATFORM_SRC)/classes/sun/awt/X11/generator/sizes.64-solaris-i386
       
   260 
       
   261 WRAPPER_GENERATOR_JAVA=$(PLATFORM_SRC)/classes/sun/awt/X11/generator/WrapperGenerator.java
       
   262 WRAPPER_GENERATOR_DIR=$(GENSRCDIR)/sun/awt/X11/generator
       
   263 WRAPPER_GENERATOR_TEMPDIR=$(TEMPDIR)/sun/awt/X11/generator
       
   264 WRAPPER_GENERATOR_CLASS=$(WRAPPER_GENERATOR_TEMPDIR)/WrapperGenerator.class 
       
   265 XLIBTYPES=$(PLATFORM_SRC)/classes/sun/awt/X11/generator/xlibtypes.txt
       
   266 
       
   267 $(SIZERS): $(SIZERS_C) 
       
   268 	$(prep-target)
       
   269 ifndef CROSS_COMPILE_ARCH
       
   270 	$(CC) $(CFLAGS_$(subst .,,$(suffix $@))) $(CPPFLAGS) -c -o $(SIZER)$(suffix $@).o $(SIZER)$(suffix $@).c
       
   271 	$(CC) $(CFLAGS_$(subst .,,$(suffix $@))) -o $@ $(CPPFLAGS) $(SIZER)$(suffix $@).o
       
   272 else
       
   273 	$(HOST_CC) $(CPPFLAGS) -c -o $(SIZER)$(suffix $@).o $(SIZER)$(suffix $@).c
       
   274 	$(HOST_CC) $(CPPFLAGS) -o $@ $(SIZER)$(suffix $@).o
       
   275 endif
       
   276 
       
   277 $(WRAPPER_GENERATOR_CLASS): $(WRAPPER_GENERATOR_JAVA)
       
   278 	$(prep-target)
       
   279 	$(BOOT_JAVAC_CMD) -d $(WRAPPER_GENERATOR_TEMPDIR) $(WRAPPER_GENERATOR_JAVA)
       
   280 
       
   281 $(SIZERS_C): $(WRAPPER_GENERATOR_CLASS) $(XLIBTYPES)
       
   282 	$(prep-target)
       
   283 	$(MKDIR) -p $(WRAPPER_GENERATOR_TEMPDIR)
       
   284 	$(BOOT_JAVA_CMD) -cp $(WRAPPER_GENERATOR_TEMPDIR) WrapperGenerator \
       
   285 	    $(SIZER_DIR) $(XLIBTYPES) "sizer" $(subst .,,$(suffix $(basename $@)))
       
   286 
       
   287 $(SIZES): $(SIZERS)
       
   288 	@if [ "$(DOHACK)$@" = "true$(PREDEFINED_SIZES)" ]; then \
       
   289 	    $(ECHO) COPYING $(PREDEFINED_SIZES_TMPL) into $@; \
       
   290 	    $(CP) $(PREDEFINED_SIZES_TMPL) $@; \
       
   291 	    $(CHMOD) +w $@;\
       
   292 	else	\
       
   293 	    $(ECHO) GENERATING $@; \
       
   294 	    $(WRAPPER_GENERATOR_DIR)/sizer$(suffix $@) > $@; \
       
   295 	fi
       
   296 	@if [ "$(DOCOMPARE)$(suffix $@)" = "true.64" ]; then \
       
   297 	    $(ECHO) COMPARING $@ and $(STORED_SIZES_TMPL_$(PLATFORM)_$(LIBARCH)); \
       
   298 	    $(DIFF) $@ $(STORED_SIZES_TMPL_$(PLATFORM)_$(LIBARCH)); \
       
   299 	fi
       
   300 
       
   301 $(TEMPDIR)/.gen.wrappers: $(SIZES) $(WRAPPER_GENERATOR_CLASS) $(XLIBTYPES)
       
   302 	$(BOOT_JAVA_CMD) -cp $(WRAPPER_GENERATOR_TEMPDIR) WrapperGenerator \
       
   303 	    $(GEN_DIR) $(XLIBTYPES) "gen" $(WRAPPER_GENERATOR_DIR)/sizes
       
   304 
       
   305 touch.wrappers: $(TEMPDIR)/.gen.wrappers
       
   306 	$(MKDIR) -p $(TEMPDIR)
       
   307 	$(TOUCH) $(TEMPDIR)/.gen.wrappers
       
   308 
       
   309 generated.clean:
       
   310 	$(RM) -r $(WRAPPER_GENERATOR_TEMPDIR)
       
   311 	$(RM) -r $(WRAPPER_GENERATOR_DIR)
       
   312 	$(RM) -r $(GEN_DIR)/*.java
       
   313 	$(RM) -r $(TEMPDIR)/.gen_icons
       
   314 
       
   315 ifdef OPENJDK
       
   316     ICONS_PATH_PREFIX=$(PLATFORM_SRC)
       
   317 else
       
   318     ICONS_PATH_PREFIX=$(CLOSED_SRC)/solaris
       
   319 endif
       
   320 
       
   321 ICONS = \
       
   322     $(ICONS_PATH_PREFIX)/classes/sun/awt/X11/java-icon16.png \
       
   323     $(ICONS_PATH_PREFIX)/classes/sun/awt/X11/java-icon24.png \
       
   324     $(ICONS_PATH_PREFIX)/classes/sun/awt/X11/java-icon32.png \
       
   325     $(ICONS_PATH_PREFIX)/classes/sun/awt/X11/java-icon48.png
       
   326 
       
   327 
       
   328 ICONPATH=$(PLATFORM_SRC)/classes/sun/awt/X11
       
   329 
       
   330 ICONS += \
       
   331    $(ICONPATH)/security-icon-bw16.png \
       
   332    $(ICONPATH)/security-icon-interim16.png \
       
   333    $(ICONPATH)/security-icon-yellow16.png \
       
   334    $(ICONPATH)/security-icon-bw24.png \
       
   335    $(ICONPATH)/security-icon-interim24.png \
       
   336    $(ICONPATH)/security-icon-yellow24.png \
       
   337    $(ICONPATH)/security-icon-bw32.png \
       
   338    $(ICONPATH)/security-icon-interim32.png \
       
   339    $(ICONPATH)/security-icon-yellow32.png \
       
   340    $(ICONPATH)/security-icon-bw48.png \
       
   341    $(ICONPATH)/security-icon-interim48.png \
       
   342    $(ICONPATH)/security-icon-yellow48.png
       
   343 
       
   344 TEMPDIR_CLASSES = $(TEMPDIR)/classes
       
   345 
       
   346 $(TEMPDIR_CLASSES)/sun/awt/X11/ToBin.class: ToBin.java
       
   347 	@$(prep-target)
       
   348 	$(BOOT_JAVAC_CMD) -d $(TEMPDIR_CLASSES) $<
       
   349 
       
   350 $(TEMPDIR)/.gen_icons: $(TEMPDIR_CLASSES)/sun/awt/X11/ToBin.class $(ICONS)
       
   351 	$(prep-target)
       
   352 	for i in $(ICONS); do \
       
   353             filename=`basename $$i`; \
       
   354 	    name=`$(ECHO) $$filename | $(TR) '\-.' '__'`;  \
       
   355             classname=$(GEN_DIR)/XAWTIcon32_$$name.java; \
       
   356 	    $(RM) $$classname; \
       
   357 	    $(ECHO) "package sun.awt.X11;" >> $$classname ; \
       
   358 	    $(ECHO) "public class XAWTIcon32_$$name {" >> $$classname; \
       
   359 	    $(ECHO) "public static int[] $$name = { " >> $$classname;  \
       
   360 	    $(CAT) $$i | \
       
   361 	      $(BOOT_JAVA_CMD) -cp $(TEMPDIR_CLASSES)  \
       
   362 		-Djava.awt.headless=true \
       
   363 		sun.awt.X11.ToBin >> $$classname; \
       
   364 	    $(ECHO) "}; }" >> $$classname;  \
       
   365             classname=$(GEN_DIR)/XAWTIcon64_$$name.java; \
       
   366 	    $(RM) $$classname; \
       
   367 	    $(ECHO) "package sun.awt.X11;" >> $$classname ; \
       
   368 	    $(ECHO) "public class XAWTIcon64_$$name {" >> $$classname; \
       
   369 	    $(ECHO) "public static long[] $$name = { " >> $$classname;  \
       
   370 	    $(CAT) $$i | \
       
   371 	      $(BOOT_JAVA_CMD) -cp $(TEMPDIR_CLASSES)  \
       
   372 		-Djava.awt.headless=true \
       
   373 		sun.awt.X11.ToBin >> $$classname; \
       
   374 	    $(ECHO) "}; }" >> $$classname;  \
       
   375 	done
       
   376 	$(TOUCH) $@
       
   377 
       
   378 clean clobber:: generated.clean
       
   379 
       
   380 .PHONY: generated.clean robot_child
       
   381