Fixes for cygwin and mingw builds.

This commit is contained in:
Robert Osfield
2002-02-09 10:24:39 +00:00
parent 254d22ec90
commit ed45cccc25
12 changed files with 246 additions and 91 deletions

View File

@@ -15,6 +15,9 @@ YFLAGS = -d
CFLAGS = -O2 -DWIN32 -W -Wall $(LCINCS)
#CFLAGS = -g -DWIN32 -W -Wall $(LCINCS)
# need thunking when using wxWindows
# CFLAGS += -fvtable-thunks
C++FLAGS = ${CFLAGS}
CPPFLAGS = ${CFLAGS}
@@ -24,6 +27,9 @@ DL_EXT = dll
LDFLAGS = -O2 -W -Wall
#LDFLAGS = -g -W -Wall
# need thunking when using wxWindows
# LDFLAGS += -fvtable-thunks
LINKERARGS =
DYNAMICLIBRARYLIB =
@@ -73,3 +79,17 @@ TARGET_BIN_FILES = ""
TARGET_INCLUDE_FILES = ""
TARGET_DATA_FILES = ""
TARGET_LOADER_FILES = ""
WXDIR = /src/wxMSW
WX_CFLAGS = -DWXUSINGDLL -D_X86_=1 -DWIN32 -D_WIN32 -DWINVER=0x0400 -D__WIN95__ -D__GNUWIN32__ -D__WIN32__ -I$(WXDIR)/include -I$(WXDIR)/contrib/include -I$(WXDIR)/src/png -I$(WXDIR)/src/jpeg -I$(WXDIR)/src/zlib -I$(WXDIR)/src/tiff -I$(WXDIR)/include/wx/msw/gnuwin32 -DSTRICT -D__WXMSW__ -D__WINDOWS__ -D__WXDEBUG__ -Wall -mwin32 -fno-pcc-struct-return -O2 -fno-exceptions -DWIN32_LEAN_AND_MEAN
# -fno-rtti
WX_CPPFLAGS = -DWXUSINGDLL -D_X86_=1 -DWIN32 -D_WIN32 -DWINVER=0x0400 -D__WIN95__ -D__GNUWIN32__ -D__WIN32__ -I$(WXDIR)/include -I$(WXDIR)/contrib/include -I$(WXDIR)/src/png -I$(WXDIR)/src/jpeg -I$(WXDIR)/src/zlib -I$(WXDIR)/src/tiff -I$(WXDIR)/include/wx/msw/gnuwin32 -DSTRICT -D__WXMSW__ -D__WINDOWS__ -D__WXDEBUG__ -Wall -mwin32 -fno-pcc-struct-return -O2 -fno-exceptions -DWXMAKINGDLL=1 -D_DLL=1 -D_WINDLL=1
# -fno-rtti
WX_LDFLAGS = -L$(WXDIR)/lib -L$(WXDIR)/contrib/lib
WX_LD_LIBS =
WX_LIBS = $(WXDIR)/lib/libwx23_1.a -lpng -ljpeg -ltiff -lz -lwinspool -lwinmm -lshell32 -lcomctl32 -lctl3d32 -lodbc32 -ladvapi32 -lodbc32 -lwsock32 -lopengl32 -lglu32 -lole32 -loleaut32 -luuid

View File

