]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
more autoconf- and automake-fu
authorSage Weil <sage@newdream.net>
Mon, 28 Jan 2008 19:05:29 +0000 (11:05 -0800)
committerSage Weil <sage@newdream.net>
Mon, 28 Jan 2008 19:05:29 +0000 (11:05 -0800)
AUTHORS
configure.ac
src/Makefile [deleted file]
src/Makefile.am
src/Makefile.old [new file with mode: 0644]
src/include/atomic.h
src/include/buffer.h

diff --git a/AUTHORS b/AUTHORS
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..7850907649143b4361e352251d0cf388af4a6feb 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -0,0 +1,13 @@
+Ceph core
+---------
+
+Sage Weil <sage@newdream.net>
+
+
+Kernel client
+-------------
+
+Sage Weil <sage@newdream.net>
+Patience Warnick <patience@newdream.net>
+Yehuda Sadeh-Weinraub <yehudasa@gmail.com>
+
index a7a074009da57e98c2c74a9851df15a4aca82cde..ad04760118f111223492eea94a7015a5da1c839e 100644 (file)
@@ -7,25 +7,65 @@ AC_INIT([Ceph distributed file system], [.1],
              [ceph])
 AM_INIT_AUTOMAKE(ceph, 0.1)
 
-
 # Checks for programs.
 AC_PROG_CXX
 AC_PROG_CC
 AC_PROG_RANLIB
+AC_PROG_MAKE_SET
+
 
 # Checks for libraries.
-# FIXME: Replace `main' with a function in `-lccgnu2':
-AC_CHECK_LIB([ccgnu2], [main])
-# FIXME: Replace `main' with a function in `-ldb_cxx':
-AC_CHECK_LIB([db_cxx], [main])
-# FIXME: Replace `main' with a function in `-ldl':
-AC_CHECK_LIB([dl], [main])
-# FIXME: Replace `main' with a function in `-lfuse':
-AC_CHECK_LIB([fuse], [main])
-# FIXME: Replace `main' with a function in `-lm':
-AC_CHECK_LIB([m], [main])
-# FIXME: Replace `main' with a function in `-lpthread':
-AC_CHECK_LIB([pthread], [main])
+AC_CHECK_LIB([m], [pow])
+AC_CHECK_LIB([pthread], [pthread_create])
+
+# fuse?
+AC_ARG_WITH([fuse],
+            [AS_HELP_STRING([--with-fuse]),
+              [use FUSE library for client])],
+            [],
+            [with_fuse=check])
+LIBFUSE=
+AS_IF([test "x$with_fuse" != xno],
+           [AC_CHECK_LIB([fuse], [fuse_main],
+             [AC_SUBST([LIBFUSE], ["-lfuse"])
+               AC_DEFINE([HAVE_LIBFUSE], [1],
+                         [Define if you have fuse])
+               HAVE_LIBFUSE=1
+              ],
+             [if test "x$with_fuse" != xcheck; then
+                 AC_MSG_FAILURE(
+                   [--with-fuse was given, but test failed])
+               fi
+             ])])
+AM_CONDITIONAL(WITH_FUSE, [test "$HAVE_LIBFUSE" = "1"])
+
+# CommonC++?
+AC_ARG_WITH([ccgnu],
+            [AS_HELP_STRING([--with-ccgnu]),
+              [use CommonC++ library for fast thread-safe reference counting])],
+            [],
+            [with_ccgnu=check])
+LIBCCGNU2=
+AS_IF([test "x$with_ccgnu" != xno],
+           [AC_CHECK_LIB([ccgnu2], [main],
+             [AC_SUBST([LIBCCGNU2], ["-lccgnu2"])
+              AC_DEFINE([WITH_CCGNU], [1],
+                        [Define if you have ccgnu])
+             LIBS="-lccgnu2 $LIBS"
+             ],
+             [if test "x$with_ccgnu" != xcheck; then
+                 AC_MSG_FAILURE(
+                   [--with-ccgnu was given, but test failed])
+               fi
+             ], [-ldl -lpthread])])
+AM_CONDITIONAL(WITH_CCGNU, test "WITH_CCGNU" = "1")
+
+# newsyn?  requires mpi.
+AC_ARG_WITH([newsyn],
+            [AS_HELP_STRING([--with-newsyn]),
+              [build newsyn target, requires mpi]],
+            [],
+            [with_newsyn=no])
 
 # Checks for header files.
 AC_HEADER_DIRENT
@@ -80,6 +120,4 @@ AC_CONFIG_FILES([Makefile
        src/Makefile])
 AC_OUTPUT
 
-AC_PROG_MAKE_SET
-
 AM_INIT_AUTOMAKE
