More compat work. Rename libraries from LibFoo.a => libfoo.a

This makes it more straightforward to build a cross-compiler toolchain.
Also move math stuff from LibC to LibM.
This commit is contained in:
Andreas Kling 2019-02-26 13:30:57 +01:00
parent cccc8d8aeb
commit 3f29a12d90
Notes: sideshowbarker 2024-07-19 15:37:22 +09:00
23 changed files with 140 additions and 79 deletions

View File

@ -15,11 +15,12 @@ CXXFLAGS = -MMD -MP $(WARNING_FLAGS) $(OPTIMIZATION_FLAGS) $(FLAVOR_FLAGS) $(STA
CXX = i686-pc-serenity-g++
LD = i686-pc-serenity-ld
AR = i686-pc-serenity-ar
LDFLAGS = -L../../LibC -L../../LibGUI
all: $(APP)
$(APP): $(OBJS)
$(LD) -o $(APP) $(LDFLAGS) $(OBJS) ../../LibGUI/LibGUI.a ../../LibC/LibC.a
$(LD) -o $(APP) $(LDFLAGS) $(OBJS) -lgui -lc
.cpp.o:
@echo "CXX $<"; $(CXX) $(CXXFLAGS) -o $@ -c $<

View File

@ -16,11 +16,12 @@ CXXFLAGS = -MMD -MP $(WARNING_FLAGS) $(OPTIMIZATION_FLAGS) $(FLAVOR_FLAGS) $(STA
CXX = i686-pc-serenity-g++
LD = i686-pc-serenity-ld
AR = i686-pc-serenity-ar
LDFLAGS = -L../../LibC -L../../LibGUI
all: $(APP)
$(APP): $(OBJS)
$(LD) -o $(APP) $(LDFLAGS) $(OBJS) ../../LibGUI/LibGUI.a ../../LibC/LibC.a
$(LD) -o $(APP) $(LDFLAGS) $(OBJS) -lgui -lc
.cpp.o:
@echo "CXX $<"; $(CXX) $(CXXFLAGS) -o $@ -c $<

View File

@ -16,11 +16,12 @@ CXXFLAGS = -MMD -MP $(WARNING_FLAGS) $(OPTIMIZATION_FLAGS) $(FLAVOR_FLAGS) $(STA
CXX = i686-pc-serenity-g++
LD = i686-pc-serenity-ld
AR = i686-pc-serenity-ar
LDFLAGS = -L../../LibC -L../../LibGUI
all: $(APP)
$(APP): $(OBJS)
$(LD) -o $(APP) $(LDFLAGS) $(OBJS) ../../LibGUI/LibGUI.a ../../LibC/LibC.a
$(LD) -o $(APP) $(LDFLAGS) $(OBJS) -lgui -lc
.cpp.o:
@echo "CXX $<"; $(CXX) $(CXXFLAGS) -o $@ -c $<

View File

@ -15,11 +15,12 @@ CXXFLAGS = -MMD -MP $(WARNING_FLAGS) $(OPTIMIZATION_FLAGS) $(FLAVOR_FLAGS) $(STA
CXX = i686-pc-serenity-g++
LD = i686-pc-serenity-ld
AR = i686-pc-serenity-ar
LDFLAGS = -L../../LibC -L../../LibGUI
all: $(APP)
$(APP): $(OBJS)
$(LD) -o $(APP) $(LDFLAGS) $(OBJS) ../../LibGUI/LibGUI.a ../../LibC/LibC.a
$(LD) -o $(APP) $(LDFLAGS) $(OBJS) -lgui -lc
.cpp.o:
@echo "CXX $<"; $(CXX) $(CXXFLAGS) -o $@ -c $<

View File

@ -16,11 +16,12 @@ CXXFLAGS = -MMD -MP $(WARNING_FLAGS) $(OPTIMIZATION_FLAGS) $(FLAVOR_FLAGS) $(STA
CXX = i686-pc-serenity-g++
LD = i686-pc-serenity-ld
AR = i686-pc-serenity-ar
LDFLAGS = -L../../LibC -L../../LibGUI
all: $(APP)
$(APP): $(OBJS)
$(LD) -o $(APP) $(LDFLAGS) $(OBJS) ../../LibGUI/LibGUI.a ../../LibC/LibC.a
$(LD) -o $(APP) $(LDFLAGS) $(OBJS) -lgui -lc
.cpp.o:
@echo "CXX $<"; $(CXX) $(CXXFLAGS) -o $@ -c $<

View File

@ -1,6 +1,7 @@
#pragma once
#include <AK/Types.h>
#include <LibC/fd_set.h>
#define ENUMERATE_SYSCALLS \
__ENUMERATE_SYSCALL(sleep) \
@ -83,10 +84,6 @@
__ENUMERATE_SYSCALL(link) \
#ifdef SERENITY
struct fd_set;
#endif
namespace Syscall {
enum Function {

View File

@ -1,8 +1,5 @@
#pragma once
#define FD_SETSIZE 64
struct fd_set { unsigned char bits[FD_SETSIZE / 8]; };
#define WNOHANG 1
#define SIG_DFL ((void*)0)

View File

@ -4,8 +4,15 @@ sudo id
make_cmd="make -j2"
rm -r ../Root/usr && \
$make_cmd -C ../LibC clean && \
$make_cmd -C ../LibC && \
(cd ../LibC && ./install.sh) && \
$make_cmd -C ../LibM clean && \
$make_cmd -C ../LibM && \
(cd ../LibM && ./install.sh) && \
$make_cmd -C ../LibM clean && \
$make_cmd -C ../LibM clean && \
$make_cmd -C ../LibGUI clean && \
$make_cmd -C ../LibGUI && \
$make_cmd -C ../Userland clean && \

2
LibC/.gitignore vendored
View File

@ -1,4 +1,4 @@
*.o
*.no
*.d
LibC.a
libc.a

View File

@ -32,7 +32,6 @@ LIBC_OBJS = \
ulimit.o \
qsort.o \
ioctl.o \
math.o \
utime.o \
sys/select.o \
sys/socket.o \
@ -45,7 +44,7 @@ ASM_OBJS = setjmp.no
CPP_OBJS = $(AK_OBJS) $(WIDGETS_OBJS) $(LIBC_OBJS)
LIBRARY = LibC.a
LIBRARY = libc.a
STANDARD_FLAGS = -std=c++17
WARNING_FLAGS = -Wextra -Wall -Wundef -Wcast-qual -Wwrite-strings -Wimplicit-fallthrough
FLAVOR_FLAGS = -fno-exceptions -fno-rtti

13
LibC/fd_set.h Normal file
View File

@ -0,0 +1,13 @@
#pragma once
#define FD_SETSIZE 64
#define FD_ZERO(set) memset((set), 0, sizeof(fd_set));
#define FD_CLR(fd, set) ((set)->bits[(fd / 8)] &= ~(1 << (fd) % 8))
#define FD_SET(fd, set) ((set)->bits[(fd / 8)] |= (1 << (fd) % 8))
#define FD_ISSET(fd, set) ((set)->bits[(fd / 8)] & (1 << (fd) % 8))
struct __fd_set {
unsigned char bits[FD_SETSIZE / 8];
};
typedef struct __fd_set fd_set;

View File

@ -1,5 +1,7 @@
#!/bin/bash
mkdir -p ../Root/usr/include/sys/
mkdir -p ../Root/usr/lib/
cp *.h ../Root/usr/include/
cp sys/*.h ../Root/usr/include/sys/
cp libc.a ../Root/usr/lib/

View File

@ -1,14 +0,0 @@
#include <math.h>
#include <assert.h>
extern "C" {
double pow(double x, double y)
{
(void) x;
(void) y;
assert(false);
}
}

View File

@ -3,21 +3,10 @@
#include <sys/cdefs.h>
#include <sys/types.h>
#include <string.h>
#include <fd_set.h>
__BEGIN_DECLS
#define FD_SETSIZE 64
#define FD_ZERO(set) memset((set), 0, sizeof(fd_set));
#define FD_CLR(fd, set) ((set)->bits[(fd / 8)] &= ~(1 << (fd) % 8))
#define FD_SET(fd, set) ((set)->bits[(fd / 8)] |= (1 << (fd) % 8))
#define FD_ISSET(fd, set) ((set)->bits[(fd / 8)] & (1 << (fd) % 8))
struct __fd_set {
unsigned char bits[FD_SETSIZE / 8];
};
typedef struct __fd_set fd_set;
int select(int nfds, fd_set* readfds, fd_set* writefds, fd_set* exceptfds, struct timeval* timeout);
__END_DECLS

2
LibGUI/.gitignore vendored
View File

@ -1,3 +1,3 @@
*.o
*.d
LibGUI.a
libgui.a

View File

@ -32,9 +32,9 @@ LIBGUI_OBJS = \
OBJS = $(SHAREDGRAPHICS_OBJS) $(LIBGUI_OBJS)
LIBS = ../LibC/LibC.a
LIBS = -lc
LIBRARY = LibGUI.a
LIBRARY = libgui.a
STANDARD_FLAGS = -std=c++17
WARNING_FLAGS = -Wextra -Wall -Wundef -Wcast-qual -Wwrite-strings -Wimplicit-fallthrough
FLAVOR_FLAGS = -fno-exceptions -fno-rtti

3
LibM/.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
*.o
*.d
libm.a

32
LibM/Makefile Normal file
View File

@ -0,0 +1,32 @@
OBJS = math.o
LIBRARY = libm.a
STANDARD_FLAGS = -std=c++17
WARNING_FLAGS = -Wextra -Wall -Wundef -Wcast-qual -Wwrite-strings -Wimplicit-fallthrough
FLAVOR_FLAGS = -fno-exceptions -fno-rtti
OPTIMIZATION_FLAGS = -Os
INCLUDE_FLAGS = -I.. -I.
DEFINES = -DSERENITY -DUSERLAND -DSANITIZE_PTRS
CXXFLAGS = -MMD -MP $(WARNING_FLAGS) $(OPTIMIZATION_FLAGS) $(FLAVOR_FLAGS) $(STANDARD_FLAGS) $(INCLUDE_FLAGS) $(DEFINES)
CXX = i686-pc-serenity-g++
LD = i686-pc-serenity-ld
AR = i686-pc-serenity-ar
all: $(LIBRARY)
$(LIBRARY): $(OBJS)
@echo "LIB $@"; $(AR) rcs $@ $(OBJS)
.cpp.o:
@echo "CXX $<"; $(CXX) $(CXXFLAGS) -o $@ -c $<
%.no: %.asm
@echo "NASM $@"; nasm -f elf -o $@ $<
-include $(OBJS:%.o=%.d)
clean:
@echo "CLEAN"; rm -f $(LIBRARY) $(OBJS) *.d

6
LibM/install.sh Executable file
View File

@ -0,0 +1,6 @@
#!/bin/bash
mkdir -p ../Root/usr/include/sys/
mkdir -p ../Root/usr/lib/
cp *.h ../Root/usr/include/
cp libm.a ../Root/usr/lib/

23
LibM/math.cpp Normal file
View File

@ -0,0 +1,23 @@
#include <LibC/assert.h>
#include <LibM/math.h>
extern "C" {
double cos(double)
{
assert(false);
}
double sin(double)
{
assert(false);
}
double pow(double x, double y)
{
(void)x;
(void)y;
assert(false);
}
}

View File

@ -82,110 +82,111 @@ CXXFLAGS = -MMD -MP $(WARNING_FLAGS) $(OPTIMIZATION_FLAGS) $(FLAVOR_FLAGS) $(ARC
CXX = i686-pc-serenity-g++
LD = i686-pc-serenity-ld
AR = i686-pc-serenity-r
LDFLAGS = -L ../LibC
all: $(OBJS) $(APPS)
id: id.o
$(LD) -o $@ $(LDFLAGS) $< ../LibC/LibC.a
$(LD) -o $@ $(LDFLAGS) $< -lc
sh: sh.o
$(LD) -o $@ $(LDFLAGS) $< ../LibC/LibC.a
$(LD) -o $@ $(LDFLAGS) $< -lc
ps: ps.o
$(LD) -o $@ $(LDFLAGS) $< ../LibC/LibC.a
$(LD) -o $@ $(LDFLAGS) $< -lc
ls: ls.o
$(LD) -o $@ $(LDFLAGS) $< ../LibC/LibC.a
$(LD) -o $@ $(LDFLAGS) $< -lc
fgrep: fgrep.o
$(LD) -o $@ $(LDFLAGS) $< ../LibC/LibC.a
$(LD) -o $@ $(LDFLAGS) $< -lc
sleep: sleep.o
$(LD) -o $@ $(LDFLAGS) $< ../LibC/LibC.a
$(LD) -o $@ $(LDFLAGS) $< -lc
date: date.o
$(LD) -o $@ $(LDFLAGS) $< ../LibC/LibC.a
$(LD) -o $@ $(LDFLAGS) $< -lc
true: true.o
$(LD) -o $@ $(LDFLAGS) $< ../LibC/LibC.a
$(LD) -o $@ $(LDFLAGS) $< -lc
false: false.o
$(LD) -o $@ $(LDFLAGS) $< ../LibC/LibC.a
$(LD) -o $@ $(LDFLAGS) $< -lc
hostname: hostname.o
$(LD) -o $@ $(LDFLAGS) $< ../LibC/LibC.a
$(LD) -o $@ $(LDFLAGS) $< -lc
cat: cat.o
$(LD) -o $@ $(LDFLAGS) $< ../LibC/LibC.a
$(LD) -o $@ $(LDFLAGS) $< -lc
uname: uname.o
$(LD) -o $@ $(LDFLAGS) $< ../LibC/LibC.a
$(LD) -o $@ $(LDFLAGS) $< -lc
clear: clear.o
$(LD) -o $@ $(LDFLAGS) $< ../LibC/LibC.a
$(LD) -o $@ $(LDFLAGS) $< -lc
tst: tst.o
$(LD) -o $@ $(LDFLAGS) $< ../LibC/LibC.a
$(LD) -o $@ $(LDFLAGS) $< -lc
mm: mm.o
$(LD) -o $@ $(LDFLAGS) $< ../LibC/LibC.a
$(LD) -o $@ $(LDFLAGS) $< -lc
dmesg: dmesg.o
$(LD) -o $@ $(LDFLAGS) $< ../LibC/LibC.a
$(LD) -o $@ $(LDFLAGS) $< -lc
kill: kill.o
$(LD) -o $@ $(LDFLAGS) $< ../LibC/LibC.a
$(LD) -o $@ $(LDFLAGS) $< -lc
tty: tty.o
$(LD) -o $@ $(LDFLAGS) $< ../LibC/LibC.a
$(LD) -o $@ $(LDFLAGS) $< -lc
mkdir: mkdir.o
$(LD) -o $@ $(LDFLAGS) $< ../LibC/LibC.a
$(LD) -o $@ $(LDFLAGS) $< -lc
touch: touch.o
$(LD) -o $@ $(LDFLAGS) $< ../LibC/LibC.a
$(LD) -o $@ $(LDFLAGS) $< -lc
sync: sync.o
$(LD) -o $@ $(LDFLAGS) $< ../LibC/LibC.a
$(LD) -o $@ $(LDFLAGS) $< -lc
more: more.o
$(LD) -o $@ $(LDFLAGS) $< ../LibC/LibC.a
$(LD) -o $@ $(LDFLAGS) $< -lc
guitest2: guitest2.o
$(LD) -o $@ $(LDFLAGS) $< ../LibGUI/LibGUI.a ../LibC/LibC.a
$(LD) -o $@ $(LDFLAGS) -L../LibGUI $< -lgui -lc
sysctl: sysctl.o
$(LD) -o $@ $(LDFLAGS) $< ../LibC/LibC.a
$(LD) -o $@ $(LDFLAGS) $< -lc
pape: pape.o
$(LD) -o $@ $(LDFLAGS) $< ../LibC/LibC.a
$(LD) -o $@ $(LDFLAGS) $< -lc
cp: cp.o
$(LD) -o $@ $(LDFLAGS) $< ../LibC/LibC.a
$(LD) -o $@ $(LDFLAGS) $< -lc
rm: rm.o
$(LD) -o $@ $(LDFLAGS) $< ../LibC/LibC.a
$(LD) -o $@ $(LDFLAGS) $< -lc
rmdir: rmdir.o
$(LD) -o $@ $(LDFLAGS) $< ../LibC/LibC.a
$(LD) -o $@ $(LDFLAGS) $< -lc
chmod: chmod.o
$(LD) -o $@ $(LDFLAGS) $< ../LibC/LibC.a
$(LD) -o $@ $(LDFLAGS) $< -lc
top: top.o
$(LD) -o $@ $(LDFLAGS) $< ../LibC/LibC.a
$(LD) -o $@ $(LDFLAGS) $< -lc
ln: ln.o
$(LD) -o $@ $(LDFLAGS) $< ../LibC/LibC.a
$(LD) -o $@ $(LDFLAGS) $< -lc
df: df.o
$(LD) -o $@ $(LDFLAGS) $< ../LibC/LibC.a
$(LD) -o $@ $(LDFLAGS) $< -lc
su: su.o
$(LD) -o $@ $(LDFLAGS) $< ../LibC/LibC.a
$(LD) -o $@ $(LDFLAGS) $< -lc
env: env.o
$(LD) -o $@ $(LDFLAGS) $< ../LibC/LibC.a
$(LD) -o $@ $(LDFLAGS) $< -lc
.cpp.o:
@echo "CXX $<"; $(CXX) $(CXXFLAGS) -o $@ -c $<

View File

@ -27,6 +27,7 @@ WARNING_FLAGS = -Wextra -Wall -Wundef -Wcast-qual -Wwrite-strings -Wimplicit-fal
FLAVOR_FLAGS = -fno-exceptions -fno-rtti
OPTIMIZATION_FLAGS = -Os
INCLUDE_FLAGS = -I.. -I. -I../LibC
LDFLAGS = -L../LibC
DEFINES = -DSERENITY -DSANITIZE_PTRS -DUSERLAND
@ -38,7 +39,7 @@ AR = i686-pc-serenity-ar
all: $(APP)
$(APP): $(OBJS)
$(LD) -o $(APP) $(LDFLAGS) $(OBJS) ../LibC/LibC.a
$(LD) -o $(APP) $(LDFLAGS) $(OBJS) -lc
.cpp.o:
@echo "CXX $<"; $(CXX) $(CXXFLAGS) -o $@ -c $<