1#!amake 2# 3# Makefile to compile sswf (Script to SWF) with amake 4# Written by Alexis Wilke for Made to Order Software Corp (c) 2002-2009 5# 6# Copyright (c) 2002-2009 Made to Order Software Corp. 7# 8# Permission is hereby granted, free of charge, to any 9# person obtaining a copy of this software and 10# associated documentation files (the "Software"), to 11# deal in the Software without restriction, including 12# without limitation the rights to use, copy, modify, 13# merge, publish, distribute, sublicense, and/or sell 14# copies of the Software, and to permit persons to whom 15# the Software is furnished to do so, subject to the 16# following conditions: 17# 18# The above copyright notice and this permission notice 19# shall be included in all copies or substantial 20# portions of the Software. 21# 22# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF 23# ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT 24# LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 25# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO 26# EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 27# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 28# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 29# ARISING FROM, OUT OF OR IN CONNECTION WITH THE 30# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 31# SOFTWARE. 32# 33 34# Get the version from the libsswf-version.h file instead (we thus avoid 35# data duplication) 36#VERSION=x.y.z 37# The following ensures we can extract the version, it's not 100% 38# correct since if a 2nd number with the same form appears in the 39# version file then it will be returned too 40LIBSSWF_VERSION<=include/sswf/libsswf-version.h 41VERSION:=$(LIBSSWF_VERSION::[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*) 42 43 44# Let's ensure that all the necessary directories 45# exist from the start; this makes amake happier; 46# in MS-Windows 2000 you can test if a file exists 47# I'm not sure that's valid under older versions 48#for p in bin lib VC \ 49 tmp\backup\src\tools tmp\object\src\tools \ 50 tmp\backup\src\sswf tmp\object\src\sswf \ 51 tmp\backup\src\lib tmp\object\src\lib \ 52 tmp\backup\src\libas tmp\object\src\libas \ 53 tmp\backup\src\libasas tmp\object\src\libasas \ 54 tmp\backup\src\libasc tmp\object\src\libasc 55#shell if not exist $p mkdir $p 56#endfor 57 58CINCLUDEPATH:=include;src/sswf 59CSUFFIXES:=.c .c++ .cpp .cxx .h .h++ .hpp .s .S .l .y 60 61# By default, build the release now a days 62# Use export DEBUG=1 and export YYDEBUG=1 or specify these on the command 63# line (amake DEBUG=1 YYDEBUG=1) 64DEBUG?=0 65YYDEBUG?=0 66 67CC:=gcc 68CXX:=g++ 69LD:=ld 70#if $(DEBUG) == 1 71CFLAGS:=-g -ggdb3 -Wall -Werror -DDEBUG=$(DEBUG) -DYYDEBUG=$(YYDEBUG) -Iinclude -I/AllDev/MinGW/3.3/include/freetype2 72#else 73CFLAGS:=-O2 -Wall -Werror -DDEBUG=$(DEBUG) -DYYDEBUG=$(YYDEBUG) -Iinclude -I/AllDev/MinGW/3.3/include/freetype2 74#endif 75CXXFLAGS:=$(CFLAGS) 76COPY:=cp -f 77RENAME:=rename 78RM:=rm -r 79RMDIR:=rmdir /s /q 80MKDIR:=mkdir 81AR:=ar 82YFLAGS:=-t # enable -t for debug 83BISON:=bison 84 85LIBSRC:=$(wildcard src\lib\libsswf_*.c++) 86LIBASSRC:=$(wildcard src\libas\*.c++) 87LIBASASSRC:=$(wildcard src\libasas\*.c++) 88LIBASCSRC:=$(wildcard src\libasc\*.c++) # when compiling on Win32 we have the asc_strings.c++ 89RAWSSWFSRC:=$(wildcard src\sswf\*.[cy]*) 90SSWFSRC:=$(RAWSSWFSRC:-*~) # no backup (some people will use ~ at the end of filenames) 91TOOLSSRC:=$(wildcard src\tools\*.c*) 92MISCSRC:=$(wildcard src\misc\*.c) 93 94 95LIBOBJ:=$(LIBSRC:*.c++=tmp\\object\\*.o:U) 96LIBASOBJ:=$(LIBASSRC:*.c++=tmp\\object\\*.o:U) 97LIBASASOBJ:=$(LIBASASSRC:*.c++=tmp\\object\\*.o:U) 98LIBASCOBJ:=$(LIBASCSRC:*.c++=tmp\\object\\*.o:U) 99SSWFOBJ:=$(SSWFSRC:*.*=tmp\\object\\*.o:U) 100TOOLSOBJ:=$(TOOLSSRC:*.*=tmp\\object\\*.o:U) 101MISCOBJ:=$(MISCSRC:*.*=tmp\\object\\*.o:U) 102 103SAMPLES:=new-anim dyn-button scroller web-site-anim 104 105 106 107EXE:=bin\\swf_dump.exe bin\\sswf.exe bin\\ft2sswf.exe bin\\asc.exe \ 108 bin\\jpg2swf.exe 109all: $(EXE) $(EXE:*.exe=*-static.exe) bin\sswf-internal.exe lib\libsswf.a \ 110 lib\libsswf_as.a lib\libsswf_asas.a lib\libsswf_asc.a .PHONY 111 @echo "Done!" 112 113 114bin\\swf_dump.exe: $(.TARGET:bin\\*.exe=tmp\\object\\src\\tools\\*.o) 115 $(CC) $(CFLAGS) -o $(.TARGET) $(.FIRSTSRC) -lz 116 117bin\\swf_dump-static.exe: $(.TARGET:bin\\*-static.exe=tmp\\object\\src\\tools\\*.o) 118 $(CC) -static $(CFLAGS) -o $(.TARGET) $(.FIRSTSRC) -lz 119 120 121bin\\ft2sswf.exe: $(.TARGET:bin\\*.exe=tmp\\object\\src\\tools\\*.o) 122 $(CC) $(CFLAGS) -o $(.TARGET) $(.FIRSTSRC) -lfreetype 123 124bin\\ft2sswf-static.exe: $(.TARGET:bin\\*-static.exe=tmp\\object\\src\\tools\\*.o) 125 $(CC) -static $(CFLAGS) -o $(.TARGET) $(.FIRSTSRC) -lfreetype -lz -lgw32c 126 127 128bin\\asc.exe: $(.TARGET:bin\\*.exe=tmp\\object\\src\\tools\\*.o) lib\\libsswf_as.a 129 $(CXX) $(CFLAGS) -o $(.TARGET) $(.FIRSTSRC) lib/libsswf_as.a 130 131bin\\asc-static.exe: $(.TARGET:bin\\*.exe=tmp\\object\\src\\tools\\*.o) lib\\libsswf_as-static.a 132 $(CXX) -static $(CFLAGS) -o $(.TARGET) $(.FIRSTSRC) lib/libsswf_as-static.a 133 134 135bin\\jpg2swf.exe: $(.TARGET:bin\\*.exe=tmp\\object\\src\\tools\\*.o) lib\\libsswf.a 136 $(CXX) $(CFLAGS) -o $(.TARGET) $(.FIRSTSRC) lib/libsswf.a -lm -lz -ljpeg -liconv 137 138bin\\jpg2swf-static.exe: $(.TARGET:bin\\*.exe=tmp\\object\\src\\tools\\*.o) lib\\libsswf-static.a 139 $(CXX) -static $(CFLAGS) -o $(.TARGET) $(.FIRSTSRC) lib/libsswf-static.a -lm -lz -ljpeg -liconv 140 141 142bin\\sswf.exe: $(.TARGET:bin\\*.exe=tmp\\object\\src\\sswf\\*.o) $(SSWFOBJ) lib\\libsswf.a lib\\libsswf_as.a lib\\libsswf_asas.a 143 $(CXX) $(CFLAGS) -o $(.TARGET) $(SSWFOBJ) lib/libsswf.a lib/libsswf_asas.a lib/libsswf_as.a -lm -lz -ljpeg -liconv 144 145bin\\sswf-static.exe: $(.TARGET:bin\\*.exe=tmp\\object\\src\\sswf\\*.o) $(SSWFOBJ:*.o=*-static.o) lib\\libsswf-static.a lib\\libsswf_as-static.a lib\\libsswf_asas-static.a 146 $(CXX) -static $(CFLAGS) -o $(.TARGET) $(SSWFOBJ:*.o=*-static.o) lib/libsswf-static.a lib/libsswf_asas-static.a lib/libsswf_as-static.a -lm -lz -ljpeg -liconv 147 148bin\\sswf-internal.exe: $(.TARGET:bin\\*.exe=tmp\\object\\src\\sswf\\*.o) $(SSWFOBJ:*.o=*-internal.o) lib\\libsswf-static.a lib\\libsswf_as-static.a lib\\libsswf_asas-static.a lib\\libsswf_asc-static.a 149 $(CXX) -static $(CFLAGS) -o $(.TARGET) $(SSWFOBJ:*.o=*-internal.o) lib/libsswf-static.a lib/libsswf_asas-static.a lib/libsswf_as-static.a lib/libsswf_asc-static.a -lm -lz -ljpeg -liconv 150 151 152 153 154 155 156lib\\libsswf.a: $(LIBOBJ) 157 $(AR) cr $(.TARGET) $(LIBOBJ) 158 159lib\\libsswf-static.a: $(LIBOBJ:*.o=*-static.o) 160 $(AR) cr $(.TARGET) $(LIBOBJ:*.o=*-static.o) 161 162 163lib\\libsswf_as.a: $(LIBASOBJ) 164 $(AR) cr $(.TARGET) $(LIBASOBJ) 165 166lib\\libsswf_as-static.a: $(LIBASOBJ:*.o=*-static.o) 167 $(AR) cr $(.TARGET) $(LIBASOBJ:*.o=*-static.o) 168 169 170lib\\libsswf_asas.a: $(LIBASASOBJ) 171 $(AR) cr $(.TARGET) $(LIBASASOBJ) 172 173lib\\libsswf_asas-static.a: $(LIBASASOBJ:*.o=*-static.o) 174 $(AR) cr $(.TARGET) $(LIBASASOBJ:*.o=*-static.o) 175 176 177lib\\libsswf_asc.a: $(LIBASCOBJ) 178 $(AR) cr $(.TARGET) $(LIBASCOBJ) 179 180lib\\libsswf_asc-static.a: $(LIBASCOBJ:*.o=*-static.o) 181 $(AR) cr $(.TARGET) $(LIBASCOBJ:*.o=*-static.o) 182 183 184 185 186ALLSRC:=$(LIBSRC) $(LIBASSRC) $(LIBASASSRC) $(LIBASCSRC) $(SSWFSRC) $(TOOLSSRC) $(MISCSRC) 187ALLCXXOBJ:=$(ALLSRC::*.c++=tmp\\object\\*.o) $(ALLSRC::*.c++=tmp\\object\\*-static.o) 188ALLCOBJ:=$(ALLSRC::*.c=tmp\\object\\*.o) $(ALLSRC::*.c=tmp\\object\\*-static.o) 189ALLYACCOBJ:=$(ALLSRC::*.y=tmp\\object\\*.o) 190ALLLEXOBJ:=$(ALLSRC::*.l=tmp\\object\\*.o) 191 192INTERNALCXXOBJ:=$(SSWFSRC::*.c++=tmp\\object\\*-internal.o) 193INTERNALCOBJ:=$(SSWFSRC::*.c=tmp\\object\\*-internal.o) 194 195 196$(ALLCXXOBJ): $(.TARGET:*-static.o=*.o:tmp\\object\\*.o=*.c++:I:src\\sswf\\sswf_grammar.h=tmp\\object\\src\\sswf\\sswf_grammar.h) 197 $(CXX) -c $(CXXFLAGS) $(.TARGET::*-static.o=>-DSTATIC_ICONV:U) -I$(.TARGET:tmp\\object\\*\\*\\*.o=tmp\\object\\*\\*) -o $(.TARGET) $(.FIRSTSRC) 198 @$(COPY) "$(.FIRSTSRC)" "tmp\\backup\\$(.FIRSTSRC)" 199 200$(ALLCOBJ): $(.TARGET:*-static.o=*.o:tmp\\object\\*.o=*.c:I) 201 $(CC) -c $(CFLAGS) $(.TARGET::*-static.o=>-DSTATIC_ICONV:U) -o $(.TARGET) $(.FIRSTSRC) 202 @$(COPY) "$(.FIRSTSRC)" "tmp\\backup\\$(.FIRSTSRC)" 203 204$(INTERNALCXXOBJ): $(.TARGET:*-internal.o=*.o:tmp\\object\\*.o=*.c++:I:src\\sswf\\sswf_grammar.h=tmp\\object\\src\\sswf\\sswf_grammar.h) 205 $(CXX) -c $(CXXFLAGS) -DSSWF_INTERNAL_ASC=1 $(.TARGET::*-internal.o=>-DSTATIC_ICONV:U) -I$(.TARGET:tmp\\object\\*\\*\\*.o=tmp\\object\\*\\*) -o $(.TARGET) $(.FIRSTSRC) 206 @$(COPY) "$(.FIRSTSRC)" "tmp\\backup\\$(.FIRSTSRC)" 207 208$(INTERNALCOBJ): $(.TARGET:*-internal.o=*.o:tmp\\object\\*.o=*.c:I) 209 $(CC) -c $(CFLAGS) -DSSWF_INTERNAL_ASC=1 $(.TARGET::*-internal.o=>-DSTATIC_ICONV:U) -o $(.TARGET) $(.FIRSTSRC) 210 @$(COPY) "$(.FIRSTSRC)" "tmp\\backup\\$(.FIRSTSRC)" 211 212 213 214 215 216 217tmp/object/src/sswf/%.o: tmp/object/src/sswf/%.c 218 $(CC) -c $(CFLAGS) -Isrc/sswf -o $(.TARGET) $(.IMPSRC) 219 220tmp/object/src/sswf/%-static.o: tmp/object/src/sswf/%.c 221 $(CC) -c $(CFLAGS) -DSTATIC_ICONV -Isrc/sswf -o $(.TARGET) $(.IMPSRC) 222 223tmp/object/src/sswf/%-internal.o: tmp/object/src/sswf/%.c 224 $(CC) -c $(CFLAGS) -DSSWF_INTERNAL_ASC=1 -DSTATIC_ICONV -Isrc/sswf -o $(.TARGET) $(.IMPSRC) 225 226tmp/object/src/sswf/%.c tmp/object/src/sswf/%.h: src/sswf/%.y $(.TARGET:tmp/object/*.c=*.y:-I) .PRECIOUS 227 $(BISON) -v -d $(YFLAGS) -b $(.TARGET:R) $(.IMPSRC) -o $(.TARGET:*.h=*.c) 228 @$(COPY) "$(.IMPSRC)" "tmp\\backup\\$(.IMPSRC)" 229 230 231#for sample in $(SAMPLES) 232$(sample): sswf.exe 233 cd samples\$(sample) & run 234#endfor 235 236samples: $(SAMPLES) 237 @echo Samples built successfully 238 239 240TOPACK_BIN:=bin\asc.exe bin\ft2sswf.exe bin\jpg2swf.exe bin\sswf.exe bin\swf_dump.exe 241TOPACK_LIB:=lib\libsswf.a lib\libsswf_as.a lib\libsswf_asas.a lib\libsswf_asc.a \ 242 include\sswf\libsswf.h include\sswf\libsswf_c.h \ 243 include\sswf\libsswf_as.h include\sswf\libsswf_asas.h include\sswf\libsswf_asc.h \ 244 include\sswf\libsswf-version.h include\sswf\libsswf-config.h 245TOPACK_GRM:=VC\sswf_grammar.h VC\sswf_grammar.c 246TOPACK_ASIS:=VC\sswf_grammar.h VC\sswf_grammar.c $(SAMPLES:*=samples/*/run.bat) 247 248INCLUDES:=$(wildcard */*/*.h) 249TOPACK_SRC:=$(ALLSRC) $(INCLUDES) \ 250 misc\sswf.vim misc\xswf.vim doc\CHANGES.txt dosamakefile 251 252MOD_PATH:=modules 253 254DST:=arch 255DST_DLL:=$(DST)\\mingw 256DST_STATIC:=$(DST)\\win32 257DST_SRC:=$(DST)\\mingw-3.3 258 259new_grammar: tmp\object\src\sswf\sswf_grammar.h tmp\object\src\sswf\sswf_grammar.c .PHONY 260 $(COPY) tmp\object\src\sswf\sswf_grammar.h VC\sswf_grammar.h 261 $(COPY) tmp\object\src\sswf\sswf_grammar.c VC\sswf_grammar.c 262 263 264tar packages: new_grammar $(TOPACK_BIN) $(TOPACK_BIN:*.exe=*-static.exe) bin\sswf-internal.exe \ 265 $(TOPACK_LIB) $(TOPACK_LIB::*.a=*-static.a) .PHONY 266 -$(RMDIR) $(DST) 2>ignore.tmp 267 -$(RMDIR) $(MOD_PATH) 2>ignore.tmp 268 $(MKDIR) $(MOD_PATH) 269 REM 270 REM Create the archive with the dynamically compiled binaries (need .dll) 271 REM 272 $(MKDIR) $(DST_DLL)\bin 273 $(MKDIR) $(DST_DLL)\lib 274 $(MKDIR) $(DST_DLL)\include\sswf 275 strip $(TOPACK_BIN) 276 $(subst ",,$(TOPACK_BIN:*.exe=$(COPY) *.exe $(DST_DLL)\\[1]*.exe &)) 277 $(subst ",,$(TOPACK_LIB:*.*=$(COPY) *.* $(DST_DLL)\\[1]*.* &)) 278 tar cf tmp.tar $(DST_DLL:*\\\\*=*/*) 279 bzip2 -c9 tmp.tar >$(MOD_PATH)\$(DST_DLL:arch\\*=*)-$(VERSION)-bin.tar.bz2 280 REM 281 REM Create the archive with the static compiled binaries (don't need the .dll's) 282 REM 283 $(MKDIR) $(DST_STATIC)\bin 284 $(MKDIR) $(DST_STATIC)\lib 285 $(MKDIR) $(DST_STATIC)\installer 286 $(MKDIR) $(DST_STATIC)\include\sswf 287 $(MKDIR) $(DST_STATIC)\VC 288 strip $(TOPACK_BIN:*.exe=*-static.exe) 289 $(subst ",,$(TOPACK_BIN:*.exe=$(COPY) *-static.exe $(DST_STATIC)\\[1]*.exe &)) 290 $(COPY) bin\sswf-internal.exe arch\win32\bin\sswf-internal.exe 291 $(subst ",,$(TOPACK_LIB:*.a=*-static.a:*.*=$(COPY) *.* $(DST_STATIC)\\[1]*.* &)) 292 $(subst ",,$(TOPACK_GRM:*.*=$(COPY) *.* $(DST_STATIC)\\[1]*.* &)) 293 makensis sswf-win32.nsi 294 mv sswf-$(VERSION)-win32-i686.exe $(DST_STATIC)/installer 295 tar cf tmp.tar $(DST_STATIC:*\\\\*=*/*) 296 bzip2 -c9 tmp.tar >$(MOD_PATH)\$(DST_STATIC:arch\\*=*)-$(VERSION)-bin.tar.bz2 297 REM 298 REM Create an archive with the source so we get the changes if any 299 REM 300 $(MKDIR) $(DST_SRC)\src\lib 301 $(MKDIR) $(DST_SRC)\src\libas 302 $(MKDIR) $(DST_SRC)\src\libasas 303 $(MKDIR) $(DST_SRC)\src\libasc 304 $(MKDIR) $(DST_SRC)\src\misc 305 $(MKDIR) $(DST_SRC)\src\sswf 306 $(MKDIR) $(DST_SRC)\src\tools 307 $(MKDIR) $(DST_SRC)\include\sswf 308 $(MKDIR) $(DST_SRC)\doc 309 $(MKDIR) $(DST_SRC)\misc 310 $(subst ",,$(TOPACK_SRC:*=$(COPY) * $(DST_SRC)\\[1]* &)) 311 tar cf tmp.tar $(DST_SRC:*\\\\*=*/*) $(TOPACK_ASIS:*\\*\\*=*/*/*) 312 bzip2 -c9 tmp.tar >$(MOD_PATH)\$(DST_SRC:arch\\*=*)_sswf-$(VERSION)-src.tar.bz2 313 REM 314 REM Cleanup 315 REM 316 -$(RMDIR) $(DST) 317 -$(RM) tmp.tar 318 319LFWGE=$(wildcard *.c++) 320to_vc: 321 $(subst ",,$(LFWGE:*.c++=$(RENAME) *.c++ [1]*.cpp &)) 322 323LFWBE=$(wildcard *.cpp) 324to_gcc: 325 $(subst ",,$(LFWBE:*.cpp=$(RENAME) *.cpp [1]*.c++ &) 326 327 328 329clobber: rmtarget .PHONY 330 -$(RMDIR) tmp 2>ignore.tmp 331 -$(RM) .amakeautodepend 332 @echo "Output packages not removed with amake clobber" 333 334clean cleaup: rmtarget .PHONY 335 -$(RMDIR) tmp/object 2>ignore.tmp 336 337rmtarget: .PHONY 338 -$(RMDIR) lib bin 2>ignore.tmp 339 -$(RM) core 2>ignore.tmp 340 341 342