1# GLOBAL CFLAGS 2 3GC_CFLAGS = \ 4 -DGC_THREADS \ 5 -DLARGE_CONFIG=1 \ 6 -DTHREAD_LOCAL_ALLOC=1 \ 7 -DHAS_X86_THREAD_STATE64___RAX=1 \ 8 -DATOMIC_UNCOLLECTABLE=1 \ 9 -DNO_EXECUTE_PERMISSION=1 \ 10 -DALL_INTERIOR_POINTERS=1 \ 11 -DJAVA_FINALIZATION=1 \ 12 -DGC_GCJ_SUPPORT=1 \ 13 -DUSE_I686_PREFETCH \ 14 -DDONT_ADD_BYTE_AT_END \ 15 -DHANDLE_FORK \ 16 -DGC_NOT_DLL 17 18GLOBAL_CFLAGS = @ONIG_CFLAGS@ \ 19 -g \ 20 -Wall \ 21 -I src -I $(includedir) \ 22 -D MONA_SCHEME -D USE_BOEHM_GC \ 23 -D MOSH_LIB_PATH="\"@MOSH_LIB_PATH@\"" \ 24 -D_FILE_OFFSET_BITS=64 -Wall -pipe $(DEBUG_FLAGS) \ 25 $(GC_CFLAGS) \ 26 @MOSH_OPTS@ # temp -Wno-deprecated 27 28GLOBAL_CXXFLAGS = -Wno-deprecated 29 30LIBS += @ONIG_LIBS@ 31 32include automake/dist-git-revision.mk 33 34if DEVELOPER 35GIT_IS_DIRTY=$(shell git diff --quiet HEAD || echo "dirty") 36GIT_COMMIT_REVISION=$(shell git describe --always)$(GIT_IS_DIRTY) 37GIT_COMMIT_UNIXTIME=$(shell git cat-file commit HEAD|grep 'committer'| awk '{ print $$(NF-1); }') 38GIT_COMMIT_DATE=$(shell date -d "1970/01/01 09:00:00 $(GIT_COMMIT_UNIXTIME) seconds" "+%Y/%m/%d %H:%M:%S") 39else 40GIT_COMMIT_REVISION="$(DIST_GIT_REVISION)" 41GIT_COMMIT_DATE="$(DIST_GIT_COMMIT_DATE)" 42endif 43 44GLOBAL_CFLAGS+=-D GIT_COMMIT_REVISION="\"$(GIT_COMMIT_REVISION)\"" -D GIT_COMMIT_DATE="\"$(GIT_COMMIT_DATE)\"" 45 46if DEVELOPER 47DEBUG_FLAGS=-DDEBUG_VERSION 48endif 49 50AM_CFLAGS = $(GLOBAL_CFLAGS) 51AM_CXXFLAGS = $(GLOBAL_CFLAGS) $(GLOBAL_CXXFLAGS) 52 53# Boehm GC 54BOEHM_GC_DIR = extlibs/gc-cvs 55 56# for GTEST 57GTEST_DIR = $(top_srcdir)/gtest 58USER_DIR = . 59TESTS = # used later 60 61man_MANS = doc/mosh.1 doc/mosh_config.1 62 63if DEVELOPER 64bin_PROGRAMS = mosh nmosh test_port test_fasl test_ffi test_object test_vm test_compat test_getopt test_thread 65else 66bin_PROGRAMS = mosh nmosh 67endif 68 69bin_SCRIPTS = src/mosh_config 70 71# mosh core sources 72 73MOSH_CORE_SRCS = \ 74src/Code.h src/SharedReference.h \ 75src/NonGenerativeRTDs.h \ 76src/HeapObject.h \ 77src/Object-inl.h \ 78src/Object-accessors.h \ 79src/Pair-inl.h \ 80src/VM-inl.h \ 81src/match.h \ 82src/baselib.h \ 83src/CProcedure.h \ 84src/Instruction.h \ 85src/Callable.h \ 86src/GenericMap.h \ 87src/BinaryInputPort.h \ 88src/BinaryOutputPort.h \ 89src/scheme.h \ 90src/ByteVector.h \ 91src/HashTable.h \ 92src/Pair.h \ 93src/ExecutableMemory.h \ 94src/LineBufferedFileBinaryOutputPort.h \ 95src/Stack.h \ 96src/Gloc.h src/BinaryInputOutputPort.h \ 97src/Box.h src/Port.h \ 98src/BinaryPort.h src/OutputPort.h \ 99src/Codec.h \ 100src/Transcoder.h src/Transcoder.cpp \ 101src/ProcedureMacro.h \ 102src/EqvHashTable.h src/EqvHashTable.cpp \ 103src/Compnum.h src/Compnum.cpp \ 104src/Fixnum.h src/Fixnum.cpp \ 105src/Closure.h src/Closure.cpp \ 106src/UtilityProcedures.h src/UtilityProcedures.cpp \ 107src/ProcessProcedures.h src/ProcessProcedures.cpp \ 108src/Reader.h src/Reader.cpp \ 109src/NumberReader.h src/NumberReader.cpp \ 110src/scheme.h src/scheme.cpp \ 111src/Regexp.h src/Regexp.cpp \ 112src/Symbol.h src/Symbol.cpp \ 113src/VM.h src/VM.cpp \ 114src/VM-Profiler.cpp src/VM-Run.cpp \ 115src/VM-Run.h src/Continuation.h \ 116src/Scanner.h src/Scanner.cpp \ 117src/NumberScanner.h src/NumberScanner.cpp \ 118src/ByteArrayBinaryInputPort.h src/ByteArrayBinaryInputPort.cpp \ 119src/ByteArrayBinaryOutputPort.h src/ByteArrayBinaryOutputPort.cpp \ 120src/ScannerHelper.h src/ScannerHelper.cpp \ 121src/Reader.tab.hpp src/Reader.tab.cpp \ 122src/NumberReader.tab.hpp src/NumberReader.tab.cpp \ 123src/FileBinaryInputPort.h src/FileBinaryInputPort.cpp \ 124src/BufferedFileBinaryInputPort.h src/BufferedFileBinaryInputPort.cpp \ 125src/FileBinaryOutputPort.h src/FileBinaryOutputPort.cpp \ 126src/BufferedFileBinaryOutputPort.h src/BufferedFileBinaryOutputPort.cpp\ 127src/CustomBinaryInputPort.h src/CustomBinaryInputPort.cpp \ 128src/CustomTextualInputPort.h src/CustomTextualInputPort.cpp \ 129src/CustomTextualOutputPort.h src/CustomTextualOutputPort.cpp \ 130src/CustomTextualInputOutputPort.h src/CustomTextualInputOutputPort.cpp\ 131src/CustomBinaryInputOutputPort.h src/CustomBinaryInputOutputPort.cpp \ 132src/TextualOutputPort.h src/TextualOutputPort.cpp \ 133src/TextualInputPort.cpp src/TextualInputPort.h \ 134src/TranscodedTextualInputPort.cpp src/TranscodedTextualInputPort.h \ 135src/TranscodedTextualOutputPort.cpp src/TranscodedTextualOutputPort.h \ 136src/StringTextualOutputPort.h src/StringTextualOutputPort.cpp \ 137src/StringTextualInputPort.h src/StringTextualInputPort.cpp \ 138src/Codec.cpp src/Codec.h \ 139src/UTF8Codec.cpp src/UTF8Codec.h \ 140src/UTF16Codec.cpp src/UTF16Codec.h \ 141src/UTF32Codec.cpp src/UTF32Codec.h \ 142src/EqHashTable.h src/EqHashTable.cpp \ 143src/SString.h src/SString.cpp \ 144src/GenericHashTable.h src/GenericHashTable.cpp \ 145src/Object.h src/Object.cpp \ 146src/CompilerProcedures.cpp src/CompilerProcedures.h \ 147src/HashTableProcedures.cpp src/HashTableProcedures.h \ 148src/RegexpProcedures.cpp src/RegexpProcedures.h \ 149src/StringProcedures.cpp src/StringProcedures.h \ 150src/PortProcedures.cpp src/PortProcedures.h \ 151src/ListProcedures.cpp src/ListProcedures.h \ 152src/ErrorProcedures.cpp src/ErrorProcedures.h \ 153src/ArithmeticProcedures.cpp src/ArithmeticProcedures.h \ 154src/FlonumProcedures.cpp src/FlonumProcedures.h \ 155src/BitwiseProcedures.cpp src/BitwiseProcedures.h \ 156src/ByteVectorProcedures.cpp src/ByteVectorProcedures.h \ 157src/SocketProcedures.cpp src/SocketProcedures.h \ 158src/Equivalent.h src/Equivalent.cpp \ 159src/ucs4string.h src/ucs4string.cpp \ 160src/Vector.h src/Vector.cpp \ 161src/Fasl.h \ 162src/FaslReader.h src/FaslReader.cpp \ 163src/FaslWriter.h src/FaslWriter.cpp \ 164src/Arithmetic.h src/Arithmetic.cpp \ 165src/Ratnum.h src/Ratnum.cpp \ 166src/Bignum.h src/Bignum.cpp \ 167src/Flonum.h src/Flonum.cpp \ 168src/CodeBuilder.h src/CodeBuilder.cpp \ 169src/FixnumProcedures.h src/FixnumProcedures.cpp \ 170src/Latin1Codec.h src/Latin1Codec.cpp \ 171src/FFI.h src/FFI.cpp \ 172src/FFIProcedures.h src/FFIProcedures.cpp \ 173src/CustomBinaryOutputPort.h src/CustomBinaryOutputPort.cpp \ 174src/FileBinaryInputOutputPort.h src/FileBinaryInputOutputPort.cpp \ 175src/SocketBinaryInputOutputPort.h src/SocketBinaryInputOutputPort.cpp \ 176src/TranscodedTextualInputOutputPort.h src/TranscodedTextualInputOutputPort.cpp \ 177src/BufferedFileBinaryInputOutputPort.h src/BufferedFileBinaryInputOutputPort.cpp \ 178src/TestingFileBinaryOutputPort.h src/TestingFileBinaryInputPort.h \ 179src/TestingVM.h src/OSConstants.h \ 180src/getoptU.h src/getoptU.cpp \ 181src/StandardOutputPort.h \ 182src/StandardErrorPort.h \ 183src/StandardInputPort.h \ 184src/BlockBufferedFileBinaryOutputPort.h \ 185src/BlockBufferedFileBinaryInputOutputPort.h \ 186src/LineBufferedFileBinaryInputOutputPort.h \ 187src/MultiVMProcedures.h src/MultiVMProcedures.cpp \ 188src/OSCompatSocket.h src/OSCompatSocket.cpp \ 189src/OSCompatThread.h src/OSCompatThread.cpp \ 190src/VMFactory.cpp src/VMFactory.h \ 191src/SimpleStruct.h \ 192src/OSCompat.h src/OSCompat.cpp \ 193src/stubs.cpp src/posix/terminal/terminal.c src/generic/boehmgc-stubs.c 194 195if FFI_I386 196MOSH_CORE_SRCS += src/ffi_stub_i386.S 197endif 198 199if FFI_X86_64 200MOSH_CORE_SRCS += src/ffi_stub_x86_64.S 201endif 202 203if MINGW32 204MOSH_CORE_SRCS += src/win32/process.c 205endif 206 207if KQUEUE 208MOSH_CORE_SRCS += src/bsd/kqueue/kqueue_stubs.c 209endif 210 211if PTRACE_COMMON 212MOSH_CORE_SRCS += src/posix/ptrace/ptrace_common.c 213endif 214 215GC_SRCS = \ 216$(BOEHM_GC_DIR)/allchblk.c \ 217$(BOEHM_GC_DIR)/alloc.c \ 218$(BOEHM_GC_DIR)/blacklst.c \ 219$(BOEHM_GC_DIR)/checksums.c \ 220$(BOEHM_GC_DIR)/dbg_mlc.c \ 221$(BOEHM_GC_DIR)/dyn_load.c \ 222$(BOEHM_GC_DIR)/finalize.c \ 223$(BOEHM_GC_DIR)/gc_dlopen.c \ 224$(BOEHM_GC_DIR)/gcj_mlc.c \ 225$(BOEHM_GC_DIR)/headers.c \ 226$(BOEHM_GC_DIR)/malloc.c \ 227$(BOEHM_GC_DIR)/mallocx.c \ 228$(BOEHM_GC_DIR)/mark.c \ 229$(BOEHM_GC_DIR)/mark_rts.c \ 230$(BOEHM_GC_DIR)/gc_misc.c \ 231$(BOEHM_GC_DIR)/new_hblk.c \ 232$(BOEHM_GC_DIR)/obj_map.c \ 233$(BOEHM_GC_DIR)/os_dep.c \ 234$(BOEHM_GC_DIR)/mach_dep.c \ 235$(BOEHM_GC_DIR)/pcr_interface.c \ 236$(BOEHM_GC_DIR)/real_malloc.c \ 237$(BOEHM_GC_DIR)/reclaim.c \ 238$(BOEHM_GC_DIR)/specific.c \ 239$(BOEHM_GC_DIR)/stubborn.c \ 240$(BOEHM_GC_DIR)/typd_mlc.c \ 241$(BOEHM_GC_DIR)/backgraph.c \ 242$(BOEHM_GC_DIR)/thread_local_alloc.c \ 243$(BOEHM_GC_DIR)/libatomic_ops/src/atomic_ops.c 244 245GC_PTHREAD_SRCS = \ 246$(BOEHM_GC_DIR)/pthread_start.c \ 247$(BOEHM_GC_DIR)/pthread_support.c \ 248$(BOEHM_GC_DIR)/pthread_stop_world.c 249 250GC_DARWIN_SRCS = \ 251$(BOEHM_GC_DIR)/darwin_stop_world.c 252 253GC_WIN32_SRCS = \ 254$(BOEHM_GC_DIR)/win32_threads.c 255 256if GC_PTHREAD 257GC_SRCS += $(GC_PTHREAD_SRCS) 258endif 259 260if GC_DARWIN 261GC_SRCS += $(GC_DARWIN_SRCS) 262endif 263 264if GC_WIN32 265GC_SRCS += $(GC_WIN32_SRCS) 266endif 267 268MOSH_CORE_SRCS += $(GC_SRCS) 269 270noinst_LIBRARIES = libmosh_main.a libnmosh_main.a libmosh_core_for_test.a 271 272# mosh 273# -O3 causes miss compile of NumberReader.tab.cpp. (newest gcc?) 274# see http://d.hatena.ne.jp/higepon/20081114/1226645373 275libmosh_main_a_SOURCES = src/main.cpp src/psyntax_mosh_image.cpp 276mosh_SOURCES = $(MOSH_CORE_SRCS) 277mosh_LDADD = libmosh_main.a $(REGEXP_LIB) @MOSH_LDADD_ARCH@ 278mosh_DEPENDENCIES = libmosh_main.a 279 280libnmosh_main_a_SOURCES = src/main.cpp src/nmosh_image.cpp 281libnmosh_main_a_CXXFLAGS = $(GLOBAL_CFLAGS) $(GLOBAL_CXXFLAGS) -D WITH_NMOSH_DEFAULTS 282nmosh_SOURCES = $(MOSH_CORE_SRCS) 283nmosh_LDADD = libnmosh_main.a $(REGEXP_LIB) @MOSH_LDADD_ARCH@ 284nmosh_DEPENDENCIES = libnmosh_main.a 285 286libmosh_core_for_test_a_SOURCES = $(MOSH_CORE_SRCS) 287 288if MINGW32 289nmosh_LDADD += mosh-icon.o 290nmosh_DEPENDENCIES += mosh-icon.o 291mosh-icon.o : win/mosh.rc misc/logo/mosh.ico 292 -mkdir -p $(top_builddir)/misc/logo 293 -cp -p $(top_srcdir)/misc/logo/mosh.ico $(top_builddir)/misc/logo 294 $(WINDRES) $< -o mosh-icon.o 295endif 296 297# if BUILD_LOCAL_ONIG 298# include extlibs/onig-5.9.2.mk 299# MOSH_CORE_SRCS += $(ONIG_SRCS) 300# endif 301 302BUILT_SOURCES = src/Object-accessors.h src/Instruction.h src/Reader.tab.hpp src/NumberReader.tab.hpp src/Reader.tab.cpp src/NumberReader.tab.cpp src/Scanner.cpp src/NumberScanner.cpp src/cprocedures.cpp src/labels.cpp src/OSConstants.h 303 304include automake/corelibs.mk 305 306#mosh_core_fasl_libraries = $(mosh_core_libraries:.ss=.ss.fasl) 307 308datadir = @MOSH_LIB_PATH@ 309data_DATA = src/all-tests.scm 310nobase_data_DATA = ${mosh_core_libraries} #${mosh_core_fasl_libraries} 311 312INCLUDES = -I $(top_srcdir)/$(BOEHM_GC_DIR)/include -I $(top_srcdir)/$(BOEHM_GC_DIR)/libatomic_ops/src -I$(top_srcdir)/src 313EXTRA_DIST = \ 314boot/vm.scm boot/baselib boot/compiler.scm \ 315boot/free-vars.scm misc/scripts boot/baselib/match.scm doc \ 316boot/free-vars-decl.scm \ 317boot/runtimes/psyntax-mosh/psyntax.scm \ 318boot/runtimes/psyntax-mosh/psyntax \ 319boot/runtimes/psyntax-mosh/Makefile \ 320boot/runtimes/psyntax-mosh/print-prefix.ss \ 321boot/runtimes/psyntax-mosh/psyntax-prefix.txt \ 322doc/mosh.1 doc/mosh_config.1 \ 323doc/RELNOTE lib src \ 324tests src/call.inc.cpp ${GTEST_DIR} \ 325doc README.md misc \ 326boot/runtimes/srfi-mosh/Makefile \ 327boot/runtimes/srfi-mosh/README \ 328boot/runtimes/srfi-mosh/bootstrap.common \ 329boot/runtimes/srfi-mosh/bootstrap.vanilla-mosh \ 330boot/runtimes/srfi-mosh/bootstrap.psyntax-mosh \ 331boot/runtimes/srfi-mosh/build-run.ss \ 332boot/runtimes/srfi-mosh/compat-mosh-run.scm \ 333boot/runtimes/srfi-mosh/expander.scm \ 334boot/runtimes/srfi-mosh/init.ss \ 335boot/runtimes/srfi-mosh/init5.scm \ 336boot/runtimes/srfi-mosh/layout.scm \ 337boot/runtimes/srfi-mosh/lib.boot \ 338boot/runtimes/srfi-mosh/lib.rnrs \ 339boot/runtimes/srfi-mosh/mosh-exceptions.scm \ 340boot/runtimes/srfi-mosh/mosh-utils5.scm \ 341boot/runtimes/srfi-mosh/runtime.scm \ 342gen-git-build.sh \ 343CMakeLists.txt cmake extlibs 344 345GENERATED = \ 346src/all-tests.scm src/Scanner.cpp src/NumberScanner.cpp \ 347src/DebugInstruction.h src/cprocedures.cpp src/OSConstants.h src/Object-accessors.h \ 348src/labels.cpp src/Instruction.h \ 349src/match.h \ 350src/NumberReader.tab.cpp src/NumberReader.tab.hpp \ 351src/Reader.tab.cpp src/Reader.tab.hpp \ 352src/nmosh_image.cpp 353 354CLEANFILES = gtest.a gtest_main.a lib/libffitest.so.1.0 src/ffitest.o 355MAINTAINERCLEANFILES = $(GENERATED) 356 357# N.B. We don't use backend's (gensym) for following reasons. 358# (a) When we read serialize libraries, we need all symbols are interned. 359# Because symbols who have same string should be eq?, even when they are loaded from separate files. 360 361# (b) When we precompile system libraries, we want to control the start index of gensym. 362# Since we should avoid index overlapping between pre-compile libraries and pre-compiled psyntax. 363# So using environment variable MOSH_GENSYM_PREFIX, we control the prefix. 364 365# all fasl should be newer than *.ss and psyntax.h binary 366# lib/mosh/queue.ss.mosh-fasl: $(mosh_core_libraries) psyntax.h 367# (find . -name "*.ss.mosh-fasl" | xargs rm) ; true 368# (find . -name "*.sls.mosh-fasl" | xargs rm) ; true 369# MOSH_GENSYM_PREFIX=L ./mosh scripts/pre-compile-r6rs.scm scripts/pre-compile-target.scm 370 371# update: lib/mosh/queue.ss.mosh-fasl 372 373doc: 374 mosh misc/scripts/gen-doc-from-r6rs.scm $(R6RS_DOC_PATH) 375 $(NATURALDOCS) -i . -o HTML doc/html -p doc/config -s pink -xi tools 376 377.PHONY: doc test 378.PHONY: ptest ntest testB testR testL ntestB ntestR ntestL install Xtest testD 379 380bench: 381# @GOSH@ ./misc/scripts/bench.scm > /dev/null 382 LANG=C gosh ./misc/scripts/bench2.scm 383 384include Generate.mk 385 386#### test 387check: test 388 389#FIXME: use macro 390MOSHBIN ="MOSH_LOADPATH=$(abs_top_srcdir)/lib $(abs_builddir)/mosh $(MOSH_TESTARGS)" 391NMOSHBIN ="NMOSH_CACHEDIR=$(abs_builddir)/nmosh-cache MOSH_LOADPATH=$(abs_top_srcdir)/lib $(abs_builddir)/nmosh $(MOSH_TESTARGS)" 392 393test: ptest ntest 394Xtest: ptest ntest testD ntestD 395ptest: testB testR testL 396ntest: ntestB ntestR ntestL 397 398testB: lib/libffitest.so.1.0 ./mosh src/all-tests.scm 399 (MOSH_TARGET=$(MOSHBIN) $(MAKE) -C $(top_srcdir) -f tests/Makefile runtest) 400 (MOSH_TARGET=$(MOSHBIN) MOSH_BUILDDIR=$(abs_top_builddir) MOSH_SRCDIR=$(abs_top_srcdir) $(MAKE) -C $(top_srcdir) -f tests/Makefile runtest-ffi) 401 (MOSH_TARGET=$(MOSHBIN) $(MAKE) -C $(top_srcdir) -f tests/Makefile runtest-mosh) 402 403testL: 404 (MOSH_TARGET=$(MOSHBIN) $(MAKE) -C $(top_srcdir)/tests/srfi) 405 (MOSH_TARGET=$(MOSHBIN) $(MAKE) -C $(top_srcdir)/tests/irregex) 406 (MOSH_TARGET=$(MOSHBIN) $(MAKE) -C $(top_srcdir)/tests/yuni) 407 408testR: 409 (MOSH_TARGET=$(MOSHBIN) $(MAKE) -C $(top_srcdir)/tests/r6rs-test-suite) 410 411#check-am is Automake's internal target.. 412testU: check-am 413 414ntestB: lib/libffitest.so.1.0 ./nmosh src/all-tests.scm 415 (MOSH_TARGET=$(NMOSHBIN) $(MAKE) -C $(top_srcdir) -f tests/Makefile runtest) 416 (MOSH_TARGET=$(NMOSHBIN) MOSH_BUILDDIR=$(abs_top_builddir) MOSH_SRCDIR=$(abs_top_srcdir) $(MAKE) -C $(top_srcdir) -f tests/Makefile runtest-ffi) 417 (MOSH_TARGET=$(NMOSHBIN) $(MAKE) -C $(top_srcdir) -f tests/Makefile runtest-nmosh) 418 419ntestL: 420 (MOSH_TARGET=$(NMOSHBIN) $(MAKE) -C $(top_srcdir)/tests/srfi) 421 (MOSH_TARGET=$(NMOSHBIN) $(MAKE) -C $(top_srcdir)/tests/irregex) 422 (MOSH_TARGET=$(NMOSHBIN) $(MAKE) -C $(top_srcdir)/tests/yuni) 423 424ntestR: 425 (MOSH_TARGET=$(NMOSHBIN) $(MAKE) -C $(top_srcdir)/tests/r6rs-test-suite) 426 427testD: 428 (MOSH_TARGET=$(MOSHBIN) $(MAKE) -C $(top_srcdir) -f tests/Makefile runtest-for-developer) 429 430ntestD: 431 (MOSH_TARGET=$(NMOSHBIN) $(MAKE) -C $(top_srcdir) -f tests/Makefile runtest-for-developer) 432 433# Builds gtest.a and gtest_main.a. 434 435GTEST_CPPFLAGS_ = -I$(GTEST_DIR) 436 437# For simplicity and to avoid depending on Google Test's 438# implementation details, the dependencies specified below are 439# conservative and not optimized. This is fine as Google Test 440# compiles fast and for ordinary users its source rarely changes. 441gtest-all.o : $(GTEST_DIR)/gtest/gtest-all.cc 442 $(CXX) $(GTEST_CPPFLAGS_) $(CXXFLAGS) -o $@ -c $< 443 444gtest_main.o : $(GTEST_DIR)/gtest/gtest_main.cc 445 $(CXX) $(GTEST_CPPFLAGS_) $(CXXFLAGS) -o $@ -c $< 446 447gtest.a : gtest-all.o 448 $(AR) $(ARFLAGS) $@ $^ 449 450gtest_main.a : gtest-all.o gtest_main.o 451 $(AR) $(ARFLAGS) $@ $^ 452 $(RANLIB) $@ 453 454check_PROGRAMS= 455TEST_CXXFLAGS_ = $(GLOBAL_CFLAGS) $(GLOBAL_CXXFLAGS) -I$(GTEST_DIR) -I$(GTEST_DIR)/gtest -DGTEST_HAS_CLONE=0 -DTEST_SRCDIR="\"$(top_srcdir)/\"" 456TEST_LDADD_ = libmosh_core_for_test.a gtest_main.a $(REGEXP_LIB) @MOSH_LDADD_ARCH@ 457TEST_DEPENDENCIES_ = libmosh_core_for_test.a gtest_main.a 458 459TESTS += test_object 460check_PROGRAMS += test_object 461test_object_DEPENDENCIES = $(TEST_DEPENDENCIES_) 462test_object_CXXFLAGS = $(TEST_CXXFLAGS_) 463test_object_SOURCES = src/ObjectTest.cpp src/TestingSignalHandler.cpp src/psyntax_mosh_image.cpp 464test_object_LDADD = $(TEST_LDADD_) 465 466TESTS += test_vm 467check_PROGRAMS += test_vm 468test_vm_DEPENDENCIES = $(TEST_DEPENDENCIES_) 469test_vm_CXXFLAGS = $(TEST_CXXFLAGS_) 470test_vm_SOURCES = src/VMTest.cpp src/TestingVM.cpp src/TestingSignalHandler.cpp src/psyntax_mosh_image.cpp 471test_vm_LDADD = $(TEST_LDADD_) 472 473TESTS += test_port 474check_PROGRAMS += test_port 475test_port_DEPENDENCIES = $(TEST_DEPENDENCIES_) 476test_port_CXXFLAGS = $(TEST_CXXFLAGS_) 477test_port_SOURCES = src/PortTest.cpp src/TestingSignalHandler.cpp src/psyntax_mosh_image.cpp 478test_port_LDADD = $(TEST_LDADD_) 479 480TESTS += test_fasl 481check_PROGRAMS += test_fasl 482test_fasl_DEPENDENCIES = $(TEST_DEPENDENCIES_) 483test_fasl_CXXFLAGS = $(TEST_CXXFLAGS_) 484test_fasl_SOURCES = src/FaslTest.cpp src/TestingSignalHandler.cpp src/TestingVM.cpp src/psyntax_mosh_image.cpp 485test_fasl_LDADD = $(TEST_LDADD_) 486 487TESTS += test_ffi 488check_PROGRAMS += test_ffi 489test_ffi_DEPENDENCIES = $(TEST_DEPENDENCIES_) lib/libffitest.so.1.0 490test_ffi_CXXFLAGS = $(TEST_CXXFLAGS_) 491test_ffi_SOURCES = src/FFITest.cpp src/TestingSignalHandler.cpp src/TestingVM.cpp src/psyntax_mosh_image.cpp 492test_ffi_LDADD = $(TEST_LDADD_) 493 494TESTS += test_compat 495check_PROGRAMS += test_compat 496test_compat_DEPENDENCIES = $(TEST_DEPENDENCIES_) 497test_compat_CXXFLAGS = $(TEST_CXXFLAGS_) 498test_compat_SOURCES = src/OSCompatTest.cpp src/TestingSignalHandler.cpp src/psyntax_mosh_image.cpp 499test_compat_LDADD = $(TEST_LDADD_) 500 501TESTS += test_getopt 502check_PROGRAMS += test_getopt 503test_getopt_DEPENDENCIES = $(TEST_DEPENDENCIES_) 504test_getopt_CXXFLAGS = $(TEST_CXXFLAGS_) 505test_getopt_SOURCES = src/getoptUTest.cpp src/TestingSignalHandler.cpp src/psyntax_mosh_image.cpp 506test_getopt_LDADD = $(TEST_LDADD_) 507 508TESTS += test_thread 509check_PROGRAMS += test_thread 510test_thread_DEPENDENCIES = $(TEST_DEPENDENCIES_) 511test_thread_CXXFLAGS = $(TEST_CXXFLAGS_) 512test_thread_SOURCES = src/OSCompatThreadTest.cpp src/TestingSignalHandler.cpp src/psyntax_mosh_image.cpp 513test_thread_LDADD = $(TEST_LDADD_) 514 515dist-hook: 516 -rm -f $(top_distdir)/doc/text/Download.txt 517 -rm -f $(top_distdir)/src/ffitest.o 518 -rm -f $(top_distdir)/src/mosh_config 519 -rm -f $(top_distdir)/src/stamp-h1 520 -rm -f $(top_distdir)/src/config.h.in~ 521 -rm -f $(top_distdir)/lib/mosh/config.ss 522 -rm -f $(top_distdir)/lib/mosh/mysql.ss 523 -rm -f $(top_distdir)/lib/libffitest.so.1.0 524 -rm -f $(top_distdir)/src/config.h 525 526# for FFI test 527lib/libffitest.so.1.0: src/ffitest.c 528 $(CC) -g -std=c99 -Wall -fPIC -c $< -o src/ffitest.o 529 $(CC) -g -Wl @SHLIB_SO_LDFLAGS@ -o $@ src/ffitest.o 530 531# for flymake 532check-syntax: 533 $(CXX) -o nul $(GLOBAL_CFLAGS) $(GLOBAL_CXXFLAGS) $(INCLUDES) $(DEFAULT_INCLUDES) -DHAVE_CONFIG_H -S ${CHK_SOURCES} 534