freetype
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [ft] Compiling freetype 2.3.9 with bcc fails


From: suzuki toshiya
Subject: Re: [ft] Compiling freetype 2.3.9 with bcc fails
Date: Tue, 14 Jul 2009 14:24:36 +0900
User-agent: Thunderbird 2.0.0.6 (Windows/20070728)

Oops,

I slipped to attach the screenshot that
apinames.exe built by bcc32 is crashed.

address@hidden wrote (2009/07/14 14:21):
Hi,

Just I've installed MinGW 5.1.4 and Borland C++ 5.5
onto my Windows PC and reproduced that the building
process of FT2 does not finish. I thank Mirco.

I could compile apinames.exe with bcc32 by single
command, aslike:

        bcc32 -oobjs\apinames.exe src\tools\apinames.c

But running apinames.exe makes mingw32-make.exe crashed.
If I execute apinames.exe directly from MS-DOS command
line, I got attached dialog (sorry for Japanese message),
the process is crashed.

I will check why apinames.exe built by bcc32 is crashed
(nothing to say, "Hello World" built by bcc32 works correctly), but the quickest fix would be setting CCraw
 to gcc. If I couldn't provide a fix making apinames.exe
built by bcc32 work correctly, I will modify bcc.mk
setting CCraw to gcc.

Regards,
mpsuzuki

On Tue, 14 Jul 2009 01:51:30 +0900
address@hidden wrote:

Hi,

I overlooked a possibility that your modification of
Makefile caused the failure to generate objs/freetype.def.

You wrote:
I commented out the build APINAMES.EXE in export.mk to see if the library is
build fine.
I guess you removed (or commented out) a line defining
apinames.exe

 APINAMES_EXE := $(OBJ_DIR)/apinames$(E_BUILD)

instead of the line building apinames.exe

 $(APINAMES_EXE): $(APINAMES_SRC)
         $(CCexe) $(CCexe_CFLAGS) $(CCexe_LDFLAGS) $(TE)$@ $<

If my guessing is right, you cleared APINAMES_EXE by
yourself and caused endless loop. If you place
apinames.exe at right place, the latter target
is automatically skipped. You don't have to remove
the line.

If you read exports.mk carefully:

 APINAMES_SRC := $(TOP_DIR)/src/tools/apinames.c
 APINAMES_EXE := $(OBJ_DIR)/apinames$(E_BUILD)

 $(APINAMES_EXE): $(APINAMES_SRC)
         $(CCexe) $(CCexe_CFLAGS) $(CCexe_LDFLAGS) $(TE)$@ $<

 .PHONY: symbols_list

 symbols_list: $(EXPORTS_LIST)

 # We manually add TT_New_Context and TT_RunIns, which are needed by TT
 # debuggers, to the EXPORTS_LIST.
 #
 $(EXPORTS_LIST): $(APINAMES_EXE) $(PUBLIC_HEADERS)
         $(subst /,$(SEP),$(APINAMES_EXE)) -o$@ $(APINAMES_OPTIONS) 
$(PUBLIC_HEADERS)
         @echo TT_New_Context >> $(EXPORTS_LIST)
         @echo TT_RunIns >> $(EXPORTS_LIST)

 $(PROJECT_LIBRARY): $(EXPORTS_LIST)

you will find following dependency chain.

A. libfreetype (referred by $(PROJECT_LIBRARY)) requires $(EXPORTS_LIST)
B. $(EXPORTS_LIST) requires $(APINAMES_EXE) and $(PUBLIC_HEADERS)
C. $(APINAMES_EXE) requires $(APINAMES_SRC)

So clearing APINAMES_EXE or simply-skipping APINAMES_EXE
target is bad idea. It breaks the chain of dependency.

On Mon, 13 Jul 2009 10:44:43 +0200
Mirco Babin <address@hidden> wrote:

Hi,

I think I made an error during the testing. Now the -L switch does not work
when I'm testing with the command prompt. I think I had an apinames.obj in
the basedirectory. I'm sorry about the -L switch, it was a waste of time.

But the following sequence does work (first compile to the OBJ, then link):
bcc32 -c -oobjs\apinames.obj src/tools/apinames.c
bcc32 -oobjs/apinames.exe objs/apinames.obj
I commented out the build APINAMES.EXE in export.mk to see if the library is
build fine. It does not, in the end I get:

