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) 2010 Cisco Systems, Inc. All Rights Reserved. 18# 19# Contributor(s): 20# 21# END LICENSE BLOCK 22# 23# Makefile for Gecode interface 24# $Id: Makefile.in,v 1.15 2015/10/05 20:30:23 kish_shen Exp $ 25# 26 27# The location of third party software releases, e.g. Gecode 28THIRDPARTY=@ECLIPSETHIRDPARTY@ 29 30 31ARCH = @ARCH@ 32top_srcdir = @top_srcdir@ 33PREFIX = @prefix@ 34ECLIPSEDIR = $(PREFIX) 35MAKEFILE = Makefile.$(ARCH) 36OSCLASS = @OSCLASS@ 37 38CC = @CC@ 39CXX = @CXX@ 40AR = @AR@ 41CFLAGS = @CFLAGS@ @OPT_FLAGS@ 42OS_INCLUDES = @OS_INCLUDES@ 43OBJ_SUFFIX = @OBJECTS_SUFFIX@ 44DYNLDFLAGS = @DYNLDFLAGS@ 45DYLDCXX = @DYLDCXX@ 46EXEEXT = @EXEEXT@ 47STRIP = @STRIP@ 48STRIPFLAGS = @STRIPFLAGS@ 49GMP_LD = @GMP_LD@ 50DESTDIR = $(PREFIX)/lib 51 52CPPFLAGS = -I. -I$(ECLIPSEDIR)/include/$(ARCH) -I$(ECLIPSEDIR)/Kernel/src 53STDCXXLIB = @STDCXXLIB@ 54ECLIBS = -L$(ECLIPSEDIR)/lib/$(ARCH) -leclipse @LIBS@ 55 56GECODE = @GECODEDIR@ 57 58ECLIPSE = $(ECLIPSEDIR)/bin/$(ARCH)/eclipse 59 60PERM = a+r,u+w,go-w 61DIRPERM = 2755 62 63.SUFFIXES: $(SUFFIXES) .$(OBJ_SUFFIX) 64 65.c.o: 66 $(CC) $(CFLAGS) $(CPPFLAGS) -c $< 67 68ECL_ECI_FILES = gfd.ecl 69 70ECL_FILES = gfd.ecl gfd_generic_interface.ecl 71 72ECL_DEST = $(ECL_ECI_FILES:%.ecl=$(DESTDIR)/%.ecl) \ 73 $(ECL_FILES:%.ecl=$(DESTDIR)/%.ecl) 74ECI_DEST = $(ECL_ECI_FILES:%.ecl=$(PREFIX)/lib/%.eci) 75OBJ_DEST = $(OBJ_FILES:%=$(PREFIX)/lib/%) 76 77# List of shared libraries to build 78 79OBJ_FILES = \ 80 $(ARCH)/gfd.$(OBJ_SUFFIX) 81 82 83install: @MAKE_TARGET@ 84 85install_all: @ALL_WITH_GECODE@ 86 87install_cross: @ALL_CROSS_WITH_GECODE@ 88 89all_with_gecode: install_cross $(ECI_DEST) 90all_cross_with_gecode: $(OBJ_DEST) $(ECL_DEST) 91 92GECODELIBS = -lgecodeminimodel -lgecodeset \ 93 -lgecodeint -lgecodesearch -lgecodekernel -lgecodesupport 94 95ifeq ($(OSCLASS),win) 96 97THREADLIB = 98EXTRAFILES = gfd.def 99 100ifeq ($(ARCH),x86_64_nt) 101 102# For w64-mingw cross-compiler (downloaded Feb 2011), using g++ to link 103# seem to require libgcc_s_sjlj-1.dll at run-time. We avoid this by 104# using gcc to do the linking 105DYLDCXX = @DYLD@ 106 107endif 108 109else 110 111THREADLIB = -lpthread 112EXTRAFILES = 113 114endif 115 116# extra flag to avoid visibility warnings in Mac OS X 117ifeq ($(ARCH),x86_64_macosx) 118 119ADD_FLAGS= --visibility=hidden 120 121else 122 ifeq ($(ARCH),i386_macosx) 123 124ADD_FLAGS=$(LOCAL_FLAGS) --visibility=hidden 125 endif 126endif 127 128# gfd.so is stripped because file is very large before stripping 129$(ARCH)/gfd.$(OBJ_SUFFIX): gfd.cpp gfd.hpp 130 [ -d $(ARCH) ] || mkdir $(ARCH) 131 $(CXX) $(CPPFLAGS) $(CFLAGS) $(ADD_FLAGS) $(LOCAL_FLAGS) -I$(GECODE)/include gfd.cpp \ 132 -c -o $(ARCH)/gfd.o 133 $(DYLDCXX) $(DYNLDFLAGS) -L$(GECODE)/lib $(ARCH)/gfd.o $(EXTRAFILES) \ 134 $(GECODELIBS) $(STDCXXLIB) $(ECLIBS) $(THREADLIB) -o $(ARCH)/gfd.$(OBJ_SUFFIX) 135 $(STRIP) $(STRIPFLAGS) $(ARCH)/gfd.$(OBJ_SUFFIX) 136 137$(PREFIX)/lib/$(ARCH)/%.$(OBJ_SUFFIX): $(ARCH)/%.$(OBJ_SUFFIX) $(PREFIX)/lib/$(ARCH)/.stamp 138 /bin/cp $< $@ 139 -@/bin/chmod $(PERM) $@ 140 141%/.stamp: 142 mkdir -p $(@D) 143 @/bin/chmod $(DIRPERM) $(@D) 144 @touch $@; /bin/chmod $(PERM) $@ 145 146$(DESTDIR)/$(ARCH)/%.$(OBJ_SUFFIX): $(ARCH)/%.$(OBJ_SUFFIX) $(PREFIX)/lib/$(ARCH)/.stamp 147 /bin/cp $< $@ 148 -@/bin/chmod $(PERM) $@ 149 150$(DESTDIR)/%.ecl: %.ecl $(DESTDIR)/.stamp 151 /bin/cp $< $@ 152 @/bin/chmod $(PERM) $@ 153 154$(DESTDIR)/%.eci: %.ecl %_comments.ecl $(PREFIX)/lib/.stamp 155 $(ECLIPSE) -e 'get_flag(library_path,P),set_flag(library_path,["."|P]),lib(document),icompile("$(*F)","$(@D)")' 156 -@/bin/chmod $(PERM) $@ 157 158clean: archclean 159 160archclean: 161 rm -rf $(ARCH) 162 163#--------------------------------------------------------------------------- 164# Rules for building Gecode 165#--------------------------------------------------------------------------- 166 167GECODE_VERSION=@GECODE_VERSION@ 168GECODE_SVN_PASSWD=eclipse@cisco.com 169THIRDPARTY_GECODE_DEST=$(THIRDPARTY)/gecode-$(GECODE_VERSION)/$(ARCH) 170GECODEDIR=Gecode$(GECODE_VERSION) 171 172ifeq ($(ARCH),x86_64_linux) 173 174ADD_GECODE_CONFIG_FLAGS=--disable-gcc-visibility 175CONFIG_PREFIX= 176 177else 178 ifeq ($(ARCH),sparc_sunos5) 179 180ADD_GECODE_CONFIG_FLAGS=--with-host-os=linux --disable-examples 181CONFIG_PREFIX= 182 183 else 184 ifeq ($(OSCLASS),win) 185 186# assuming we are cross-compiling on 32 bit x86 Linux (i586-pc-linux) 187ADD_GECODE_CONFIG_FLAGS=--build=i586-pc-linux 188CONFIG_PREFIX=CONFIG_SITE=../../../config.$(ARCH) 189 190 else 191 192ADD_GECODE_CONFIG_FLAGS= 193CONFIG_PREFIX= 194 195 endif 196 endif 197endif 198 199 200install_gecode: gecode 201 202gecode: $(GECODEDIR)/$(ARCH)/Makefile 203 ( cd $(GECODEDIR)/$(ARCH) ; make ; make install ) 204 205$(GECODEDIR)/$(ARCH)/Makefile: $(GECODEDIR)/configure 206 mkdir -p $(GECODEDIR)/$(ARCH) 207 (cd $(GECODEDIR)/$(ARCH) ; $(CONFIG_PREFIX) ../configure CFLAGS="$(CLFAGS)" CXXFLAGS="$(CFLAGS)" --host=@host@ --enable-static --disable-mpfr --disable-float-vars $(ADD_GECODE_CONFIG_FLAGS) --prefix=$(THIRDPARTY_GECODE_DEST)) 208 209$(GECODEDIR)/configure: 210 svn --username anonymous --password $(GECODE_SVN_PASSWD) co https://svn.gecode.org/svn/gecode/tags/release-$(GECODE_VERSION) $(GECODEDIR) 211 212