Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Makefile fixes #648

Merged
merged 6 commits into from
Nov 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
172 changes: 67 additions & 105 deletions Makefile

Large diffs are not rendered by default.

39 changes: 22 additions & 17 deletions bench/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -105,40 +105,46 @@ OBJ := $(filter-out $(BUILD_DIR)/bstrlib.o,$(OBJ))
TARGET_LIB = $(STATIC_TARGET_LIB)
LIBS += -ldl
endif
OBJ_BENCH = $(patsubst $(BENCH_DIR)/%.ptt, $(BUILD_DIR)/%.o,$(wildcard $(BENCH_DIR)/*.ptt))
PTT_BENCH = $(wildcard $(BENCH_DIR)/*.ptt)
OBJ_BENCH = $(patsubst $(BENCH_DIR)/%.ptt, $(BUILD_DIR)/%.o,$(PTT_BENCH))
PAS_BENCH = $(patsubst $(BENCH_DIR)/%.ptt, $(BUILD_DIR)/%.pas,$(PTT_BENCH))
BENCH = $(shell basename $(BENCH_TARGET))

CPPFLAGS := $(CPPFLAGS) $(DEFINES) $(INCLUDES)

all: $(BUILD_DIR) $(OBJ) $(OBJ_BENCH) $(BENCH_TARGET)
all: $(BENCH_TARGET)


$(BENCH_TARGET): $(BENCH)
$(BENCH): likwid-bench.c $(BUILD_DIR) $(OBJ) $(OBJ_BENCH)
$(BENCH): likwid-bench.c $(OBJ) $(OBJ_BENCH)
@echo "===> LINKING $(BENCH)"
$(Q)${CC} $(DEBUG_FLAGS) $(CFLAGS) $(ANSI_CFLAGS) $(CPPFLAGS) ${LFLAGS} likwid-bench.c $(BENCH_LIBS) $(OBJ_BENCH) $(OBJ) -o $(BENCH) $(TARGET_LIB) $(LIBS) $(RPATHS)


$(BUILD_DIR):
@mkdir $(BUILD_DIR)

$(Q)$(CC) $(DEBUG_FLAGS) $(CFLAGS) $(ANSI_CFLAGS) $(CPPFLAGS) $(LFLAGS) -Wl,-z,noexecstack $^ $(BENCH_LIBS) -o $(BENCH) $(TARGET_LIB) $(LIBS) $(RPATHS)

#PATTERN RULES
$(BUILD_DIR)/%.o: %.c
@echo "===> COMPILE C $@"
@mkdir -p $(BUILD_DIR)
$(Q)$(CC) -g -c $(DEBUG_FLAGS) $(CFLAGS) $(ANSI_CFLAGS) $(CPPFLAGS) $< -o $@
$(Q)$(CC) -g $(DEBUG_FLAGS) $(CPPFLAGS) -MT $(@:.d=.o) -MM $< > $(BUILD_DIR)/$*.d


$(BUILD_DIR)/%.pas: $(BENCH_DIR)/%.ptt
# Note: GEN_PAS can only create *.pas from *.ptt all at once, so build the rule accordingly.
# The &: operator only works with GNU make 4.3+, so keep backwards compatibility.
ifneq ($(shell [ "$(MAKE_VERSION)" = "$(echo -e "$(MAKE_VERSION)\n4.3" | sort -V | head -n1)" ] && echo TOO_OLD || echo OK),TOO_OLD)
$(PAS_BENCH) &: $(PTT_BENCH)
else
.NOTPARALLEL: $(PAS_BENCH)
$(PAS_BENCH) : $(PTT_BENCH)
endif
@echo "===> GENERATE BENCHMARKS"
@mkdir -p $(BUILD_DIR)
$(Q)$(GEN_PAS) $(BENCH_DIR) $(BUILD_DIR) ./perl/templates


$(BUILD_DIR)/%.o: $(BUILD_DIR)/%.pas
@echo "===> ASSEMBLE $@"
$(Q)$(PAS) -i $(PASFLAGS) -o $(BUILD_DIR)/$*.s $< '$(DEFINES)'
$(Q)$(AS) $(ASFLAGS) $(BUILD_DIR)/$*.s -o $@
@mkdir -p $(BUILD_DIR)
$(Q)$(PAS) -i $(PASFLAGS) -o $(BUILD_DIR)/$*.s $< '$(DEFINES)'
$(Q)$(AS) $(ASFLAGS) $(BUILD_DIR)/$*.s -o $@

ifeq ($(findstring $(MAKECMDGOALS),clean),)
-include $(OBJ:.o=.d)
Expand All @@ -148,14 +154,13 @@ endif

.PRECIOUS: $(BUILD_DIR)/%.pas

.NOTPARALLEL:

clean:
@echo "===> CLEAN BENCH"
@rm -rf likwid-bench

distclean:
distclean: clean
@echo "===> DIST CLEAN BENCH"
@rm -rf $(BUILD_DIR)
@rm -rf likwid-bench

install:
@echo "===> INSTALL applications to $(BINPREFIX)"
Expand Down
15 changes: 8 additions & 7 deletions ext/GOTCHA/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -69,22 +69,21 @@ CPPFLAGS := $(filter-out -D_GNU_SOURCE,$(CPPFLAGS))
LIBGOTCHA = $(shell basename $(TARGET_GOTCHA_LIB))
INTERPRETER = lua

.NOTPARALLEL: all

all: $(BUILD_DIR) $(OBJ) $(LIBGOTCHA)

$(BUILD_DIR):
@mkdir $(BUILD_DIR)
all: $(LIBGOTCHA)

$(STATIC_LIBGOTCHA): $(OBJ)
$(info "GOTCHA cannot be build statically in LIKWID")
#@echo "===> CREATE STATIC LIB $@"
#$(Q)${AR} -cq $(LIBGOTCHA) $(OBJ)

$(SHARED_LIBGOTCHA): $(OBJ)
$(Q)$(CC) $(DEBUG_FLAGS) $(LFLAGS) -Wl,-soname,$(LIBGOTCHA).$(VERSION).$(RELEASE) -shared -fPIC -o $(LIBGOTCHA) $(OBJ) $(LIBS)
@echo "===> CREATE SHARED LIB $@"
$(Q)$(CC) $(DEBUG_FLAGS) $(LFLAGS) -Wl,-soname,$(LIBGOTCHA).$(VERSION).$(RELEASE),--no-undefined -shared -fPIC -o $(LIBGOTCHA) $(OBJ) $(LIBS)

#PATTERN RULES
$(BUILD_DIR)/%.o: %.c
@echo "===> COMPILE $@"
@mkdir -p $(BUILD_DIR)
$(Q)$(CC) -c $(DEBUG_FLAGS) $(CFLAGS) $(CPPFLAGS) $< -o $@
$(Q)$(CC) $(DEBUG_FLAGS) $(CPPFLAGS) -MT $(@:.d=.o) -MM $< > $(BUILD_DIR)/$*.d

Expand All @@ -95,8 +94,10 @@ endif
.PHONY: clean distclean

clean:
@echo "===> CLEAN GOTCHA"
@rm -f $(TARGET) $(SHARED_LIBGOTCHA) $(STATIC_LIBGOTCHA) $(LIBGOTCHA).$(VERSION).$(RELEASE) $(LIBGOTCHA).$(VERSION)

distclean: clean
@echo "===> DIST CLEAN GOTCHA"
@rm -f $(TARGET) $(SHARED_LIBGOTCHA) $(STATIC_LIBGOTCHA) $(LIBGOTCHA).$(VERSION).$(RELEASE) $(LIBGOTCHA).$(VERSION)
@rm -rf $(BUILD_DIR)
17 changes: 8 additions & 9 deletions ext/hwloc/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -61,22 +61,20 @@ endif

CPPFLAGS := $(CPPFLAGS) $(DEFINES) $(INCLUDES)

.NOTPARALLEL: all

all: $(BUILD_DIR) $(OBJ) $(LIBHWLOC)

$(BUILD_DIR):
@mkdir $(BUILD_DIR)

all: $(LIBHWLOC)

$(STATIC_LIBHWLOC): $(OBJ)
@echo "===> CREATE STATIC LIB $@"
$(Q)${AR} -cq $(LIBHWLOC) $(OBJ)

$(SHARED_LIBHWLOC): $(OBJ)
$(Q)$(CC) $(DEBUG_FLAGS) $(LFLAGS) -Wl,-soname,$(LIBHWLOC).$(VERSION).$(RELEASE) -Wall -shared -fPIC -o $(LIBHWLOC) $(OBJ) $(LIBS) $(RPATHS)
@echo "===> CREATE SHARED LIB $@"
$(Q)$(CC) $(DEBUG_FLAGS) $(LFLAGS) -Wl,-soname,$(LIBHWLOC).$(VERSION).$(RELEASE),--no-undefined -Wall -shared -fPIC -o $(LIBHWLOC) $^ $(LIBS) $(RPATHS)

#PATTERN RULES
$(BUILD_DIR)/%.o: %.c
@echo "===> COMPILE $@"
@mkdir -p $(BUILD_DIR)
$(Q)$(CC) -c $(DEBUG_FLAGS) $(CFLAGS) $(CPPFLAGS) $< -o $@
$(Q)$(CC) $(DEBUG_FLAGS) $(CPPFLAGS) -MT $(@:.d=.o) -MM $< > $(BUILD_DIR)/$*.d

Expand All @@ -87,10 +85,11 @@ endif
.PHONY: clean distclean

clean:
@echo "===> CLEAN HWLOC"
@rm -f $(TARGET) $(SHARED_LIBHWLOC) $(STATIC_LIBHWLOC) $(LIBHWLOC).$(VERSION).$(RELEASE) $(LIBHWLOC).$(VERSION)

distclean: clean
@rm -f $(TARGET) $(SHARED_LIBHWLOC) $(STATIC_LIBHWLOC) $(LIBHWLOC).$(VERSION).$(RELEASE) $(LIBHWLOC).$(VERSION)
@echo "===> DIST CLEAN HWLOC"
@rm -rf $(BUILD_DIR)


Expand Down
18 changes: 10 additions & 8 deletions ext/lua/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -40,24 +40,24 @@ CPPFLAGS := $(CPPFLAGS) $(DEFINES) $(INCLUDES)
LIBLUA = $(shell basename $(TARGET_LUA_LIB))
INTERPRETER = lua

.NOTPARALLEL: all

all: $(BUILD_DIR) $(OBJ) $(LIBLUA) $(INTERPRETER)

$(BUILD_DIR):
@mkdir $(BUILD_DIR)
all: $(LIBLUA) $(INTERPRETER)

$(STATIC_LIBLUA): $(OBJ)
$(Q)${AR} -cq $(LIBLUA) $(OBJ)
@echo "===> CREATE STATIC LIB $@"
$(Q)$(AR) -cq $@ $(OBJ)

$(SHARED_LIBLUA): $(OBJ)
$(Q)$(CC) $(DEBUG_FLAGS) $(LFLAGS) -Wl,-soname,$(LIBLUA).$(VERSION).$(RELEASE) -shared -fPIC -o $(LIBLUA) $(OBJ) $(LIBS)
@echo "===> CREATE SHARED LIB $@"
$(Q)$(CC) $(DEBUG_FLAGS) $(LFLAGS) -Wl,-soname,$(LIBLUA).$(VERSION).$(RELEASE),--no-undefined -shared -fPIC -o $@ $(OBJ) $(LIBS)

$(INTERPRETER): $(LIBLUA) $(BUILD_DIR)/lua.o
@echo "===> LINKING $@"
$(Q)$(CC) $(DEBUG_FLAGS) -o $@ $(LFLAGS) $(BUILD_DIR)/lua.o $(RPATHS) $(LIBLUA) $(LIBS)

#PATTERN RULES
$(BUILD_DIR)/%.o: %.c
@echo "===> COMPILE $@"
@mkdir -p $(BUILD_DIR)
$(Q)$(CC) -c $(DEBUG_FLAGS) $(CFLAGS) $(CPPFLAGS) $< -o $@
$(Q)$(CC) $(DEBUG_FLAGS) $(CPPFLAGS) -MT $(@:.d=.o) -MM $< > $(BUILD_DIR)/$*.d

Expand All @@ -68,9 +68,11 @@ endif
.PHONY: clean distclean

clean:
@echo "===> CLEAN LUA"
@rm -f $(TARGET) $(INTERPRETER) $(SHARED_LIBLUA) $(STATIC_LIBLUA) $(LIBLUA).$(VERSION).$(RELEASE) $(LIBLUA).$(VERSION)

distclean: clean
@echo "===> DIST CLEAN LUA"
@rm -f $(TARGET) $(INTERPRETER) $(SHARED_LIBLUA) $(STATIC_LIBLUA) $(LIBLUA).$(VERSION).$(RELEASE) $(LIBLUA).$(VERSION)
@rm -rf $(BUILD_DIR)

Expand Down
41 changes: 41 additions & 0 deletions packaging/deb/package.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
#!/bin/sh

set -eu

if [ -z ${FROM_MAKEFILE+1} ]; then
echo "$0 is not intended to be run manually. Please run 'make RPM' instead."
exit 1
fi

BASEDIR=${PWD}
WORKSPACE=${PWD}/.dpkgbuild
DEBIANDIR=${WORKSPACE}/debian
DEBIANBINDIR=${WORKSPACE}/DEBIAN
mkdir --parents --verbose ${WORKSPACE} ${DEBIANBINDIR}
make PREFIX=${WORKSPACE} INSTALLED_PREFIX=${PREFIX}
#mkdir --parents --verbose ${DEBIANDIR}
CONTROLFILE="${BASEDIR}/packaging/deb/likwid.deb.control"
COMMITISH="HEAD"
VERS=$(git describe --tags --abbrev=0 ${COMMITISH})
VERS=${VERS#v}
VERS=$(echo ${VERS} | sed -e s/-/_/g)
ARCH=$(uname -m)
ARCH=$(echo ${ARCH} | sed -e s/-/_/g)
if [ "${ARCH}" = "x86-64" ]; then
ARCH=amd64
fi
if [ "${VERS}" = "" ]; then
VERS="$(VERSION).$(RELEASE).$(MINOR)"
fi
PREFIX="${NAME}-${VERSION}_${ARCH}"
SIZE_BYTES=$(du -bcs --exclude=.dpkgbuild "$WORKSPACE"/ | awk '{print $1}' | head -1 | sed -e 's#^0\+##')
SIZE="$(awk -v size="${SIZE_BYTES}" 'BEGIN {print (size/1024)+1}' | awk '{print int($0)}')"
#sed -e s#"{VERSION}"#"$VERS"#g -e s#"{INSTALLED_SIZE}"#"$SIZE"#g -e s#"{ARCH}"#"$ARCH"#g ${CONTROLFILE} > ${DEBIANDIR}/control
sed -e s#"{VERSION}"#"${VERS}"#g -e s#"{INSTALLED_SIZE}"#"${SIZE}"#g -e s#"{ARCH}"#"${ARCH}"#g ${CONTROLFILE} > ${DEBIANBINDIR}/control
sudo make PREFIX=${WORKSPACE} INSTALLED_PREFIX=${PREFIX} install
DEB_FILE="likwid_${VERS}_${ARCH}.deb"
dpkg-deb -b ${WORKSPACE} "${DEB_FILE}"
sudo rm -r "${WORKSPACE}"
if [ "${GITHUB_ACTIONS}" = "true" ]; then
echo "::set-output name=DEB::${DEB_FILE}"
fi
38 changes: 38 additions & 0 deletions packaging/rpm/package.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#!/bin/sh

set -eu

if [ -z ${FROM_MAKEFILE+1} ]; then
echo "$0 is not intended to be run manually. Please run 'make RPM' instead."
exit 1
fi

# pwd matters, so only call from Makefile directory
SPECFILE="packaging/rpm/likwid.spec"
# Setup RPM build tree
eval $(rpm --eval "ARCH='%{_arch}' RPMDIR='%{_rpmdir}' SOURCEDIR='%{_sourcedir}' SPECDIR='%{_specdir}' SRPMDIR='%{_srcrpmdir}' BUILDDIR='%{_builddir}'")
mkdir --parents --verbose "${RPMDIR}" "${SOURCEDIR}" "${SPECDIR}" "${SRPMDIR}" "${BUILDDIR}"
# Create source tarball
COMMITISH="HEAD"
VERS=$(git describe --tags --abbrev=0 ${COMMITISH})
VERS=${VERS#v}
VERS=$(echo ${VERS} | sed -e s/-/_/g)
if [ "${VERS}" = "" ]; then
VERS="$(VERSION).$(RELEASE).$(MINOR)"
fi
eval $(rpmspec --query --queryformat "NAME='%{name}' VERSION='%{version}' RELEASE='%{release}' NVR='%{NVR}' NVRA='%{NVRA}'" --define="VERS ${VERS}" "${SPECFILE}")
PREFIX="${NAME}-${VERSION}"
FORMAT="tar.gz"
SRCFILE="${SOURCEDIR}/${PREFIX}.${FORMAT}"
git archive --verbose --format "${FORMAT}" --prefix="${PREFIX}/" --output="${SRCFILE}" ${COMMITISH}
# Build RPM and SRPM
rpmbuild -ba --define="VERS ${VERS}" --rmsource --clean "${SPECFILE}"
# Report RPMs and SRPMs when in GitHub Workflow
if [[ "${GITHUB_ACTIONS}" == true ]]; then
RPMFILE="${RPMDIR}/${ARCH}/${NVRA}.rpm"
SRPMFILE="${SRPMDIR}/${NVR}.src.rpm"
echo "RPM: ${RPMFILE}"
echo "SRPM: ${SRPMFILE}"
echo "::set-output name=SRPM::${SRPMFILE}"
echo "::set-output name=RPM::${RPMFILE}"
fi
14 changes: 7 additions & 7 deletions src/access-daemon/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,9 @@
include ../../config.mk
include ../../make/include_$(COMPILER).mk

DAEMON_TARGET = likwid-accessD
SETFREQ_TARGET = likwid-setFreq
APPDAEMON_TARGET = likwid-appDaemon.so
DAEMON_TARGET = ../../likwid-accessD
SETFREQ_TARGET = ../../likwid-setFreq
APPDAEMON_TARGET = ../../likwid-appDaemon.so
SYSFSDAEMON_TARGET = ../../likwid-sysD
GOTCHA_FOLDER = ../../ext/GOTCHA
Q ?= @
Expand Down Expand Up @@ -61,13 +61,13 @@ all: $(DAEMON_TARGET) $(SETFREQ_TARGET) $(APPDAEMON_TARGET)
endif

$(DAEMON_TARGET): accessDaemon.c ../intel_perfmon_uncore_discovery.c
$(Q)$(CC) $(CFLAGS) $(CPPFLAGS) -o ../../$(DAEMON_TARGET) accessDaemon.c ../intel_perfmon_uncore_discovery.c
$(Q)$(CC) $(CFLAGS) $(CPPFLAGS) -o $@ accessDaemon.c ../intel_perfmon_uncore_discovery.c

$(SETFREQ_TARGET): setFreqDaemon.c
$(Q)$(CC) $(CFLAGS) $(CPPFLAGS) -o ../../$(SETFREQ_TARGET) setFreqDaemon.c
$(Q)$(CC) $(CFLAGS) $(CPPFLAGS) -o $@ setFreqDaemon.c

$(APPDAEMON_TARGET): $(GOTCHA_TARGET) appDaemon.c ../bstrlib.c ../bstrlib_helper.c
$(Q)$(CC) -pthread -shared -fvisibility=hidden -fPIC $(CPPFLAGS) -Wl,-soname,$(APPDAEMON_TARGET).$(VERSION).$(RELEASE),--no-undefined -fstack-protector -I. -I$(GOTCHA_FOLDER)/include -L$(GOTCHA_FOLDER) appDaemon.c ../bstrlib.c ../bstrlib_helper.c -o ../../$(APPDAEMON_TARGET) -llikwid -llikwid-gotcha -ldl
$(Q)$(CC) -pthread -shared -fvisibility=hidden -fPIC $(CPPFLAGS) -Wl,-soname,$(notdir $(APPDAEMON_TARGET)).$(VERSION).$(RELEASE),--no-undefined -fstack-protector -I. -I$(GOTCHA_FOLDER)/include -L$(GOTCHA_FOLDER) appDaemon.c ../bstrlib.c ../bstrlib_helper.c -o $@ -llikwid -llikwid-gotcha -ldl

$(SYSFSDAEMON_TARGET): sysfsDaemon.c
$(Q)$(CC) -g -fsanitize=address -fsanitize=leak -fomit-frame-pointer $(CFLAGS) $(CPPFLAGS) -o ../../sysfsD sysfsDaemon.c
$(Q)$(CC) -g -fsanitize=address -fsanitize=leak -fomit-frame-pointer $(CFLAGS) $(CPPFLAGS) -o $@ sysfsDaemon.c
6 changes: 3 additions & 3 deletions src/pthread-overload/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ include ../../make/config_defines.mk

Q ?= @

TARGET = $(PINLIB)
TARGET = ../../$(PINLIB)

ifneq ($(COLOR),NONE)
DEFINES += -DCOLOR=$(COLOR)
Expand All @@ -46,8 +46,8 @@ INCLUDES += -I../includes
LIBS += -ldl
CPPFLAGS := $(CPPFLAGS) $(DEFINES) $(INCLUDES)

all: $(TARGET)
all: ../../$(TARGET)

$(TARGET): pthread-overload.c
$(Q)$(CC) -Wl,-soname,$(TARGET).$(VERSION).$(RELEASE) $(CFLAGS) $(ANSI_CFLAGS) $(CPPFLAGS) $(INCLUDES) $(SHARED_CFLAGS) $(SHARED_LFLAGS) -o ../../$(TARGET) pthread-overload.c $(LIBS)
$(Q)$(CC) -Wl,-soname,$(notdir $(TARGET)).$(VERSION).$(RELEASE),--no-undefined $(CFLAGS) $(ANSI_CFLAGS) $(CPPFLAGS) $(INCLUDES) $(SHARED_CFLAGS) $(SHARED_LFLAGS) -o $@ pthread-overload.c $(LIBS)