diff --git a/Applications/About/Makefile b/Applications/About/Makefile index be5c34c9f67bc0..cb2e9db1671ce7 100755 --- a/Applications/About/Makefile +++ b/Applications/About/Makefile @@ -3,7 +3,7 @@ OBJS = \ PROGRAM = About -LDFLAGS = -lgui -ldraw -lipc -lcore -lc +LIB_DEPS = GUI Draw IPC Core DEFINES += -DGIT_COMMIT=\"`git rev-parse --short HEAD`\" -DGIT_BRANCH=\"`git rev-parse --abbrev-ref HEAD`\" -DGIT_CHANGES=\"`git diff-index --quiet HEAD -- && echo "tracked"|| echo "untracked"`\" diff --git a/Applications/Browser/Makefile b/Applications/Browser/Makefile index dcb43df5bf47d8..599282adab88e9 100755 --- a/Applications/Browser/Makefile +++ b/Applications/Browser/Makefile @@ -3,6 +3,10 @@ OBJS = \ PROGRAM = Browser -LDFLAGS = -lgui -lhtml -ldraw -lprotocol -lipc -lcore -lc +LIB_DEPS = GUI HTML Draw IPC Protocol Core + +main.cpp: ../../Libraries/LibHTML/CSS/PropertyID.h +../../Libraries/LibHTML/CSS/PropertyID.h: + @$(MAKE) -C ../../Libraries/LibHTML include ../../Makefile.common diff --git a/Applications/Calculator/Makefile b/Applications/Calculator/Makefile index 1b4302c106f56d..59827aed5e38d2 100644 --- a/Applications/Calculator/Makefile +++ b/Applications/Calculator/Makefile @@ -6,6 +6,6 @@ OBJS = \ PROGRAM = Calculator -LDFLAGS = -lgui -ldraw -lipc -lcore -lc +LIB_DEPS = GUI Draw IPC Core include ../../Makefile.common diff --git a/Applications/ChanViewer/Makefile b/Applications/ChanViewer/Makefile index 931090190031ee..45affe18eaf86f 100755 --- a/Applications/ChanViewer/Makefile +++ b/Applications/ChanViewer/Makefile @@ -5,6 +5,6 @@ OBJS = \ PROGRAM = ChanViewer -LDFLAGS = -lgui -ldraw -lipc -lthread -lpthread -lcore -lc +LIB_DEPS = GUI Draw IPC Thread Pthread Core include ../../Makefile.common diff --git a/Applications/DisplayProperties/Makefile b/Applications/DisplayProperties/Makefile index 000a6c8727dde7..ff79479d914d46 100644 --- a/Applications/DisplayProperties/Makefile +++ b/Applications/DisplayProperties/Makefile @@ -4,6 +4,6 @@ OBJS = \ PROGRAM = DisplayProperties -LDFLAGS = -lgui -ldraw -lipc -lthread -lpthread -lcore -lc +LIB_DEPS = GUI Draw IPC Thread Pthread Core include ../../Makefile.common diff --git a/Applications/FileManager/Makefile b/Applications/FileManager/Makefile index 4a9e97aab32b49..aeb46376d30a8a 100644 --- a/Applications/FileManager/Makefile +++ b/Applications/FileManager/Makefile @@ -6,6 +6,6 @@ OBJS = \ PROGRAM = FileManager -LDFLAGS = -lgui -ldraw -lipc -lthread -lpthread -lcore -lc +LIB_DEPS = GUI Draw IPC Thread Pthread Core include ../../Makefile.common diff --git a/Applications/FontEditor/Makefile b/Applications/FontEditor/Makefile index 5713cec4e5c690..34ad2b4cf1ee13 100644 --- a/Applications/FontEditor/Makefile +++ b/Applications/FontEditor/Makefile @@ -6,12 +6,12 @@ OBJS = \ PROGRAM = FontEditor -LDFLAGS = -lgui -ldraw -lipc -lcore -lc +LIB_DEPS = GUI Draw Core IPC FontEditor.cpp: UI_FontEditorBottom.h -UI_FontEditorBottom.h: FontEditorBottom.frm - ../../DevTools/FormCompiler/FormCompiler $< > $@ +UI_FontEditorBottom.h: FontEditorBottom.frm FORMCOMPILER + $(QUIET) $(FORMCOMPILER) $< > $@ EXTRA_CLEAN = UI_FontEditorBottom.h diff --git a/Applications/Help/Makefile b/Applications/Help/Makefile index d9fb7df6b4f759..0dd856366629c8 100644 --- a/Applications/Help/Makefile +++ b/Applications/Help/Makefile @@ -7,6 +7,6 @@ OBJS = \ PROGRAM = Help -LDFLAGS = -lgui -lhtml -lmarkdown -ldraw -lipc -lprotocol -lthread -lpthread -lcore -lc +LIB_DEPS = GUI HTML Draw Markdown IPC Protocol Thread Pthread Core include ../../Makefile.common diff --git a/Applications/HexEditor/Makefile b/Applications/HexEditor/Makefile index 2ce7c89bfe1e34..690ee576f52769 100644 --- a/Applications/HexEditor/Makefile +++ b/Applications/HexEditor/Makefile @@ -5,6 +5,6 @@ OBJS = \ PROGRAM = HexEditor -LDFLAGS = -lgui -ldraw -lipc -lthread -lpthread -lcore -lc +LIB_DEPS = GUI Draw IPC Thread Pthread Core include ../../Makefile.common diff --git a/Applications/IRCClient/Makefile b/Applications/IRCClient/Makefile index e2b7766d62d29d..6a1fb3f612de14 100644 --- a/Applications/IRCClient/Makefile +++ b/Applications/IRCClient/Makefile @@ -11,6 +11,6 @@ OBJS = \ PROGRAM = IRCClient -LDFLAGS = -lgui -lhtml -ldraw -lprotocol -lipc -lthread -lpthread -lcore -lc +LIB_DEPS = GUI HTML Draw Protocol IPC Thread Pthread Core include ../../Makefile.common diff --git a/Applications/PaintBrush/Makefile b/Applications/PaintBrush/Makefile index b05e21f9ff4a52..09dce440a13abc 100644 --- a/Applications/PaintBrush/Makefile +++ b/Applications/PaintBrush/Makefile @@ -14,6 +14,6 @@ OBJS = \ PROGRAM = PaintBrush -LDFLAGS = -lgui -ldraw -lipc -lthread -lpthread -lcore -lc +LIB_DEPS = GUI Draw IPC Thread Pthread Core include ../../Makefile.common diff --git a/Applications/Piano/Makefile b/Applications/Piano/Makefile index 250a26e8d9c06d..f39d2ba9f60637 100644 --- a/Applications/Piano/Makefile +++ b/Applications/Piano/Makefile @@ -4,6 +4,6 @@ OBJS = \ PROGRAM = Piano -LDFLAGS = -lgui -ldraw -laudio -lipc -lthread -lpthread -lcore -lc +LIB_DEPS = GUI Draw Audio IPC Thread Pthread Core include ../../Makefile.common diff --git a/Applications/QuickShow/Makefile b/Applications/QuickShow/Makefile index 9874612ecde007..9d27bc44f2254e 100644 --- a/Applications/QuickShow/Makefile +++ b/Applications/QuickShow/Makefile @@ -4,6 +4,6 @@ OBJS = \ PROGRAM = QuickShow -LDFLAGS = -lgui -ldraw -lprotocol -lipc -lthread -lpthread -lcore -lc +LIB_DEPS = GUI Draw Protocol IPC Thread Pthread Core include ../../Makefile.common diff --git a/Applications/SoundPlayer/Makefile b/Applications/SoundPlayer/Makefile index aac1e79ca712ae..6c2b4766f58157 100644 --- a/Applications/SoundPlayer/Makefile +++ b/Applications/SoundPlayer/Makefile @@ -6,6 +6,6 @@ OBJS = \ PROGRAM = SoundPlayer -LDFLAGS = -lgui -ldraw -laudio -lipc -lthread -lpthread -lcore -lc +LIB_DEPS = GUI Draw Audio IPC Thread Pthread Core include ../../Makefile.common diff --git a/Applications/SystemDialog/Makefile b/Applications/SystemDialog/Makefile index 732637b9a51741..6ccf7690e6c789 100755 --- a/Applications/SystemDialog/Makefile +++ b/Applications/SystemDialog/Makefile @@ -3,6 +3,6 @@ OBJS = \ PROGRAM = SystemDialog -LDFLAGS = -lgui -ldraw -lipc -lcore -lc +LIB_DEPS = GUI Draw IPC Core include ../../Makefile.common diff --git a/Applications/SystemMonitor/Makefile b/Applications/SystemMonitor/Makefile index 625d30a9913f83..34196422b82b34 100644 --- a/Applications/SystemMonitor/Makefile +++ b/Applications/SystemMonitor/Makefile @@ -12,6 +12,6 @@ OBJS = \ PROGRAM = SystemMonitor -LDFLAGS = -lgui -ldraw -lprotocol -lpcidb -lipc -lthread -lpthread -lcore -lc +LIB_DEPS = GUI Draw Protocol PCIDB IPC Thread Pthread Core include ../../Makefile.common diff --git a/Applications/Taskbar/Makefile b/Applications/Taskbar/Makefile index 1bdca77abda90c..9c6463567d9ba3 100644 --- a/Applications/Taskbar/Makefile +++ b/Applications/Taskbar/Makefile @@ -6,6 +6,6 @@ OBJS = \ PROGRAM = Taskbar -LDFLAGS = -lgui -ldraw -lipc -lcore -lc +LIB_DEPS = GUI Draw IPC Core include ../../Makefile.common diff --git a/Applications/Terminal/Makefile b/Applications/Terminal/Makefile index 1b862da2f9fb29..b005a755aa2cfc 100644 --- a/Applications/Terminal/Makefile +++ b/Applications/Terminal/Makefile @@ -3,6 +3,6 @@ OBJS = \ PROGRAM = Terminal -LDFLAGS = -lgui -ldraw -lvt -lprotocol -lipc -lcore -lc +LIB_DEPS = GUI Draw VT IPC Protocol Core include ../../Makefile.common diff --git a/Applications/TextEditor/Makefile b/Applications/TextEditor/Makefile index 342640c6bea56a..6a1b53bc443714 100755 --- a/Applications/TextEditor/Makefile +++ b/Applications/TextEditor/Makefile @@ -4,6 +4,6 @@ OBJS = \ PROGRAM = TextEditor -LDFLAGS = -lgui -ldraw -lvt -lipc -lthread -lpthread -lcore -lc +LIB_DEPS = GUI Draw VT IPC Thread Pthread Core include ../../Makefile.common diff --git a/Applications/Welcome/Makefile b/Applications/Welcome/Makefile index 89e4636d8bf850..9fc91bca6bf175 100644 --- a/Applications/Welcome/Makefile +++ b/Applications/Welcome/Makefile @@ -5,7 +5,7 @@ OBJS = \ PROGRAM = Welcome -LDFLAGS = -lgui -ldraw -lipc -lcore -lc +LIB_DEPS = GUI Draw IPC Core .SUFFIXES: .png %.png.o: %.png diff --git a/Demos/Fire/Makefile b/Demos/Fire/Makefile index bae234fe12da1d..122be1ba3175a1 100644 --- a/Demos/Fire/Makefile +++ b/Demos/Fire/Makefile @@ -3,6 +3,6 @@ OBJS = \ PROGRAM = Fire -LDFLAGS = -lgui -ldraw -lipc -lcore -lc +LIB_DEPS = GUI IPC Draw Core include ../../Makefile.common diff --git a/Demos/HelloWorld/Makefile b/Demos/HelloWorld/Makefile index d4bdac2e7ed4eb..41831f89159d23 100644 --- a/Demos/HelloWorld/Makefile +++ b/Demos/HelloWorld/Makefile @@ -3,6 +3,6 @@ OBJS = \ PROGRAM = HelloWorld -LDFLAGS = -lgui -ldraw -lipc -lcore -lc +LIB_DEPS = GUI IPC Draw Core include ../../Makefile.common diff --git a/Demos/HelloWorld2/Makefile b/Demos/HelloWorld2/Makefile index cc3904e8d96271..11bca8b957e882 100644 --- a/Demos/HelloWorld2/Makefile +++ b/Demos/HelloWorld2/Makefile @@ -3,7 +3,7 @@ OBJS = \ PROGRAM = HelloWorld2 -LDFLAGS = -lgui -ldraw -lipc -lcore -lc +LIB_DEPS = GUI IPC Draw Core main.cpp: UI_HelloWorld2.h diff --git a/Demos/WidgetGallery/Makefile b/Demos/WidgetGallery/Makefile index 86d18e66e0648a..71e40a40b49736 100644 --- a/Demos/WidgetGallery/Makefile +++ b/Demos/WidgetGallery/Makefile @@ -3,6 +3,6 @@ OBJS = \ PROGRAM = WidgetGallery -LDFLAGS = -lgui -ldraw -lipc -lcore -lc +LIB_DEPS = GUI IPC Draw Core include ../../Makefile.common diff --git a/DevTools/HackStudio/Makefile b/DevTools/HackStudio/Makefile index 582332f226c5ad..4d902305df4fd6 100644 --- a/DevTools/HackStudio/Makefile +++ b/DevTools/HackStudio/Makefile @@ -18,6 +18,6 @@ OBJS = \ PROGRAM = HackStudio -LDFLAGS = -lvt -lhtml -lprotocol -lipc -lmarkdown -lgui -ldraw -lthread -lpthread -lcore -lc +LIB_DEPS = GUI HTML VT Protocol Markdown Draw IPC Thread Pthread Core include ../../Makefile.common diff --git a/DevTools/Inspector/Makefile b/DevTools/Inspector/Makefile index 09cb351a20ab40..f2afb507b20eca 100644 --- a/DevTools/Inspector/Makefile +++ b/DevTools/Inspector/Makefile @@ -7,6 +7,6 @@ OBJS = \ PROGRAM = Inspector -LDFLAGS = -lgui -ldraw -lipc -lcore -lc +LIB_DEPS = GUI Draw IPC Core include ../../Makefile.common diff --git a/DevTools/ProfileViewer/Makefile b/DevTools/ProfileViewer/Makefile index d72632a549da1c..01daf3d50a6466 100644 --- a/DevTools/ProfileViewer/Makefile +++ b/DevTools/ProfileViewer/Makefile @@ -6,6 +6,6 @@ OBJS = \ PROGRAM = ProfileViewer -LDFLAGS = -lgui -ldraw -lipc -lcore -lc +LIB_DEPS = GUI Draw IPC Core include ../../Makefile.common diff --git a/DevTools/VisualBuilder/Makefile b/DevTools/VisualBuilder/Makefile index 289c6167b174e5..a29ba982eb300a 100644 --- a/DevTools/VisualBuilder/Makefile +++ b/DevTools/VisualBuilder/Makefile @@ -9,6 +9,6 @@ OBJS = \ PROGRAM = VisualBuilder -LDFLAGS = -lgui -ldraw -lipc -lcore -lc +LIB_DEPS = GUI Draw IPC Core include ../../Makefile.common diff --git a/Games/Minesweeper/Makefile b/Games/Minesweeper/Makefile index ab28043822fed4..d0d0afe6319984 100644 --- a/Games/Minesweeper/Makefile +++ b/Games/Minesweeper/Makefile @@ -4,6 +4,6 @@ OBJS = \ PROGRAM = Minesweeper -LDFLAGS = -lgui -ldraw -lipc -lcore -lc +LIB_DEPS = GUI IPC Draw Core include ../../Makefile.common diff --git a/Games/Snake/Makefile b/Games/Snake/Makefile index f579637e4f2954..cff8a85b271f9d 100644 --- a/Games/Snake/Makefile +++ b/Games/Snake/Makefile @@ -4,6 +4,6 @@ OBJS = \ PROGRAM = Snake -LDFLAGS = -lgui -ldraw -lipc -lcore -lc +LIB_DEPS = GUI IPC Draw Core include ../../Makefile.common diff --git a/Libraries/LibAudio/Makefile b/Libraries/LibAudio/Makefile index aad4b7122d30df..a7bda37485e913 100644 --- a/Libraries/LibAudio/Makefile +++ b/Libraries/LibAudio/Makefile @@ -4,6 +4,10 @@ OBJS = \ LIBRARY = libaudio.a +AClientConnection.cpp: ../../Servers/AudioServer/AudioClientEndpoint.h +../../Servers/AudioServer/AudioClientEndpoint.h: + @$(MAKE) -C $(dir $(@)) + install: mkdir -p $(SERENITY_BASE_DIR)/Root/usr/include/LibAudio/ cp *.h $(SERENITY_BASE_DIR)/Root/usr/include/LibAudio/ diff --git a/Libraries/LibC/Makefile b/Libraries/LibC/Makefile index 522e5c545b4313..76b38328386f82 100644 --- a/Libraries/LibC/Makefile +++ b/Libraries/LibC/Makefile @@ -1,3 +1,5 @@ +.NOTPARALLEL: + AK_OBJS = \ ../../AK/StringImpl.o \ ../../AK/String.o \ @@ -59,19 +61,22 @@ OBJS = $(AK_OBJS) $(LIBC_OBJS) EXTRA_OBJS = setjmp.ao crti.ao crtn.ao -.PHONY: startfiles -startfiles: $(EXTRA_OBJS) - $(CXX) $(CXXFLAGS) -o crt0.o -c crt0.cpp +crt0.o: crt0.cpp + $(QUIET) $(CXX) $(CXXFLAGS) -o crt0.o -c crt0.cpp + +crtio.o: crti.ao $(QUIET) cp crti.ao crti.o + +crtn.o: crtin.ao $(QUIET) cp crtn.ao crtn.o -EXTRA_CLEAN = crt0.d +EXTRA_CLEAN = crt0.d crt0.o DEFINES = -DSERENITY_LIBC_BUILD LIBRARY = libc.a -all: $(LIBRARY) startfiles install +all: crt0.o $(EXTRA_OBJS) $(LIBRARY) install install: mkdir -p $(SERENITY_BASE_DIR)/Root/usr/include/sys/ diff --git a/Libraries/LibGUI/Makefile b/Libraries/LibGUI/Makefile index cc54c54b110e78..25f23cec2e4da0 100644 --- a/Libraries/LibGUI/Makefile +++ b/Libraries/LibGUI/Makefile @@ -63,6 +63,11 @@ OBJS = \ LIBRARY = libgui.a +GWindowServerConnection.cpp: ../../Servers/WindowServer/WindowServerEndpoint.h + +../../Servers/WindowServer/WindowServerEndpoint.h: + @$(MAKE) -C $(dir $(@)) + install: mkdir -p $(SERENITY_BASE_DIR)/Root/usr/include/LibGUI/ cp ./*.h $(SERENITY_BASE_DIR)/Root/usr/include/LibGUI/ diff --git a/Libraries/LibHTML/CodeGenerators/Makefile b/Libraries/LibHTML/CodeGenerators/Makefile new file mode 100644 index 00000000000000..29af0b03ea3d84 --- /dev/null +++ b/Libraries/LibHTML/CodeGenerators/Makefile @@ -0,0 +1,3 @@ +SUBDIRS := $(wildcard */.) + +include ../../../Makefile.subdir diff --git a/Libraries/LibHTML/Makefile b/Libraries/LibHTML/Makefile index c0a1672c0c3b8a..1ff6b91919fcd3 100644 --- a/Libraries/LibHTML/Makefile +++ b/Libraries/LibHTML/Makefile @@ -67,17 +67,28 @@ EXTRA_SOURCES = \ CSS/PropertyID.h \ CSS/PropertyID.cpp +GENERATE_CSS_PROPERTYID_CPP = CodeGenerators/Generate_CSS_PropertyID_cpp/Generate_CSS_PropertyID_cpp +GENERATE_CSS_PROPERTYID_H = CodeGenerators/Generate_CSS_PropertyID_h/Generate_CSS_PropertyID_h + +$(GENERATE_CSS_PROPERTYID_H): + @$(MAKE) -C $(dir $(GENERATE_CSS_PROPERTYID_H)) + +$(GENERATE_CSS_PROPERTYID_CPP): + @$(MAKE) -C $(dir $(GENERATE_CSS_PROPERTYID_CPP)) + CSS/DefaultStyleSheetSource.cpp: CSS/Default.css Scripts/GenerateStyleSheetSource.sh @echo "GENERATE $@" $(QUIET) Scripts/GenerateStyleSheetSource.sh default_stylesheet_source $< > $@ -CSS/PropertyID.h: CSS/Properties.json CodeGenerators/Generate_CSS_PropertyID_h/Generate_CSS_PropertyID_h.cpp +CSS/PropertyID.h: CSS/Properties.json $(GENERATE_CSS_PROPERTYID_H) @echo "GENERATE $@" - $(QUIET) CodeGenerators/Generate_CSS_PropertyID_h/Generate_CSS_PropertyID_h $< > $@ + $(QUIET) $(GENERATE_CSS_PROPERTYID_H) $< > $@ -CSS/PropertyID.cpp: CSS/Properties.json CodeGenerators/Generate_CSS_PropertyID_cpp/Generate_CSS_PropertyID_cpp.cpp +CSS/PropertyID.cpp: CSS/Properties.json $(GENERATE_CSS_PROPERTYID_CPP) @echo "GENERATE $@" - $(QUIET) CodeGenerators/Generate_CSS_PropertyID_cpp/Generate_CSS_PropertyID_cpp $< > $@ + $(QUIET) $(GENERATE_CSS_PROPERTYID_CPP) $< > $@ + +EXTRA_CLEAN = CSS/DefaultStyleSheetSource.cpp CSS/PropertyID.h CSS/PropertyID.cpp OBJS = $(EXTRA_OBJS) $(LIBHTML_OBJS) @@ -91,3 +102,7 @@ install: cp $(LIBRARY) $(SERENITY_BASE_DIR)/Root/usr/lib/ include ../../Makefile.common + +SUBDIRS = CodeGenerators + +include ../../Makefile.subdir diff --git a/Makefile b/Makefile index 7b23f582200136..de5b41c920405b 100644 --- a/Makefile +++ b/Makefile @@ -1,42 +1,17 @@ -# Build the host-side tools first, since they are needed to build some programs. -SUBDIRS = \ - DevTools/IPCCompiler \ - DevTools/FormCompiler \ - Libraries/LibHTML/CodeGenerators/Generate_CSS_PropertyID_cpp \ - Libraries/LibHTML/CodeGenerators/Generate_CSS_PropertyID_h - -# Build some libraries before IPC servers, since they depend on them. -SUBDIRS += \ - Libraries/LibC \ - Libraries/LibM \ - Libraries/LibCore \ - Libraries/LibDraw \ - Libraries/LibIPC \ - Libraries/LibThread \ - Libraries/LibPthread - -# Build IPC servers before their client code to ensure the IPC definitions are available. -SUBDIRS += \ - Servers/AudioServer \ - Servers/LookupServer \ - Servers/ProtocolServer \ - Libraries/LibAudio \ - Servers/WindowServer - -SUBDIRS += \ - AK - SUBDIRS += \ - Libraries \ + AK \ Applications \ DevTools \ + Kernel \ + Libraries \ + MenuApplets \ Servers \ Shell \ - Userland \ - MenuApplets \ - Demos \ + Userland + +SUBDIRS += \ Games \ - Kernel + Demos include Makefile.subdir diff --git a/Makefile.common b/Makefile.common index 01b4bdf54cc7bd..e34944b995011d 100644 --- a/Makefile.common +++ b/Makefile.common @@ -20,22 +20,6 @@ INCLUDE_FLAGS += \ -I$(SERENITY_BASE_DIR)/Libraries \ -I$(SERENITY_BASE_DIR)/Servers -LDFLAGS += \ - -L$(SERENITY_BASE_DIR)/Libraries/LibC \ - -L$(SERENITY_BASE_DIR)/Libraries/LibPthread \ - -L$(SERENITY_BASE_DIR)/Libraries/LibCore \ - -L$(SERENITY_BASE_DIR)/Libraries/LibIPC \ - -L$(SERENITY_BASE_DIR)/Libraries/LibM \ - -L$(SERENITY_BASE_DIR)/Libraries/LibDraw \ - -L$(SERENITY_BASE_DIR)/Libraries/LibGUI \ - -L$(SERENITY_BASE_DIR)/Libraries/LibHTML \ - -L$(SERENITY_BASE_DIR)/Libraries/LibMarkdown \ - -L$(SERENITY_BASE_DIR)/Libraries/LibThread \ - -L$(SERENITY_BASE_DIR)/Libraries/LibVT \ - -L$(SERENITY_BASE_DIR)/Libraries/LibPCIDB \ - -L$(SERENITY_BASE_DIR)/Libraries/LibProtocol \ - -L$(SERENITY_BASE_DIR)/Libraries/LibAudio - VERBOSE = 0 ifneq ($(HOST_CXX),) @@ -56,26 +40,33 @@ else -I$(SERENITY_BASE_DIR)/Libraries/LibM \ -I$(SERENITY_BASE_DIR)/Libraries/LibPthread - LDFLAGS += \ - -L$(SERENITY_BASE_DIR)/Libraries/LibC - ifdef KERNEL DEFINES += -DKERNEL + else + # everything else gets -lc -lm + LIB_DEPS += C M endif + # turn "LIB_DEPS=C Core Thread" into "-lc -lcore -lthread -L.../LibC ..." + LDFLAGS += $(foreach lib,$(LIB_DEPS),\ + -l$(shell echo $(lib) | tr A-Z a-z)) + LDFLAGS += $(foreach lib,$(LIB_DEPS),\ + -L$(SERENITY_BASE_DIR)/Libraries/Lib$(lib)) + + STATIC_LIB_DEPS = $(foreach lib,$(LIB_DEPS),\ + $(SERENITY_BASE_DIR)/Libraries/Lib$(lib)/lib$(shell echo $(lib) | tr A-Z a-z).a) + OBJ_SUFFIX ?= endif #CXX = clang $(CLANG_FLAGS) #CLANG_FLAGS = -Wconsumed -m32 -ffreestanding -march=i686 -CXXFLAGS = -MMD -MP $(CXX_WARNING_FLAGS) $(CXX_OPTIMIZATION_FLAGS) $(CXX_FLAVOR_FLAGS) $(ARCH_FLAGS) $(CXX_STANDARD_FLAGS) $(CXX_SUGGEST_FLAGS) $(INCLUDE_FLAGS) $(DEFINES) $(SUBPROJECT_CXXFLAGS) +CXXFLAGS = -MMD -MP $(CXX_WARNING_FLAGS) $(OPTIMIZATION_FLAGS) $(CXX_FLAVOR_FLAGS) $(ARCH_FLAGS) $(CXX_STANDARD_FLAGS) $(CXX_SUGGEST_FLAGS) $(INCLUDE_FLAGS) $(DEFINES) $(SUBPROJECT_CXXFLAGS) CFLAGS = -MMD -MP $(C_FLAVOR_FLAGS) $(ARCH_FLAGS) $(C_STANDARD_FLAGS) $(C_SUGGEST_FLAGS) $(INCLUDE_FLAGS) $(DEFINES) $(SUBPROJECT_CXXFLAGS) DEFINES += -DSANITIZE_PTRS -IPCCOMPILER = $(SERENITY_BASE_DIR)/DevTools/IPCCompiler/IPCCompiler - SUFFIXED_OBJS = $(patsubst %.o,%$(OBJ_SUFFIX).o,$(OBJS)) ifeq ($(VERBOSE),1) @@ -98,7 +89,7 @@ endif @echo "AS $@" $(QUIET) $(AS) -o $@ $< -$(PROGRAM): $(SUFFIXED_OBJS) $(EXTRA_OBJS) +$(PROGRAM): $(SUFFIXED_OBJS) $(EXTRA_OBJS) $(STATIC_LIB_DEPS) @echo "LINK $(PROGRAM)" $(QUIET) $(CXX) -o $(PROGRAM) $(EXTRA_OBJS) $(SUFFIXED_OBJS) $(LDFLAGS) @@ -106,6 +97,19 @@ $(LIBRARY): $(SUFFIXED_OBJS) $(EXTRA_OBJS) @echo "LIB $@" $(QUIET) $(AR) rcs $@ $(OBJS) $(EXTRA_OBJS) $(LIBS) +$(STATIC_LIB_DEPS): + @$(MAKE) -C $(dir $(@)) + +IPCCOMPILER = $(SERENITY_BASE_DIR)/DevTools/IPCCompiler/IPCCompiler +IPCCOMPILER: $(IPCCOMPILER) +$(IPCCOMPILER): + @$(MAKE) -C $(dir $(@)) + +FORMCOMPILER = $(SERENITY_BASE_DIR)/DevTools/FormCompiler/FormCompiler +FORMCOMPILER: $(FORMCOMPILER) +$(FORMCOMPILER): + @$(MAKE) -C $(dir $(@)) + .DEFAULT_GOAL := all all: $(PROGRAM) $(LIBRARY) @@ -118,4 +122,6 @@ clean: install: +.DELETE_ON_ERROR: + .PHONY: all clean install diff --git a/MenuApplets/Audio/Makefile b/MenuApplets/Audio/Makefile index 5ccbf2c8b52a4e..505393a09b5132 100755 --- a/MenuApplets/Audio/Makefile +++ b/MenuApplets/Audio/Makefile @@ -2,6 +2,6 @@ OBJS = main.o PROGRAM = Audio.MenuApplet -LDFLAGS = -laudio -lgui -lipc -ldraw -lthread -lpthread -lcore -lc +LIB_DEPS = Audio GUI IPC Draw Thread Pthread Core include ../../Makefile.common diff --git a/MenuApplets/CPUGraph/Makefile b/MenuApplets/CPUGraph/Makefile index 79048639093129..608636fa6b766b 100755 --- a/MenuApplets/CPUGraph/Makefile +++ b/MenuApplets/CPUGraph/Makefile @@ -2,6 +2,6 @@ OBJS = main.o PROGRAM = CPUGraph.MenuApplet -LDFLAGS = -laudio -lgui -lipc -ldraw -lthread -lpthread -lcore -lc +LIB_DEPS = GUI IPC Draw Thread Pthread Core include ../../Makefile.common diff --git a/Servers/AudioServer/Makefile b/Servers/AudioServer/Makefile index 7ea0e7b484c4a8..d08cf0a34f39f6 100644 --- a/Servers/AudioServer/Makefile +++ b/Servers/AudioServer/Makefile @@ -6,16 +6,16 @@ OBJS = \ PROGRAM = AudioServer -LDFLAGS = -lc -lcore -lipc -lthread -lpthread +LIB_DEPS = Core IPC Thread Pthread EXTRA_CLEAN = AudioServerEndpoint.h AudioClientEndpoint.h *.cpp: AudioServerEndpoint.h AudioClientEndpoint.h -AudioServerEndpoint.h: AudioServer.ipc +AudioServerEndpoint.h: AudioServer.ipc IPCCOMPILER @echo "IPC $<"; $(IPCCOMPILER) $< > $@ -AudioClientEndpoint.h: AudioClient.ipc +AudioClientEndpoint.h: AudioClient.ipc IPCCOMPILER @echo "IPC $<"; $(IPCCOMPILER) $< > $@ install: diff --git a/Servers/LookupServer/Makefile b/Servers/LookupServer/Makefile index 83ea532d5fee77..eb16167532b60d 100644 --- a/Servers/LookupServer/Makefile +++ b/Servers/LookupServer/Makefile @@ -4,6 +4,6 @@ OBJS = \ PROGRAM = LookupServer -LDFLAGS = -lc -lcore +LIB_DEPS = Core include ../../Makefile.common diff --git a/Servers/ProtocolServer/Makefile b/Servers/ProtocolServer/Makefile index 3d3148d2b00ebc..b4e434345d8528 100644 --- a/Servers/ProtocolServer/Makefile +++ b/Servers/ProtocolServer/Makefile @@ -8,14 +8,14 @@ OBJS = \ PROGRAM = ProtocolServer -LDFLAGS = -lc -lcore -lipc +LIB_DEPS = Core IPC *.cpp: ProtocolServerEndpoint.h ProtocolClientEndpoint.h -ProtocolServerEndpoint.h: ProtocolServer.ipc +ProtocolServerEndpoint.h: ProtocolServer.ipc IPCCOMPILER @echo "IPC $<"; $(IPCCOMPILER) $< > $@ -ProtocolClientEndpoint.h: ProtocolClient.ipc +ProtocolClientEndpoint.h: ProtocolClient.ipc IPCCOMPILER @echo "IPC $<"; $(IPCCOMPILER) $< > $@ include ../../Makefile.common diff --git a/Servers/SystemServer/Makefile b/Servers/SystemServer/Makefile index 6fcf27cd78a75b..0a29c53463427c 100644 --- a/Servers/SystemServer/Makefile +++ b/Servers/SystemServer/Makefile @@ -4,7 +4,7 @@ OBJS = \ PROGRAM = SystemServer -LDFLAGS = -lcore -lc +LIB_DEPS = Core install: mkdir -p ../../Root/usr/include/SystemServer/ diff --git a/Servers/TelnetServer/Makefile b/Servers/TelnetServer/Makefile index 9606c548f4d0d6..bfee24f38c1c54 100644 --- a/Servers/TelnetServer/Makefile +++ b/Servers/TelnetServer/Makefile @@ -5,6 +5,6 @@ OBJS = \ PROGRAM = TelnetServer -LDFLAGS = -lcore -lc +LIB_DEPS = Core include ../../Makefile.common diff --git a/Servers/WindowServer/Makefile b/Servers/WindowServer/Makefile index 6dcb3fec6a8a22..508c7de1bd3f76 100644 --- a/Servers/WindowServer/Makefile +++ b/Servers/WindowServer/Makefile @@ -18,14 +18,14 @@ OBJS = \ PROGRAM = WindowServer -LDFLAGS = -lc -ldraw -lcore -lthread -lpthread -lipc +LIB_DEPS = Draw Core Thread Pthread IPC *.cpp: WindowServerEndpoint.h WindowClientEndpoint.h -WindowServerEndpoint.h: WindowServer.ipc +WindowServerEndpoint.h: WindowServer.ipc IPCCOMPILER @echo "IPC $<"; $(IPCCOMPILER) $< > $@ -WindowClientEndpoint.h: WindowClient.ipc +WindowClientEndpoint.h: WindowClient.ipc IPCCOMPILER @echo "IPC $<"; $(IPCCOMPILER) $< > $@ EXTRA_CLEAN = WindowServerEndpoint.h WindowClientEndpoint.h diff --git a/Shell/Makefile b/Shell/Makefile index 8c45d96d6b52e2..b8833507fead51 100644 --- a/Shell/Makefile +++ b/Shell/Makefile @@ -5,6 +5,6 @@ OBJS = \ PROGRAM = Shell -LDFLAGS = -lcore -lc +LIB_DEPS = Core include ../Makefile.common diff --git a/Userland/Makefile b/Userland/Makefile index 053b6426cc4880..843d33d9a45fb5 100644 --- a/Userland/Makefile +++ b/Userland/Makefile @@ -4,7 +4,7 @@ APPS = ${SRCS:.cpp=} EXTRA_CLEAN = $(APPS) -LDFLAGS = -lc -lhtml -lgui -ldraw -laudio -lipc -lthread -lcore -lpcidb -lmarkdown -lpthread -lprotocol -lipc +LIB_DEPS = HTML GUI Draw Audio Protocol IPC Thread Pthread Core PCIDB Markdown all: $(OBJS) $(APPS)