diff --git a/src/Makefile b/src/Makefile
deleted file mode 100644 (file)
index ab1ee7d..0000000
+++ /dev/null
@@ -1,334 +0,0 @@
-#
-# until autoconf is set up, here are the options i understand:
-#
-#  darwin=yes    -- build on darwin
-#  fuse=no       -- don't build anything requiring FUSE
-#  mpi=no        -- don't build newsyn (require MPI)
-#  use_ccpp=yes  -- use Common C++ for buffer.h reference counting
-#  want_bdb=yes  -- build berkelydb objectstore
-# 
-
-# mpicxx must be on your path to build newsyn.  
-#  on googoo, this means that /usr/local/mpich2-1.0.2/bin must be on your path.
-#  on issdm, it's /usr/local/mpich2/bin.
-
-# Hook for extra -I options, etc.
-EXTRA_CFLAGS = #-I${HOME}/include -L${HOME}/lib
-EXTRA_CFLAGS += -g
-EXTRA_CFLAGS += -pg
-#EXTRA_CFLAGS += -O3
-
-# base
-CFLAGS = -Wall -I. -D_FILE_OFFSET_BITS=64 -D_REENTRANT -D_THREAD_SAFE ${EXTRA_CFLAGS}
-LDINC = ld -i -o
-CXX = g++
-CC = gcc
-LIBS = -pthread
-
-# darwin?
-ifeq ($(target),darwin)
-CFLAGS += -DDARWIN -D__FreeBSD__=10
-LDINC = ar -rc
-endif
-
-# use Common C++ (for buffer.h)?
-ifeq ($(use_ccpp),yes)
-CFLAGS += -D_GNU_SOURCE -DBUFFER_USE_CCPP
-LIBS += -lccgnu2 -ldl
-endif
-
-
-#for normal mpich2 machines
-MPICC = mpicxx
-MPICFLAGS = -DMPICH_IGNORE_CXX_SEEK ${CFLAGS}
-MPILIBS = ${LIBS}
-
-#for LLNL boxes without mpicxx
-#MPICC = g++
-#MPICFLAGS = ${CFLAGS} -I/usr/lib/mpi/mpi_gnu/include -L/usr/lib/mpi/mpi_gnu/lib
-#MPILIBS = ${LIBS} -lelan -lmpi
-
-EBOFS_OBJS= \
-       ebofs/BlockDevice.o\
-       ebofs/BufferCache.o\
-       ebofs/Ebofs.o\
-       ebofs/Allocator.o\
-       ebofs/FileJournal.o
-
-MDS_OBJS= \
-       mds/MDS.o\
-       mds/journal.o\
-       mds/Server.o\
-       mds/MDCache.o\
-       mds/Locker.o\
-       mds/Migrator.o\
-       mds/MDBalancer.o\
-       mds/CDentry.o\
-       mds/CDir.o\
-       mds/CInode.o\
-       mds/AnchorTable.o\
-       mds/AnchorClient.o\
-       mds/LogEvent.o\
-       mds/IdAllocator.o\
-       mds/SessionMap.o\
-       mds/MDLog.o
-
-OSD_OBJS= \
-       osd/PG.o\
-       osd/ReplicatedPG.o\
-       osd/RAID4PG.o\
-       osd/Ager.o\
-       osd/FakeStore.o\
-       osd/OSD.o
-
-OSDC_OBJS= \
-       osdc/Objecter.o\
-       osdc/ObjectCacher.o\
-       osdc/Filer.o\
-       osdc/Journaler.o
-
-MON_OBJS= \
-       mon/Monitor.o\
-       mon/Paxos.o\
-       mon/PaxosService.o\
-       mon/OSDMonitor.o\
-       mon/MDSMonitor.o\
-       mon/ClientMonitor.o\
-       mon/PGMonitor.o\
-       mon/Elector.o\
-       mon/MonitorStore.o
-
-COMMON_OBJS= \
-       msg/Message.o\
-       common/Logger.o\
-       common/Clock.o\
-       common/Timer.o\
-       mon/MonMap.o\
-       config.o
-
-CLIENT_OBJS= \
-       client/FileCache.o\
-       client/Client.o\
-       client/SyntheticClient.o\
-       client/Trace.o
-
-
-# bdbstore?
-ifeq ($(want_bdb),yes)
-CFLAGS += -DUSE_OSBDB
-LIBS = -ldb_cxx
-OSD_OBJS += osbdb/OSBDB.o
-OSBDB_OBJS = \
-       osbdb/OSBDB.o
-endif
-
-
-# targets
-TARGETS = cmon cosd cmds csyn mkmonmap cmonctl fakesyn dupstore
-SRCS=*.cc */*.cc *.h */*.h */*/*.h
-
-ifneq ($(fuse),no)
-TARGETS += cfuse fakefuse
-endif
-
-ifneq ($(mpi),no)
-TARGETS += newsyn
-endif
-
-all: depend ${TARGETS}
-
-
-# real bits
-mkmonmap: mkmonmap.cc common.o
-       ${CXX} ${CFLAGS} ${LIBS} $^ -o $@
-
-extractosdmaps: extractosdmaps.cc common.o osd.o mon.o ebofs.o
-       ${CXX} ${CFLAGS} ${LIBS} $^ -o $@
-
-cmon: cmon.o mon.o msg/SimpleMessenger.o common.o crush.o
-       ${CXX} ${CFLAGS} ${LIBS} $^ -o $@
-
-cmonctl: cmonctl.cc msg/SimpleMessenger.o common.o
-       ${CXX} ${CFLAGS} ${LIBS} $^ -o $@
-
-cosd: cosd.o osd.o ebofs.o msg/SimpleMessenger.o common.o crush.o
-       ${CXX} ${CFLAGS} ${LIBS} $^ -o $@
-
-cmds: cmds.o mds.o osdc.o msg/SimpleMessenger.o common.o crush.o
-       ${CXX} ${CFLAGS} ${LIBS} $^ -o $@
-
-csyn: csyn.o client.o osdc.o msg/SimpleMessenger.o common.o crush.o
-       ${CXX} ${CFLAGS} ${LIBS} $^ -o $@
-
-cfuse: cfuse.o client.o osdc.o client/fuse.o client/fuse_ll.o msg/SimpleMessenger.o common.o crush.o
-       ${CXX} ${CFLAGS} ${LIBS} -lfuse $^ -o $@
-
-
-# code shipping experiments
-activemaster: active/activemaster.cc client.o osdc.o msg/SimpleMessenger.o common.o
-       ${CXX} ${CFLAGS} ${LIBS} $^ -o $@
-
-activeslave: active/activeslave.cc client.o osdc.o msg/SimpleMessenger.o common.o
-       ${CXX} -ldl ${CFLAGS} ${LIBS} $^ -o $@
-
-echotestclient: active/echotestclient.cc
-       ${CXX} ${CFLAGS} ${LIBS} $^ -o $@
-
-msgtestclient: active/msgtestclient.o client.o osdc.o msg/SimpleMessenger.o common.o
-       ${CXX} ${CFLAGS} ${LIBS} $^ -o $@
-
-#libtrivialtask.so: active/trivial_task.cc client.o osdc.o msg/SimpleMessenger.o common.o
-#      ${CXX} -fPIC -shared -Wl,-soname,$@.1 ${CFLAGS}  ${LIBS} $^ -o $@
-
-libtrivialtask.so: active/trivial_task_ipc.cc ceph_ipc/ipc_client.o
-       ${CXX} -fPIC -shared -Wl,-soname,$@.1 ${CFLAGS}  ${LIBS} $^ -o $@
-
-
-libgreptask.so: active/grep_task.cc ceph_ipc/ipc_client.o
-       ${CXX} -fPIC -shared -Wl,-soname,$@.1 ${CFLAGS}  ${LIBS} $^ -o $@
-
-
-#libhadoopcephfs.so: client/hadoop/CephFSInterface.cc client.o osdc.o msg/SimpleMessenger.o common.o
-#      ${CXX} -fPIC -shared -Wl,-soname,$@.1 ${CFLAGS}  ${LIBS} $^ -o $@
-
-
-# IPC interface
-ipc_server: ceph_ipc/ipc_server.cc client.o osdc.o msg/SimpleMessenger.o common.o
-       ${CXX} ${CFLAGS} ${LIBS} $^ -o $@
-
-ipc_testclient: ceph_ipc/ipc_testclient.cc ceph_ipc/ipc_client.o
-       ${CXX} ${CFLAGS} ${LIBS} $^ -o $@
-
-
-# fake*
-fakefuse: fakefuse.o mon.o mds.o client.o osd.o osdc.o ebofs.o client/fuse.o client/fuse_ll.o msg/FakeMessenger.o common.o crush.o
-       ${CXX} ${CFLAGS} ${LIBS} -lfuse $^ -o $@
-
-fakesyn: fakesyn.o mon.o mds.o client.o osd.o ebofs.o osdc.o msg/FakeMessenger.o common.o crush.o
-       ${CXX} ${CFLAGS} ${LIBS} $^ -o $@
-
-
-# mpi startup
-newsyn: newsyn.cc mon.o mds.o client.o osd.o ebofs.o osdc.o msg/SimpleMessenger.o common.o crush.o
-       ${MPICC} ${MPICFLAGS} ${MPILIBS} $^ -o $@
-
-
-# ebofs
-mkfs.ebofs: ebofs/mkfs.ebofs.cc config.cc common/Clock.o ebofs.o
-       ${CXX} ${CFLAGS} ${LIBS} $^ -o $@
-
-test.ebofs: ebofs/test.ebofs.cc config.cc common/Clock.o ebofs.o
-       ${CXX} ${CFLAGS} ${LIBS} $^ -o $@
-
-streamtest.ebofs: ebofs/streamtest.cc config.cc common/Clock.o ebofs.o
-       ${CXX} ${CFLAGS} ${LIBS} $^ -o $@
-
-dupstore: dupstore.cc config.cc ebofs.o common/Clock.o common/Timer.o osd/FakeStore.o
-       ${CXX} ${CFLAGS} ${LIBS} $^ -o $@
-
-allebofs: mkfs.ebofs test.ebofs streamtest.ebofs dupstore
-
-
-# hadoop
-libhadoopcephfs.so: client/hadoop/CephFSInterface.cc client.o osdc.o msg/SimpleMessenger.o common.o
-       ${CXX} -fPIC -shared -Wl,-soname,$@.1 ${CFLAGS} -I/usr/local/java/include -I/usr/local/java/include/linux  ${LIBS} $^ -o $@
-
-# libceph
-libceph.o: client/ldceph.o client/Client.o msg/SimpleMessenger.o ${COMMON_OBJS} ${SYN_OBJS} ${OSDC_OBJS}
-       ${LDINC} $^ -o $@
-
-ldceph.so: libceph.o msg/SimpleMessenger.o
-       ${CXX} -shared -fPIC ${CFLAGS} $< -o $@
-
-
-# some benchmarking tools
-bench/mdtest/mdtest.o: bench/mdtest/mdtest.c
-       mpicc -c $^ -o $@
-
-mdtest: bench/mdtest/mdtest.o
-       ${MPICC} ${MPICFLAGS} ${MPILIBS} $^ -o $@
-
-mdtest.ceph: bench/mdtest/mdtest.o libceph.o
-       ${MPICC} ${MPICFLAGS} ${MPILIBS} $^ -o $@
-
-testos: test/testos.o ebofs.o osbdb.o common.o
-       ${CXX} ${CFLAGS} ${LIBS} ${OSBDB_LIBS} -o $@ $^
-
-
-# misc
-gprof-helper.so: test/gprof-helper.c
-       gcc -shared -fPIC test/gprof-helper.c -o gprof-helper.so -lpthread -ldl 
-
-test_disk_bw: test/test_disk_bw.cc common.o
-       ${CXX} ${CFLAGS} ${LIBS} $^ -o $@
-
-# crush
-# lameness: use .co extension for .c files
-%.co: %.c
-       ${CC} ${CFLAGS} -c $< -o $@
-
-crush.o: crush/builder.co crush/mapper.co crush/crush.co
-       ${LDINC} $@ $^
-
-# bits
-common.o: ${COMMON_OBJS}
-       ${LDINC} $@ $^
-
-ebofs.o: ${EBOFS_OBJS}
-       ${LDINC} $@ $^
-
-client.o: ${CLIENT_OBJS} 
-       ${LDINC} $@ $^
-
-osd.o: ${OSD_OBJS}
-       ${LDINC} $@ $^
-
-osdc.o: ${OSDC_OBJS}
-       ${LDINC} $@ $^
-
-mds.o: ${MDS_OBJS}
-       ${LDINC} $@ $^
-
-mon.o: ${MON_OBJS}
-       ${LDINC} $@ $^
-
-osbdb.o: ${OSBDB_OBJS}
-       ${LDINC} $@ $^
-
-# generic rules
-%.so: %.cc
-       ${CXX} -shared -fPIC ${CFLAGS} $< -o $@
-
-%.o: %.cc
-       ${CXX} ${CFLAGS} -c $< -o $@
-
-%.po: %.cc
-       ${CXX} -fPIC ${CFLAGS} -c $< -o $@
-
-
-# handy
-clean:
-       rm -f *.o */*.o crush/*.co ${TARGETS}
-
-count:
-       cat ${SRCS} | wc -l
-       cat ${SRCS} | grep -c \;
-
-TAGS:
-       etags `find . -name "*.[h|c|cc]"|grep -v '\.\#'`
-
-tags:
-       ctags `find . -name "*.[h|c|cc]"|grep -v '\.\#'`
-
-.depend:
-       touch .depend
-
-depend:
-       $(RM) .depend
-       makedepend -f- -- $(CFLAGS) -- $(SRCS) > .depend 2>/dev/null
-#      for f in $(SRCS) ; do cpp -MM $(CFLAGS) $$f 2> /dev/null >> .depend ; done
-
-
-# now add a line to include the dependency list.
-include .depend
-# DO NOT DELETE
index a2b28b51728deed429ab49ec1199bddb604a9654..1e167bf9f84cfc34d54659f888fc48014d20193d 100644 (file)
@@ -1,33 +1,65 @@
-AUTOMAKE_OPTIONS = gnu
-
-INCLUDES = 
-LDADD = -lpthread libcommon.a
+#
+# note: the old Makefile is at Makefile.old
+#
 
-bin_PROGRAMS = cmon mkmonmap cmonctl cmds cosd
+AUTOMAKE_OPTIONS = gnu
 
 # monitor
 cmon_SOURCES = cmon.cc msg/SimpleMessenger.cc
-cmon_LDADD = libmon.a libcommon.a libcrush.a
-
+cmon_LDADD = libmon.a libcrush.a libcommon.a
 mkmonmap_SOURCES = mkmonmap.cc
 mkmonmap_LDADD = libcommon.a
-
 cmonctl_SOURCES = cmonctl.cc msg/SimpleMessenger.cc
 cmonctl_LDADD = libcommon.a
 
 # mds
 cmds_SOURCES = cmds.cc msg/SimpleMessenger.cc
-cmds_LDADD = libmds.a libosdc.a libcommon.a libcrush.a
+cmds_LDADD = libmds.a libosdc.a libcrush.a libcommon.a
 
 # osd 
 cosd_SOURCES = cosd.cc msg/SimpleMessenger.cc
-cosd_LDADD = libosd.a libebofs.a libcommon.a libcrush.a
+cosd_LDADD = libosd.a libebofs.a libcrush.a libcommon.a
+
+# synthetic client
+csyn_SOURCES = csyn.cc msg/SimpleMessenger.cc
+csyn_LDADD = libclient.a libosdc.a libcrush.a libcommon.a
+
+# fuse client
+if WITH_FUSE
+FUSEBIN = cfuse fakefuse
+else
+FUSEBIN = 
+endif
+
+cfuse_SOURCES = cfuse.cc msg/SimpleMessenger.cc client/fuse.cc client/fuse_ll.cc
+cfuse_LDADD = -lfuse libclient.a libosdc.a libcrush.a libcommon.a
+fakefuse_SOURCES = fakefuse.cc msg/FakeMessenger.cc client/fuse.cc client/fuse_ll.cc
+fakefuse_LDADD = -lfuse libmon.a libmds.a libosd.a libebofs.a \
+       libclient.a libosdc.a libcrush.a libcommon.a
+
+# debug targets
+fakesyn_SOURCES = fakesyn.cc msg/FakeMessenger.cc
+fakesyn_LDADD = libmon.a libmds.a libosd.a libebofs.a \
+       libclient.a libosdc.a libcrush.a libcommon.a
+
+#newsyn_SOURCES = newsyn.cc msg/SimpleMessenger.cc
+#newsyn_LDADD = libmon.a libmds.a libosd.a libebofs.a \
+#      libclient.a libosdc.a libcrush.a libcommon.a
+
+##
+INCLUDES = 
+LDADD = -lpthread 
 
+AM_CXXFLAGS = -Wall -D_FILE_OFFSET_BITS=64 -D_REENTRANT -D_THREAD_SAFE
+AM_CFLAGS = -Wall -D_FILE_OFFSET_BITS=64 -D_REENTRANT -D_THREAD_SAFE
+AM_LDFLAGS =
 
+bin_PROGRAMS = cmon mkmonmap cmonctl cmds cosd csyn fakesyn $(FUSEBIN) $(NEWSYN)
 noinst_LIBRARIES = \
        libcommon.a libcrush.a \
        libmon.a libmds.a libosdc.a libosd.a libebofs.a libclient.a
 
+# libs
 libcommon_a_SOURCES = \
        msg/Message.cc \
        common/Logger.cc \
diff --git a/src/Makefile.old b/src/Makefile.old
new file mode 100644 (file)
index 0000000..ab1ee7d
--- /dev/null
@@ -0,0 +1,334 @@
+#
+# until autoconf is set up, here are the options i understand:
+#
+#  darwin=yes    -- build on darwin
+#  fuse=no       -- don't build anything requiring FUSE
+#  mpi=no        -- don't build newsyn (require MPI)
+#  use_ccpp=yes  -- use Common C++ for buffer.h reference counting
+#  want_bdb=yes  -- build berkelydb objectstore
+# 
+
+# mpicxx must be on your path to build newsyn.  
+#  on googoo, this means that /usr/local/mpich2-1.0.2/bin must be on your path.
+#  on issdm, it's /usr/local/mpich2/bin.
+
+# Hook for extra -I options, etc.
+EXTRA_CFLAGS = #-I${HOME}/include -L${HOME}/lib
+EXTRA_CFLAGS += -g
+EXTRA_CFLAGS += -pg
+#EXTRA_CFLAGS += -O3
+
+# base
+CFLAGS = -Wall -I. -D_FILE_OFFSET_BITS=64 -D_REENTRANT -D_THREAD_SAFE ${EXTRA_CFLAGS}
+LDINC = ld -i -o
+CXX = g++
+CC = gcc
+LIBS = -pthread
+
+# darwin?
+ifeq ($(target),darwin)
+CFLAGS += -DDARWIN -D__FreeBSD__=10
+LDINC = ar -rc
+endif
+
+# use Common C++ (for buffer.h)?
+ifeq ($(use_ccpp),yes)
+CFLAGS += -D_GNU_SOURCE -DBUFFER_USE_CCPP
+LIBS += -lccgnu2 -ldl
+endif
+
+
+#for normal mpich2 machines
+MPICC = mpicxx
+MPICFLAGS = -DMPICH_IGNORE_CXX_SEEK ${CFLAGS}
+MPILIBS = ${LIBS}
+
+#for LLNL boxes without mpicxx
+#MPICC = g++
+#MPICFLAGS = ${CFLAGS} -I/usr/lib/mpi/mpi_gnu/include -L/usr/lib/mpi/mpi_gnu/lib
+#MPILIBS = ${LIBS} -lelan -lmpi
+
+EBOFS_OBJS= \
+       ebofs/BlockDevice.o\
+       ebofs/BufferCache.o\
+       ebofs/Ebofs.o\
+       ebofs/Allocator.o\
+       ebofs/FileJournal.o
+
+MDS_OBJS= \
+       mds/MDS.o\
+       mds/journal.o\
+       mds/Server.o\
+       mds/MDCache.o\
+       mds/Locker.o\
+       mds/Migrator.o\
+       mds/MDBalancer.o\
+       mds/CDentry.o\
+       mds/CDir.o\
+       mds/CInode.o\
+       mds/AnchorTable.o\
+       mds/AnchorClient.o\
+       mds/LogEvent.o\
+       mds/IdAllocator.o\
+       mds/SessionMap.o\
+       mds/MDLog.o
+
+OSD_OBJS= \
+       osd/PG.o\
+       osd/ReplicatedPG.o\
+       osd/RAID4PG.o\
+       osd/Ager.o\
+       osd/FakeStore.o\
+       osd/OSD.o
+
+OSDC_OBJS= \
+       osdc/Objecter.o\
+       osdc/ObjectCacher.o\
+       osdc/Filer.o\
+       osdc/Journaler.o
+
+MON_OBJS= \
+       mon/Monitor.o\
+       mon/Paxos.o\
+       mon/PaxosService.o\
+       mon/OSDMonitor.o\
+       mon/MDSMonitor.o\
+       mon/ClientMonitor.o\
+       mon/PGMonitor.o\
+       mon/Elector.o\
+       mon/MonitorStore.o
+
+COMMON_OBJS= \
+       msg/Message.o\
+       common/Logger.o\
+       common/Clock.o\
+       common/Timer.o\
+       mon/MonMap.o\
+       config.o
+
+CLIENT_OBJS= \
+       client/FileCache.o\
+       client/Client.o\
+       client/SyntheticClient.o\
+       client/Trace.o
+
+
+# bdbstore?
+ifeq ($(want_bdb),yes)
+CFLAGS += -DUSE_OSBDB
+LIBS = -ldb_cxx
+OSD_OBJS += osbdb/OSBDB.o
+OSBDB_OBJS = \
+       osbdb/OSBDB.o
+endif
+
+
+# targets
+TARGETS = cmon cosd cmds csyn mkmonmap cmonctl fakesyn dupstore
+SRCS=*.cc */*.cc *.h */*.h */*/*.h
+
+ifneq ($(fuse),no)
+TARGETS += cfuse fakefuse
+endif
+
+ifneq ($(mpi),no)
+TARGETS += newsyn
+endif
+
+all: depend ${TARGETS}
+
+
+# real bits
+mkmonmap: mkmonmap.cc common.o
+       ${CXX} ${CFLAGS} ${LIBS} $^ -o $@
+
+extractosdmaps: extractosdmaps.cc common.o osd.o mon.o ebofs.o
+       ${CXX} ${CFLAGS} ${LIBS} $^ -o $@
+
+cmon: cmon.o mon.o msg/SimpleMessenger.o common.o crush.o
+       ${CXX} ${CFLAGS} ${LIBS} $^ -o $@
+
+cmonctl: cmonctl.cc msg/SimpleMessenger.o common.o
+       ${CXX} ${CFLAGS} ${LIBS} $^ -o $@
+
+cosd: cosd.o osd.o ebofs.o msg/SimpleMessenger.o common.o crush.o
+       ${CXX} ${CFLAGS} ${LIBS} $^ -o $@
+
+cmds: cmds.o mds.o osdc.o msg/SimpleMessenger.o common.o crush.o
+       ${CXX} ${CFLAGS} ${LIBS} $^ -o $@
+
+csyn: csyn.o client.o osdc.o msg/SimpleMessenger.o common.o crush.o
+       ${CXX} ${CFLAGS} ${LIBS} $^ -o $@
+
+cfuse: cfuse.o client.o osdc.o client/fuse.o client/fuse_ll.o msg/SimpleMessenger.o common.o crush.o
+       ${CXX} ${CFLAGS} ${LIBS} -lfuse $^ -o $@
+
+
+# code shipping experiments
+activemaster: active/activemaster.cc client.o osdc.o msg/SimpleMessenger.o common.o
+       ${CXX} ${CFLAGS} ${LIBS} $^ -o $@
+
+activeslave: active/activeslave.cc client.o osdc.o msg/SimpleMessenger.o common.o
+       ${CXX} -ldl ${CFLAGS} ${LIBS} $^ -o $@
+
+echotestclient: active/echotestclient.cc
+       ${CXX} ${CFLAGS} ${LIBS} $^ -o $@
+
+msgtestclient: active/msgtestclient.o client.o osdc.o msg/SimpleMessenger.o common.o
+       ${CXX} ${CFLAGS} ${LIBS} $^ -o $@
+
+#libtrivialtask.so: active/trivial_task.cc client.o osdc.o msg/SimpleMessenger.o common.o
+#      ${CXX} -fPIC -shared -Wl,-soname,$@.1 ${CFLAGS}  ${LIBS} $^ -o $@
+
+libtrivialtask.so: active/trivial_task_ipc.cc ceph_ipc/ipc_client.o
+       ${CXX} -fPIC -shared -Wl,-soname,$@.1 ${CFLAGS}  ${LIBS} $^ -o $@
+
+
+libgreptask.so: active/grep_task.cc ceph_ipc/ipc_client.o
+       ${CXX} -fPIC -shared -Wl,-soname,$@.1 ${CFLAGS}  ${LIBS} $^ -o $@
+
+
+#libhadoopcephfs.so: client/hadoop/CephFSInterface.cc client.o osdc.o msg/SimpleMessenger.o common.o
+#      ${CXX} -fPIC -shared -Wl,-soname,$@.1 ${CFLAGS}  ${LIBS} $^ -o $@
+
+
+# IPC interface
+ipc_server: ceph_ipc/ipc_server.cc client.o osdc.o msg/SimpleMessenger.o common.o
+       ${CXX} ${CFLAGS} ${LIBS} $^ -o $@
+
+ipc_testclient: ceph_ipc/ipc_testclient.cc ceph_ipc/ipc_client.o
+       ${CXX} ${CFLAGS} ${LIBS} $^ -o $@
+
+
+# fake*
+fakefuse: fakefuse.o mon.o mds.o client.o osd.o osdc.o ebofs.o client/fuse.o client/fuse_ll.o msg/FakeMessenger.o common.o crush.o
+       ${CXX} ${CFLAGS} ${LIBS} -lfuse $^ -o $@
+
+fakesyn: fakesyn.o mon.o mds.o client.o osd.o ebofs.o osdc.o msg/FakeMessenger.o common.o crush.o
+       ${CXX} ${CFLAGS} ${LIBS} $^ -o $@
+
+
+# mpi startup
+newsyn: newsyn.cc mon.o mds.o client.o osd.o ebofs.o osdc.o msg/SimpleMessenger.o common.o crush.o
+       ${MPICC} ${MPICFLAGS} ${MPILIBS} $^ -o $@
+
+
+# ebofs
+mkfs.ebofs: ebofs/mkfs.ebofs.cc config.cc common/Clock.o ebofs.o
+       ${CXX} ${CFLAGS} ${LIBS} $^ -o $@
+
+test.ebofs: ebofs/test.ebofs.cc config.cc common/Clock.o ebofs.o
+       ${CXX} ${CFLAGS} ${LIBS} $^ -o $@
+
+streamtest.ebofs: ebofs/streamtest.cc config.cc common/Clock.o ebofs.o
+       ${CXX} ${CFLAGS} ${LIBS} $^ -o $@
+
+dupstore: dupstore.cc config.cc ebofs.o common/Clock.o common/Timer.o osd/FakeStore.o
+       ${CXX} ${CFLAGS} ${LIBS} $^ -o $@
+
+allebofs: mkfs.ebofs test.ebofs streamtest.ebofs dupstore
+
+
+# hadoop
+libhadoopcephfs.so: client/hadoop/CephFSInterface.cc client.o osdc.o msg/SimpleMessenger.o common.o
+       ${CXX} -fPIC -shared -Wl,-soname,$@.1 ${CFLAGS} -I/usr/local/java/include -I/usr/local/java/include/linux  ${LIBS} $^ -o $@
+
+# libceph
+libceph.o: client/ldceph.o client/Client.o msg/SimpleMessenger.o ${COMMON_OBJS} ${SYN_OBJS} ${OSDC_OBJS}
+       ${LDINC} $^ -o $@
+
+ldceph.so: libceph.o msg/SimpleMessenger.o
+       ${CXX} -shared -fPIC ${CFLAGS} $< -o $@
+
+
+# some benchmarking tools
+bench/mdtest/mdtest.o: bench/mdtest/mdtest.c
+       mpicc -c $^ -o $@
+
+mdtest: bench/mdtest/mdtest.o
+       ${MPICC} ${MPICFLAGS} ${MPILIBS} $^ -o $@
+
+mdtest.ceph: bench/mdtest/mdtest.o libceph.o
+       ${MPICC} ${MPICFLAGS} ${MPILIBS} $^ -o $@
+
+testos: test/testos.o ebofs.o osbdb.o common.o
+       ${CXX} ${CFLAGS} ${LIBS} ${OSBDB_LIBS} -o $@ $^
+
+
+# misc
+gprof-helper.so: test/gprof-helper.c
+       gcc -shared -fPIC test/gprof-helper.c -o gprof-helper.so -lpthread -ldl 
+
+test_disk_bw: test/test_disk_bw.cc common.o
+       ${CXX} ${CFLAGS} ${LIBS} $^ -o $@
+
+# crush
+# lameness: use .co extension for .c files
+%.co: %.c
+       ${CC} ${CFLAGS} -c $< -o $@
+
+crush.o: crush/builder.co crush/mapper.co crush/crush.co
+       ${LDINC} $@ $^
+
+# bits
+common.o: ${COMMON_OBJS}
+       ${LDINC} $@ $^
+
+ebofs.o: ${EBOFS_OBJS}
+       ${LDINC} $@ $^
+
+client.o: ${CLIENT_OBJS} 
+       ${LDINC} $@ $^
+
+osd.o: ${OSD_OBJS}
+       ${LDINC} $@ $^
+
+osdc.o: ${OSDC_OBJS}
+       ${LDINC} $@ $^
+
+mds.o: ${MDS_OBJS}
+       ${LDINC} $@ $^
+
+mon.o: ${MON_OBJS}
+       ${LDINC} $@ $^
+
+osbdb.o: ${OSBDB_OBJS}
+       ${LDINC} $@ $^
+
+# generic rules
+%.so: %.cc
+       ${CXX} -shared -fPIC ${CFLAGS} $< -o $@
+
+%.o: %.cc
+       ${CXX} ${CFLAGS} -c $< -o $@
+
+%.po: %.cc
+       ${CXX} -fPIC ${CFLAGS} -c $< -o $@
+
+
+# handy
+clean:
+       rm -f *.o */*.o crush/*.co ${TARGETS}
+
+count:
+       cat ${SRCS} | wc -l
+       cat ${SRCS} | grep -c \;
+
+TAGS:
+       etags `find . -name "*.[h|c|cc]"|grep -v '\.\#'`
+
+tags:
+       ctags `find . -name "*.[h|c|cc]"|grep -v '\.\#'`
+
+.depend:
+       touch .depend
+
+depend:
+       $(RM) .depend
+       makedepend -f- -- $(CFLAGS) -- $(SRCS) > .depend 2>/dev/null
+#      for f in $(SRCS) ; do cpp -MM $(CFLAGS) $$f 2> /dev/null >> .depend ; done
+
+
+# now add a line to include the dependency list.
+include .depend
+# DO NOT DELETE
index f7676fc813d2b804e60934a8046f9d832006a315..d6a35cec25b9b79cde5f74b37be54f0d3f54b685 100644 (file)
@@ -15,7 +15,9 @@
 #ifndef __CEPH_ATOMIC_H
 #define __CEPH_ATOMIC_H
 
-#ifdef BUFFER_USE_CCPP
+#include "acconfig.h"
+
+#ifdef WITH_CCGNU
 /*
  * use commonc++ library AtomicCounter.
  */
index 18fa3c552e83c1f898e03bc004544371915c71b6..1e818a7287312304ac256b95d49fa18b42be8677 100644 (file)
@@ -19,6 +19,7 @@
 #include <iomanip>
 #include <list>
 #include <stdint.h>
+#include <assert.h>
 
 #include "atomic.h"