bcc32 -A  -I.\objs -I.\builds\win32 -I.\include -c -q -y -d -v -Od -w-par
-w-ccc -w-rch -w-pro -w-aus -DFT2_BUILD_LIBRARY
-DFT_CONFIG_MODULES_H="<ftmodule.h>"  -I.\src\psnames -oobjs\psnames.obj
.\src\psnames\psmodule.c
.\src\psnames\psmodule.c:
oobjs/freetype.def -dfreetype.dll -wB ./include/freetype/freetype.h
./include/freetype/ftadvanc.h ./include/freetype/ftbbox.h
./include/freetype/ftbdf.h ./include/freetype/ftbitmap.h
./include/freetype/ftcache.h ./include/freetype/ftchapters.h
./include/freetype/ftcid.h ./include/freetype/fterrdef.h
./include/freetype/fterrors.h ./include/freetype/ftgasp.h
./include/freetype/ftglyph.h ./include/freetype/ftgxval.h
./include/freetype/ftgzip.h ./include/freetype/ftimage.h
./include/freetype/ftincrem.h ./include/freetype/ftlcdfil.h
./include/freetype/ftlist.h ./include/freetype/ftlzw.h
./include/freetype/ftmac.h ./include/freetype/ftmm.h
./include/freetype/ftmodapi.h ./include/freetype/ftmoderr.h
./include/freetype/ftotval.h ./include/freetype/ftoutln.h
./include/freetype/ftpfr.h ./include/freetype/ftrender.h
./include/freetype/ftsizes.h ./include/freetype/ftsnames.h
./include/freetype/ftstroke.h ./include/freetype/ftsynth.h
./include/freetype/ftsystem.h ./include/freetype/fttrigon.h
./include/freetype/fttypes.h ./include/freetype/ftwinfnt.h
./include/freetype/ftxf86.h ./include/freetype/t1tables.h
./include/freetype/ttnameid.h ./include/freetype/tttables.h
./include/freetype/tttags.h ./include/freetype/ttunpat.h
process_begin: CreateProcess(NULL, oobjs/freetype.def -dfreetype.dll -wB
./include/freetype/freetype.h ./include/freetype/ftadvanc.h
./include/freetype/ftbbox.h ./include/freetype/ftbdf.h
./include/freetype/ftbitmap.h ./include/freetype/ftcache.h
./include/freetype/ftchapters.h ./include/freetype/ftcid.h
./include/freetype/fterrdef.h ./include/freetype/fterrors.h
./include/freetype/ftgasp.h ./include/freetype/ftglyph.h
./include/freetype/ftgxval.h ./include/freetype/ftgzip.h
./include/freetype/ftimage.h ./include/freetype/ftincrem.h
./include/freetype/ftlcdfil.h ./include/freetype/ftlist.h
./include/freetype/ftlzw.h ./include/freetype/ftmac.h
./include/freetype/ftmm.h ./include/freetype/ftmodapi.h
./include/freetype/ftmoderr.h ./include/freetype/ftotval.h
./include/freetype/ftoutln.h ./include/freetype/ftpfr.h
./include/freetype/ftrender.h ./include/freetype/ftsizes.h
./include/freetype/ftsnames.h ./include/freetype/ftstroke.h
./include/freetype/ftsynth.h ./include/freetype/ftsystem.h
./include/freetype/fttrigon.h ./include/freetype/fttypes.h
./include/freetype/ftwinfnt.h ./include/freetype/ftxf86.h
./include/freetype/t1tables.h ./include/freetype/ttnameid.h
./include/freetype/tttables.h ./include/freetype/tttags.h
./include/freetype/ttunpat.h, ...) failed.
make (e=2): Het systeem kan het opgegeven bestand niet vinden.
mingw32-make.exe: [objs/freetype.def] Error 2 (ignored)
del .\objs\freetype.lib 2> nul
tlib /u objs\freetype.lib +.\objs\ftsystem.obj +.\objs\ftdebug.obj
+.\objs\ftinit.obj +.\objs\ftbase.obj +.\objs\ftbbox.obj +.\objs\ftbdf.obj
+.\objs\ftbitmap.obj +.\objs\ftcid.obj +.\objs\ftfstype.obj
+.\objs\ftgasp.obj +.\objs\ftglyph.obj +.\objs\ftgxval.obj
+.\objs\ftlcdfil.obj +.\objs\ftmm.obj +.\objs\ftotval.obj
+.\objs\ftpatent.obj +.\objs\ftpfr.obj +.\objs\ftstroke.obj
+.\objs\ftsynth.obj +.\objs\fttype1.obj +.\objs\ftwinfnt.obj
+.\objs\ftxf86.obj +.\objs\truetype.obj +.\objs\type1.obj +.\objs\cff.obj
+.\objs\type1cid.obj +.\objs\pfr.obj +.\objs\type42.obj +.\objs\winfnt.obj
+.\objs\pcf.obj +.\objs\bdf.obj +.\objs\sfnt.obj +.\objs\autofit.obj
+.\objs\pshinter.obj +.\objs\raster.obj +.\objs\smooth.obj
+.\objs\ftcache.obj +.\objs\ftgzip.obj +.\objs\ftlzw.obj +.\objs\psaux.obj
+.\objs\psnames.obj
TLIB 5.1 Copyright (c) 1987-2007 CodeGear
Warning: invalid page size value ignored
Warning: invalid page size value ignored

