]>
Commit | Line | Data |
---|---|---|
c90f71dd RD |
1 | # --------------------------------------------------------------- |
2 | # $Header$ | |
3 | # SWIG Perl5 Makefile | |
4 | # | |
5 | # This file can be used to build various Perl5 extensions with SWIG. | |
6 | # By default this file is set up for dynamic loading, but it can | |
7 | # be easily customized for static extensions by modifying various | |
8 | # portions of the file. | |
9 | # | |
10 | # SRCS = C source files | |
11 | # CXXSRCS = C++ source files | |
12 | # OBJCSRCS = Objective-C source files | |
13 | # OBJS = Additional .o files (compiled previously) | |
14 | # INTERFACE = SWIG interface file | |
15 | # TARGET = Name of target module or executable | |
16 | # | |
17 | # Many portions of this file were created by the SWIG configure | |
18 | # script and should already reflect your machine. | |
19 | #---------------------------------------------------------------- | |
20 | ||
21 | SRCS = | |
22 | CXXSRCS = | |
23 | OBJCSRCS = | |
24 | OBJS = | |
25 | INTERFACE = | |
26 | WRAPFILE = $(INTERFACE:.i=_wrap.c) | |
27 | WRAPOBJ = $(INTERFACE:.i=_wrap.o) | |
28 | TARGET = module@SO@ # Use this kind of target for dynamic loading | |
29 | #TARGET = myperl # Use this target for static linking | |
30 | ||
31 | prefix = @prefix@ | |
32 | exec_prefix = @exec_prefix@ | |
33 | ||
34 | CC = @CC@ | |
35 | CXX = @CXX@ | |
36 | OBJC = @CC@ -Wno-import # -Wno-import needed for gcc | |
37 | CFLAGS = | |
38 | INCLUDE = | |
39 | LIBS = | |
40 | ||
41 | # SWIG Options | |
42 | # SWIG = location of the SWIG executable | |
43 | # SWIGOPT = SWIG compiler options | |
44 | # SWIGCC = Compiler used to compile the wrapper file | |
45 | ||
46 | SWIG = $(exec_prefix)/bin/swig | |
47 | SWIGOPT = -perl5 | |
48 | SWIGCC = $(CC) | |
49 | ||
50 | # SWIG Library files. Uncomment this to staticly rebuild Perl | |
51 | #SWIGLIB = -static -lperlmain.i | |
52 | ||
53 | # Rules for creating .o files from source. | |
54 | ||
55 | COBJS = $(SRCS:.c=.o) | |
56 | CXXOBJS = $(CXXSRCS:.cxx=.o) | |
57 | OBJCOBJS = $(OBJCSRCS:.m=.o) | |
58 | ALLOBJS = $(COBJS) $(CXXOBJS) $(OBJCOBJS) $(OBJS) | |
59 | ||
60 | # Command that will be used to build the final extension. | |
61 | BUILD = $(SWIGCC) | |
62 | ||
63 | # Uncomment the following if you are using dynamic loading | |
64 | CCSHARED = @CCSHARED@ | |
65 | BUILD = @LDSHARED@ | |
66 | ||
67 | # Uncomment the following if you are using dynamic loading with C++ and | |
68 | # need to provide additional link libraries (this is not always required). | |
69 | ||
70 | #DLL_LIBS = -L/usr/local/lib/gcc-lib/sparc-sun-solaris2.5.1/2.7.2 \ | |
71 | -L/usr/local/lib -lg++ -lstdc++ -lgcc | |
72 | ||
73 | # X11 installation (possibly needed if using Perl-Tk) | |
74 | ||
75 | XLIB = @XLIBSW@ | |
76 | XINCLUDE = @XINCLUDES@ | |
77 | ||
78 | # Perl installation | |
79 | ||
80 | PERL_INCLUDE = -I@PERL5EXT@ | |
81 | PERL_LIB = -L@PERL5EXT@ -lperl | |
82 | PERL_FLAGS = -Dbool=char -Dexplicit= | |
83 | ||
84 | # Tcl installation. If using Tk you might need this | |
85 | ||
86 | TCL_INCLUDE = @TCLINCLUDE@ | |
87 | TCL_LIB = @TCLLIB@ | |
88 | ||
89 | # Build libraries (needed for static builds) | |
90 | ||
91 | LIBM = @LIBM@ | |
92 | LIBC = @LIBC@ | |
93 | SYSLIBS = $(LIBM) $(LIBC) @LIBS@ | |
94 | ||
95 | # Build options (uncomment only one these) | |
96 | ||
97 | #TK_LIB = $(TCL_LIB) -ltcl -ltk $(XLIB) | |
98 | BUILD_LIBS = $(LIBS) # Dynamic loading | |
99 | #BUILD_LIBS = $(PERL_LIB) $(TK_LIB) $(LIBS) $(SYSLIBS) # Static linking | |
100 | ||
101 | # Compilation rules for non-SWIG components | |
102 | ||
103 | .SUFFIXES: .c .cxx .m | |
104 | ||
105 | .c.o: | |
106 | $(CC) $(CCSHARED) $(CFLAGS) $(INCLUDE) -c $< | |
107 | ||
108 | .cxx.o: | |
109 | $(CXX) $(CCSHARED) $(CXXFLAGS) $(INCLUDE) -c $< | |
110 | ||
111 | .m.o: | |
112 | $(OBJC) $(CCSHARED) $(CFLAGS) $(INCLUDE) -c $< | |
113 | ||
114 | ||
115 | # ---------------------------------------------------------------------- | |
116 | # Rules for building the extension | |
117 | # ---------------------------------------------------------------------- | |
118 | ||
119 | all: $(TARGET) | |
120 | ||
121 | # Convert the wrapper file into an object file | |
122 | ||
123 | $(WRAPOBJ) : $(WRAPFILE) | |
124 | $(SWIGCC) -c $(CCSHARED) $(CFLAGS) $(INCLUDE) $(PERL_INCLUDE) $(PERL_FLAGS) $(WRAPFILE) | |
125 | ||
126 | $(WRAPFILE) : $(INTERFACE) | |
127 | $(SWIG) $(SWIGOPT) -o $(WRAPFILE) $(SWIGLIB) $(INTERFACE) | |
128 | ||
129 | $(TARGET): $(WRAPOBJ) $(ALLOBJS) | |
130 | $(BUILD) $(WRAPOBJ) $(ALLOBJS) $(BUILD_LIBS) -o $(TARGET) | |
131 | ||
132 | clean: | |
133 | rm -f $(COBJS) $(CXXOBJS) $(OBJCOBJS) $(WRAPOBJ) $(WRAPFILE) $(TARGET) | |
134 | ||
135 | ||
136 | ||
137 | ||
138 | ||
139 |