diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 224b76f9ab..b8eedc0b07 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,6 +16,49 @@ The license applies to all entries newer than 2009-04-28. */ +2010-07-30 21:16 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) + * include/hbextern.ch + * src/rdd/usrrdd/usrrdd.c + ! Fixed typo in function name: WRITEBHEADER() -> WRITEDBHEADER() + Eagle-eye spotted by Marcos Gambeta. + + * contrib/make.hbs + ! Fixed to include dependent .hbc files instead of referencing + own .hbc file in HB_BUILD_CONTRIB_DYN mode. It was not good + solution as it was referencing itself that way. + + Will now request dynamic version of dependencies when building + HB_BUILD_CONTRIB_DYN dynlibs. This is required otherwise f.e. + hbxbp lib will contain a static copy of hbqt libs, which is not + very good. + ! Fixed to not attempt to build dynamic version of referenced + projects in HB_BUILD_CONTRIB_DYN mode. + + * contrib/hbct/hbct.hbc + * contrib/hbqt/hbqt.hbc + * contrib/rddsql/rddsql.hbc + * contrib/hbtip/hbtipssl.hbc + * contrib/hbtip/hbtip.hbc + * contrib/hbwin/hbwin.hbc + * contrib/hbssl/hbssl.hbc + + Experimental move to support linking dynamic version of the + dependencies when building dynamic lib in HB_BUILD_CONTRIB_DYN + mode. This is starting to get insanely ugly (thanks Microsoft) + so I'll with it some more and probably leave it. + ; I hope I didn't miss any contribs which can also be a dependency + (probably I did) + + * contrib/pkglist + * contrib/hbtip/hbtip.hbp + * hbtipssl made a separate project instead of being a sub-project + of hbtip. hbtipssl has different dependencies, so this move + was needed for libdyn support. + + * INSTALL + * tdragon mingw marked as non-recommended. They due to + incompatible with previous release tool naming, our make + systems cannot currently support it. (it needs CCPOSTFIX + for windres tool when using the dwarf-2 installation) + 2010-07-30 20:20 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * src/rdd/usrrdd/rdds/arrayrdd.prg ! Fixed typo in function name: hb_setArryRdd() diff --git a/harbour/INSTALL b/harbour/INSTALL index c9c4d4ea64..01870cd770 100644 --- a/harbour/INSTALL +++ b/harbour/INSTALL @@ -1397,7 +1397,7 @@ HARBOUR MinGW/MinGW-64 [win, *nix, free, open-soource] http://www.mingw.org/, http://sourceforge.net/projects/mingw/ (official 32-bit, MSYS home) http://mingw-w64.sourceforge.net/, http://sourceforge.net/projects/mingw-w64/ (official 64-bit, MSYS home) - http://tdm-gcc.tdragon.net/, http://sourceforge.net/projects/tdm-gcc/ (unofficial) + http://tdm-gcc.tdragon.net/, http://sourceforge.net/projects/tdm-gcc/ (unofficial, not recommended for now) MinGW CEGCC [win, *nix, free, open-source] http://cegcc.sourceforge.net/ Cygwin [win, free, open-source] diff --git a/harbour/contrib/hbct/hbct.hbc b/harbour/contrib/hbct/hbct.hbc index d73afd134a..29bd564988 100644 --- a/harbour/contrib/hbct/hbct.hbc +++ b/harbour/contrib/hbct/hbct.hbc @@ -4,4 +4,4 @@ incpaths=. -libs=${hb_name} +libs=${hb_name}${__HB_DYN__} diff --git a/harbour/contrib/hbqt/hbqt.hbc b/harbour/contrib/hbqt/hbqt.hbc index 12e85402b4..914cda84d0 100644 --- a/harbour/contrib/hbqt/hbqt.hbc +++ b/harbour/contrib/hbqt/hbqt.hbc @@ -12,7 +12,7 @@ plugins=hbmk2_plugin_qt.hbs {allwin|os2}libpaths=${HB_WITH_QT}\..\lib -{!HB_STATIC_QT}libs=hbqt hbqtcore hbqtgui hbqtnetwork +{!HB_STATIC_QT}libs=hbqt${__HB_DYN__} hbqtcore${__HB_DYN__} hbqtgui${__HB_DYN__} hbqtnetwork${__HB_DYN__} {!HB_STATIC_QT&allwin}libs=QtCore4 QtGui4 QtNetwork4 QtUiTools {!HB_STATIC_QT&os2}libs=QtCore4 QtGui4 QtNet4 QtUiTools {!HB_STATIC_QT&linux}libs=QtCore QtGui QtNetwork QtUiTools @@ -20,7 +20,7 @@ plugins=hbmk2_plugin_qt.hbs {!HB_STATIC_QT&darwin}libs=/Library/Frameworks/QtGui.framework/QtGui {!HB_STATIC_QT&darwin}libs=/Library/Frameworks/QtNetwork.framework/QtNetwork {!HB_STATIC_QT&darwin}libs=QtUiTools -{HB_STATIC_QT&allwin}libs=hbqts hbqtcores hbqtguis hbqtnetworks +{HB_STATIC_QT&allwin}libs=hbqts${__HB_DYN__} hbqtcores${__HB_DYN__} hbqtguis${__HB_DYN__} hbqtnetworks${__HB_DYN__} {HB_STATIC_QT&linux}libs=hbqt hbqtcore hbqtgui hbqtnetwork {HB_STATIC_QT&(allwin|linux)}libs=QtCore QtGui QtNetwork QtUiTools {allgcc}libs=supc++ diff --git a/harbour/contrib/hbssl/hbssl.hbc b/harbour/contrib/hbssl/hbssl.hbc index d80a1dd37f..3514f1272f 100644 --- a/harbour/contrib/hbssl/hbssl.hbc +++ b/harbour/contrib/hbssl/hbssl.hbc @@ -6,8 +6,8 @@ skip={dos} incpaths=. -{!HB_STATIC_OPENSSL}libs=${hb_name} -{HB_STATIC_OPENSSL}libs=${hb_name}s +{!HB_STATIC_OPENSSL}libs=${hb_name}${__HB_DYN__} +{HB_STATIC_OPENSSL}libs=${hb_name}s${__HB_DYN__} {unix}libs=ssl crypto {os2}libs=openssl ssl crypto libosslfips diff --git a/harbour/contrib/hbtip/hbtip.hbc b/harbour/contrib/hbtip/hbtip.hbc index d73afd134a..29bd564988 100644 --- a/harbour/contrib/hbtip/hbtip.hbc +++ b/harbour/contrib/hbtip/hbtip.hbc @@ -4,4 +4,4 @@ incpaths=. -libs=${hb_name} +libs=${hb_name}${__HB_DYN__} diff --git a/harbour/contrib/hbtip/hbtip.hbp b/harbour/contrib/hbtip/hbtip.hbp index e819d738dd..d5d99d149f 100644 --- a/harbour/contrib/hbtip/hbtip.hbp +++ b/harbour/contrib/hbtip/hbtip.hbp @@ -3,5 +3,3 @@ # hbtip.hbm - -hbtipssl.hbp diff --git a/harbour/contrib/hbtip/hbtipssl.hbc b/harbour/contrib/hbtip/hbtipssl.hbc index 5c5d1d0c15..5b988bc298 100644 --- a/harbour/contrib/hbtip/hbtipssl.hbc +++ b/harbour/contrib/hbtip/hbtipssl.hbc @@ -4,5 +4,5 @@ incpaths=. -libs=${hb_name} +libs=${hb_name}${__HB_DYN__} libs=../hbssl/hbssl.hbc diff --git a/harbour/contrib/hbwin/hbwin.hbc b/harbour/contrib/hbwin/hbwin.hbc index 6a6b1b2842..621c2c03eb 100644 --- a/harbour/contrib/hbwin/hbwin.hbc +++ b/harbour/contrib/hbwin/hbwin.hbc @@ -6,6 +6,6 @@ skip={!allwin} incpaths=. -libs=${hb_name} +libs=${hb_name}${__HB_DYN__} libs=png {wce}libs=sms CellCore diff --git a/harbour/contrib/make.hbs b/harbour/contrib/make.hbs index 1436ef1dab..707da90fd8 100755 --- a/harbour/contrib/make.hbs +++ b/harbour/contrib/make.hbs @@ -209,14 +209,14 @@ PROCEDURE Standalone( aParams, hPackageList ) cProject := s_cBase + iif( cPackage == cMyPackage, "", s_cHome + cPackage + "/" ) + hPackageList[ cPackage ][ "cFileName" ] call_hbmk2( cProject,; - iif( cPackage == cMyPackage, cOptions + cOptionsUser, " -inc" ), "" ) + iif( cPackage == cMyPackage, cOptions + cOptionsUser, " -inc" ) ) /* Highly experimental */ - IF hPackageList[ cPackage ][ "cType" ] == "hblib" .AND. ; - GetEnv( "HB_BUILD_CONTRIB_DYN" ) == "yes" .AND. ; - hb_FileExists( PathSepToSelf( FNameExtSet( cProject, ".hbc" ) ) ) + IF cPackage == cMyPackage .AND. ; + hPackageList[ cPackage ][ "cType" ] == "hblib" .AND. ; + GetEnv( "HB_BUILD_CONTRIB_DYN" ) == "yes" - call_hbmk2( cProject, cOptions + cOptionsUser, " " + FNameExtSet( cProject, ".hbc" ) ) + call_hbmk2( cProject, cOptions + cOptionsUser, hPackageList[ cPackage ][ "aDept" ] ) ENDIF NEXT ENDIF @@ -390,14 +390,13 @@ PROCEDURE GNUMake( aParams, hPackageList ) cProject := s_cBase + cPackage + "/" + hPackageList[ cPackage ][ "cFileName" ] - call_hbmk2( cProject, cOptions, "" ) + call_hbmk2( cProject, cOptions ) /* Highly experimental */ IF hPackageList[ cPackage ][ "cType" ] == "hblib" .AND. ; - GetEnv( "HB_BUILD_CONTRIB_DYN" ) == "yes" .AND. ; - hb_FileExists( PathSepToSelf( FNameExtSet( cProject, ".hbc" ) ) ) + GetEnv( "HB_BUILD_CONTRIB_DYN" ) == "yes" - call_hbmk2( cProject, cOptions, " " + FNameExtSet( cProject, ".hbc" ) ) + call_hbmk2( cProject, cOptions, hPackageList[ cPackage ][ "aDept" ] ) ENDIF /* Compile documentation */ @@ -448,7 +447,8 @@ STATIC FUNCTION call_hbmk2_hbinfo( cProject, hProject ) hb_FNameSplit( LTrim( tmp ), @cDir, @cName ) AAdd( hProject[ "aDept" ], { "nDepth" => Len( tmp ) - Len( LTrim( tmp ) ),; "cDir" => cDir,; - "cName" => cName } ) + "cName" => cName,; + "cFileName" => LTrim( tmp ) } ) ENDIF NEXT @@ -477,12 +477,24 @@ STATIC FUNCTION hbmk2_hbinfo_getitem( cString, cItem, lAll ) RETURN cRetVal -STATIC FUNCTION call_hbmk2( cProject, cOptionsPre, cOptionsLibDyn ) +STATIC FUNCTION call_hbmk2( cProject, cOptionsPre, aDeptHBC ) LOCAL nErrorLevel + LOCAL cOptionsLibDyn := "" + LOCAL hDept + clear_hbmk2_envvars() - hb_setenv( "_HB_BUILD_LIBDYN", iif( Empty( cOptionsLibDyn ), NIL, "yes" ) ) + IF aDeptHBC == NIL + hb_setenv( "__HB_DYN__" ) + hb_setenv( "_HB_BUILD_LIBDYN" ) + ELSE + FOR EACH hDept IN aDeptHBC + cOptionsLibDyn += " " + hDept[ "cFileName" ] + NEXT + hb_setenv( "__HB_DYN__", "_dll" ) /* Request dll version of Harbour contrib dependencies (the implibs) to be linked (experimental) */ + hb_setenv( "_HB_BUILD_LIBDYN", "yes" ) + ENDIF nErrorLevel := mk_hb_processRun( s_cBinDir + "hbmk2" +; " -quiet -lang=en -width=0" +; diff --git a/harbour/contrib/pkglist b/harbour/contrib/pkglist index 30fac7a515..cd0aaac696 100644 --- a/harbour/contrib/pkglist +++ b/harbour/contrib/pkglist @@ -35,6 +35,7 @@ hbsms/hbsms.hbp hbsqlit3/hbsqlit3.hbp # uses: sqlite3 (external) hbssl/hbssl.hbp hbtip/hbtip.hbp +hbtip/hbtipssl.hbp hbtpathy/hbtpathy.hbp hbwin/hbwin.hbp hbxbp/hbxbp.hbp diff --git a/harbour/contrib/rddsql/rddsql.hbc b/harbour/contrib/rddsql/rddsql.hbc index d73afd134a..29bd564988 100644 --- a/harbour/contrib/rddsql/rddsql.hbc +++ b/harbour/contrib/rddsql/rddsql.hbc @@ -4,4 +4,4 @@ incpaths=. -libs=${hb_name} +libs=${hb_name}${__HB_DYN__} diff --git a/harbour/include/hbextern.ch b/harbour/include/hbextern.ch index d9565894e8..30e0abf799 100644 --- a/harbour/include/hbextern.ch +++ b/harbour/include/hbextern.ch @@ -1407,7 +1407,7 @@ EXTERNAL UR_SUPER_OPENMEMFILE EXTERNAL UR_SUPER_GETVALUEFILE EXTERNAL UR_SUPER_PUTVALUEFILE EXTERNAL UR_SUPER_READDBHEADER -EXTERNAL UR_SUPER_WRITEBHEADER +EXTERNAL UR_SUPER_WRITEDBHEADER EXTERNAL UR_SUPER_DROP EXTERNAL UR_SUPER_EXISTS EXTERNAL UR_SUPER_RENAME diff --git a/harbour/src/rdd/usrrdd/usrrdd.c b/harbour/src/rdd/usrrdd/usrrdd.c index 57c888c8e4..f3020d3ea2 100644 --- a/harbour/src/rdd/usrrdd/usrrdd.c +++ b/harbour/src/rdd/usrrdd/usrrdd.c @@ -4268,7 +4268,7 @@ HB_FUNC_UR_SUPER( READDBHEADER ) hb_retni( SUPER_READDBHEADER( pArea ) ); } -HB_FUNC_UR_SUPER( WRITEBHEADER ) +HB_FUNC_UR_SUPER( WRITEDBHEADER ) { AREAP pArea = hb_usrGetAreaParam( 1 );