The "Warning: invalid page size value ignored" is repeated infinitly. I had
to abort the compile with CTRL-C.

Regards,
Mirco


2009/7/13 <address@hidden>

Hi,

Considering the fact that "-L./objs" does not work,
I guess bcc32 cannot recognize "/" as valid pathname
separator. If my guessing is right, the expected
might be:

       bcc32 -Lobjs -oobjs\apinames.exe src\tools\apinames.c

You've ever written that you tried

       bcc32 -Lobjs -oobjs/apinames.exe src/tools/apinames.c

and it successfully finihsed - the pathname separator
in your experiment was really "/", not "\"?

Regards,
mpsuzuki


On Mon, 13 Jul 2009 08:50:59 +0200
 Mirco Babin <address@hidden> wrote:

Hi,

Update, I manually changed the bcc.mk to CCexe_LDFLAGS := -Lobjs
It still results in the same error. I don't get it, it seems like the
current directory is changed ?

bcc32 -A  -I.\objs -I.\builds\win32 -I.\include -c -q -y -d -v -Od -w-par
-w-ccc -w-rch -w-pro -w-aus -DFT2_BUILD_LIBRARY
-DFT_CONFIG_MODULES_H="<ftmodule.h>"  -I.\src\psnames -oobjs\psnames.obj
.\src\psnames\psmodule.c
.\src\psnames\psmodule.c:
bcc32  -Lobjs -oobjs/apinames.exe src/tools/apinames.c
CodeGear C++ 5.93 for Win32 Copyright (c) 1993, 2007 CodeGear
src/tools/apinames.c:
Turbo Incremental Link 5.81 Copyright (c) 1997-2008 CodeGear
Fatal: Unable to open file 'APINAMES.OBJ'
mingw32-make: *** [objs/apinames.exe] Error 1
Regards,
Mirco

2009/7/13 Mirco Babin <address@hidden>

Hi,

I applied your patch and compiled.
I see the -L now, but it still results in an error. I believe the
-L./objs
should be replaced with -Lobjs

 bcc32 -A  -I.\objs -I.\builds\win32 -I.\include -c -q -y -d -v -Od
-w-par
-w-ccc -w-rch -w-pro -w-aus -DFT2_BUILD_LIBRARY
-DFT_CONFIG_MODULES_H="<ftmodule.h>"  -I.\src\psnames -oobjs\psnames.obj
.\src\psnames\psmodule.c
.\src\psnames\psmodule.c:
bcc32  -L./objs -oobjs/apinames.exe src/tools/apinames.c
CodeGear C++ 5.93 for Win32 Copyright (c) 1993, 2007 CodeGear
src/tools/apinames.c:
Turbo Incremental Link 5.81 Copyright (c) 1997-2008 CodeGear
Fatal: Unable to open file 'APINAMES.OBJ'
mingw32-make: *** [objs/apinames.exe] Error 1

Regards,
Mirco

2009/7/10 <address@hidden>

Hi,
Could you try following patch? It fixes:

* declare the suffix ".exe" to be added to "apinames".
* prepare CCexe_CFLAGS & CCexe_LDFLAGS.
* put "-Lobj" to CCexe_LDFLAGS when we use bcc.

