Skip to content
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
4 changes: 2 additions & 2 deletions .github/workflows/linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -318,7 +318,7 @@ jobs:
if: success() && matrix.type == 'server'
run: |
./configure --enable-server --disable-client --disable-manager
make
make -j $(nproc --all)

- name: Build manager with webview
if: success() && matrix.type == 'manager-with-webview'
Expand All @@ -338,7 +338,7 @@ jobs:
if: success() && matrix.type == 'unit-test'
run: |
./configure --disable-client --disable-manager --enable-unit-tests CFLAGS="-g -O0" CXXFLAGS="-g -O0"
make
make -j $(nproc --all)

- name: Build libraries for arm64 with vcpkg
if: success() && matrix.type == 'libs-vcpkg-arm64'
Expand Down
33 changes: 17 additions & 16 deletions Makefile.incl
Original file line number Diff line number Diff line change
@@ -1,5 +1,20 @@
## -*-Makefile -*-
## $Id$
# This file is part of BOINC.
# https://boinc.berkeley.edu
# Copyright (C) 2026 University of California
#
# BOINC is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License
# as published by the Free Software Foundation,
# either version 3 of the License, or (at your option) any later version.
#
# BOINC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with BOINC. If not, see <http://www.gnu.org/licenses/>.
#

# For debugging purposes
#AM_DEFAULT_VERBOSITY=1
Expand Down Expand Up @@ -42,28 +57,14 @@ AM_LDFLAGS =
# programs linking to them:

LIBSCHED = $(top_builddir)/sched/libsched.la
$(LIBSCHED):
cd $(top_builddir)/sched; ${MAKE} libsched.la
LIBSCHED_FCGI = $(top_builddir)/sched/libsched_fcgi.la
$(LIBSCHED_FCGI):
cd $(top_builddir)/sched; ${MAKE} libsched_fcgi.la
LIBBOINC = $(top_builddir)/lib/libboinc.la
$(LIBBOINC):
cd $(top_builddir)/lib; ${MAKE} libboinc.la
LIBBOINC_CRYPT = $(top_builddir)/lib/libboinc_crypt.la
$(LIBBOINC_CRYPT):
cd $(top_builddir)/lib; ${MAKE} libboinc_crypt.la
LIBBOINC_FCGI = $(top_builddir)/lib/libboinc_fcgi.la
$(LIBBOINC_FCGI):
cd $(top_builddir)/lib; ${MAKE} libboinc_fcgi.la
LIBAPI = $(top_builddir)/api/libboinc_api.la
$(LIBAPI):
cd $(top_builddir)/api; ${MAKE} libboinc_api.la

SERVERLIBS = $(LIBSCHED) $(LIBBOINC_CRYPT) $(LIBBOINC) $(MYSQL_LIBS) $(PTHREAD_LIBS) $(RSA_LIBS) $(SSL_LIBS)
SERVERLIBS_MIN = $(LIBSCHED) $(LIBBOINC_CRYPT) $(LIBBOINC) $(PTHREAD_LIBS) $(RSA_LIBS) $(SSL_LIBS)
SERVERLIBS_FCGI = $(LIBSCHED_FCGI) $(LIBBOINC_CRYPT) $(LIBBOINC_FCGI) -lfcgi $(MYSQL_LIBS) $(PTHREAD_LIBS) $(RSA_LIBS) $(SSL_LIBS)
APPLIBS = $(LIBAPI) $(LIBBOINC)
FUHLIBS = $(LIBBOINC_CRYPT) $(LIBBOINC) $(RSA_LIBS) $(SSL_LIBS)
FUHLIBS_FCGI = $(LIBBOINC_CRYPT) $(LIBBOINC_FCGI) -lfcgi $(RSA_LIBS) $(SSL_LIBS)

