initial yap conversion
This commit is contained in:
parent
7da759f5f2
commit
5af552888d
74
Makefile
74
Makefile
|
@ -1,75 +1,5 @@
|
|||
# -*- mode: makefile-gmake -*-
|
||||
|
||||
INSTALLER:=./install_wrapper.sh
|
||||
MODULES = .
|
||||
|
||||
ifeq ($(shell uname),SunOS)
|
||||
CC=gcc
|
||||
endif
|
||||
|
||||
IS_GCC := $(shell ($(CC) --version | grep 'Copyright.*Free Software Foundation') > /dev/null && echo "YES")
|
||||
|
||||
ifeq ($(IS_GCC),YES)
|
||||
CFLAGS += -std=c11
|
||||
endif
|
||||
|
||||
include configuration.mk
|
||||
|
||||
CFLAGS += -I. -Wall
|
||||
CXXFLAGS += -I. -Wall
|
||||
|
||||
CSRC :=
|
||||
CPPSRC :=
|
||||
|
||||
MODULES := .
|
||||
CFLAGS += $(patsubst %,-I%,$(MODULES))
|
||||
CXXFLAGS += $(patsubst %,-I%,$(MODULES))
|
||||
CFLAGS += $(patsubst %,-I%/public_headers,$(MODULES))
|
||||
CXXFLAGS += $(patsubst %,-I%/public_headers,$(MODULES))
|
||||
|
||||
TESTS :=
|
||||
|
||||
PRODUCTS :=
|
||||
|
||||
MODULE_CLEANS :=
|
||||
|
||||
GENERATED_HEADERS :=
|
||||
|
||||
include $(patsubst %,%/module.mk,$(MODULES))
|
||||
|
||||
ALLOBJ := $(patsubst %.c,%.o,$(filter %.c,$(CSRC)))
|
||||
ALLOBJ += $(patsubst %.cc,%.o,$(filter %.cc,$(CPPSRC)))
|
||||
|
||||
include $(ALLOBJ:.o=.d)
|
||||
|
||||
OBJ := $(filter-out $(TESTOBJ),$(ALLOBJ))
|
||||
|
||||
$(ALLOBJ:.o=.d): $(GENERATED_HEADERS)
|
||||
|
||||
%.d: %.cc
|
||||
./depend.sh `dirname $*.cc` $(CXXFLAGS) $*.cc > $@
|
||||
%.d: %.c
|
||||
./depend.sh `dirname $*.c` $(CFLAGS) $*.c > $@
|
||||
|
||||
test: $(TESTS)
|
||||
|
||||
clean: $(MODULE_CLEANS)
|
||||
rm -f $(ALLOBJ)
|
||||
rm -f $(TESTS)
|
||||
rm -f $(ALLOBJ:.o=.d)
|
||||
rm -f $(PRODUCTS)
|
||||
|
||||
.PHONY:debugmk
|
||||
debugmk:
|
||||
echo $(ALLOBJ)
|
||||
|
||||
all: $(PRODUCTS)
|
||||
|
||||
$(PREFIX)/lib:
|
||||
$(INSTALLER) -d $(PREFIX)/lib
|
||||
|
||||
$(PREFIX)/include:
|
||||
$(INSTALLER) -d $(PREFIX)/include
|
||||
|
||||
install: all
|
||||
|
||||
.DEFAULT_GOAL := all
|
||||
include yap/prelude.mk
|
||||
|
|
56
module.mk
56
module.mk
|
@ -18,9 +18,7 @@ $(LIBYACHTROCK_DIR)public_headers/yachtrock/config.h: $(LIBYACHTROCK_DIR)write_c
|
|||
YACHTROCK_GENERATED_HEADERS := $(LIBYACHTROCK_DIR)public_headers/yachtrock/config.h
|
||||
GENERATED_HEADERS += $(YACHTROCK_GENERATED_HEADERS)
|
||||
|
||||
UNAME_S := $(shell uname -s)
|
||||
|
||||
ifeq ($(UNAME_S),Darwin)
|
||||
ifeq ($(YAP_UNAME_S),Darwin)
|
||||
LIBYACHTROCK_DYLIBNAME := libyachtrock.dylib
|
||||
else
|
||||
LIBYACHTROCK_DYLIBNAME := libyachtrock.so
|
||||
|
@ -28,13 +26,14 @@ endif
|
|||
|
||||
YR_RUNTESTS := yr_runtests
|
||||
|
||||
PRODUCTS += $(LIBYACHTROCK_DYLIBNAME)
|
||||
all: $(LIBYACHTROCK_DYLIBNAME)
|
||||
|
||||
ifeq ($(YACHTROCK_DLOPEN),1)
|
||||
PRODUCTS += $(YR_RUNTESTS)
|
||||
all: $(YR_RUNTESTS)
|
||||
install: install_yr_runtests
|
||||
endif
|
||||
|
||||
MODULE_CLEANS += clean_libyachtrock
|
||||
clean: clean_libyachtrock
|
||||
|
||||
LIBYACHTROCK_GENERATED_SRC :=
|
||||
LIBYACHTROCK_GENERATED_SRC := $(patsubst %,$(LIBYACHTROCK_DIR)src/%,$(LIBYACHTROCK_GENERATED_SRC))
|
||||
|
@ -52,22 +51,7 @@ LIBYACHTROCK_HEADER_INSTALLED_FILES := $(subst $(LIBYACHTROCK_DIR)public_headers
|
|||
CSRC += $(LIBYACHTROCK_SRC) $(YR_RUNTESTS_SRC)
|
||||
LIBYACHTROCK_OBJ = $(patsubst %.c,%.o,$(filter %.c,$(LIBYACHTROCK_SRC)))
|
||||
LIBYACHTROCK_LINKS = -lpthread
|
||||
|
||||
YR_RUNTESTS_LINKS =
|
||||
|
||||
ifeq ($(UNAME_S),Linux)
|
||||
LIBYACHTROCK_LINKS += -ldl
|
||||
YR_RUNTESTS_LINKS += -ldl
|
||||
else ifeq ($(UNAME_S),SunOS)
|
||||
LIBYACHTROCK_LINKS += -lsocket -lnsl
|
||||
else ifeq ($(UNAME_S),FreeBSD)
|
||||
LIBYACHTROCK_LINKS += -lstdthreads
|
||||
endif
|
||||
|
||||
ifneq ($(UNAME_S),Darwin)
|
||||
YR_RUNTESTS_LINKS += -Wl,-rpath,$(PREFIX)/lib
|
||||
endif
|
||||
|
||||
LIBYACHTROCK_YAP_LINK_OPTIONS = --stdthreads --sockets --dl
|
||||
|
||||
YR_RUNTESTS_OBJ := $(patsubst %.c,%.o,$(filter %.c,$(YR_RUNTESTS_SRC)))
|
||||
|
||||
|
@ -79,16 +63,11 @@ $(LIBYACHTROCK_STATIC_SRC): $(LIBYACHTROCK_GENERATED_SRC)
|
|||
|
||||
$(LIBYACHTROCK_OBJ): CFLAGS += -fPIC -D_POSIX_C_SOURCE=200809L -Wmissing-prototypes
|
||||
|
||||
ifeq ($(UNAME_S),Darwin)
|
||||
$(LIBYACHTROCK_DYLIBNAME): $(LIBYACHTROCK_OBJ)
|
||||
$(CC) -dynamiclib $(LIBYACHTROCK_OBJ) -install_name $(PREFIX)/lib/$@ $(LIBYACHTROCK_LINKS) -o $@
|
||||
else
|
||||
$(LIBYACHTROCK_DYLIBNAME): $(LIBYACHTROCK_OBJ)
|
||||
$(CC) -shared $(LIBYACHTROCK_OBJ) $(LIBYACHTROCK_LINKS) -Wl,-rpath,$(PREFIX)/lib/$@ -o $@
|
||||
endif
|
||||
$(YAP_LINK) --driver $(CC) --dynamic_install_name $(PREFIX)/lib/$@ $(LIBYACHTROCK_YAP_LINK_OPTIONS) -- $(LIBYACHTROCK_OBJ) $(LIBYACHTROCK_LINKS) -o $@
|
||||
|
||||
$(YR_RUNTESTS): $(YR_RUNTESTS_OBJ) $(LIBYACHTROCK_DYLIBNAME)
|
||||
$(CC) $^ -o $@ $(YR_RUNTESTS_LINKS)
|
||||
$(YAP_LINK) --driver $(CC) --links_self_using_prefix "$(PREFIX)" --dl -- $^ -o $@
|
||||
|
||||
clean_libyachtrock:
|
||||
rm -f $(LIBYACHTROCK_DYLIBNAME)
|
||||
|
@ -99,38 +78,27 @@ clean_libyachtrock:
|
|||
|
||||
install: install_libyachtrock_dylib install_libyachtrock_headers
|
||||
|
||||
ifneq ($(filter $(YR_RUNTESTS),$(PRODUCTS)),)
|
||||
install: install_yr_runtests
|
||||
else
|
||||
install: uninstall_yr_runtests
|
||||
endif
|
||||
|
||||
uninstall_yr_runtests:
|
||||
ifneq ($(shell [ -f $(PREFIX)/bin/$(YR_RUNTESTS) ] && echo "do it"),)
|
||||
rm -f $(PREFIX)/bin/$(YR_RUNTESTS)
|
||||
endif
|
||||
|
||||
install_yr_runtests: $(PREFIX)/bin/$(YR_RUNTESTS)
|
||||
|
||||
$(PREFIX)/bin/$(YR_RUNTESTS): $(YR_RUNTESTS) $(PREFIX)/bin
|
||||
$(INSTALLER) -m 0755 -vc $< $(PREFIX)/bin
|
||||
$(YAP_INSTALL) -m 0755 -vc $< $(PREFIX)/bin
|
||||
|
||||
install_libyachtrock_dylib: $(PREFIX)/lib/$(LIBYACHTROCK_DYLIBNAME)
|
||||
|
||||
$(PREFIX)/lib/$(LIBYACHTROCK_DYLIBNAME): $(LIBYACHTROCK_DYLIBNAME) $(PREFIX)/lib
|
||||
$(INSTALLER) -vc $< $(PREFIX)/lib
|
||||
$(YAP_INSTALL) -vc $< $(PREFIX)/lib
|
||||
|
||||
install_libyachtrock_headers: libyachtrock_headers_installation_dir libyachtrock_installed_headers
|
||||
|
||||
libyachtrock_headers_installation_dir: $(PREFIX)/include/yachtrock
|
||||
|
||||
$(PREFIX)/include/yachtrock:
|
||||
$(INSTALLER) -dv $(PREFIX)/include/yachtrock
|
||||
$(YAP_INSTALL) -dv $(PREFIX)/include/yachtrock
|
||||
|
||||
libyachtrock_installed_headers: $(LIBYACHTROCK_HEADER_INSTALLED_FILES)
|
||||
|
||||
$(PREFIX)/include/yachtrock/%.h: $(LIBYACHTROCK_DIR)public_headers/yachtrock/%.h
|
||||
$(INSTALLER) -m 0644 -vc $< $(PREFIX)/include/yachtrock
|
||||
$(YAP_INSTALL) -m 0644 -vc $< $(PREFIX)/include/yachtrock
|
||||
|
||||
libyachtrock_install_dev_dylib_links: $(PREFIX)/lib
|
||||
ln -s `pwd`/$(LIBYACHTROCK $(PREFIX)/lib/$(LIBYACHTROCK_DYLIBNAME)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# -*- mode: makefile-gmake -*-
|
||||
|
||||
TESTS += test_libyachtrock
|
||||
test: test_libyachtrock
|
||||
|
||||
LIBYACHTROCK_TESTSRC := selftests_collection.c basic_tests.c result_store_tests.c assertion_tests.c testcase_tests.c run_under_store_tests.c selector_tests.c
|
||||
ifeq ($(YACHTROCK_MULTIPROCESS),1)
|
||||
|
@ -17,7 +17,11 @@ LIBYACHTROCK_TESTSUPPORT_OBJ =
|
|||
|
||||
YR_SIMPLE_RUNNER = $(LIBYACHTROCK_DIR)test/yachtrock_test_runner
|
||||
|
||||
ifeq ($(YAP_UNAME_S), Darwin)
|
||||
YR_TEST_DYLIB = $(LIBYACHTROCK_DIR)test/libyachtrock_test.dylib
|
||||
else
|
||||
YR_TEST_DYLIB = $(LIBYACHTROCK_DIR)test/libyachtrock_test.so
|
||||
endif
|
||||
|
||||
YR_SELFTESTS_DYLIB = $(LIBYACHTROCK_DIR)test/libyachtrock_selftests.dylib
|
||||
YR_RUNTESTS_TEST = $(LIBYACHTROCK_DIR)test/yr_runtests_test
|
||||
|
@ -39,35 +43,26 @@ clean_libyachtrock: clean_libyachtrock_tests
|
|||
|
||||
YACHTROCK_TEST_INVOCATION_ENVIRON =
|
||||
|
||||
ifeq ($(UNAME_S), Darwin)
|
||||
$(YR_TEST_DYLIB): $(LIBYACHTROCK_OBJ)
|
||||
$(CC) -dynamiclib $(LIBYACHTROCK_OBJ) -install_name `pwd`/$@ $(LIBYACHTROCK_LINKS) -o $@
|
||||
else
|
||||
YR_TEST_INVOCATION_ENVIRON += LD_LIBRARY_PATH=$(LIBYACHTROCK_DIR)test
|
||||
$(YR_TEST_DYLIB): $(LIBYACHTROCK_OBJ)
|
||||
$(CC) -shared $(LIBYACHTROCK_OBJ) $(LIBYACHTROCK_LINKS) -Wl,-rpath,`pwd`/$(LIBYACHTROCK_DIR)test -o $@
|
||||
endif
|
||||
$(YAP_LINK) --driver $(CC) --dynamic_install_name `pwd`/$@ $(LIBYACHTROCK_YAP_LINK_OPTIONS) -- $(LIBYACHTROCK_OBJ) $(LIBYACHTROCK_LINKS) -o $@
|
||||
|
||||
YR_TEST_DYLIB_LDFLAGS = -L$(LIBYACHTROCK_DIR)test -lyachtrock_test
|
||||
|
||||
ifeq ($(UNAME_S), Darwin)
|
||||
$(YR_SELFTESTS_DYLIB): $(LIBYACHTROCK_TESTOBJ) $(YR_TEST_DYLIB)
|
||||
$(CC) -dynamiclib $(LIBYACHTROCK_TESTOBJ) -install_name `pwd`/$@ $(YR_TEST_DYLIB) -o $@
|
||||
else
|
||||
$(YR_SELFTESTS_DYLIB): $(LIBYACHTROCK_TESTOBJ) $(YR_TEST_DYLIB)
|
||||
$(CC) -shared $(LIBYACHTROCK_TESTOBJ) $(YR_TEST_DYLIB) -Wl,-rpath,`pwd`/$(LIBYACHTROCK_DIR)test -o $@
|
||||
endif
|
||||
$(YAP_LINK) --driver $(CC) --dynamic_install_name `pwd`/$@ -- $(LIBYACHTROCK_TESTOBJ) $(YR_TEST_DYLIB_LDFLAGS) -o $@
|
||||
|
||||
$(YR_RUNTESTS_TEST): $(YR_RUNTESTS_OBJ) $(YR_TEST_DYLIB)
|
||||
$(CC) $^ -o $@ $(YR_RUNTESTS_LINKS)
|
||||
$(YAP_LINK) --driver $(CC) $(LIBYACHTROCK_YAP_LINK_OPTIONS) -- $(YR_TEST_DYLIB_LDFLAGS) $(YR_RUNTESTS_OBJ) -o $@
|
||||
|
||||
$(YR_MULTIPROCESS_TEST_TRAMPOLINE): $(LIBYACHTROCK_DIR)test/multiprocess_basic_tests.o $(LIBYACHTROCK_DIR)test/multiprocess_test_trampoline.o $(YR_TEST_DYLIB)
|
||||
$(CC) $^ $(LIBYACHTROCK_LINKS) -o $@
|
||||
$(YAP_LINK) --driver $(CC) -- $(LIBYACHTROCK_DIR)test/multiprocess_basic_tests.o $(LIBYACHTROCK_DIR)test/multiprocess_test_trampoline.o $(YR_TEST_DYLIB_LDFLAGS) $(LIBYACHTROCK_LINKS) -o $@
|
||||
|
||||
_yr_clean_trampoline:
|
||||
rm -f $(YR_MULTIPROCESS_TEST_TRAMPOLINE) $(LIBYACHTROCK_DIR)test/multiprocess_test_trampoline.o
|
||||
clean_libyachtrock: _yr_clean_trampoline
|
||||
|
||||
$(YR_SIMPLE_RUNNER): $(LIBYACHTROCK_TESTMAIN_OBJ) $(LIBYACHTROCK_TESTOBJ) $(YR_TEST_DYLIB)
|
||||
$(CC) $^ $(LIBYACHTROCK_LINKS) -o $@
|
||||
$(YAP_LINK) --driver $(CC) -- $(LIBYACHTROCK_TESTMAIN_OBJ) $(LIBYACHTROCK_TESTOBJ) $(YR_TEST_DYLIB_LDFLAGS) $(LIBYACHTROCK_LINKS) -o $@
|
||||
|
||||
YR_TEST_CONDITIONAL_DEPENDENCIES :=
|
||||
|
||||
|
@ -81,13 +76,8 @@ $(LIBYACHTROCK_TESTOBJ): CFLAGS += -fpic
|
|||
YACHTROCK_TEST_INVOCATION_ENVIRON += YRTEST_DUMMY_MODULE=$(LIBYACHTROCK_DIR)test/dummy_module.dylib
|
||||
|
||||
$(LIBYACHTROCK_DIR)test/dummy_module.o: CFLAGS += -fPIC -D_POSIX_C_SOURCE=200809L
|
||||
ifeq ($(UNAME_S),Darwin)
|
||||
$(LIBYACHTROCK_DIR)test/dummy_module.dylib: $(LIBYACHTROCK_DIR)test/dummy_module.o $(YR_TEST_DYLIB)
|
||||
$(CC) -dynamiclib $^ -o $@
|
||||
else
|
||||
$(LIBYACHTROCK_DIR)test/dummy_module.dylib: $(LIBYACHTROCK_DIR)test/dummy_module.o $(YR_TEST_DYLIB)
|
||||
$(CC) -shared $^ -o $@
|
||||
endif
|
||||
$(YAP_LINK) --driver $(CC) --dynamic_install_name `pwd`/$@ -- $(LIBYACHTROCK_DIR)test/dummy_module.o $(YR_TEST_DYLIB_LDFLAGS) -o $@
|
||||
|
||||
YR_TEST_CONDITIONAL_DEPENDENCIES += $(LIBYACHTROCK_DIR)test/dummy_module.dylib
|
||||
test_libyachtrock: test_libyachtrock_via_selftest_dylib
|
||||
|
|
|
@ -0,0 +1,197 @@
|
|||
#!/bin/sh
|
||||
|
||||
uname_s=`uname -s`
|
||||
|
||||
usage()
|
||||
{
|
||||
echo "usage: $0 -o output_filename -d driver [driveropt…]" >&2
|
||||
}
|
||||
|
||||
invalid_usage()
|
||||
{
|
||||
usage
|
||||
exit 1
|
||||
}
|
||||
|
||||
# http://www.etalabs.net/sh_tricks.html
|
||||
save ()
|
||||
{
|
||||
for i; do
|
||||
printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ;
|
||||
done
|
||||
echo " "
|
||||
}
|
||||
|
||||
quote ()
|
||||
{
|
||||
printf %s\\n "$1" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/'/"
|
||||
}
|
||||
|
||||
append_element_to_quoted_array()
|
||||
{
|
||||
var=$1
|
||||
saved_args=$(save "$@")
|
||||
eval "set -- $2 $(quote "$3")"
|
||||
retv=$(save "$@")
|
||||
eval "$var=\${retv}"
|
||||
eval "set -- $saved_args"
|
||||
unset retv
|
||||
}
|
||||
|
||||
add_linkage_rpath_to_array()
|
||||
{
|
||||
if [ $uname_s = Darwin ]; then
|
||||
eval "$1=\$2"
|
||||
else
|
||||
append_element_to_quoted_array "$1" "$2" "-Wl,-rpath,${3}"
|
||||
fi
|
||||
}
|
||||
|
||||
add_install_name_arguments_to_array()
|
||||
{
|
||||
if [ $uname_s = Darwin ]; then
|
||||
temp="$2"
|
||||
append_element_to_quoted_array temp "$temp" "-dynamiclib"
|
||||
append_element_to_quoted_array temp "$temp" "-install_name"
|
||||
append_element_to_quoted_array "$1" "$temp" "${3}"
|
||||
unset temp
|
||||
else
|
||||
append_element_to_quoted_array "$1" "$2" "-shared"
|
||||
fi
|
||||
}
|
||||
|
||||
add_link_prefix_to_array()
|
||||
{
|
||||
if [ $uname_s = Darwin ]; then
|
||||
eval "$1=\$2"
|
||||
else
|
||||
add_linkage_rpath_to_array "$1" "$2" "$3"
|
||||
fi
|
||||
}
|
||||
|
||||
add_stdthreads_links()
|
||||
{
|
||||
if [ $uname_s = FreeBSD ]; then
|
||||
append_element_to_quoted_array "$1" "$2" "-lstdthreads"
|
||||
else
|
||||
eval "$1=\$2"
|
||||
fi
|
||||
}
|
||||
|
||||
add_sockets_links()
|
||||
{
|
||||
if [ $uname_s = SunOS ]; then
|
||||
temp="$2"
|
||||
append_element_to_quoted_array temp "$temp" -lsocket
|
||||
append_element_to_quoted_array "$1" "$temp" -lnsl
|
||||
unset temp
|
||||
else
|
||||
eval "$1=\$2"
|
||||
fi
|
||||
}
|
||||
|
||||
add_dl_links()
|
||||
{
|
||||
if [ $uname_s = Linux ]; then
|
||||
append_element_to_quoted_array "$1" "$2" "-ldl"
|
||||
else
|
||||
eval "$1=\$2"
|
||||
fi
|
||||
}
|
||||
|
||||
driver=cc
|
||||
dynamic_install_name=""
|
||||
link_prefix=""
|
||||
uses_stdthreads=false
|
||||
uses_sockets=false
|
||||
uses_dl=false
|
||||
|
||||
#parse script options.
|
||||
while true; do
|
||||
case "$1" in
|
||||
--driver)
|
||||
driver="$2"; shift
|
||||
;;
|
||||
--dynamic_install_name)
|
||||
dynamic_install_name="$2"; shift
|
||||
;;
|
||||
--links_self_using_prefix)
|
||||
link_prefix="$2"; shift
|
||||
;;
|
||||
--stdthreads)
|
||||
uses_stdthreads=true
|
||||
;;
|
||||
--sockets)
|
||||
uses_sockets=true
|
||||
;;
|
||||
--dl)
|
||||
uses_dl=true
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
break
|
||||
;;
|
||||
*)
|
||||
echo "$0: unknown argument $1" >&2
|
||||
invalid_usage
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
# remaining argument list is the base of linker arglist.
|
||||
linker_arglist=$(save "$@")
|
||||
|
||||
# process script options that add links.
|
||||
if [ ${dynamic_install_name}x != x ]; then
|
||||
# linking a shared library.
|
||||
add_install_name_arguments_to_array linker_arglist "${linker_arglist}" "${dynamic_install_name}"
|
||||
fi
|
||||
|
||||
if [ ${link_prefix}x != x ]; then
|
||||
# asked to add the prefix to the rpath and lib search paths.
|
||||
append_element_to_quoted_array linker_arglist "${linker_arglist}" "-L."
|
||||
add_link_prefix_to_array linker_arglist "${linker_arglist}" "${link_prefix}/lib"
|
||||
fi
|
||||
|
||||
if $uses_stdthreads; then
|
||||
add_stdthreads_links linker_arglist "${linker_arglist}"
|
||||
fi
|
||||
|
||||
if $uses_sockets; then
|
||||
add_sockets_links linker_arglist "${linker_arglist}"
|
||||
fi
|
||||
|
||||
if $uses_dl; then
|
||||
add_dl_links linker_arglist "${linker_arglist}"
|
||||
fi
|
||||
|
||||
# iterate argument list looking for -L flags.
|
||||
while true; do
|
||||
link=""
|
||||
case "$1" in
|
||||
-L)
|
||||
link=$2; shift
|
||||
;;
|
||||
-L*)
|
||||
link=${1##-L}
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ ${link}x != x ] ; then
|
||||
# do a shuffle to add -Wl,-rpath,<libdir>
|
||||
add_linkage_rpath_to_array linker_arglist "${linker_arglist}" "${link}"
|
||||
fi
|
||||
|
||||
shift
|
||||
if [ $# -eq 0 ] ; then
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
eval "set -- $linker_arglist"
|
||||
|
||||
set -x
|
||||
$driver "$@"
|
|
@ -0,0 +1,79 @@
|
|||
# -*- mode: makefile-gmake -*-
|
||||
|
||||
# define toplevel actions first.
|
||||
|
||||
all:
|
||||
|
||||
clean:
|
||||
|
||||
test:
|
||||
|
||||
# set helper variables.
|
||||
|
||||
YAP_INSTALL := ./yap/install.sh
|
||||
YAP_LINK := ./yap/link.sh
|
||||
YAP_UNAME_S := $(shell uname -s)
|
||||
|
||||
ifeq ($(shell uname),SunOS)
|
||||
CC=gcc
|
||||
endif
|
||||
|
||||
YAP_IS_GCC := $(shell ($(CC) --version | grep 'Copyright.*Free Software Foundation') > /dev/null && echo "YES")
|
||||
|
||||
# set default flags.
|
||||
|
||||
CXXFLAGS += -std=c++17 -Wall
|
||||
CFLAGS += -std=c11 -Wall
|
||||
CFLAGS += $(patsubst %,-I%,$(MODULES))
|
||||
CXXFLAGS += $(patsubst %,-I%,$(MODULES))
|
||||
CFLAGS += $(patsubst %,-I%/public_headers,$(MODULES))
|
||||
CXXFLAGS += $(patsubst %,-I%/public_headers,$(MODULES))
|
||||
|
||||
# define recipes for depend files.
|
||||
|
||||
%.d: %.c
|
||||
./yap/depend.sh `dirname $*.c` $(CFLAGS) $*.c > $@
|
||||
|
||||
%.d: %.cc
|
||||
./yap/depend.sh `dirname $*.cc` $(CXXFLAGS) $*.cc > $@
|
||||
|
||||
# define filelist variables for modules to add to.
|
||||
|
||||
ALLOBJ = $(patsubst %.c,%.o,$(filter %.c,$(CSRC)))
|
||||
ALLOBJ += $(patsubst %.cc,%.o,$(filter %.cc,$(CPPSRC)))
|
||||
ALLDEPEND = $(ALLOBJ:.o=.d)
|
||||
|
||||
# include configuration.
|
||||
-include configuration.mk
|
||||
|
||||
ifndef PREFIX
|
||||
$(error PREFIX must be set via configuration.mk, even if to /)
|
||||
endif
|
||||
|
||||
# include the project's modules, and then the defined depend files.
|
||||
|
||||
include $(MODULES:=/module.mk)
|
||||
|
||||
# hack: we need to add the dependency on generated headers now. If attempted before including modules,
|
||||
# the variables aren't defined yet so the dependencies don't take.
|
||||
$(ALLDEPEND): $(GENERATED_HEADERS)
|
||||
|
||||
include $(ALLDEPEND)
|
||||
|
||||
# help out with some basic action prerequisites.
|
||||
|
||||
clean_allobj:
|
||||
rm -f $(ALLOBJ)
|
||||
|
||||
clean_alldepend:
|
||||
rm -f $(ALLDEPEND)
|
||||
|
||||
clean: clean_allobj clean_alldepend
|
||||
|
||||
$(PREFIX)/lib:
|
||||
$(YAP_INSTALL) -d $(PREFIX)/lib
|
||||
|
||||
$(PREFIX)/include:
|
||||
$(YAP_INSTALL) -d $(PREFIX)/include
|
||||
|
||||
.DEFAULT_GOAL := all
|
Loading…
Reference in New Issue