Regards,
mpsuzuki

diff --git a/builds/win32/win32-def.mk b/builds/win32/win32-def.mk
index a82b146..e6ae31c 100644
--- a/builds/win32/win32-def.mk
+++ b/builds/win32/win32-def.mk
@@ -22,6 +22,7 @@ PLATFORM  := win32
 # The executable file extension (for tools). NOTE: WE INCLUDE THE DOT
HERE !!
 #
 E := .exe
+E_BUILD := .exe


 # The directory where all library files are placed.


diff --git a/builds/exports.mk b/builds/exports.mk
index 5452b35..d84a4c2 100644
--- a/builds/exports.mk
+++ b/builds/exports.mk
@@ -51,7 +51,7 @@ ifneq ($(EXPORTS_LIST),)
  APINAMES_EXE := $(OBJ_DIR)/apinames$(E_BUILD)

  $(APINAMES_EXE): $(APINAMES_SRC)
-         $(CCexe) $(TE)$@ $<
+         $(CCexe) $(CCexe_CFLAGS) $(CCexe_LDFLAGS) $(TE)$@ $<

  .PHONY: symbols_list

diff --git a/builds/compiler/bcc.mk b/builds/compiler/bcc.mk
index 509cb72..c28359a 100644
--- a/builds/compiler/bcc.mk
+++ b/builds/compiler/bcc.mk
@@ -75,4 +75,8 @@ CLEAN_LIBRARY ?= $(DELETE) $(subst
/,$(SEP),$(PROJECT_LIBRARY))
 LINK_LIBRARY   = tlib /u $(subst /,$(COMPILER_SEP),$@
$(OBJECTS_LIST:%=+%))


+# apinames linking
+#
+CCexe_LDFLAGS := -L$(OBJ_DIR)
+
 # EOF




On Fri, 10 Jul 2009 15:44:56 +0200
Mirco Babin <address@hidden> wrote:

Hi,

The problem is that the linker can't find the OBJ file.
The current directory is .
The obj files are compiled into .\objs
>From the current directory a link is performed, but the .\objs
directory
is
not set as a path.

Indeed apinames.exe is just one obj.

I'm looking forward to your solution, thanks in advance !

Regards,
Mirco

2009/7/10 suzuki toshiya <address@hidden>

Hi,

Mirco Babin wrote (2009/07/10 21:53):
Well,

I tried the following and it does not produce errors:
bcc32 -Lobjs -oobjs/apinames.exe src/tools/apinames.c

The -L switch is to provide a library search path (where to find
OBJ
and
LIB
files).
Interesting. apinames.exe requires only apinames.c,
no need to link other libraries and objects, so
the requirement of "-Lobjs" is not easy to understand.
Maybe we have to care the single command executing
compilation and linking.

But I don't known what should be adjusted in the makefiles. They
are
really
complex.
OK, I will take a look. Please wait 24 hours.

Regards,
mpsuzuki

Regards,
Mirco
2009/7/10 suzuki toshiya <address@hidden>

Hi,

Mirco Babin wrote (2009/07/10 20:24):

bcc32 -oobjs/apinames src/tools/apinames.c
CodeGear C++ 5.93 for Win32 Copyright (c) 1993, 2007 CodeGear
src/tools/apinames.c:
Turbo Incremental Link 5.81 Copyright (c) 1997-2008 CodeGear
Fatal: Unable to open file 'APINAMES.OBJ'
mingw32-make: *** [objs/apinames] Error 1

I'm unfamiliar with bcc32 commandline syntax.
How we can build "Hello World"-like program
by bcc32? I think the author of the Makefile
assumed that "bcc32 -ohello hello.c" is OK.
Please let me know how to build hello world
by bcc32.

The command

bcc32 -oobjs/apinames.exe src/tools/apinames.c

can compile & link working executabe "apinames.exe"?

Regards,
mpsuzuki




_______________________________________________
Freetype mailing list
address@hidden
http://lists.nongnu.org/mailman/listinfo/freetype


_______________________________________________
Freetype mailing list
address@hidden
http://lists.nongnu.org/mailman/listinfo/freetype

PNG image


reply via email to

[Prev in Thread] Current Thread [Next in Thread]