From 092ccd97aabe048cb5730b5799d712332c98a9da Mon Sep 17 00:00:00 2001 From: midipix Date: Sat, 24 Apr 2021 21:51:33 +0000 Subject: build system: created skeleton. --- .../core/_flavor/flavor_app_frontend_disabled.mk | 6 ++ sofort/core/_flavor/flavor_app_frontend_enabled.mk | 6 ++ .../core/_flavor/flavor_app_linking_all_shared.mk | 7 +++ .../core/_flavor/flavor_app_linking_all_static.mk | 7 +++ sofort/core/_flavor/flavor_app_linking_default.mk | 7 +++ .../core/_flavor/flavor_install_headers_custom.mk | 4 ++ .../core/_flavor/flavor_install_headers_default.mk | 4 ++ .../core/_flavor/flavor_shared_library_disabled.mk | 5 ++ .../core/_flavor/flavor_shared_library_enabled.mk | 5 ++ .../core/_flavor/flavor_static_library_disabled.mk | 5 ++ .../core/_flavor/flavor_static_library_enabled.mk | 5 ++ sofort/core/_infer/infer_modern.mk | 22 ++++++++ sofort/core/_infer/infer_posix.mk | 27 +++++++++ .../core/_version/_soname/version_soname_copy.mk | 8 +++ .../_version/_soname/version_soname_symlink.mk | 12 ++++ sofort/core/_version/version_none.mk | 10 ++++ sofort/core/_version/version_used.mk | 26 +++++++++ sofort/core/defs.mk | 66 ++++++++++++++++++++++ sofort/core/flavor.mk | 12 ++++ sofort/core/infer.mk | 4 ++ sofort/core/pkgconf.mk | 39 +++++++++++++ sofort/core/version.mk | 10 ++++ 22 files changed, 297 insertions(+) create mode 100644 sofort/core/_flavor/flavor_app_frontend_disabled.mk create mode 100644 sofort/core/_flavor/flavor_app_frontend_enabled.mk create mode 100644 sofort/core/_flavor/flavor_app_linking_all_shared.mk create mode 100644 sofort/core/_flavor/flavor_app_linking_all_static.mk create mode 100644 sofort/core/_flavor/flavor_app_linking_default.mk create mode 100644 sofort/core/_flavor/flavor_install_headers_custom.mk create mode 100644 sofort/core/_flavor/flavor_install_headers_default.mk create mode 100644 sofort/core/_flavor/flavor_shared_library_disabled.mk create mode 100644 sofort/core/_flavor/flavor_shared_library_enabled.mk create mode 100644 sofort/core/_flavor/flavor_static_library_disabled.mk create mode 100644 sofort/core/_flavor/flavor_static_library_enabled.mk create mode 100644 sofort/core/_infer/infer_modern.mk create mode 100644 sofort/core/_infer/infer_posix.mk create mode 100644 sofort/core/_version/_soname/version_soname_copy.mk create mode 100644 sofort/core/_version/_soname/version_soname_symlink.mk create mode 100644 sofort/core/_version/version_none.mk create mode 100644 sofort/core/_version/version_used.mk create mode 100644 sofort/core/defs.mk create mode 100644 sofort/core/flavor.mk create mode 100644 sofort/core/infer.mk create mode 100644 sofort/core/pkgconf.mk create mode 100644 sofort/core/version.mk (limited to 'sofort/core') diff --git a/sofort/core/_flavor/flavor_app_frontend_disabled.mk b/sofort/core/_flavor/flavor_app_frontend_disabled.mk new file mode 100644 index 0000000..31ad23a --- /dev/null +++ b/sofort/core/_flavor/flavor_app_frontend_disabled.mk @@ -0,0 +1,6 @@ +# flavor_app_frontend_disabled.mk: handling of frontend build options. +# this file is covered by COPYING.SOFORT. + +app-tag: +package-install-app: +package-install-extras: diff --git a/sofort/core/_flavor/flavor_app_frontend_enabled.mk b/sofort/core/_flavor/flavor_app_frontend_enabled.mk new file mode 100644 index 0000000..ebbc256 --- /dev/null +++ b/sofort/core/_flavor/flavor_app_frontend_enabled.mk @@ -0,0 +1,6 @@ +# flavor_app_frontend_enabled.mk: handling of frontend build options. +# this file is covered by COPYING.SOFORT. + +app-tag: package-app app.tag +package-install-app: install-app +package-install-extras: install-extras diff --git a/sofort/core/_flavor/flavor_app_linking_all_shared.mk b/sofort/core/_flavor/flavor_app_linking_all_shared.mk new file mode 100644 index 0000000..fe89318 --- /dev/null +++ b/sofort/core/_flavor/flavor_app_linking_all_shared.mk @@ -0,0 +1,7 @@ +# flavor_app_linking_all_shared.mk: handling of frontend linking options. +# this file is covered by COPYING.SOFORT. + +PACKAGE_APP = $(SHARED_APP) + +package-app: shared-app +app.tag: $(SHARED_APP) diff --git a/sofort/core/_flavor/flavor_app_linking_all_static.mk b/sofort/core/_flavor/flavor_app_linking_all_static.mk new file mode 100644 index 0000000..7a5f620 --- /dev/null +++ b/sofort/core/_flavor/flavor_app_linking_all_static.mk @@ -0,0 +1,7 @@ +# flavor_app_linking_all_static.mk: handling of frontend linking options. +# this file is covered by COPYING.SOFORT. + +PACKAGE_APP = $(STATIC_APP) + +package-app: static-app +app.tag: $(STATIC_APP) diff --git a/sofort/core/_flavor/flavor_app_linking_default.mk b/sofort/core/_flavor/flavor_app_linking_default.mk new file mode 100644 index 0000000..b0c1d34 --- /dev/null +++ b/sofort/core/_flavor/flavor_app_linking_default.mk @@ -0,0 +1,7 @@ +# flavor_app_linking_default.mk: handling of frontend linking options. +# this file is covered by COPYING.SOFORT. + +PACKAGE_APP = $(DEFAULT_APP) + +package-app: default-app +app.tag: $(DEFAULT_APP) diff --git a/sofort/core/_flavor/flavor_install_headers_custom.mk b/sofort/core/_flavor/flavor_install_headers_custom.mk new file mode 100644 index 0000000..4f8da97 --- /dev/null +++ b/sofort/core/_flavor/flavor_install_headers_custom.mk @@ -0,0 +1,4 @@ +# flavor_install_headers_custom.mk: handling of header installation option. +# this file is covered by COPYING.SOFORT. + +install-headers:install-headers-custom diff --git a/sofort/core/_flavor/flavor_install_headers_default.mk b/sofort/core/_flavor/flavor_install_headers_default.mk new file mode 100644 index 0000000..f8b49c4 --- /dev/null +++ b/sofort/core/_flavor/flavor_install_headers_default.mk @@ -0,0 +1,4 @@ +# flavor_install_headers_default.mk: handling of header installation option. +# this file is covered by COPYING.SOFORT. + +install-headers:install-headers-default diff --git a/sofort/core/_flavor/flavor_shared_library_disabled.mk b/sofort/core/_flavor/flavor_shared_library_disabled.mk new file mode 100644 index 0000000..9846e1b --- /dev/null +++ b/sofort/core/_flavor/flavor_shared_library_disabled.mk @@ -0,0 +1,5 @@ +# flavor_shared_library_disabled.mk: handling of shared library dependencies. +# this file is covered by COPYING.SOFORT. + +package-shared: +package-install-shared: diff --git a/sofort/core/_flavor/flavor_shared_library_enabled.mk b/sofort/core/_flavor/flavor_shared_library_enabled.mk new file mode 100644 index 0000000..2e54d21 --- /dev/null +++ b/sofort/core/_flavor/flavor_shared_library_enabled.mk @@ -0,0 +1,5 @@ +# flavor_shared_library_enabled.mk: handling of shared library dependencies. +# this file is covered by COPYING.SOFORT. + +package-shared: shared +package-install-shared: install-shared diff --git a/sofort/core/_flavor/flavor_static_library_disabled.mk b/sofort/core/_flavor/flavor_static_library_disabled.mk new file mode 100644 index 0000000..e46d186 --- /dev/null +++ b/sofort/core/_flavor/flavor_static_library_disabled.mk @@ -0,0 +1,5 @@ +# flavor_static_library_disabled.mk: handling of static library dependencies. +# this file is covered by COPYING.SOFORT. + +package-static: +package-install-static: diff --git a/sofort/core/_flavor/flavor_static_library_enabled.mk b/sofort/core/_flavor/flavor_static_library_enabled.mk new file mode 100644 index 0000000..20d4bd8 --- /dev/null +++ b/sofort/core/_flavor/flavor_static_library_enabled.mk @@ -0,0 +1,5 @@ +# flavor_static_library_enabled.mk: handling of static library dependencies. +# this file is covered by COPYING.SOFORT. + +package-static: static +package-install-static: install-static diff --git a/sofort/core/_infer/infer_modern.mk b/sofort/core/_infer/infer_modern.mk new file mode 100644 index 0000000..aaf3361 --- /dev/null +++ b/sofort/core/_infer/infer_modern.mk @@ -0,0 +1,22 @@ +# infer_modern.mk: modern make target- and inference rules. +# this file is covered by COPYING.SOFORT. + +src/%.ao: $(SOURCE_DIR)/src/%.c + $(CC) -c -o $@ $< $(CFLAGS_APP) + +src/%.lo: $(SOURCE_DIR)/src/%.c + $(CC) -c -o $@ $< $(CFLAGS_SHARED) + +src/%.o: $(SOURCE_DIR)/src/%.c + $(CC) -c -o $@ $< $(CFLAGS_STATIC) + +$(SHARED_LIB): + $(SHARED_LIB_CMD) $@ $^ $(SHARED_LIB_LDFLAGS) $(LDFLAGS_IMPLIB) + +lib/%$(OS_ARCHIVE_EXT): + mkdir -p lib + rm -f $@ + $(AR) rcs $@ $^ + +srcs.tag: + touch $@ diff --git a/sofort/core/_infer/infer_posix.mk b/sofort/core/_infer/infer_posix.mk new file mode 100644 index 0000000..ae990e8 --- /dev/null +++ b/sofort/core/_infer/infer_posix.mk @@ -0,0 +1,27 @@ +# infer_posix.mk: posix make target- and inference rules. +# this file is covered by COPYING.SOFORT. + +.c.ao: + $(CC) -c -o $@ $< $(CFLAGS_APP) + +.c.lo: + $(CC) -c -o $@ $< $(CFLAGS_SHARED) + +.c.o: + $(CC) -c -o $@ $< $(CFLAGS_STATIC) + +$(SHARED_LIB): + $(SHARED_LIB_CMD) $@ $(SHARED_OBJS) $(SHARED_LIB_LDFLAGS) $(LDFLAGS_IMPLIB) + +$(STATIC_LIB): + mkdir -p lib + rm -f $@ + $(AR) rcs $@ $(STATIC_OBJS) + +srcs.tag: tree.tag + +srcs.tag: + $(PROJECT_DIR)/sofort/tools/srctree.sh \ + --srctree=$(SOURCE_DIR) -- \ + $(COMMON_SRCS) $(APP_SRCS) + touch $@ diff --git a/sofort/core/_version/_soname/version_soname_copy.mk b/sofort/core/_version/_soname/version_soname_copy.mk new file mode 100644 index 0000000..c176d5a --- /dev/null +++ b/sofort/core/_version/_soname/version_soname_copy.mk @@ -0,0 +1,8 @@ +# version_soname_copy.mk: handling of shared library versioning schemes. +# this file is covered by COPYING.SOFORT. + +install-soname: install-lib + cp $(SHARED_LIB) $(DESTDIR)$(LIBDIR)/$(DSO_SONAME) + +$(SHARED_SONAME): $(SHARED_LIB) + cp $(SHARED_LIB) $(SHARED_SONAME) diff --git a/sofort/core/_version/_soname/version_soname_symlink.mk b/sofort/core/_version/_soname/version_soname_symlink.mk new file mode 100644 index 0000000..963b891 --- /dev/null +++ b/sofort/core/_version/_soname/version_soname_symlink.mk @@ -0,0 +1,12 @@ +# version_soname_symlink.mk: handling of shared library versioning schemes. +# this file is covered by COPYING.SOFORT. + +$(SHARED_SONAME): $(SHARED_LIB) + rm -f $@.tmp + ln -s $(DSO_VER) $@.tmp + mv $@.tmp $@ + +install-soname: install-lib + rm -f $(SHARED_SONAME).tmp + ln -s $(DSO_VER) $(SHARED_SONAME).tmp + mv $(SHARED_SONAME).tmp $(DESTDIR)$(LIBDIR)/$(DSO_SONAME) diff --git a/sofort/core/_version/version_none.mk b/sofort/core/_version/version_none.mk new file mode 100644 index 0000000..d8fc570 --- /dev/null +++ b/sofort/core/_version/version_none.mk @@ -0,0 +1,10 @@ +# version_none.mk: handling of shared library versioning schemes. +# this file is covered by COPYING.SOFORT. + +VER_XYZ = +VER_SONAME = + +package-shared-soname: +package-shared-solink: +package-install-soname: +package-install-solink: diff --git a/sofort/core/_version/version_used.mk b/sofort/core/_version/version_used.mk new file mode 100644 index 0000000..4724cee --- /dev/null +++ b/sofort/core/_version/version_used.mk @@ -0,0 +1,26 @@ +# version_used.mk: handling of shared library versioning schemes. +# this file is covered by COPYING.SOFORT. + +VER_XYZ = .$(VER_MAJOR).$(VER_MINOR).$(VER_PATCH) +VER_SONAME = .$(VER_MAJOR) + +package-shared-soname: shared-soname +package-shared-solink: shared-solink +package-install-soname: install-soname +package-install-solink: install-solink + + + +# libfoo.so (common) +install-solink: install-lib + rm -f $(SHARED_SOLINK).tmp + ln -s $(DSO_VER) $(SHARED_SOLINK).tmp + mv $(SHARED_SOLINK).tmp $(DESTDIR)$(LIBDIR)/$(DSO_SOLINK) + +$(SHARED_SOLINK): $(SHARED_LIB) + rm -f $@.tmp + ln -s $(DSO_VER) $@.tmp + mv $@.tmp $@ + +# libfoo.so.x (symlink or copy) +include $(PROJECT_DIR)/sofort/core/_version/_soname/version_soname_$(OS_SONAME).mk diff --git a/sofort/core/defs.mk b/sofort/core/defs.mk new file mode 100644 index 0000000..2622cff --- /dev/null +++ b/sofort/core/defs.mk @@ -0,0 +1,66 @@ +SHARED_LIB_DEPS += +SHARED_APP_DEPS += +STATIC_APP_DEPS += + +COMMON_LOBJS += $(COMMON_SRCS:.c=.lo) +COMMON_OBJS += $(COMMON_SRCS:.c=.o) + +ARCH_LOBJS += $(ARCH_SRCS:.c=.lo) +ARCH_OBJS += $(ARCH_SRCS:.c=.o) + +APP_LOBJS += $(APP_SRCS:.c=.lo) +APP_OBJS += $(APP_SRCS:.c=.ao) + +SHARED_OBJS += $(COMMON_LOBJS) $(ARCH_LOBJS) +STATIC_OBJS += $(COMMON_OBJS) $(ARCH_OBJS) + +STATIC_LIB_NAME = $(OS_LIB_PREFIX)$(PACKAGE)$(OS_ARCHIVE_EXT) +STATIC_LIB = lib/$(STATIC_LIB_NAME) + +DSO_VER = $(OS_LIB_PREFIX)$(PACKAGE)$(OS_LIB_PREFIXED_SUFFIX)$(VER_XYZ)$(OS_LIB_SUFFIXED_SUFFIX) +DSO_SONAME = $(OS_LIB_PREFIX)$(PACKAGE)$(OS_LIB_PREFIXED_SUFFIX)$(VER_SONAME)$(OS_LIB_SUFFIXED_SUFFIX) +DSO_SOLINK = $(OS_LIB_PREFIX)$(PACKAGE)$(OS_LIB_SUFFIX) + +SHARED_LIB = lib/$(DSO_VER) +SHARED_SONAME = lib/$(DSO_SONAME) +SHARED_SOLINK = lib/$(DSO_SOLINK) + +IMP_DEF = $(OS_LIB_PREFIX)$(PACKAGE)$(VER_XYZ)$(OS_LIBDEF_EXT) +IMP_VER = $(OS_LIB_PREFIX)$(PACKAGE)$(VER_XYZ)$(OS_IMPLIB_EXT) +IMP_SONAME = $(OS_LIB_PREFIX)$(PACKAGE)$(VER_SONAME)$(OS_IMPLIB_EXT) +IMP_SOLINK = $(OS_LIB_PREFIX)$(PACKAGE)$(OS_IMPLIB_EXT) + +IMPLIB_DEF = lib/$(IMP_DEF) +IMPLIB_VER = lib/$(IMP_VER) +IMPLIB_SONAME = lib/$(IMP_SONAME) +IMPLIB_SOLINK = lib/$(IMP_SOLINK) + +APP = bin/$(OS_APP_PREFIX)$(NICKNAME)$(OS_APP_SUFFIX) +DEFAULT_APP = bin/$(OS_APP_PREFIX)$(NICKNAME)-default$(OS_APP_SUFFIX) +SHARED_APP = bin/$(OS_APP_PREFIX)$(NICKNAME)-shared$(OS_APP_SUFFIX) +STATIC_APP = bin/$(OS_APP_PREFIX)$(NICKNAME)-static$(OS_APP_SUFFIX) + +CFLAGS = $(CFLAGS_DEBUG) $(CFLAGS_CONFIG) $(CFLAGS_SYSROOT) \ + $(CFLAGS_COMMON) $(CFLAGS_CMDLINE) $(CFLAGS_HOST) \ + $(CFLAGS_PATH) $(CFLAGS_OS) $(CFLAGS_SITE) \ + $(CFLAGS_VERSION) $(CFLAGS_STRICT) \ + $(CFLAGS_LAST) $(CFLAGS_ONCE) + +CFLAGS_SHARED = $(CFLAGS) $(CFLAGS_PIC) $(CFLAGS_SHARED_ATTR) +CFLAGS_STATIC = $(CFLAGS) $(CFLAGS_OBJ) $(CFLAGS_STATIC_ATTR) +CFLAGS_APP = $(CFLAGS) $(CFLAGS_OBJ) $(CFLAGS_APP_ATTR) $(CFLAGS_UTIL) + +LDFLAGS_SHARED = $(LDFLAGS_DEBUG) $(LDFLAGS_CONFIG) $(LDFLAGS_SYSROOT) \ + $(LDFLAGS_COMMON) $(LDFLAGS_CMDLINE) $(LDFLAGS_HOST) \ + $(LDFLAGS_PATH) $(SHARED_LIB_DEPS) $(LDFLAGS_STRICT) \ + $(LDFLAGS_LAST) $(LDFLAGS_ONCE) + +LDFLAGS_APP = $(LDFLAGS_DEBUG) $(LDFLAGS_CONFIG) $(LDFLAGS_SYSROOT) \ + $(LDFLAGS_COMMON) $(LDFLAGS_CMDLINE) $(LDFLAGS_HOST) \ + $(LDFLAGS_PATH) $(SHARED_APP_DEPS) $(LDFLAGS_STRICT) \ + $(LDFLAGS_UTIL) $(LDFLAGS_LAST) $(LDFLAGS_ONCE) + +LDFLAGS_STATIC = $(LDFLAGS_DEBUG) $(LDFLAGS_CONFIG) $(LDFLAGS_SYSROOT) \ + $(LDFLAGS_COMMON) $(LDFLAGS_CMDLINE) $(LDFLAGS_HOST) \ + $(LDFLAGS_PATH) $(STATIC_APP_DEPS) $(LDFLAGS_STRICT) \ + $(LDFLAGS_LAST) $(LDFLAGS_ONCE) diff --git a/sofort/core/flavor.mk b/sofort/core/flavor.mk new file mode 100644 index 0000000..6a7c97a --- /dev/null +++ b/sofort/core/flavor.mk @@ -0,0 +1,12 @@ +# flavor.mk: top-level handling of build flavors. +# this file is covered by COPYING.SOFORT. + +include $(PROJECT_DIR)/sofort/exrules/$(OS_DSO_EXRULES).mk + +include $(PROJECT_DIR)/sofort/core/_flavor/flavor_static_library_$(STATIC_LIBRARY_OPT).mk +include $(PROJECT_DIR)/sofort/core/_flavor/flavor_shared_library_$(SHARED_LIBRARY_OPT).mk + +include $(PROJECT_DIR)/sofort/core/_flavor/flavor_app_frontend_$(APP_FRONTEND_OPT).mk +include $(PROJECT_DIR)/sofort/core/_flavor/flavor_app_linking_$(APP_LINKING_OPT).mk + +include $(PROJECT_DIR)/sofort/core/_flavor/flavor_install_headers_$(INSTALL_HEADERS_OPT).mk diff --git a/sofort/core/infer.mk b/sofort/core/infer.mk new file mode 100644 index 0000000..8a1c6dd --- /dev/null +++ b/sofort/core/infer.mk @@ -0,0 +1,4 @@ +# infer.mk: top-level handling of inference rules. +# this file is covered by COPYING.SOFORT. + +include $(PROJECT_DIR)/sofort/core/_infer/infer_$(MAKEMODE).mk diff --git a/sofort/core/pkgconf.mk b/sofort/core/pkgconf.mk new file mode 100644 index 0000000..5ada069 --- /dev/null +++ b/sofort/core/pkgconf.mk @@ -0,0 +1,39 @@ +# pkgconf.mk: rules for pkgconf manifest generation. +# this file is covered by COPYING.SOFORT. + +PKGCONF_VERSION = $(VER_MAJOR).$(VER_MINOR).$(VER_PATCH) + +.pkgconf: + +build/$(PACKAGE).pc: .pkgconf dirs.tag + +build/$(PACKAGE).pc: + @touch $@ + @chmod 0644 $@ + PKGCONF_NAME='$(PKGNAME)' \ + PKGCONF_DESC='$(PKGDESC)' \ + PKGCONF_USRC='$(PKGUSRC)' \ + PKGCONF_REPO='$(PKGREPO)' \ + PKGCONF_PSRC='$(PKGPSRC)' \ + PKGCONF_DURL='$(PKGDURL)' \ + PKGCONF_BUGS='$(PKGBUGS)' \ + PKGCONF_HOME='$(PKGHOME)' \ + PKGCONF_DEFS='$(PKGDEFS)' \ + PKGCONF_LIBS='$(PKGLIBS)' \ + \ + PKGCONF_EXEC_PREFIX='$(EXEC_PREFIX)' \ + PKGCONF_PREFIX='$(PREFIX)' \ + PKGCONF_LIBDIR='$(LIBDIR)' \ + PKGCONF_INCLUDEDIR='$(INCLUDEDIR)' \ + PKGCONF_VERSION='$(PKGCONF_VERSION)' \ + $(PROJECT_DIR)/sofort/tools/pkgconf.sh > $@ + +install-pkgconf: build/$(PACKAGE).pc + mkdir -p $(DESTDIR)$(LIBDIR)/pkgconfig + cp -p build/$(PACKAGE).pc $(DESTDIR)$(LIBDIR)/pkgconfig + +install-shared: install-pkgconf + +install-static: install-pkgconf + +.PHONY: .pkgconf install-pkgconf diff --git a/sofort/core/version.mk b/sofort/core/version.mk new file mode 100644 index 0000000..ad693ab --- /dev/null +++ b/sofort/core/version.mk @@ -0,0 +1,10 @@ +# version.mk: handling of shared library versioning schemes. +# this file is covered by COPYING.SOFORT. + +include $(PROJECT_DIR)/project/tagver.mk + +CFLAGS_VERSION += -D$(VER_NAMESPACE)_TAG_VER_MAJOR=$(VER_MAJOR) +CFLAGS_VERSION += -D$(VER_NAMESPACE)_TAG_VER_MINOR=$(VER_MINOR) +CFLAGS_VERSION += -D$(VER_NAMESPACE)_TAG_VER_PATCH=$(VER_PATCH) + +include $(PROJECT_DIR)/sofort/core/_version/version_$(VERSION_OPT).mk -- cgit v1.2.3