diff --git a/configure.ac b/configure.ac index 7b0dab42d..401064213 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -dnl Process this file with autoget.sh to produce a working configure +dnl Process this file with autogen.sh to produce a working configure dnl script. AC_INIT @@ -51,6 +51,53 @@ if test "x$with_osg" != "x" ; then EXTRA_DIRS="${EXTRA_DIRS} $with_osg" fi +# specify framework related locations for Mac OS X +case "${host}" in +*-apple-darwin*) + + dnl Thank you Christian Bauer from SheepSaver + dnl Modified by Tatsuhiro Nishioka for accepting a given framework path + dnl AC_CHECK_FRAMEWORK($1=NAME, $2=INCLUDES, $3=FRAMEWORK_PATH) ; $3 is optional + AC_DEFUN([AC_CHECK_FRAMEWORK], [ + AS_VAR_PUSHDEF([ac_Framework], [ac_cv_framework_$1])dnl + AC_CACHE_CHECK([whether compiler supports framework $1], + ac_Framework, [ + saved_LIBS="$LIBS" + FRAMEWORKS="$FRAMEWORKS -framework $1" + if test "$3" = ""; then + FRAMEWORKS="$FRAMEWORKS $ADD2LD" + elif test "`echo $FRAMEWORKS | grep -- -F$3`" = ""; then + FRAMEWORKS="$FRAMEWORKS -F$3" + CXXFLAGS="$CXXFLAGS -F$3" + CCFLAGS="$CCFLAGS -F$3" + dnl This is needed for AC_TRY_LINK when a framework path is specified + export DYLD_FRAMEWORK_PATH="${DYLD_FRAMEWORK_PATH}:$3" + fi + AC_TRY_LINK( + [$2], [], + [AS_VAR_SET(ac_Framework, yes)], [AS_VAR_SET(ac_Framework, no); LIBS="$saved_LIBS"] + ) + ]) + AS_IF([test AS_VAR_GET(ac_Framework) = yes], + [AC_DEFINE(AS_TR_CPP(HAVE_FRAMEWORK_$1), 1, [Define if framework $1 is available.])] + ) + AS_VAR_POPDEF([ac_Framework])dnl + ]) + + # Mac OS X specific configure options + AC_ARG_WITH(osg_framework, [ --with-osg-framework=PREFIX Specify the prefix path to osg frameworks [default=standard framework paths]]) + + if test "x$with_plib_framework" != "x" ; then + echo "plib prefix is $with_plib_framework" + fi + + AC_ARG_WITH(plib_framework, [ --with-plib-framework=PREFIX Specify the prefix path to PLIB framework [default=standard framework paths]]) + if test "x$with_osg_framework" != "x" ; then + echo "osg prefix is $with_osg_framework" + fi + ;; +esac + dnl Determine an extra directories to add to include/lib search paths case "${host}" in *-apple-darwin* | *-*-mingw32*) @@ -117,6 +164,30 @@ dnl EXPERIMENTAL generic event driven input device AC_ARG_WITH(eventinput, [ --with-eventinput Include event driven input (EXPERIMENTAL) [default=no]], [], [with_eventinput=no]) if test "x$with_eventinput" = "xyes"; then AC_DEFINE([WITH_EVENTINPUT], 1, [Define to enable generic event driven input device]) + case "${host}" in + dnl OS specific sources for event driven input + dnl Linux and Mac OS X are supported at this moment + *-apple-darwin*) + eventinput_EXTRA_OBJS="FGMacOSXEventInput.o" + eventinput_INCUDES="" + eventinput_LIBS="" + ;; + *linux*) + dnl + dnl FIXME: include paths for dbus are hard-coded at this moment. + dnl FIXME: these must be found in configure + dnl + eventinput_EXTRA_OBJS="FGLinuxEventInput.o" + eventinput_INCLUDES="-I/usr/include/dbus-1.0 -I/usr/lib64/dbus-1.0/include -I/usr/lib/dbus-1.0/include" + eventinput_LIBS="-ldbus-1 -lhal" + ;; + *) + echo "Event driven input is not supported on ${host}." + ;; + esac + AC_SUBST(eventinput_EXTRA_OBJS) + AC_SUBST(eventinput_INCLUDES) + AC_SUBST(eventinput_LIBS) fi AM_CONDITIONAL(WITH_EVENTINPUT, test "x$with_eventinput" = "xyes") @@ -468,6 +539,18 @@ fi AM_CONDITIONAL(ENABLE_JPEG_SERVER, test "x$ac_cv_header_simgear_screen_jpgfactory_hxx" = "xyes") # Check for "plib" without which we cannot go on +case "${host}" in +*-apple-darwin*) + if test "x$with_plib_framework" != "x"; then + AC_CHECK_FRAMEWORK(PLIB, [#include ], $with_plib_framework, no) + plib_FRAMEWORK="$FRAMEWORKS" + AC_SUBST(plib_FRAMEWORK) + FRAMEWORKS="" + fi + ;; +esac +AM_CONDITIONAL(HAVE_FRAMEWORK_PLIB, test "x$ac_cv_framework_PLIB" != "x") + AC_CHECK_HEADER(plib/ul.h) if test "x$ac_cv_header_plib_ul_h" != "xyes"; then echo @@ -480,6 +563,7 @@ if test "x$ac_cv_header_plib_ul_h" != "xyes"; then exit fi +echo "$DYLD_FRAMEWORK_PATH" AC_MSG_CHECKING([for plib 1.8.5 or newer]) AC_TRY_RUN([ #include @@ -520,48 +604,58 @@ fi # Find the OSG libraries. Note special handling for OS X frameworks case "${host}" in *-apple-darwin*) - - dnl Thank you Christian Bauer from SheepSaver - dnl AC_CHECK_FRAMEWORK($1=NAME, $2=INCLUDES) - AC_DEFUN([AC_CHECK_FRAMEWORK], [ - AS_VAR_PUSHDEF([ac_Framework], [ac_cv_framework_$1])dnl - AC_CACHE_CHECK([whether compiler supports framework $1], - ac_Framework, [ - saved_LIBS="$LIBS" - LIBS="$LIBS -framework $1" - AC_TRY_LINK( - [$2], [], - [AS_VAR_SET(ac_Framework, yes)], [AS_VAR_SET(ac_Framework, no); LIBS="$saved_LIBS"] - ) - ]) - AS_IF([test AS_VAR_GET(ac_Framework) = yes], - [AC_DEFINE(AS_TR_CPP(HAVE_FRAMEWORK_$1), 1, [Define if framework $1 is available.])] - ) - AS_VAR_POPDEF([ac_Framework])dnl - ]) - - if test "x$enable_osgdebug" = "xyes"; then - AC_CHECK_LIB(osgViewerd,osgViewerGetVersion) - AC_CHECK_LIB(osgGAd,osgGAGetVersion) - AC_CHECK_LIB(osgTextd,osgTextGetVersion) - LIBS="$LIBS -losgFXd" - AC_CHECK_LIB(osgUtild,osgUtilGetVersion) - AC_CHECK_LIB(osgDBd,osgDBGetVersion) - AC_CHECK_LIB(osgSimd,osgSimGetVersion) - AC_CHECK_LIB(osgParticled,osgParticleGetVersion) - AC_CHECK_LIB(osgd,osgGetVersion) - AC_CHECK_LIB(OpenThreadsd,OpenThreadsGetVersion) + if test "x$with_osg_framework" = "x"; then + if test "x$enable_osgdebug" = "xyes"; then + # debug version of osg libs + AC_CHECK_LIB(OpenThreadsd,OpenThreadsGetVersion) + openthreads_LIBS="$LIBS" + LIBS="" + AC_CHECK_LIB(osgd,osgGetVersion) + AC_CHECK_LIB(osgUtild,osgUtilGetVersion) + AC_CHECK_LIB(osgDBd,osgDBGetVersion) + AC_CHECK_LIB(osgTextd,osgTextGetVersion) + AC_CHECK_LIB(osgGAd,osgGAGetVersion) + AC_CHECK_LIB(osgViewerd,osgViewerGetVersion) + AC_CHECK_LIB(osgSimd,osgSimGetVersion) + AC_CHECK_LIB(osgParticled,osgParticleGetVersion) + OSG_LIBS="$LIBS -losgFXd $openthreads_LIBS" + LIBS="" + else + # release version of osg libs + AC_CHECK_LIB(OpenThreads,OpenThreadsGetVersion) + openthreads_LIBS="$LIBS" + LIBS="" + AC_CHECK_LIB(osg,osgGetVersion) + AC_CHECK_LIB(osgUtil,osgUtilGetVersion) + AC_CHECK_LIB(osgDB,osgDBGetVersion) + AC_CHECK_LIB(osgText,osgTextGetVersion) + AC_CHECK_LIB(osgGA,osgGAGetVersion) + AC_CHECK_LIB(osgViewer,osgViewerGetVersion) + AC_CHECK_LIB(osgSim,osgSimGetVersion) + AC_CHECK_LIB(osgParticle,osgParticleGetVersion) + OSG_LIBS="$LIBS -losgFX $openthreads_LIBS" + LIBS="" + # echo $LIBS + fi + AC_SUBST(openthreads_LIBS) + AC_SUBST(OSG_LIBS) else - AC_CHECK_FRAMEWORK(osgViewer, [#include ]) - AC_CHECK_FRAMEWORK(osgGA, [#include ]) - AC_CHECK_FRAMEWORK(osgText, [#include ]) - AC_CHECK_FRAMEWORK(osgFX, [#include ]) - AC_CHECK_FRAMEWORK(osgUtil, [#include ]) - AC_CHECK_FRAMEWORK(osgDB, [#include ]) - AC_CHECK_FRAMEWORK(osgSim, [#include ]) - AC_CHECK_FRAMEWORK(osgParticle, [#include ]) - AC_CHECK_FRAMEWORK(osg, [#include ]) - AC_CHECK_FRAMEWORK(OpenThreads, [#include ]) + # Checking osg frameworks. + AC_CHECK_FRAMEWORK(osgViewer, [#include ], $with_osg_framework) + AC_CHECK_FRAMEWORK(osgGA, [#include ], $with_osg_framework) + AC_CHECK_FRAMEWORK(osgText, [#include ], $with_osg_framework) + AC_CHECK_FRAMEWORK(osgFX, [#include ], $with_osg_framework) + AC_CHECK_FRAMEWORK(osgUtil, [#include ], $with_osg_framework) + AC_CHECK_FRAMEWORK(osgDB, [#include ], $with_osg_framework) + AC_CHECK_FRAMEWORK(osgSim, [#include ], $with_osg_framework) + AC_CHECK_FRAMEWORK(osgParticle, [#include ], $with_osg_framework) + AC_CHECK_FRAMEWORK(osg, [#include ], $with_osg_framework) + osg_FRAMEWORKS="$FRAMEWORKS" + FRAMEWORKS="" + AC_CHECK_FRAMEWORK(OpenThreads, [#include ], $with_osg_framework) + openthreads_FRAMEWORK="$FRAMEWORKS" + AC_SUBST(osg_FRAMEWORKS) + AC_SUBST(openthreads_FRAMEWORK) fi ;; *) @@ -590,6 +684,7 @@ case "${host}" in fi ;; esac +AM_CONDITIONAL(HAVE_FRAMEWORK_OSG, test "x$ac_cv_framework_osg" != "x") AC_LANG_POP @@ -735,7 +830,7 @@ AC_CONFIG_FILES([ \ utils/propmerge/Makefile \ utils/TerraSync/Makefile \ utils/xmlgrep/Makefile \ - utils/fgviewer/Makefile \ + utils/fgviewer/Makefile ]) AC_OUTPUT diff --git a/src/FDM/YASim/Makefile.am b/src/FDM/YASim/Makefile.am index aae98c48c..f75029429 100644 --- a/src/FDM/YASim/Makefile.am +++ b/src/FDM/YASim/Makefile.am @@ -46,9 +46,17 @@ noinst_PROGRAMS = proptest yasim_SOURCES = yasim-test.cpp $(SHARED_SOURCE_FILES) -yasim_LDADD = -lsgxml -lsgprops -lsgdebug -lsgmisc -lsgstructure $(base_LIBS) +yasim_LDADD = -lsgxml -lsgprops -lsgdebug -lsgmisc -lsgstructure -lsgtiming $(base_LIBS) proptest_SOURCES = proptest.cpp $(SHARED_SOURCE_FILES) -proptest_LDADD = -lsgxml -lsgprops -lsgdebug -lsgmisc -lsgstructure $(base_LIBS) +proptest_LDADD = -lsgxml -lsgprops -lsgdebug -lsgmisc -lsgstructure -lsgtiming $(base_LIBS) + +if HAVE_FRAMEWORK_OSG +yasim_LDFLAGS = $(openthreads_FRAMEWORKS) +proptest_LDFLAGS = $(openthreads_FRAMEWORKS) +else +yasim_LDFLAGS = $(openthreads_LIBS) +proptest_LDFLAGS = $(openthreads_LIBS) +endif INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/src diff --git a/src/GUI/Makefile.am b/src/GUI/Makefile.am index 512e5d192..890807f2a 100644 --- a/src/GUI/Makefile.am +++ b/src/GUI/Makefile.am @@ -1,6 +1,18 @@ noinst_LIBRARIES = libGUI.a noinst_PROGRAMS = layout-test +if HAVE_FRAMEWORK_PLIB +layout_test_PLIB_FW = $(plib_FRAMEWORK) +else +layout_test_PLIB_LIBS = -lplibpw -lplibpu -lplibfnt -lplibul +endif + +if HAVE_FRAMEWORK_OSG +layout_test_OSG_LIBS = $(openthreads_FRAMEWORK) +else +layout_test_OSG_LIBS = $(openthreads_LIBS) +endif + libGUI_a_SOURCES = \ new_gui.cxx new_gui.hxx \ dialog.cxx dialog.hxx \ @@ -17,5 +29,8 @@ INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/src layout_test_SOURCES = layout-test.cxx layout_test_LDADD = libGUI.a \ - -lsgprops -lsgdebug -lsgstructure -lsgmisc -lsgxml \ - -lplibpw -lplibpu -lplibfnt -lplibul $(opengl_LIBS) + -lsgprops -lsgdebug -lsgstructure -lsgmisc -lsgxml -lsgtiming \ + $(layout_test_PLIB_LIBS) $(opengl_LIBS) + +# mainly for Macs +layout_test_LDFLAGS = $(layout_test_PLIB_FW) $(layout_test_OSG_LIBS) diff --git a/src/Input/Makefile.am b/src/Input/Makefile.am index cea5f627f..c6ec7dba1 100644 --- a/src/Input/Makefile.am +++ b/src/Input/Makefile.am @@ -3,13 +3,33 @@ AM_CXXFLAGS = -DPKGLIBDIR=\"$(pkgdatadir)\" noinst_LIBRARIES = libInput.a if WITH_EVENTINPUT -libInput_Event_SOURCES = FGEventInput.cxx FGEventInput.hxx FGLinuxEventInput.cxx FGLinuxEventInput.hxx -libInput_Event_INCLUDES = -I/usr/include/dbus-1.0 -I/usr/lib64/dbus-1.0/include -I/usr/lib/dbus-1.0/include +EXTRA_libInput_a_SOURCES = FGLinuxEventInput.cxx FGLinuxEventInput.hxx \ + FGMacOSXEventInput.cxx FGMacOSXEventInput.hxx +libInput_Event_SOURCES = FGEventInput.cxx FGEventInput.hxx +libInput_Event_INCLUDES = $(eventinput_INCLUDES) +libInput_a_LIBADD = $(eventinput_EXTRA_OBJS) +libInput_a_DEPENDENCIES = $(eventinput_EXTRA_OBJS) else libInput_Event_SOURCES = libInput_Event_INCLUDES = endif +if HAVE_FRAMEWORK_PLIB +js_demo_LDFLAGS = $(plib_FRAMEWORK) +fgjs_LDFLAGS = $(plib_FRAMEWORK) +else +js_demo_PLIB_LIBS = -lplibjs -lplibul +fgjs_PLIB_LIBS = -lplibjs -lplibul +js_demo_LDFLAGS = +fgjs_LDFLAGS= +endif + +if HAVE_FRAMEWORK_OSG +fgjs_LDFLAGS = $(openthreads_FRAMEWORK) +else +fgjs_LDFLAGS = $(openthreads_LIBS) +endif + libInput_a_SOURCES = input.cxx input.hxx FGCommonInput.cxx FGCommonInput.hxx \ FGDeviceConfigurationMap.cxx FGDeviceConfigurationMap.hxx \ FGButton.cxx FGButton.hxx \ @@ -22,11 +42,11 @@ bin_PROGRAMS = js_demo fgjs js_demo_SOURCES = js_demo.cxx -js_demo_LDADD = -lplibjs $(base_LIBS) $(joystick_LIBS) -lplibul +js_demo_LDADD = $(js_demo_PLIB_LIBS) $(base_LIBS) $(joystick_LIBS) fgjs_SOURCES = fgjs.cxx jsinput.cxx jsinput.h jssuper.cxx jssuper.h -fgjs_LDADD = -lplibjs -lplibul $(base_LIBS) $(joystick_LIBS) \ +fgjs_LDADD = $(js_demo_PLIB_LIBS) $(base_LIBS) $(joystick_LIBS) \ -lsgprops -lsgmisc -lsgio -lsgdebug -lsgstructure -lsgxml -lz INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/src -I$(top_srcdir)/src/Main \ diff --git a/src/Main/Makefile.am b/src/Main/Makefile.am index e30701f7b..0994d859a 100644 --- a/src/Main/Makefile.am +++ b/src/Main/Makefile.am @@ -16,11 +16,24 @@ THREAD_LIBS = endif if WITH_EVENTINPUT -EVENT_LIBS = -ldbus-1 -lhal +EVENT_LIBS = $(eventinput_LIBS) else EVENT_LIBS = endif +if HAVE_FRAMEWORK_PLIB +fgfs_PLIB_FW = $(plib_FRAMEWORK) +metar_PLIB_FW = $(plib_FRAMEWORK) +else +fgfs_PLIB_LIBS = -lplibpuaux -lplibpu -lplibfnt -lplibjs -lplibnet \ + -lplibsg -lplibul +metar_PLIB_LIBS = -lplibnet -lplibul +endif + +if HAVE_FRAMEWORK_OSG +fgfs_OSG_FW = $(osg_FRAMEWORKS) $(openthreads_FRAMEWORK) +endif + GFX_CODE = fg_os_osgviewer.cxx fg_os_common.cxx fg_os.hxx JSBSIM_LIBS = \ @@ -104,8 +117,7 @@ fgfs_LDADD = \ -lsgmaterial -lsgutil -lsgtiming -lsgio -lsgscreen -lsgmath -lsgbucket \ -lsgprops -lsgdebug -lsgmagvar -lsgmisc -lsgnasal -lsgxml -lsgsound \ -lsgserial -lsgstructure -lsgenvironment \ - -lplibpuaux -lplibpu -lplibfnt -lplibjs -lplibnet \ - -lplibsg -lplibul \ + $(fgfs_PLIB_LIBS) \ $(OSG_LIBS) \ $(THREAD_LIBS) \ $(network_LIBS) \ @@ -114,11 +126,15 @@ fgfs_LDADD = \ $(openal_LIBS) \ $(EVENT_LIBS) +fgfs_LDFLAGS = $(fgfs_PLIB_FW) $(fgfs_OSG_FW) + metar_SOURCES = metar_main.cxx metar_LDADD = \ -lsgenvironment -lsgio -lsgbucket -lsgmisc -lsgstructure -lsgdebug \ - -lplibnet -lplibul $(network_LIBS) \ + $(metar_PLIB_LIBS) $(network_LIBS) \ -lz $(base_LIBS) +metar_LDFLAGS = $(metar_PLIB_FW) + INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/src -I$(top_srcdir)/src/FDM/JSBSim