@@ -1,67 +0,0 @@
MAKEDIR = $(OSGHOME)/Make
INSTRULES = $(MAKEDIR)/instrules
MAKEDEPEND = Makedepend
OBJS = $(C++FILES:.cpp=.o) $(CFILES:.c=.o) $(YACCFILES:.y=.o) $(LEXFILES:.l=.o)
DEPFILES = $(OBJS:.o=.d)
C++ = CC
YFLAGS = -d
#CFLAGS = -O2 -n32 -MDupdate $(MAKEDEPEND) -OPT:Olimit=0 -DEBUG:woff=1682 -DEBUG:woff=3303
CFLAGS = -O2 -n32 --OPT:Olimit=0 -DEBUG:woff=1682 -DEBUG:woff=3303
C++FLAGS = ${CFLAGS}
CPPFLAGS = ${CFLAGS}
SO_EXT = so
DL_EXT = so
LDFLAGS = -O2 -n32 -OPT:Olimit=0
.SUFFIXES: .cpp .o
.cpp.o:
$(C++) $(C++FLAGS) -c $<
LINKERARGS =
DYNAMICLIBRARYLIB =
PFLOADERPATH = /usr/lib32/libpfdb
GLUTLIB = -lglut
#
# TARGET_DIRS are directories that would not exist on the system except
# for the presence of OpenSceneGraph. 'make instclean' removes these
# directories
#
TARGET_DIRS = \
/usr/include/osg \
/usr/include/osgDB \
/usr/include/osgGLUT \
/usr/include/osgUtil \
/usr/include/osgText \
/usr/share/OpenSceneGraph\
/usr/share/OpenSceneGraph/data\
/usr/share/OpenSceneGraph/data/Images\
/usr/share/OpenSceneGraph/data/Test\
/usr/lib32/osgPlugins\
TARGET_BIN = /usr/bin
TARGET_LIB = /usr/lib32
TARGET_INCLUDE = /usr/include
TARGET_DATA = /usr/share/OpenSceneGraph/data
TARGET_LOADER_LIB = /usr/lib/osgPlugins
#
# This definitions are necessary for IRIX. The following statement
# does not work for smake using a sh:
#
# for variable in $(LIST); do ...; done
#
# .. if $(LIST) is a NULL variable. So we have to define 0 length
# strings and check for them inside the for loop
#
TARGET_LIB_FILES = ""
TARGET_BIN_FILES = ""
TARGET_INCLUDE_FILES = ""
TARGET_DATA_FILES = ""
TARGET_LOADER_FILES = ""

98
Make/makedefs.mingw Normal file
View File

