1# BEGIN LICENSE BLOCK 2# Version: CMPL 1.1 3# 4# The contents of this file are subject to the Cisco-style Mozilla Public 5# License Version 1.1 (the "License"); you may not use this file except 6# in compliance with the License. You may obtain a copy of the License 7# at www.eclipse-clp.org/license. 8# 9# Software distributed under the License is distributed on an "AS IS" 10# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See 11# the License for the specific language governing rights and limitations 12# under the License. 13# 14# The Original Code is The ECLiPSe Constraint Logic Programming System. 15# The Initial Developer of the Original Code is Cisco Systems, Inc. 16# Portions created by the Initial Developer are 17# Copyright (C) 2006 Cisco Systems, Inc. All Rights Reserved. 18# 19# Contributor(s): 20# 21# END LICENSE BLOCK 22 23# Makefile for Eclipse JavaInterface module. 24# 25# Author: Josh Singer 26 27ARCH = @ARCH@ 28OSTYPE = @OSTYPE@ 29OSCLASS = @OSCLASS@ 30top_srcdir = @top_srcdir@ 31PREFIX = @prefix@ 32MAKEFILE = Makefile.$(ARCH) 33 34CC = @CC@ 35CFLAGS = @CFLAGS@ 36OPT_FLAGS = @OPT_FLAGS@ 37DYLD = @DYLD@ 38DYNLDFLAGS = @DYNLDFLAGS@ 39OBJECTS_SUFFIX = @OBJECTS_SUFFIX@ 40LIB_PREFIX = @LIB_PREFIX@ 41JAVA_HOME = @JAVA_HOME@ 42JAVA_BIN = $(JAVA_HOME)/bin 43 44GMP_LD = @GMP_LD@ 45 46RUNPATH_DYLDFLAG = @RUNPATH_DYLDFLAG@ 47 48SOURCEDIR=./src/com/parctechnologies/eclipse 49 50DOCSDIR=./doc/public 51 52REL_EC_DIR=$(PREFIX) 53 54AUX_ECLIPSE=$(REL_EC_DIR)/bin/$(ARCH)/eclipse 55 56JAVA_DOCS=$(REL_EC_DIR)/doc/javadoc/JavaEclipseInterface/index.html 57 58EXAMPLESDIR=$(REL_EC_DIR)/doc/examples/JavaInterface 59 60JAVA_EXAMPLES=$(EXAMPLESDIR)/QuickTest.java $(EXAMPLESDIR)/DataExample1.java $(EXAMPLESDIR)/DataExample2.java $(EXAMPLESDIR)/QueueExample1.java $(EXAMPLESDIR)/QueueExample2.java $(EXAMPLESDIR)/queue_example_1.pl $(EXAMPLESDIR)/queue_example_2.pl $(EXAMPLESDIR)/EclipseMapColourer.java $(EXAMPLESDIR)/ic-parc.gif 61 62JAVA_CLASSES=$(REL_EC_DIR)/lib/eclipse.jar 63 64PERM = a+r,u+w,go-w 65 66CP=/bin/cp 67 68# install is configured as either install_all or install_cross 69install: @MAKE_TARGET@ 70install_all: @ALL_WITH_JAVA@ 71install_cross: @ALL_CROSS_WITH_JAVA@ 72 73all_with_java: all_cross_with_java \ 74 $(JAVA_CLASSES) $(JAVA_DOCS) $(JAVA_EXAMPLES) \ 75 $(REL_EC_DIR)/lib/joop_boot.eco \ 76 $(REL_EC_DIR)/lib/joop_boot.pl 77 78all_cross_with_java: \ 79 $(REL_EC_DIR)/lib/$(ARCH)/$(LIB_PREFIX)ec_java.$(OBJECTS_SUFFIX) \ 80 $(REL_EC_DIR)/lib/$(ARCH)/$(LIB_PREFIX)ec_java_load.$(OBJECTS_SUFFIX) 81 82$(JAVA_CLASSES): eclipse.jar 83 $(CP) eclipse.jar $(JAVA_CLASSES) 84 85$(REL_EC_DIR)/lib/$(ARCH)/$(LIB_PREFIX)ec_java.$(OBJECTS_SUFFIX): $(ARCH)/$(LIB_PREFIX)ec_java.$(OBJECTS_SUFFIX) 86 $(CP) $(ARCH)/$(LIB_PREFIX)ec_java.$(OBJECTS_SUFFIX) $(REL_EC_DIR)/lib/$(ARCH)/$(LIB_PREFIX)ec_java.$(OBJECTS_SUFFIX) 87 88$(REL_EC_DIR)/lib/$(ARCH)/$(LIB_PREFIX)ec_java_load.$(OBJECTS_SUFFIX): $(ARCH)/$(LIB_PREFIX)ec_java_load.$(OBJECTS_SUFFIX) 89 $(CP) $(ARCH)/$(LIB_PREFIX)ec_java_load.$(OBJECTS_SUFFIX) $(REL_EC_DIR)/lib/$(ARCH)/$(LIB_PREFIX)ec_java_load.$(OBJECTS_SUFFIX) 90 91$(REL_EC_DIR)/lib/joop_boot.eco: joop_boot.pl 92 $(AUX_ECLIPSE) -e 'lib(fcompile), set_flag(variable_names,off), fcompile("joop_boot", [outdir:"$(REL_EC_DIR)/lib"])' 93 -@/bin/chmod $(PERM) $(REL_EC_DIR)/lib/joop_boot.eco 94 95$(REL_EC_DIR)/lib/joop_boot.pl: joop_boot.pl 96 $(CP) joop_boot.pl $(REL_EC_DIR)/lib/joop_boot.pl 97 -@/bin/chmod $(PERM) $(REL_EC_DIR)/lib/joop_boot.pl 98 99$(JAVA_DOCS): $(DOCSDIR)/index.html 100 # make sure directories are set up for the API documentation 101 mkdir -p $(REL_EC_DIR)/doc/javadoc/ 102 mkdir -p $(REL_EC_DIR)/doc/javadoc/JavaEclipseInterface/ 103 104 # copy the API documentation to the Eclipse installation 105 $(CP) -r doc/public/* $(REL_EC_DIR)/doc/javadoc/JavaEclipseInterface/ 106 107$(EXAMPLESDIR)/QuickTest.java: tests/QuickTest.java 108 mkdir -p $(EXAMPLESDIR) 109 $(CP) tests/QuickTest.java $(EXAMPLESDIR) 110 111$(EXAMPLESDIR)/DataExample1.java: tests/DataExample1.java 112 mkdir -p $(EXAMPLESDIR) 113 $(CP) tests/DataExample1.java $(EXAMPLESDIR) 114 115$(EXAMPLESDIR)/DataExample2.java: tests/DataExample2.java 116 mkdir -p $(EXAMPLESDIR) 117 $(CP) tests/DataExample2.java $(EXAMPLESDIR) 118 119$(EXAMPLESDIR)/QueueExample1.java: tests/QueueExample1.java 120 mkdir -p $(EXAMPLESDIR) 121 $(CP) tests/QueueExample1.java $(EXAMPLESDIR) 122 123$(EXAMPLESDIR)/QueueExample2.java: tests/QueueExample2.java 124 mkdir -p $(EXAMPLESDIR) 125 $(CP) tests/QueueExample2.java $(EXAMPLESDIR) 126 127$(EXAMPLESDIR)/queue_example_1.pl: tests/queue_example_1.pl 128 mkdir -p $(EXAMPLESDIR) 129 $(CP) tests/queue_example_1.pl $(EXAMPLESDIR) 130 131$(EXAMPLESDIR)/queue_example_2.pl: tests/queue_example_2.pl 132 mkdir -p $(EXAMPLESDIR) 133 $(CP) tests/queue_example_2.pl $(EXAMPLESDIR) 134 135$(EXAMPLESDIR)/EclipseMapColourer.java: tests/EclipseMapColourer.java 136 mkdir -p $(EXAMPLESDIR) 137 $(CP) tests/EclipseMapColourer.java $(EXAMPLESDIR) 138 139$(EXAMPLESDIR)/ic-parc.gif: tests/ic-parc.gif 140 mkdir -p $(EXAMPLESDIR) 141 $(CP) tests/ic-parc.gif $(EXAMPLESDIR) 142 143 144# convenience rule: does not play a part in make all 145docs: 146 mkdir -p $(DOCSDIR) 147 "$(JAVA_BIN)/javadoc" -author -public -d $(DOCSDIR) -sourcepath ./src com.parctechnologies.eclipse 148 149 150$(DOCSDIR)/index.html: $(SOURCEDIR)/* 151 mkdir -p $(DOCSDIR) 152 "$(JAVA_BIN)/javadoc" -author -public -d $(DOCSDIR) -sourcepath ./src com.parctechnologies.eclipse 153 154ecoclean: 155 rm -rf joop_boot.eco $(REL_EC_DIR)/lib/joop_boot.eco 156 157archclean: 158 rm -rf $(ARCH) 159 rm -f *.o 160 rm -f $(REL_EC_DIR)/lib/$(ARCH)/$(LIB_PREFIX)ec_java.$(OBJECTS_SUFFIX) 161 rm -f $(REL_EC_DIR)/lib/$(ARCH)/$(LIB_PREFIX)ec_java_load.$(OBJECTS_SUFFIX) 162 163clean: ecoclean archclean 164 rm -f eclipse.jar 165 rm -rf classes doc 166 rm -f com_parctechnologies_eclipse_NativeEclipse.h 167 168eclipse.jar: $(SOURCEDIR)/*.java 169 mkdir -p ./classes 170 "$(JAVA_BIN)/javac" -O -deprecation -d ./classes -sourcepath ./src/ -classpath ./classes/ $(SOURCEDIR)/*.java 171 "$(JAVA_BIN)/jar" cf eclipse.jar -C classes com 172 173 174# libec_java.so 175# The java interface proper. It depends on other eclipse libraries. 176# Must be linked with a relative run-path of '.' to avoid the need 177# to set LD_LIBRARY_PATH when loading it, provided it gets loaded 178# from the right current directory. 179# 180# libec_java_load.so 181# An auxiliary library which should not depend on anything else. 182# Containing just chdir() functions (Java has no chdir), which are 183# used to change the current directory while loading libec_java.so 184 185ifneq "$(OSCLASS)" "win" 186 187# -lc needed for MacOS X 188 ifeq "$(ARCH)" "i386_macosx" 189 LIBC="-lc" 190 else 191 ifeq "$(ARCH)" "x86_64_macosx" 192 LIBC="-lc" 193 else 194 ifeq "$(ARCH)" "ppc_macosx" 195 LIBC="-lc" 196 else 197 LIBC= 198 endif 199 endif 200 endif 201 202$(ARCH)/libec_java.$(OBJECTS_SUFFIX): ec_java.c com_parctechnologies_eclipse_NativeEclipse.h 203 mkdir -p $(ARCH) 204 $(CC) $(CFLAGS) -I$(REL_EC_DIR)/include/$(ARCH) -I"$(JAVA_HOME)/include" -I"$(JAVA_HOME)/include/$(OSTYPE)" -c ec_java.c 205 $(DYLD) $(DYNLDFLAGS) -L$(REL_EC_DIR)/lib/$(ARCH) ec_java.o $(RUNPATH_DYLDFLAG). $(GMP_LD) -leclipse -o $(ARCH)/libec_java.$(OBJECTS_SUFFIX) 206 rm ec_java.o 207 208$(ARCH)/libec_java_load.$(OBJECTS_SUFFIX): ec_java_load.c com_parctechnologies_eclipse_NativeEclipse.h 209 mkdir -p $(ARCH) 210 $(CC) $(CFLAGS) -I"$(JAVA_HOME)/include" -I"$(JAVA_HOME)/include/$(OSTYPE)" -c ec_java_load.c 211 $(DYLD) $(DYNLDFLAGS) ec_java_load.o $(LIBC) -o $(ARCH)/libec_java_load.$(OBJECTS_SUFFIX) 212 rm ec_java_load.o 213 214else 215# OSCLASS = win, i.e. ARCH = i386_nt/x86_64_nt 216# CAUTION: for the case that $(JAVA_HOME)/include/win32 does not exist 217# (because we are cross-compiling) we have our own include/win32/jni_md.h 218# It's a simple file that will hopefully not change much between Java versions. 219# MinGW FAQ says we should use -D_JNI_IMPLEMENTATION -Wl,--kill-at 220 221$(ARCH)/ec_java.dll: ec_java.c com_parctechnologies_eclipse_NativeEclipse.h 222 mkdir -p $(ARCH) 223 $(CC) -shared -I$(REL_EC_DIR)/include/$(ARCH) -I"$(JAVA_HOME)/include" \ 224 -I"$(JAVA_HOME)/include/win32" -Iinclude/win32 \ 225 -D_JNI_IMPLEMENTATION -Wl,--kill-at \ 226 -Wl,--output-def,$(ARCH)/ec_java.def \ 227 ec_java.c \ 228 -L$(REL_EC_DIR)/lib/$(ARCH) -leclipse \ 229 -o $(ARCH)/ec_java.dll 230 231$(ARCH)/ec_java_load.dll: ec_java_load.c com_parctechnologies_eclipse_NativeEclipse.h 232 mkdir -p $(ARCH) 233 $(CC) -shared -I"$(JAVA_HOME)/include" \ 234 -I"$(JAVA_HOME)/include/win32" -Iinclude/win32 \ 235 -D_JNI_IMPLEMENTATION -Wl,--kill-at \ 236 -Wl,--output-def,$(ARCH)/ec_java_load.def \ 237 ec_java_load.c -o $(ARCH)/ec_java_load.dll 238 239endif 240 241com_parctechnologies_eclipse_NativeEclipse.h : ./src/com/parctechnologies/eclipse/NativeEclipse.java 242 mkdir -p ./classes 243 "$(JAVA_BIN)/javac" ./src/com/parctechnologies/eclipse/NativeEclipse.java -d ./classes 244 "$(JAVA_BIN)/javah" -jni -classpath ./classes com.parctechnologies.eclipse.NativeEclipse 245 246