2 changes: 1 addition & 1 deletion client/hostinfo_unix.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -777,7 +777,7 @@ void use_cpuid(HOST_INFO& host) {

capabilities[0] = '\0';
vendor[0] = '\0';

// Leaf 0: highest standard leaf + vendor string. Copy the vendor
// bytes out of EBX/EDX/ECX immediately -- p[] gets overwritten by
// the very next do_cpuid() call, so extracting "vendor" after
Expand Down
29 changes: 22 additions & 7 deletions lib/Makefile.am
Original file line number Diff line number Diff line change
@@ -1,5 +1,20 @@
## -*- mode: makefile; tab-width: 4 -*-
## $Id$
# This file is part of BOINC.
# https://boinc.berkeley.edu
# Copyright (C) 2026 University of California
#
# BOINC is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License
# as published by the Free Software Foundation,
# either version 3 of the License, or (at your option) any later version.
#
# BOINC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with BOINC. If not, see <http://www.gnu.org/licenses/>.
#

include $(top_srcdir)/Makefile.incl

Expand Down Expand Up @@ -263,16 +278,16 @@ EXTRA_DIST = *.h *.cpp

md5_test_SOURCES = md5_test.cpp
md5_test_CXXFLAGS = $(PTHREAD_CFLAGS)
md5_test_LDADD = $(LIBBOINC)
md5_test_LDADD = libboinc.la
shmem_test_SOURCES = shmem_test.cpp
shmem_test_CXXFLAGS = $(PTHREAD_CFLAGS)
shmem_test_LDADD = $(LIBBOINC)
shmem_test_LDADD = libboinc.la
msg_test_SOURCES = msg_test.cpp
msg_test_CXXFLAGS = $(PTHREAD_CFLAGS)
msg_test_LDADD = $(LIBBOINC)
msg_test_LDADD = libboinc.la
crypt_prog_SOURCES = crypt_prog.cpp
crypt_prog_CXXFLAGS = $(PTHREAD_CFLAGS) $(SSL_CXXFLAGS)
crypt_prog_LDADD = $(LIBBOINC_CRYPT_STATIC) $(LIBBOINC) $(SSL_LIBS)
crypt_prog_LDADD = libboinc_crypt.la libboinc.la $(SSL_LIBS)
parse_test_SOURCES = parse_test.cpp
parse_test_CXXFLAGS = $(PTHREAD_CFLAGS)
parse_test_LDADD = $(LIBBOINC)
parse_test_LDADD = libboinc.la
4 changes: 2 additions & 2 deletions mingw/ci_make_apps.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

# This file is part of BOINC.
# https://boinc.berkeley.edu
# Copyright (C) 2025 University of California
# Copyright (C) 2026 University of California
#
# BOINC is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License
Expand Down Expand Up @@ -49,4 +49,4 @@ fi
export CXXFLAGS="-I$VCPKG_DIR/include -L$VCPKG_DIR/lib"
export CFLAGS="$CXXFLAGS"

make
make -j $(nproc --all)
89 changes: 53 additions & 36 deletions sched/Makefile.am
Original file line number Diff line number Diff line change
@@ -1,11 +1,28 @@
## -*- mode: makefile; tab-width: 4 -*-
## $Id$
# This file is part of BOINC.
# https://boinc.berkeley.edu
# Copyright (C) 2026 University of California
#
# BOINC is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License
# as published by the Free Software Foundation,
# either version 3 of the License, or (at your option) any later version.
#
# BOINC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with BOINC. If not, see <http://www.gnu.org/licenses/>.
#

include $(top_srcdir)/Makefile.incl

AM_CPPFLAGS += $(MYSQL_CFLAGS) $(PTHREAD_CFLAGS)
AM_LDFLAGS += -static

SCHED_DEPS = libsched.la $(LIBBOINC_CRYPT) $(LIBBOINC) $(MYSQL_LIBS) $(PTHREAD_LIBS) $(RSA_LIBS) $(SSL_LIBS)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: This PR removes the cross-directory library build rules from Makefile.incl (the $(LIBSCHED): cd ...; ${MAKE} libsched.la-style rules), but tools/Makefile.am, vda/Makefile.am, and apps/Makefile.am still use $(SERVERLIBS)/$(SERVERLIBS_MIN)/$(APPLIBS), which expand to $(top_builddir)/sched/libsched.la, $(top_builddir)/lib/libboinc.la, and $(top_builddir)/api/libboinc_api.la. Those expanded paths now have no rule to build them. A direct make -C tools/make -C vda/make -C apps in a freshly-configured tree (or any build where those directories run before lib/sched/api) fails with No rule to make target '.../libsched.la'. The migration should be completed by switching tools, vda, and apps to local .la/SCHED_DEPS-style references so they no longer depend on the removed rules.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At sched/Makefile.am, line 24:

<comment>This PR removes the cross-directory library build rules from Makefile.incl (the `$(LIBSCHED): cd ...; ${MAKE} libsched.la`-style rules), but `tools/Makefile.am`, `vda/Makefile.am`, and `apps/Makefile.am` still use `$(SERVERLIBS)`/`$(SERVERLIBS_MIN)`/`$(APPLIBS)`, which expand to `$(top_builddir)/sched/libsched.la`, `$(top_builddir)/lib/libboinc.la`, and `$(top_builddir)/api/libboinc_api.la`. Those expanded paths now have no rule to build them. A direct `make -C tools`/`make -C vda`/`make -C apps` in a freshly-configured tree (or any build where those directories run before `lib`/`sched`/`api`) fails with `No rule to make target '.../libsched.la'`. The migration should be completed by switching tools, vda, and apps to local `.la`/`SCHED_DEPS`-style references so they no longer depend on the removed rules.</comment>

<file context>
@@ -1,11 +1,28 @@
 AM_CPPFLAGS += $(MYSQL_CFLAGS) $(PTHREAD_CFLAGS)
 AM_LDFLAGS += -static
 
+SCHED_DEPS = libsched.la $(LIBBOINC_CRYPT) $(LIBBOINC) $(MYSQL_LIBS) $(PTHREAD_LIBS) $(RSA_LIBS) $(SSL_LIBS)
+
 if ENABLE_LIBRARIES
</file context>


if ENABLE_LIBRARIES

libsched_sources = \
Expand Down Expand Up @@ -186,45 +203,45 @@ cgi_sources = \
time_stats_log.cpp

cgi_SOURCES = $(cgi_sources)
cgi_LDADD = $(SERVERLIBS)
cgi_LDADD = $(SCHED_DEPS)

batch_collect_assimilator_SOURCES = $(ASSIMILATOR_SOURCES) \
batch_collect_assimilator.cpp
batch_collect_assimilator_LDADD = $(SERVERLIBS)
batch_collect_assimilator_LDADD = $(SCHED_DEPS)

census_SOURCES = \
census.cpp \
hr.cpp \
hr_info.cpp
census_LDADD = $(SERVERLIBS)
census_LDADD = $(SCHED_DEPS)

credit_test_SOURCES = \
credit_test.cpp
credit_test_LDADD = $(SERVERLIBS)
credit_test_LDADD = $(SCHED_DEPS)

feeder_SOURCES = \
feeder.cpp \
hr.cpp \
hr_info.cpp \
../lib/synch.cpp
feeder_LDADD = $(SERVERLIBS)
feeder_LDADD = $(SCHED_DEPS)

feeder_user_SOURCES = \
feeder_user.cpp \
../lib/synch.cpp
feeder_user_LDADD = $(SERVERLIBS)
feeder_user_LDADD = $(SCHED_DEPS)

wu_check_SOURCES = wu_check.cpp
wu_check_LDADD = $(SERVERLIBS)
wu_check_LDADD = $(SCHED_DEPS)

show_shmem_SOURCES = show_shmem.cpp
show_shmem_LDADD = $(SERVERLIBS)
show_shmem_LDADD = $(SCHED_DEPS)

file_deleter_SOURCES = file_deleter.cpp
file_deleter_LDADD = $(SERVERLIBS)
file_deleter_LDADD = $(SCHED_DEPS)

antique_file_deleter_SOURCES = antique_file_deleter.cpp
antique_file_deleter_LDADD = $(SERVERLIBS)
antique_file_deleter_LDADD = $(SCHED_DEPS)

VALIDATOR_SOURCES = \
credit.cpp \
Expand All @@ -234,94 +251,94 @@ VALIDATOR_SOURCES = \

sample_bitwise_validator_SOURCES = $(VALIDATOR_SOURCES) \
sample_bitwise_validator.cpp
sample_bitwise_validator_LDADD = $(SERVERLIBS)
sample_bitwise_validator_LDADD = $(SCHED_DEPS)

sample_substr_validator_SOURCES = $(VALIDATOR_SOURCES) \
sample_substr_validator.cpp
sample_substr_validator_LDADD = $(SERVERLIBS)
sample_substr_validator_LDADD = $(SCHED_DEPS)

sample_trivial_validator_SOURCES = $(VALIDATOR_SOURCES) \
sample_trivial_validator.cpp
sample_trivial_validator_LDADD = $(SERVERLIBS)
sample_trivial_validator_LDADD = $(SCHED_DEPS)

ASSIMILATOR_SOURCES = \
assimilator.cpp \
validate_util.cpp

sample_dummy_assimilator_SOURCES = $(ASSIMILATOR_SOURCES) \
sample_dummy_assimilator.cpp
sample_dummy_assimilator_LDADD = $(SERVERLIBS)
sample_dummy_assimilator_LDADD = $(SCHED_DEPS)

single_job_assimilator_SOURCES = $(ASSIMILATOR_SOURCES) \
single_job_assimilator.cpp
single_job_assimilator_LDADD = $(SERVERLIBS)
single_job_assimilator_LDADD = $(SCHED_DEPS)

sample_work_generator_SOURCES = sample_work_generator.cpp
sample_work_generator_LDADD = $(SERVERLIBS)
sample_work_generator_LDADD = $(SCHED_DEPS)

script_assimilator_SOURCES = $(ASSIMILATOR_SOURCES) \
script_assimilator.cpp
script_assimilator_LDADD = $(SERVERLIBS)
script_assimilator_LDADD = $(SCHED_DEPS)

script_validator_SOURCES = $(VALIDATOR_SOURCES) \
script_validator.cpp
script_validator_LDADD = $(SERVERLIBS)
script_validator_LDADD = $(SCHED_DEPS)

db_dump_SOURCES = db_dump.cpp
db_dump_LDADD = $(SERVERLIBS) -lz
db_dump_LDADD = $(SCHED_DEPS) -lz

db_purge_SOURCES = db_purge.cpp
db_purge_LDADD = $(SERVERLIBS) -lz
db_purge_LDADD = $(SCHED_DEPS) -lz

trickle_credit_SOURCES = trickle_credit.cpp trickle_handler.cpp
trickle_credit_LDADD = $(SERVERLIBS)
trickle_credit_LDADD = $(SCHED_DEPS)

trickle_deadline_SOURCES = trickle_deadline.cpp trickle_handler.cpp
trickle_deadline_LDADD = $(SERVERLIBS)
trickle_deadline_LDADD = $(SCHED_DEPS)

trickle_echo_SOURCES = trickle_echo.cpp trickle_handler.cpp
trickle_echo_LDADD = $(SERVERLIBS)
trickle_echo_LDADD = $(SCHED_DEPS)

update_stats_SOURCES = update_stats.cpp
update_stats_LDADD = $(SERVERLIBS)
update_stats_LDADD = $(SCHED_DEPS)

file_upload_handler_SOURCES = file_upload_handler.cpp sched_config.cpp sched_util_basic.cpp sched_limit.cpp
file_upload_handler_LDADD = $(FUHLIBS)

make_work_SOURCES = make_work.cpp
make_work_LDADD = $(SERVERLIBS)
make_work_LDADD = $(SCHED_DEPS)

transitioner_SOURCES = transitioner.cpp
transitioner_LDADD = $(SERVERLIBS)
transitioner_LDADD = $(SCHED_DEPS)

size_regulator_SOURCES = size_regulator.cpp
size_regulator_LDADD = $(SERVERLIBS)
size_regulator_LDADD = $(SCHED_DEPS)

message_handler_SOURCES = message_handler.cpp
message_handler_LDADD = $(SERVERLIBS)
message_handler_LDADD = $(SCHED_DEPS)

get_file_SOURCES = get_file.cpp
get_file_LDADD = $(SERVERLIBS)
get_file_LDADD = $(SCHED_DEPS)

put_file_SOURCES = put_file.cpp
put_file_LDADD = $(SERVERLIBS)
put_file_LDADD = $(SCHED_DEPS)

delete_file_SOURCES = delete_file.cpp
delete_file_LDADD = $(SERVERLIBS)
delete_file_LDADD = $(SCHED_DEPS)

adjust_user_priority_SOURCES = adjust_user_priority.cpp
adjust_user_priority_LDADD = $(SERVERLIBS)
adjust_user_priority_LDADD = $(SCHED_DEPS)

sched_driver_SOURCES = sched_driver.cpp
sched_driver_LDADD = $(SERVERLIBS)
sched_driver_LDADD = $(SCHED_DEPS)

if ENABLE_FCGI

schedcgi_PROGRAMS += fcgi fcgi_file_upload_handler

fcgi_SOURCES = $(cgi_sources)
fcgi_CPPFLAGS = -D_USING_FCGI_ $(AM_CPPFLAGS)
fcgi_LDADD = $(SERVERLIBS_FCGI)
fcgi_LDADD = libsched_fcgi.la $(LIBBOINC_CRYPT) $(LIBBOINC_FCGI) -lfcgi $(MYSQL_LIBS) $(PTHREAD_LIBS) $(RSA_LIBS) $(SSL_LIBS)

fcgi_file_upload_handler_SOURCES = file_upload_handler.cpp sched_config.cpp sched_util_basic.cpp sched_limit.cpp
fcgi_file_upload_handler_CPPFLAGS = -D_USING_FCGI_ $(AM_CPPFLAGS)
Expand Down
Loading