@@ -0,0 +1,98 @@
MAKEDIR = $(OSGHOME)/Make
INSTRULES = $(MAKEDIR)/instrules
MAKEDEPEND = Makedepend
MINGW_HOME = d:/usr/mingw
OBJS = $(C++FILES:.cpp=.o) $(CFILES:.c=.o) $(YACCFILES:.y=.o) $(LEXFILES:.l=.o)
DEPFILES = $(OBJS:.o=.d)
C++ = c++
# need thunking when using wxWindows
# C++ += -fvtable-thunks
YFLAGS = -d
#LCINCS += -I/usr/X11R6/include
#LC++INCS += ${LCINCS}
OPT_FLAGS = -O
DBG_FLAGS = -g
WARN_FLAGS = -Wall -W
LDFLAGS = $(OPT_FLAGS) $(DBG_FLAGS) $(WARN_FLAGS)
CFLAGS = -DWIN32 $(LDFLAGS) $(LCINCS)
C++FLAGS = ${CFLAGS}
CPPFLAGS = ${CFLAGS}
SO_EXT = dll
DL_EXT = dll
LINKERARGS =
DYNAMICLIBRARYLIB =
PFLOADERPATH = /usr/lib/libpfdb
GLUTLIB = -lglut32
GL_LIBS = -lglu32 -lopengl32
X_LIBS = -lgdi32 -luser32
OSGDB_LIBS = -losgdb_3ds -losgdb_bmp -losgdb_dw -losgdb_flt -losgdb_jpg -losgdb_lwo -losgdb_obj -losgdb_osg -losgdb_osgtgz -losgdb_pic -losgdb_png -losgdb_rgb -losgdb_tga -losgdb_tgz -losgdb_tiff -losgdb_zip
#
# TARGET_DIRS are directories that would not exist on the system except
# for the presence of OpenSceneGraph. 'make instclean' removes these
# directories
#
TARGET_DIRS = \
$(MINGW_HOME)/include/osg \
$(MINGW_HOME)/include/osgDB \
$(MINGW_HOME)/include/osgGLUT \
$(MINGW_HOME)/include/osgUtil \
$(MINGW_HOME)/include/osgText \
$(MINGW_HOME)/share/OpenSceneGraph\
$(MINGW_HOME)/share/OpenSceneGraph/data\
$(MINGW_HOME)/share/OpenSceneGraph/data/Images\
$(MINGW_HOME)/share/OpenSceneGraph/data/Test\
$(MINGW_HOME)/lib/osgPlugins\
TARGET_BIN = $(MINGW_HOME)/bin
TARGET_LIB = $(MINGW_HOME)/lib
TARGET_INCLUDE = $(MINGW_HOME)/include
TARGET_DATA = $(MINGW_HOME)/share/OpenSceneGraph/data
#
# This definitions are necessary for IRIX. The following statement
# does not work for smake using a sh:
#
# for variable in $(LIST); do ...; done
#
# .. if $(LIST) is a NULL variable. So we have to define 0 length
# strings and check for them inside the for loop
#
TARGET_LIB_FILES = ""
TARGET_BIN_FILES = ""
TARGET_INCLUDE_FILES = ""
TARGET_DATA_FILES = ""
TARGET_LOADER_FILES = ""
# set to your wxWindows TOP directory
WXDIR = d:/src/wxMSW
WX_CFLAGS = -DWXUSINGDLL -D_X86_=1 -DWIN32 -D_WIN32 -DWINVER=0x0400 -D__WIN95__ -D__GNUWIN32__ -D__WIN32__ -I$(WXDIR)/include -I$(WXDIR)/contrib/include -I$(WXDIR)/src/png -I$(WXDIR)/src/jpeg -I$(WXDIR)/src/zlib -I$(WXDIR)/src/tiff -I$(WXDIR)/include/wx/msw/gnuwin32 -DSTRICT -D__WXMSW__ -D__WINDOWS__ -D__WXDEBUG__ -Wall -mwin32 -fno-pcc-struct-return -O2 -fno-exceptions -DWIN32_LEAN_AND_MEAN
# -fno-rtti
WX_CPPFLAGS = -DWXUSINGDLL -D_X86_=1 -DWIN32 -D_WIN32 -DWINVER=0x0400 -D__WIN95__ -D__GNUWIN32__ -D__WIN32__ -I$(WXDIR)/include -I$(WXDIR)/contrib/include -I$(WXDIR)/src/png -I$(WXDIR)/src/jpeg -I$(WXDIR)/src/zlib -I$(WXDIR)/src/tiff -I$(WXDIR)/include/wx/msw/gnuwin32 -DSTRICT -D__WXMSW__ -D__WINDOWS__ -D__WXDEBUG__ -Wall -mwin32 -fno-pcc-struct-return -O2 -fno-exceptions -DWXMAKINGDLL=1 -D_DLL=1 -D_WINDLL=1
# -fno-rtti
WX_LDFLAGS = -L$(WXDIR)/lib -L$(WXDIR)/contrib/lib
WX_LD_LIBS =
WX_LIBS = $(WXDIR)/lib/libwx23_1.a -lpng -ljpeg -ltiff -lz -lwinspool -lwinmm -lshell32 -lcomctl32 -lctl3d32 -lodbc32 -ladvapi32 -lodbc32 -lwsock32 -lopengl32 -lglu32 -lole32 -loleaut32 -luuid

View File

@@ -5,12 +5,18 @@ $(TARGET) : $(OBJS)
$(C++) $(LDFLAGS) $(OBJS) $(LIBS) -o $@
$(LOADABLE) : $(OBJS)
$(C++) $(LDFLAGS) -shared -Wl,--export-all-symbols $(OBJS) $(LIBS) \
-Wl,--output-def,lib$(TARGET_BASENAME).def -Wl,--out-implib,$(OSGHOME)/lib/lib$(TARGET_BASENAME).a -o $@
$(C++) $(LDFLAGS) -shared \
-Wl,--export-all-symbols \
-Wl,--output-def,lib$(TARGET_BASENAME).def \
-Wl,--out-implib,$(OSGHOME)/lib/lib$(TARGET_BASENAME).a \
-o $@ $(OBJS) $(LIBS)
$(LIB) : $(OBJS)
$(C++) $(LDFLAGS) -shared -Wl,--export-all-symbols $(OBJS) $(LIBS) \
-Wl,--output-def,lib$(TARGET_BASENAME).def -Wl,--out-implib,$(OSGHOME)/lib/lib$(TARGET_BASENAME).a -o $@
$(C++) $(LDFLAGS) -shared \
-Wl,--export-all-symbols \
-Wl,--output-def,lib$(TARGET_BASENAME).def \
-Wl,--out-implib,$(OSGHOME)/lib/lib$(TARGET_BASENAME).a \
-o $@ $(OBJS) $(LIBS)
clean :
rm -f $(OBJS) core $(TARGET) $(MAKEDEPEND)

