Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jul 14th, 2012  |  syntax: None  |  size: 23.43 KB  |  hits: 11  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. #############################################################################
  2. #       Makefile for VRPN libraries.  Needs to be built using 'gmake'.
  3. # Should run on any architecture that is currently supported.  It should
  4. # be possible to build simultaneously on multiple architectures.
  5. #
  6. # On the sgi, both g++ and CC verisons are built by default.
  7. #
  8. # Author: Russ Taylor, 10/2/1997
  9. #
  10. # modified:
  11. # * Jeff Juliano, 10/99
  12. #    * added "make depend"  (see comments at end of this makefile)
  13. #    * changed to use RM, RMF, MV, and MVF
  14. #      these are overridable as follows:
  15. #          gmake RM=/mybin/rm,  or  gmake RMF="/bin/rm -option"
  16. # * Jeff Juliano, 9/1999
  17. #     support for parallel make (see WARNING below)
  18. # * Tom Hudson, 25 Jun 1998
  19. #     Support for n32 ABI on sgi.  (gmake n32)
  20. # * Hans Weber, ???
  21. #     Support for both g++ and native compilers on sgi.
  22. # * Tom Hudson, 13 Feb 1998
  23. #     Build two different libraries:  client (libvrpn) and server
  24. #     (libvrpnserver).  Our solution is to compile twice, once with the
  25. #     flag -DVRPN_CLIENT_ONLY and once without.  Any server-specific code
  26. #     (vrpn_3Space, vrpn_Tracker_Fastrak, vrpn_Flock) should ONLY be
  27. #     compiled into the server library!
  28. #############################################################################
  29.  
  30. ##########################
  31. # common definitions. For non-UNC sites, uncomment one of the lines
  32. # that defines hw_os for the machine you are on in the section just
  33. # below. Then, the code should compile in your environment.
  34. #
  35. #HW_OS := sgi_irix
  36. #HW_OS := pc_linux
  37. #HW_OS := pc_linux64
  38. #HW_OS := pc_linux_ia64
  39. # Try this to cross-compile on a Linux PC for an ARM embedded controller.
  40. #HW_OS := pc_linux_arm
  41. # Try this to cross-compile on a Cygwin PC for an ARM embedded controller.
  42. #HW_OS := pc_cygwin_arm
  43. #HW_OS := pc_cygwin
  44. #HW_OS := pc_FreeBSD
  45. #HW_OS := sparc_solaris
  46. #HW_OS := sparc_solaris_64
  47. #HW_OS := powerpc_aix
  48. #HW_OS := powerpc_macosx
  49. #HW_OS := universal_macosx
  50. ##########################
  51.  
  52. ##########################
  53. # Mac OS X-specific options. If HW_OS is powerpc_macosx or universal_macosx,
  54. # uncomment one line below to choose the minimum targeted OS X version and
  55. # corresponding SDK. If none of the lines below is commented out, 10.5 will
  56. # be the minimum version.
  57. ##########################
  58. #MAC_OS_MIN_VERSION := 10.4
  59. #MAC_OS_MIN_VERSION := 10.5
  60. #MAC_OS_MIN_VERSION := 10.6
  61.  
  62.  
  63. INSTALL_DIR := /usr/local
  64. BIN_DIR := $(INSTALL_DIR)/bin
  65. INCLUDE_DIR := $(INSTALL_DIR)/include
  66. LIB_DIR := $(INSTALL_DIR)/lib
  67.  
  68. MV = /bin/mv
  69. MVF = $(MV) -f
  70.  
  71. RM = /bin/rm
  72. RMF = $(RM) -f
  73.  
  74. ifndef HW_OS
  75.   # hw_os does not exist on FreeBSD at UNC or on CYGWIN
  76.   UNAME := $(shell uname -s)
  77.   ifeq ($(UNAME), FreeBSD)
  78.     HW_OS := pc_FreeBSD
  79.   else
  80.     # pc_cygwin doesn't have HW_OS
  81.     ifeq ($(UNAME), CYGWIN_NT-4.0)
  82.       HW_OS := pc_cygwin
  83.       # On cygwin make is gmake (and gmake doesn't exist)
  84.       MAKE  := make -f $(MAKEFILE)
  85.     else
  86.       ifeq ($(UNAME), CYGWIN_98-4.10)
  87.             HW_OS := pc_cygwin
  88.             MAKE := make -f $(MAKEFILE)
  89.       else
  90.         ifeq ($(UNAME), CYGWIN_NT-5.0)
  91.             HW_OS := pc_cygwin
  92.             MAKE := make -f $(MAKEFILE)
  93.         else
  94.             HW_OS := $(shell hw_os)
  95.         endif
  96.       endif
  97.     endif
  98.   endif
  99. endif
  100.  
  101. # check if its for pxfl
  102. ifdef PBASE_ROOT
  103.   HW_OS := hp_flow
  104.   ifeq ($(PXFL_COMPILER), aCC)
  105.     HW_OS = hp_flow_aCC
  106.   endif
  107. endif
  108.  
  109. # Which C++ compiler to use.  Default is g++, but some don't use this.
  110. #
  111. # IF YOU CHANGE THESE, document either here or in the header comment
  112. # why.  Multiple contradictory changes have been made recently.
  113.  
  114.  
  115. CC := g++
  116. AR := ar ruv
  117. # need default 'ranlib' to be touch for platforms that don't use it,
  118. # otherwise make fails.
  119. RANLIB := touch
  120.  
  121. ifeq ($(FORCE_GPP),1)
  122.   CC := g++
  123. else
  124.  
  125.   ifeq ($(HW_OS),sparc_solaris)
  126.         CC := /opt/SUNWspro/bin/CC
  127.         AR := /opt/SUNWspro/bin/CC -xar -o
  128.   endif
  129.  
  130.   ifeq ($(HW_OS),sparc_solaris_64)
  131.         CC := /opt/SUNWspro/bin/CC -xarch=v9a
  132.         AR := /opt/SUNWspro/bin/CC -xarch=v9a -xar -o
  133.   endif
  134.  
  135.   ifeq ($(HW_OS),powerpc_aix)
  136.         CC := /usr/ibmcxx/bin/xlC_r -g -qarch=pwr3 -w
  137.         RANLIB := ranlib
  138.   endif
  139.  
  140.   ifeq ($(HW_OS), pc_linux64)
  141.         CC := cc -m64 -fPIC
  142.         RANLIB := ranlib
  143.   endif
  144.  
  145.   ifeq ($(HW_OS), pc_linux)
  146.         CC := gcc
  147.         RANLIB := ranlib
  148.   endif
  149.  
  150.   ifeq ($(HW_OS), pc_linux_ia64)
  151.         CC := gcc
  152.         RANLIB := ranlib
  153.   endif
  154.  
  155.   ifneq (,$(findstring macosx,$(HW_OS)))
  156.     ifndef MAC_OS_MIN_VERSION
  157.       MAC_OS_MIN_VERSION := 10.5
  158.     endif
  159.  
  160.     # Select which compiler and MAC OS X SDK to use
  161.     MAC_GCC := g++
  162.     ifeq ($(MAC_OS_MIN_VERSION), 10.6)
  163.       MAC_OS_SDK := MacOSX10.6.sdk
  164.     else ifeq ($(MAC_OS_MIN_VERSION), 10.5)
  165.       MAC_OS_SDK := MacOSX10.5.sdk
  166.     else
  167.       MAC_OS_SDK := MacOSX10.4u.sdk
  168.       MAC_GCC := g++-4.0
  169.     endif
  170.   endif
  171.  
  172.   ifeq ($(HW_OS), powerpc_macosx)
  173.         CC := $(MAC_GCC) -arch ppc -isysroot /Developer/SDKs/$(MAC_OS_SDK) -mmacosx-version-min=$(MAC_OS_MIN_VERSION)
  174.         RANLIB := ranlib
  175.         AR := libtool -static -o
  176.         SYSLIBS := -framework CoreFoundation -framework IOKit -framework System
  177.   endif
  178.  
  179.   ifeq ($(HW_OS), universal_macosx)
  180.         CC := $(MAC_GCC) -arch ppc -arch i386 -isysroot /Developer/SDKs/$(MAC_OS_SDK) -mmacosx-version-min=$(MAC_OS_MIN_VERSION)
  181.         RANLIB := :
  182.         AR := libtool -static -o
  183.         SYSLIBS := -framework CoreFoundation -framework IOKit -framework System
  184.   endif
  185.  
  186.   ifeq ($(HW_OS), pc_linux_arm)
  187.         CC := arm-linux-g++
  188.         RANLIB := arm-linux-ranlib
  189.         AR := arm-linux-ar ruv
  190.   endif
  191.  
  192.   ifeq ($(HW_OS), pc_cygwin_arm)
  193.         CC := arm-unknown-linux-gnu-g++
  194.         RANLIB := arm-unknown-linux-gnu-ranlib
  195.         AR := arm-unknown-linux-gnu-ar ruv
  196.   endif
  197.  
  198.   ifeq ($(HW_OS),sgi_irix)
  199.    ifndef SGI_ABI
  200.       SGI_ABI := n32
  201.    endif
  202.    ifndef SGI_ARCH
  203.       SGI_ARCH := mips3
  204.    endif
  205.    OBJECT_DIR_SUFFIX := .$(SGI_ABI).$(SGI_ARCH)
  206.    CC := CC -$(SGI_ABI) -$(SGI_ARCH)
  207.    RANLIB := :
  208.   endif
  209.  
  210.   ifeq ($(HW_OS),hp700_hpux10)
  211.         CC := CC +a1
  212.   endif
  213.   ifeq ($(HW_OS),pc_cygwin)
  214.         CC := g++
  215.   endif
  216.   ifeq ($(HW_OS),sparc_sunos)
  217.         CC := /usr/local/lib/CenterLine/bin/CC
  218.   endif
  219.   ifeq ($(HW_OS), hp_flow_aCC)
  220.         CC := /opt/aCC/bin/aCC
  221.   endif
  222. endif
  223.  
  224. #ifeq ($(HW_OS),sparc_solaris)
  225. #  AR := /usr/ccs/bin/ar
  226. #endif
  227.  
  228. ##########################
  229. # directories
  230. #
  231.  
  232. # subdirectory for make
  233. ifeq ($(FORCE_GPP),1)
  234. OBJECT_DIR       := $(HW_OS)$(OBJECT_DIR_SUFFIX)/g++
  235. SOBJECT_DIR      := $(HW_OS)$(OBJECT_DIR_SUFFIX)/g++/server
  236. AOBJECT_DIR      := $(HW_OS)$(OBJECT_DIR_SUFFIX)/atmellib
  237. else
  238. UNQUAL_OBJECT_DIR := $(HW_OS)$(OBJECT_DIR_SUFFIX)
  239. UNQUAL_SOBJECT_DIR := $(HW_OS)$(OBJECT_DIR_SUFFIX)/server
  240. UNQUAL_AOBJECT_DIR := $(HW_OS)$(OBJECT_DIR_SUFFIX)/atmellib
  241. OBJECT_DIR       := $(HW_OS)$(OBJECT_DIR_SUFFIX)
  242. SOBJECT_DIR      := $(HW_OS)$(OBJECT_DIR_SUFFIX)/server
  243. AOBJECT_DIR      := $(HW_OS)$(OBJECT_DIR_SUFFIX)/atmellib
  244. endif
  245.  
  246. # directories that we can do an rm -f on because they only contain
  247. # object files and executables
  248. SAFE_KNOWN_ARCHITECTURES :=     \
  249.         hp700_hpux/* \
  250.         hp700_hpux10/* \
  251.         mips_ultrix/* \
  252.         pc_linux/* \
  253.         sgi_irix.32/* \
  254.         sgi_irix.n32/* \
  255.         sparc_solaris/* \
  256.         sparc_solaris_64/* \
  257.         sparc_sunos/* \
  258.         pc_cygwin/* \
  259.         powerpc_aix/* \
  260.         pc_linux_arm/* \
  261.         powerpc_macosx/* \
  262.         universal_macosx/* \
  263.         pc_linux64/* \
  264.         pc_linux_ia64/*
  265.  
  266. CLIENT_SKA = $(patsubst %,client_src/%,$(SAFE_KNOWN_ARCHITECTURES))
  267. SERVER_SKA = $(patsubst %,server_src/%,$(SAFE_KNOWN_ARCHITECTURES))
  268.  
  269. ##########################
  270. # Include flags
  271. #
  272.  
  273. #SYS_INCLUDE := -I/usr/local/contrib/include -I/usr/local/contrib/mod/include
  274. SYS_INCLUDE :=
  275.  
  276. ifeq ($(HW_OS),powerpc_macosx)
  277. #  SYS_INCLUDE := -I/usr/include
  278.    SYS_INCLUDE :=-DMACOSX -I../isense
  279. endif
  280.  
  281. ifeq ($(HW_OS),universal_macosx)
  282. #  SYS_INCLUDE := -I/usr/include
  283.    SYS_INCLUDE :=-DMACOSX -I../isense
  284. endif
  285.  
  286. ifeq ($(HW_OS),pc_linux)
  287.         # The following is for the InterSense and Freespace libraries.
  288.         SYS_INCLUDE := -DUNIX -DLINUX -I../libfreespace/include -I./submodules/hidapi/hidapi -I/usr/include/libusb-1.0
  289. endif
  290.  
  291. ifeq ($(HW_OS),pc_linux64)
  292.         # The following is for the InterSense and Freespace libraries.
  293.         SYS_INCLUDE := -DUNIX -DLINUX -I../libfreespace/include -I./submodules/hidapi/hidapi -I/usr/include/libusb-1.0
  294. endif
  295.  
  296. ifeq ($(HW_OS),pc_linux_arm)
  297.   SYS_INCLUDE := -I/opt/Embedix/arm-linux/include
  298. #   -I/usr/local/contrib/include \
  299. #                -I/usr/local/contrib/mod/include -I/usr/include/bsd \
  300. #                -I/usr/include/g++
  301. endif
  302.  
  303. ifeq ($(HW_OS),pc_cygwin_arm)
  304.   SYS_INCLUDE := -I/opt/Embedix/arm-linux/include
  305. #   -I/usr/local/contrib/include \
  306. #                -I/usr/local/contrib/mod/include -I/usr/include/bsd \
  307. #                -I/usr/include/g++
  308. endif
  309.  
  310. ifeq ($(HW_OS),sgi_irix)
  311. #  SYS_INCLUDE := -I/usr/local/contrib/mod/include
  312.   SYS_INCLUDE :=
  313. endif
  314.  
  315. ifeq ($(HW_OS),hp700_hpux10)
  316.   SYS_INCLUDE := -I/usr/local/contrib/include -I/usr/local/contrib/mod/include \
  317.                  -I/usr/include/bsd
  318. endif
  319.  
  320. ifeq ($(HW_OS),hp_flow)
  321.   SYS_INCLUDE := -I/usr/local/contrib/include -I/usr/local/contrib/mod/include \
  322.                  -I/usr/include/bsd -DFLOW
  323. endif
  324.  
  325. ifeq ($(HW_OS),hp_flow_aCC)
  326.   SYS_INCLUDE := -I/usr/local/contrib/include -I/usr/local/contrib/mod/include \
  327.                  -I/usr/include/bsd -DFLOW
  328. endif
  329.  
  330. # On the PC, place quatlib in the directory ./quat.  No actual system
  331. # includes should be needed.
  332. ifeq ($(HW_OS),pc_cygwin)
  333.   INCLUDE_FLAGS := -I. -I./quat -I./atmellib
  334. else
  335.   INCLUDE_FLAGS := -I. $(SYS_INCLUDE) -I./quat -I../quat -I./atmellib
  336. endif
  337.  
  338.  
  339. ifeq ($(HW_OS),universal_macosx)
  340.         LOAD_FLAGS := $(LOAD_FLAGS)
  341. endif
  342.  
  343. ##########################
  344. # Load flags
  345. #
  346.  
  347. #LOAD_FLAGS := -L./$(HW_OS)$(OBJECT_DIR_SUFFIX) -L/usr/local/lib \
  348. #               -L/usr/local/contrib/unmod/lib -L/usr/local/contrib/mod/lib -g
  349. LOAD_FLAGS := -L./$(HW_OS)$(OBJECT_DIR_SUFFIX) -L/usr/local/lib \
  350.                 -L/usr/local/contrib/unmod/lib -L/usr/local/contrib/mod/lib $(DEBUG_FLAGS) $(LDFLAGS)
  351.  
  352. ifeq ($(HW_OS),sgi_irix)
  353.         LOAD_FLAGS := $(LOAD_FLAGS) -old_ld
  354. endif
  355.  
  356. ifeq ($(HW_OS),pc_linux)
  357.         LOAD_FLAGS := $(LOAD_FLAGS) -L/usr/X11R6/lib
  358. endif
  359.  
  360. ifeq ($(HW_OS),pc_linux_ia64)
  361.         LOAD_FLAGS := $(LOAD_FLAGS) -L/usr/X11R6/lib
  362. endif
  363.  
  364. ifeq ($(HW_OS),pc_linux64)
  365.         LOAD_FLAGS := $(LOAD_FLAGS) -L/usr/X11R6/lib
  366. endif
  367.  
  368. ifeq ($(HW_OS),powerpc_macosx)
  369.         LOAD_FLAGS := $(LOAD_FLAGS)
  370. endif
  371.  
  372.  
  373. ##########################
  374. # Libraries
  375. #
  376.  
  377. ifeq ($(HW_OS),pc_linux64)
  378.           ARCH_LIBS := -lbsd -ldl
  379. else
  380.   ifeq ($(HW_OS),pc_linux)
  381.           ARCH_LIBS := -lbsd -ldl
  382.   else
  383.     ifeq ($(HW_OS),pc_linux_ia64)
  384.           ARCH_LIBS := -lbsd -ldl
  385.     else
  386.       ifeq ($(HW_OS),sparc_solaris)
  387.           ARCH_LIBS := -lsocket -lnsl
  388.       else
  389.         ifeq ($(HW_OS),sparc_solaris_64)
  390.           ARCH_LIBS := -lsocket -lnsl
  391.         else
  392.           ARCH_LIBS :=
  393.         endif
  394.       endif
  395.     endif
  396.   endif
  397. endif
  398.  
  399. LIBS := -lquat -lsdi $(TCL_LIBS) -lXext -lX11 $(ARCH_LIBS) -lm
  400.  
  401. #
  402. # Defines for the compilation, CFLAGS
  403. #
  404.  
  405. #CFLAGS          := $(INCLUDE_FLAGS) -g
  406. override CFLAGS          := $(INCLUDE_FLAGS) $(DEBUG_FLAGS) $(CFLAGS)
  407. override CXXFLAGS     := $(INCLUDE_FLAGS) $(DEBUG_FLAGS) $(CXXFLAGS)
  408.  
  409. # If we're building for sgi_irix, we need both g++ and non-g++ versions,
  410. # unless we're building for one of the weird ABIs, which are only supported
  411. # by the native compiler.
  412.  
  413. ifeq ($(HW_OS),sgi_irix)
  414.   ifeq ($(SGI_ABI),32)
  415. all:    client server client_g++ server_g++ atmellib
  416.   else
  417. all:    client server atmellib
  418.   endif
  419. else
  420.   ifeq ($(HW_OS),pc_cygwin)
  421. all:    client server atmellib
  422.   else
  423. all:    client server atmellib
  424.   endif
  425. endif
  426.  
  427. .PHONY: client_g++
  428. client_g++:
  429.         $(MAKE) FORCE_GPP=1 $(UNQUAL_OBJECT_DIR)/g++/libvrpn.a
  430.         $(MV) $(UNQUAL_OBJECT_DIR)/g++/libvrpn.a $(UNQUAL_OBJECT_DIR)/libvrpn_g++.a
  431.  
  432. .PHONY: server_g++
  433. server_g++:
  434.         $(MAKE) FORCE_GPP=1 $(UNQUAL_OBJECT_DIR)/g++/libvrpnserver.a
  435.         $(MV) $(UNQUAL_OBJECT_DIR)/g++/libvrpnserver.a $(UNQUAL_OBJECT_DIR)/libvrpnserver_g++.a
  436.  
  437. .PHONY: client
  438. client: $(OBJECT_DIR) $(OBJECT_DIR)/libvrpn.a
  439.  
  440. .PHONY: server
  441. server: $(SOBJECT_DIR)
  442.         $(MAKE) $(OBJECT_DIR)/libvrpnserver.a
  443.  
  444. .PHONY: atmellib
  445. atmellib: $(AOBJECT_DIR)
  446.         $(MAKE) $(OBJECT_DIR)/libvrpnatmel.a
  447.  
  448. $(OBJECT_DIR):
  449.         -mkdir -p $(OBJECT_DIR)
  450.  
  451. $(SOBJECT_DIR):
  452.         -mkdir -p $(SOBJECT_DIR)
  453.  
  454. $(AOBJECT_DIR):
  455.         -mkdir -p $(AOBJECT_DIR)
  456.  
  457. #############################################################################
  458. #
  459. # implicit rule for all .c files
  460. #
  461. .SUFFIXES:      .c .C .o .a
  462.  
  463. .c.o:
  464.         $(CC) -c $(CFLAGS) $<
  465. .C.o:
  466.         $(CC) -c $(CXXFLAGS) $<
  467.  
  468. # Build objects from .c files
  469. $(OBJECT_DIR)/%.o: %.c $(LIB_INCLUDES) $(MAKEFILE)
  470.         @[ -d $(OBJECT_DIR) ] || mkdir -p $(OBJECT_DIR)
  471.         $(CC) $(CFLAGS) -DVRPN_CLIENT_ONLY -o $@ -c $<
  472.  
  473. # Build objects from .C files
  474. $(OBJECT_DIR)/%.o: %.C $(LIB_INCLUDES) $(MAKEFILE)
  475.         @[ -d $(OBJECT_DIR) ] || mkdir -p $(OBJECT_DIR)
  476.         $(CC) $(CFLAGS) -DVRPN_CLIENT_ONLY -o $@ -c $<
  477.  
  478. # Build objects from .C files
  479. $(SOBJECT_DIR)/%.o: %.C $(SLIB_INCLUDES) $(MAKEFILE)
  480.         @[ -d $(SOBJECT_DIR) ] || mkdir -p $(SOBJECT_DIR)
  481.         $(CC) $(CFLAGS) -o $@ -c $<
  482.  
  483. # Build objects from .C files
  484. $(AOBJECT_DIR)/%.o: %.C $(ALIB_INCLUDES) $(MAKEFILE)
  485.         @[ -d $(AOBJECT_DIR) ] || mkdir -p $(AOBJECT_DIR)
  486.         $(CC) $(CFLAGS) -o $@ -c $<
  487.  
  488. # Special rule for vrpn_Local_HIDAPI.C, which must be build with
  489. # the C compiler.
  490. $(SOBJECT_DIR)/vrpn_Local_HIDAPI.o : vrpn_Local_HIDAPI.C $(SLIB_INCLUDES) $(MAKEFILE)
  491.         @[ -d $(SOBJECT_DIR) ] || mkdir -p $(SOBJECT_DIR)
  492.         $(CC) $(CFLAGS) -x c -o $@ -c $<
  493.  
  494. #
  495. #
  496. #############################################################################
  497.  
  498. #############################################################################
  499. #
  500. # library code
  501. #
  502. #############################################################################
  503.  
  504. # files to be compiled into the client library
  505.  
  506. LIB_FILES =  \
  507.         vrpn_Analog.C \
  508.         vrpn_Analog_Output.C \
  509.         vrpn_Auxiliary_Logger.C \
  510.         vrpn_BaseClass.C \
  511.         vrpn_Button.C \
  512.         vrpn_Connection.C \
  513.         vrpn_Dial.C \
  514.         vrpn_FileConnection.C \
  515.         vrpn_FileController.C \
  516.         vrpn_ForceDevice.C \
  517.         vrpn_Forwarder.C \
  518.         vrpn_ForwarderController.C \
  519.         vrpn_Imager.C \
  520.         vrpn_LamportClock.C \
  521.         vrpn_Mutex.C \
  522.         vrpn_Poser.C \
  523.         vrpn_RedundantTransmission.C \
  524.         vrpn_Serial.C \
  525.         vrpn_Shared.C \
  526.         vrpn_SharedObject.C \
  527.         vrpn_Sound.C \
  528.         vrpn_Text.C \
  529.         vrpn_Tracker.C
  530.  
  531. LIB_OBJECTS = $(patsubst %,$(OBJECT_DIR)/%,$(LIB_FILES:.C=.o))
  532.  
  533. LIB_INCLUDES = \
  534.         vrpn_Connection.h \
  535.         vrpn_Tracker.h \
  536.         vrpn_Button.h \
  537.         vrpn_Sound.h \
  538.         vrpn_ForceDevice.h \
  539.         vrpn_Shared.h \
  540.         vrpn_Analog.h \
  541.         vrpn_FileConnection.h \
  542.         vrpn_FileController.h \
  543.         vrpn_Forwarder.h \
  544.         vrpn_Text.h \
  545.         vrpn_ForwarderController.h \
  546.         vrpn_Serial.h \
  547.         vrpn_Dial.h \
  548.         vrpn_SharedObject.h \
  549.         vrpn_LamportClock.h \
  550.         vrpn_Mutex.h \
  551.         vrpn_BaseClass.h \
  552.         vrpn_Imager.h \
  553.         vrpn_Analog_Output.h \
  554.         vrpn_Poser.h \
  555.         vrpn_Auxiliary_Logger.h
  556.  
  557. $(LIB_OBJECTS):
  558. $(OBJECT_DIR)/libvrpn.a: $(MAKEFILE) $(LIB_OBJECTS)
  559.         $(AR) $(OBJECT_DIR)/libvrpn.a $(LIB_OBJECTS)
  560.         -$(RANLIB) $(OBJECT_DIR)/libvrpn.a
  561.  
  562. # We aren't going to use architecture-dependent sets of files.
  563. # If vrpn_sgibox isn't supposed to be compiled on any other architecture,
  564. # then put all of it inside "#ifdef sgi"!
  565.  
  566. SLIB_FILES =  $(LIB_FILES) \
  567.         vrpn_3DConnexion.C \
  568.         vrpn_3DMicroscribe.C \
  569.         vrpn_3Space.C \
  570.         vrpn_5DT16.C \
  571.         vrpn_ADBox.C \
  572.         vrpn_Analog_5dt.C \
  573.         vrpn_Analog_5dtUSB.C \
  574.         vrpn_Analog_Radamec_SPI.C \
  575.         vrpn_Analog_USDigital_A2.C \
  576.         vrpn_Atmel.C \
  577.         vrpn_Button_NI_DIO24.C \
  578.         vrpn_CerealBox.C \
  579.         vrpn_Dyna.C \
  580.         vrpn_DreamCheeky.C \
  581.         vrpn_Event_Analog.C \
  582.         vrpn_Event.C \
  583.         vrpn_Event_Mouse.C \
  584.         vrpn_Flock.C \
  585.         vrpn_Flock_Parallel.C \
  586.         vrpn_ForceDeviceServer.C \
  587.         vrpn_Freespace.C \
  588.         vrpn_FunctionGenerator.C \
  589.         vrpn_GlobalHapticsOrb.C \
  590.         vrpn_HumanInterface.C \
  591.         vrpn_Imager_Stream_Buffer.C \
  592.         vrpn_ImmersionBox.C \
  593.         vrpn_inertiamouse.C \
  594.         vrpn_JoyFly.C \
  595.         vrpn_Joylin.C \
  596.         vrpn_Keyboard.C \
  597.         vrpn_Local_HIDAPI.C \
  598.         vrpn_LUDL.C \
  599.         vrpn_Magellan.C \
  600.         vrpn_Mouse.C \
  601.         vrpn_NationalInstruments.C \
  602.         vrpn_nikon_controls.C \
  603.         vrpn_Poser_Analog.C \
  604.         vrpn_Poser_Tek4662.C \
  605.         vrpn_raw_sgibox.C \
  606.         vrpn_sgibox.C \
  607.         vrpn_Spaceball.C \
  608.         vrpn_Tng3.C \
  609.         vrpn_Tracker_3DMouse.C \
  610.         vrpn_Tracker_AnalogFly.C \
  611.         vrpn_Tracker_ButtonFly.C \
  612.         vrpn_Tracker_Crossbow.C \
  613.         vrpn_Tracker_DTrack.C \
  614.         vrpn_Tracker_Fastrak.C \
  615.         vrpn_Tracker_GameTrak.C \
  616.         vrpn_Tracker_isense.C \
  617.         vrpn_Tracker_Isotrak.C \
  618.         vrpn_Tracker_Liberty.C \
  619.         vrpn_Tracker_MotionNode.C \
  620.         vrpn_Tracker_NDI_Polaris.C \
  621.         vrpn_Tracker_PhaseSpace.C \
  622.         vrpn_Tracker_TrivisioColibri.C \
  623.         vrpn_Tracker_NovintFalcon.C \
  624.         vrpn_Tracker_WiimoteHead.C \
  625.         vrpn_UNC_Joystick.C \
  626.         vrpn_VPJoystick.C \
  627.         vrpn_Wanda.C \
  628.         vrpn_WiiMote.C \
  629.         vrpn_Xkeys.C \
  630.         vrpn_Zaber.C
  631.  
  632. SLIB_OBJECTS = $(patsubst %,$(SOBJECT_DIR)/%,$(SLIB_FILES:.C=.o))
  633.  
  634. SLIB_INCLUDES = $(LIB_INCLUDES) \
  635.         vrpn_3DConnexion.h \
  636.         vrpn_3DMicroscribe.h \
  637.         vrpn_3Space.h \
  638.         vrpn_5DT16.h \
  639.         vrpn_ADBox.h \
  640.         vrpn_Analog_5dt.h \
  641.         vrpn_Analog_5dtUSB.h \
  642.         vrpn_Analog_Radamec_SPI.h \
  643.         vrpn_Analog_USDigital_A2.h \
  644.         vrpn_Atmel.h \
  645.         vrpn_Button_NI_DIO24.h \
  646.         vrpn_CerealBox.h \
  647.         vrpn_Dyna.h \
  648.         vrpn_DreamCheeky.h \
  649.         vrpn_Event_Analog.h \
  650.         vrpn_Event.h \
  651.         vrpn_Event_Mouse.h \
  652.         vrpn_Flock.h \
  653.         vrpn_Flock_Parallel.h \
  654.         vrpn_ForceDeviceServer.h \
  655.         vrpn_Freespace.h \
  656.         vrpn_GlobalHapticsOrb.h \
  657.         vrpn_HumanInterface.h \
  658.         vrpn_Imager_Stream_Buffer.h \
  659.         vrpn_ImmersionBox.h \
  660.         vrpn_inertiamouse.h \
  661.         vrpn_JoyFly.h \
  662.         vrpn_Joylin.h \
  663.         vrpn_Keyboard.h \
  664.         vrpn_LUDL.h \
  665.         vrpn_Magellan.h \
  666.         vrpn_Mouse.h \
  667.         vrpn_NationalInstruments.h \
  668.         vrpn_nikon_controls.h \
  669.         vrpn_Poser_Analog.h \
  670.         vrpn_Poser_Tek4662.h \
  671.         vrpn_raw_sgibox.h \
  672.         vrpn_sgibox.h \
  673.         vrpn_Spaceball.h \
  674.         vrpn_Tng3.h \
  675.         vrpn_Tracker_3DMouse.h \
  676.         vrpn_Tracker_AnalogFly.h \
  677.         vrpn_Tracker_ButtonFly.h \
  678.         vrpn_Tracker_Crossbow.h \
  679.         vrpn_Tracker_DTrack.h \
  680.         vrpn_Tracker_Fastrak.h \
  681.         vrpn_Tracker_GameTrak.h \
  682.         vrpn_Tracker_isense.h \
  683.         vrpn_Tracker_Isotrak.h \
  684.         vrpn_Tracker_Liberty.h \
  685.         vrpn_Tracker_MotionNode.h \
  686.         vrpn_Tracker_NDI_Polaris.h \
  687.         vrpn_Tracker_PhaseSpace.h \
  688.         vrpn_Tracker_TrivisioColibri.h \
  689.         vrpn_Tracker_NovintFalcon.h \
  690.         vrpn_Tracker_WiimoteHead.h \
  691.         vrpn_UNC_Joystick.h \
  692.         vrpn_VPJoystick.h \
  693.         vrpn_Wanda.h \
  694.         vrpn_WiiMote.h \
  695.         vrpn_Xkeys.h \
  696.         vrpn_Zaber.h
  697.  
  698. $(SLIB_OBJECTS):
  699. $(OBJECT_DIR)/libvrpnserver.a: $(MAKEFILE) $(SLIB_OBJECTS)
  700.         $(AR) $(OBJECT_DIR)/libvrpnserver.a $(SLIB_OBJECTS)
  701.         -$(RANLIB) $(OBJECT_DIR)/libvrpnserver.a
  702.  
  703. # atmellib files.
  704.  
  705. ALIB_FILES = \
  706.         atmellib/vrpn_atmellib_helper.C \
  707.         atmellib/vrpn_atmellib_iobasic.C \
  708.         atmellib/vrpn_atmellib_openclose.C \
  709.         atmellib/vrpn_atmellib_register.C \
  710.         atmellib/vrpn_atmellib_tester.C
  711.  
  712. ALIB_OBJECTS = $(patsubst %,$(AOBJECT_DIR)/../%,$(ALIB_FILES:.C=.o))
  713.  
  714. ALIB_INCLUDES =  \
  715.         vrpn_atmellib.h \
  716.         vrpn_atmellib_helper.h \
  717.         vrpn_atmellib_errno.h
  718.  
  719. $(ALIB_OBJECTS):
  720. $(OBJECT_DIR)/libvrpnatmel.a: $(MAKEFILE) $(ALIB_OBJECTS)
  721.         $(AR) $(OBJECT_DIR)/libvrpnatmel.a $(ALIB_OBJECTS)
  722.         -$(RANLIB) $(OBJECT_DIR)/libvrpnatmel.a
  723.  
  724. #############################################################################
  725. #
  726. # other stuff
  727. #
  728. #############################################################################
  729.  
  730. .PHONY: clean
  731. clean:
  732. ifeq ($(HW_OS),)
  733.                 echo "Must specify HW_OS !"
  734. else
  735.         $(RMF) $(LIB_OBJECTS) $(OBJECT_DIR)/libvrpn.a \
  736.                $(OBJECT_DIR)/libvrpn_g++.a \
  737.                $(SLIB_OBJECTS) \
  738.                $(ALIB_OBJECTS) \
  739.                $(OBJECT_DIR)/libvrpnserver.a \
  740.                $(OBJECT_DIR)/libvrpnatmel.a \
  741.                $(OBJECT_DIR)/libvrpnserver_g++.a \
  742.                $(OBJECT_DIR)/.depend \
  743.                $(OBJECT_DIR)/.depend-old
  744. ifneq (xxx$(FORCE_GPP),xxx1)
  745.         @echo -----------------------------------------------------------------
  746.         @echo -- Wart: type \"$(MAKE) clean_g++\" to clean up after g++
  747.         @echo -- I don\'t do it automatically in case you don\'t have g++
  748.         @echo -----------------------------------------------------------------
  749. endif
  750. #ifneq ($(CC), g++)
  751. #       $(MAKE) FORCE_GPP=1 clean
  752. #endif
  753. endif
  754.  
  755. .PHONY: clean
  756. clean_g++:
  757.         $(MAKE) FORCE_GPP=1 clean
  758.  
  759.  
  760. # clobberall removes the object directory for EVERY architecture.
  761. # One problem - the object directory for pc_win32 also contains files
  762. # that must be saved.
  763. # clobberall also axes left-over CVS cache files.
  764.  
  765. .PHONY: clobberall
  766. clobberall:     clobberwin32
  767.         $(RMF) -r $(SAFE_KNOWN_ARCHITECTURES)
  768.         $(RMF) -r $(CLIENT_SKA)
  769.         $(RMF) -r $(SERVER_SKA)
  770.         $(RMF) .#* server_src/.#* client_src/.#*
  771.  
  772. .PHONY: clobberwin32
  773. clobberwin32:
  774.         $(RMF) -r pc_win32/DEBUG/*
  775.         $(RMF) -r pc_win32/vrpn/Debug/*
  776.         $(RMF) -r client_src/pc_win32/printvals/Debug/*
  777.         $(RMF) -r server_src/pc_win32/vrpn_server/Debug/*
  778.  
  779. install: all
  780.         -mkdir -p $(LIB_DIR)
  781.         ( cd $(LIB_DIR) ; rm -f libvrpn*.a )
  782.         ( cd $(OBJECT_DIR) ; cp *.a $(LIB_DIR) )
  783.         -mkdir -p $(INCLUDE_DIR)
  784.         cp vrpn*.h $(INCLUDE_DIR)
  785.  
  786. uninstall:
  787.         ( cd $(LIB_DIR) ; rm -f libvrpn*.a )
  788.         ( cd $(INCLUDE_DIR) ; rm -f vrpn*.h )
  789.  
  790. #############################################################################
  791. #
  792. # Dependencies
  793. #
  794. #   If it doesn't already exist, this makefile automatically creates
  795. #   a dependency file called .depend.  Then it includes it so that
  796. #   the build will know the dependency information.
  797. #
  798. #   to recreate a dependencies file, type  "make depend"
  799. #   do this any time you add a file to the project,
  800. #   or add/remove #include lines from a source file
  801. #
  802. #   if you are on an SGI and want g++ to make the dependency file,
  803. #   then type:    gmake CC=g++ depend
  804. #
  805. #   if you don't want a dependency file, then remove .depend if it exists,
  806. #   and type "touch .depend".  if it exists (and is empty), make will not
  807. #   automatically create it or automatically update it (unless you type
  808. #   make depend)
  809. #
  810.  
  811. ###############
  812. ### this way works better
  813. ###    you type "make depend" anytime you add a file or
  814. ###    add/remove #includes from a file
  815. ########
  816.  
  817. include $(OBJECT_DIR)/.depend
  818.  
  819. .PHONY: depend
  820. depend:
  821.         -$(MVF) $(OBJECT_DIR)/.depend $(OBJECT_DIR)/.depend-old
  822.         $(MAKE) $(OBJECT_DIR)/.depend
  823.  
  824. $(OBJECT_DIR)/.depend:
  825.         @echo ----------------------------------------------------------------
  826.         @echo -- Making dependency file.  If you add files to the makefile,
  827.         @echo -- or add/remove includes from a .h or .C file, then you should
  828.         @echo -- remake the dependency file by typing \"$(MAKE) depend\"
  829.         @echo ----------------------------------------------------------------
  830.         -mkdir -p $(OBJECT_DIR)
  831. ifeq ($(HW_OS),hp700_hpux10)
  832.         @echo -- $(HW_OS): Using g++ since HP CC does not understand -M
  833.         @echo -- if this causes an error, then delete .depend and type
  834.         @echo -- \"touch .depend\" to create an empty file
  835.         @echo ----------------------------------------------------------------
  836.         $(SHELL) -ec 'g++ -MM $(CXXFLAGS) $(LIB_FILES) \
  837.             | sed '\''s/\(.*\.o[ ]*:[ ]*\)/$(OBJECT_DIR)\/\1/g'\'' > $(OBJECT_DIR)/.depend'
  838. else
  839.   ifeq ($(HW_OS),hp_flow_aCC)
  840.         @echo -- $(HW_OS): Using g++ since HP aCC does not understand -M
  841.         @echo -- if this causes an error, then delete .depend and type
  842.         @echo -- \"touch .depend\" to create an empty file
  843.         @echo ----------------------------------------------------------------
  844.         $(SHELL) -ec 'g++ -MM $(CXXFLAGS) $(LIB_FILES) \
  845.             | sed '\''s/\(.*\.o[ ]*:[ ]*\)/$(OBJECT_DIR)\/\1/g'\'' > $(OBJECT_DIR)/.depend'
  846.   else
  847.     ifeq ($(HW_OS),powerpc_aix)
  848.         @$(RMF) *.u
  849.         $(SHELL) -ec '$(CC) -E -M $(CFLAGS) $(LIB_FILES) > /dev/null 2>&1'
  850.         cat *.u > .depend
  851.         @$(RMF) *.u
  852.     else
  853.         $(SHELL) -ec '$(CC) -M $(CFLAGS) $(LIB_FILES) \
  854.             | sed '\''s/\(.*\.o[ ]*:[ ]*\)/$(OBJECT_DIR)\/\1/g'\'' > $(OBJECT_DIR)/.depend'
  855.     endif
  856.   endif
  857. endif
  858.         @echo ----------------------------------------------------------------