Hello, :-)

I'm a "tup first timer”. I decided to give it a try, after I got fed up 
with cmake taking more time than gcc in many daily tasks.
I stumbled into some problems right away, while trying it on a rather 
simple project (see the attached archive, source files have been zeroed). 
The structure is this:

"config_module" is the main (top) directory containing everything. As the 
name suggests, this is to be ported to C++20 modules in the near future.
Within this directory is a file called "test_config.cpp”, which is a unit 
test. This is to build the only executable called "test_config", preferably 
in three possible ways (debug, release and static).
Then there is the directory "src”. In this directory we have the actual 
config module. This is to be compiled into objects only:
config.hpp
config.cpp
platform_folders.hpp
platform_folders.cpp

I would like to have three build configurations, which are the same for the 
directories containing the "test_config", as well as the "src" directory:
debug.config: CONFIG_BUILD_TYPE=debug
release.config: CONFIG_BUILD_TYPE=release
static.config: CONFIG_BUILD_TYPE=static

Then I have my universal build rules in a file ("Tuprules.tup") in the 
"src" directory, which is to be included where it's needed:

# Tuprules.tup in config_module/src

ifeq (@(BUILD_TYPE),debug)
# debug build:
  CPPFLAGS += -march=native
  CPPFLAGS += -ggdb3
  CPPFLAGS += -D_GLIBCXX_DEBUG
else
  ifeq (@(BUILD_TYPE),release)
    CPPFLAGS += -march=native
    CPPFLAGS += -O2
    LDFLAGS += --as-needed -flto
  else
    ifeq (@(BUILD_TYPE),static)
      CPPFLAGS += -static -Os
      LDFLAGS += --as-needed -flto
    else
      error "Build type not set or wrong!"
    endif
  endif
endif


I did put a "Tupfile" in the "src" directory, which contained this:

# Tupfile in config_module/src

CPPFLAGS += -std=c++17
CPPFLAGS += -Wall
LDFLAGS += -lstdc++fs

include_rules

: foreach *.cpp |> g++ $(CPPFLAGS) -c %f -o %o |> %B.o


This works well when I call "init" in the "src" directory!

In the top directory (for building the unit test executable) I have this in 
a Tupfile:

# Tupfile in config_module

PROG_NAME = test_config
MY_CONFIG_FOLDER = $(TUP_CWD)/debug_config_folder

CPPFLAGS += -std=c++17
CPPFLAGS += -Wall
CPPFLAGS += -Isrc

include_rules

: foreach *.cpp |> g++ $(CPPFLAGS) -D$(MY_CONFIG_FOLDER) -c %f -o %o |> %B.o
#  doesn't work : *.o |> gcc %f -o %o -Wl,$(LDFLAGS) |> $(PROG_NAME)
: *.o |> gcc %f -o %o -Wl,$(LDFLAGS) |> test_config

When I remove the ".tup" from the "src" directory and instead "init" the 
top directory, neither work.
To be clear: When running "tup build-debug" in the "src" directory, I want 
it to compile "config.cpp" and "platform_folders.cpp" into ".o" files 
within the "build-debug" directory under the "src" directory.
When running "tup build-debug" in the top directory, it should compile 
"test_config.cpp" into "test_config.o" and then link it to "test_config", 
both into the top-level "build-debug" directory.
In case the dependencies from the sub-module/project (in "src") aren't 
compiled, it should do that first.

I won't even go into my attempts to put a "make clean" function in there. 
Read-only file access - that was funny... ;-)

Thank you very much for any help!

-- 
-- 
tup-users mailing list
email: [email protected]
unsubscribe: [email protected]
options: http://groups.google.com/group/tup-users?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"tup-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tup-users/239e94b1-3293-4e9c-9be5-febec9e54906o%40googlegroups.com.

Attachment: config_module.tar.gz
Description: Binary data

Reply via email to