72
Make/makerules.mingw Normal file
View File

@@ -0,0 +1,72 @@
all : $(MAKEDEPEND) $(TARGET) $(LOADABLE) $(LIB)
$(TARGET) : $(OBJS)
$(C++) $(LDFLAGS) $(OBJS) $(LIBS) -o $@
$(LOADABLE) : $(OBJS)
$(C++) $(LDFLAGS) -shared \
-Wl,--export-all-symbols \
-Wl,--output-def,lib$(TARGET_BASENAME).def \
-Wl,--out-implib,$(OSGHOME)/lib/lib$(TARGET_BASENAME).a \
-o $@ $(OBJS) $(LIBS)
$(LIB) : $(OBJS)
$(C++) $(LDFLAGS) -shared \
-Wl,--export-all-symbols \
-Wl,--output-def,lib$(TARGET_BASENAME).def \
-Wl,--out-implib,$(OSGHOME)/lib/lib$(TARGET_BASENAME).a \
-o $@ $(OBJS) $(LIBS)
clean :
rm -f $(OBJS) core $(TARGET) $(MAKEDEPEND)
touch $(MAKEDEPEND)
clobber : clean
rm -f $(TARGET) a.out $(LIB)
to_unix :
for f in *.cpp ; do to_unix $$f $$f; done
for f in *.h ; do to_unix $$f $$f; done
beautify :
for f in *.cpp ; do mv $$f $$f.bak; bcpp $$f.bak $$f; rm $$f.bak; done
for f in *.h ; do mv $$f $$f.bak; bcpp $$f.bak $$f; rm $$f.bak; done
# force it
depend :
$(C++) $(C++FLAGS) -M $(C++FILES) $(CFILES) > $(MAKEDEPEND)
$(MAKEDEPEND) : $(C++FILES) $(CFILES)
$(C++) $(C++FLAGS) -M $(C++FILES) $(CFILES) > $(MAKEDEPEND)
%.o : %.cpp
$(C++) $(C++FLAGS) -c $*.cpp -o $*.o
%.o : %.c
$(CC) $(C++FLAGS) -c $*.c -o $*.o
docs:
[ "$(TARGET_BASENAME)" != "" ] && \
mkdir -p ../../doc/doc++/$(TARGET_BASENAME) && \
doc++ -d ../../doc/doc++/$(TARGET_BASENAME) -H -A ../../include/$(TARGET_BASENAME)/* && \
echo $(TARGET_BASENAME) HTML documentation created in ../../doc/doc++/$(TARGET_BASENAME)
install : home
@ make __install
instlinks : home
@ make __instlinks
instclean : home
@ make __instclean
home :
@ [ -n "$(OSGHOME)" ] || (echo ; echo "-------------> Please define OSGHOME"; echo)
@ [ -n "$(OSGHOME)" ] && echo > /dev/null;
sinclude $(INSTRULES)
include $(MAKEDEPEND)

View File

@@ -6,11 +6,7 @@ DIRS = src
VERSION = osg-0.8.44
ifeq (IRIX|IRIX64,true)
export OSGHOME = `pwd`
else
export OSGHOME := $(shell pwd)
endif
export OSGHOME = $(shell pwd)
all : $(MAKE_PREP)
for f in $(DIRS) ; do cd $$f; $(MAKE) || exit 1; cd ..; done
@@ -53,6 +49,12 @@ cygwin:
ln -sf makerules.cyg makerules
$(MAKE)
mingw:
cd Make;\
ln -sf makedefs.mingw makedefs;\
ln -sf makerules.mingw makerules
$(MAKE)
freebsd:
cd Make;\
ln -sf makedefs.freebsd makedefs;\
@@ -72,12 +74,6 @@ irix64:
ln -sf makerules.irix makerules
$(MAKE)
irix.old:
cd Make;\
ln -sf makedefs.irix.nonstd makedefs ;\
ln -sf makerules.irix makerules
$(MAKE)
macosx:
cd Make;\
ln -sf makedefs.macosx makedefs;\
@@ -90,17 +86,24 @@ help :
@echo \ $(MAKE)
@echo \ $(MAKE) linux
@echo \ $(MAKE) cygwin
@echo \ $(MAKE) mingw
@echo \ $(MAKE) freebsd
@echo \ $(MAKE) macosx
@echo \ $(MAKE) irix
@echo \ $(MAKE) irix.old
@echo \ $(MAKE) irix64
@echo
@echo \ $(MAKE) depend
@echo \ $(MAKE) clean
@echo \ $(MAKE) clobber
@echo
@echo \ $(MAKE) doc
@echo \ $(MAKE) release
@echo \ $(MAKE) dev
@echo
@echo \ $(MAKE) install
@echo \ $(MAKE) instlinks
@echo \ $(MAKE) instclean
@echo
clean : $(MAKE_PREP)

View File

@@ -56,6 +56,11 @@
namespace osg {
// define the stand trig values
#ifdef PI
#undef PI
#undef PI_2
#undef PI_4
#endif
const double PI = 3.14159265358979323846;
const double PI_2 = 1.57079632679489661923;
const double PI_4 = 0.78539816339744830962;

View File

@@ -10,9 +10,9 @@
namespace osg {
#if defined(WIN32 ) && !defined(__CYGWIN__)
#if defined(WIN32 ) && !(defined(__CYGWIN__) || defined(__MINGW32__))
typedef __int64 Timer_t;
#elif defined(__linux) || defined(__FreeBSD__) || defined(__CYGWIN__)
#elif defined(__linux) || defined(__FreeBSD__) || defined(__CYGWIN__)|| defined(__MINGW32__)
typedef unsigned long long Timer_t;
#elif defined(__sgi)
typedef unsigned long long Timer_t;
@@ -91,8 +91,24 @@ namespace osg{
}
#pragma optimize("",on)
#elif defined(__linux) || defined(__FreeBSD__) || defined(__CYGWIN__) || defined(__MINGW32__)
#elif defined(__MINGW32__)
#include <sys/time.h>
#define CLK(x) __asm__ volatile (".byte 0x0f, 0x31" : "=A" (x))
namespace osg{
inline Timer_t Timer::tick() const
{
if (_useStandardClock)
return clock();
else
{
Timer_t x;CLK(x);return x;
}
}
}
#elif defined(__linux) || defined(__FreeBSD__) || defined(__CYGWIN__)
#include <sys/time.h>

View File

@@ -19,6 +19,8 @@
# include <sys/sockio.h>
#elif defined(__sgi)
# include <net/soioctl.h>
#elif defined(__CYGWIN__)
// nothing needed
#else
# error Teach me how to build on this system
#endif

View File

@@ -1,4 +1,4 @@
#if defined(_WIN32) || defined(__CYGWIN__)
#if defined(WIN32)
#include <windows.h>
#elif !defined macintosh
#include <dlfcn.h>
@@ -60,7 +60,7 @@ const bool osg::isGLExtensionSupported(const char *extension)
void* osg::getGLExtensionFuncPtr(const char *funcName)
{
#if defined(_WIN32) || defined(__CYGWIN__)
#if defined(WIN32)
return wglGetProcAddress(funcName);
#elif defined(macintosh)
return NULL;

View File

@@ -347,7 +347,7 @@ std::string osgDB::findFileInDirectory(const std::string& fileName,const std::st
}
#if defined(WIN32) &&!defined(__CYGWIN__)
#if defined(WIN32) && !defined(__CYGWIN__)
#include <io.h>
#include <direct.h>

View File

@@ -6,7 +6,7 @@
#include <iostream>
#ifdef __CYGWIN__
#if defined(__CYGWIN__) || defined(__MINGW32__)
#include <sys/types.h>
#endif