Skip to content

Commit 1753dd1

Browse files
cmake: Improve build structure for multiple display implementations. (#308)
We no longer build a separate `maiko` library that gets linked into `ldex`. It was the only thing linking it, so now we just build those files as part of `ldex`. We only build `ldex` when X11 is requested (which it is by default). If we add a new display implementation, this structure will support that by adding a new `ldewhatever` and it will build a new binary that the `lde` launcher can be updated to support.
1 parent c054be0 commit 1753dd1

File tree

1 file changed

+54
-40
lines changed

1 file changed

+54
-40
lines changed

CMakeLists.txt

Lines changed: 54 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -18,23 +18,50 @@ ENDIF()
1818

1919
INCLUDE(CheckLibraryExists)
2020
CHECK_LIBRARY_EXISTS(m fmod "" NEED_LIB_M)
21-
22-
FIND_PACKAGE(X11 REQUIRED)
21+
IF(NEED_LIB_M)
22+
SET(MAIKO_LIBRARIES m)
23+
ENDIF()
2324

2425
SET(MAIKO_DEFINITIONS
2526
"-DRELEASE=351"
2627
)
2728

28-
IF(TRUE)
29-
# Turn this into a config option.
29+
IF(UNIX)
3030
LIST(APPEND MAIKO_DEFINITIONS
31-
"-DXWINDOW"
31+
"-DLOGINT"
3232
)
3333
ENDIF()
3434

35-
IF(UNIX)
36-
LIST(APPEND MAIKO_DEFINITIONS
37-
"-DLOGINT"
35+
OPTION(MAIKO_DISPLAY_X11 "Use X11 for display." ON)
36+
IF(MAIKO_DISPLAY_X11)
37+
FIND_PACKAGE(X11 REQUIRED)
38+
SET(MAIKO_DISPLAY_X11_DEFINITIONS
39+
"-DXWINDOW"
40+
)
41+
SET(MAIKO_DISPLAY_X11_LIBRARIES X11::X11)
42+
SET(MAIKO_DISPLAY_X11_SRCS
43+
src/xbbt.c
44+
src/xcursor.c
45+
src/xinit.c
46+
src/xlspwin.c
47+
src/xmkicon.c
48+
src/xrdopt.c
49+
src/xscroll.c
50+
src/xwinman.c
51+
)
52+
SET(MAIKO_DISPLAY_X11_HDRS
53+
inc/xbbtdefs.h
54+
inc/xbitmaps.h
55+
inc/xcursordefs.h
56+
inc/xdefs.h
57+
inc/xinitdefs.h
58+
inc/XKeymap.h
59+
inc/xlspwindefs.h
60+
inc/xmkicondefs.h
61+
inc/xrdoptdefs.h
62+
inc/xscrolldefs.h
63+
inc/xscroll.h
64+
inc/xwinmandefs.h
3865
)
3966
ENDIF()
4067

@@ -204,15 +231,7 @@ SET(MAIKO_SRCS
204231
src/uutils.c
205232
src/vars3.c
206233
src/vmemsave.c
207-
src/xbbt.c
208234
src/xc.c
209-
src/xcursor.c
210-
src/xinit.c
211-
src/xlspwin.c
212-
src/xmkicon.c
213-
src/xrdopt.c
214-
src/xscroll.c
215-
src/xwinman.c
216235
src/z2.c
217236
)
218237
SET(MAIKO_HDRS
@@ -383,47 +402,42 @@ SET(MAIKO_HDRS
383402
inc/version.h
384403
inc/vmemsavedefs.h
385404
inc/vmemsave.h
386-
inc/xbbtdefs.h
387-
inc/xbitmaps.h
388405
inc/xcdefs.h
389-
inc/xcursordefs.h
390-
inc/xdefs.h
391-
inc/xinitdefs.h
392-
inc/XKeymap.h
393-
inc/xlspwindefs.h
394-
inc/xmkicondefs.h
395-
inc/xrdoptdefs.h
396-
inc/xscrolldefs.h
397-
inc/xscroll.h
398-
inc/xwinmandefs.h
399406
inc/z2defs.h
400407
)
401-
ADD_LIBRARY(maiko STATIC ${MAIKO_SRCS} ${MAIKO_HDRS})
402-
TARGET_COMPILE_DEFINITIONS(maiko PUBLIC ${MAIKO_DEFINITIONS})
403-
TARGET_INCLUDE_DIRECTORIES(maiko PUBLIC inc)
404-
TARGET_LINK_LIBRARIES(maiko X11::X11)
405-
IF(NEED_LIB_M)
406-
TARGET_LINK_LIBRARIES(maiko m)
407-
ENDIF()
408408

409409
ADD_CUSTOM_TARGET(gen-vdate
410410
COMMAND mkvdate > vdate.c
411411
BYPRODUCTS vdate.c
412412
)
413413

414-
# lde ldeether ldex mkvdate setsout tstsout
415-
416414
ADD_EXECUTABLE(lde src/ldeboot.c src/unixfork.c)
417415
TARGET_COMPILE_DEFINITIONS(lde PUBLIC ${MAIKO_DEFINITIONS})
418416
TARGET_INCLUDE_DIRECTORIES(lde PUBLIC inc)
419-
TARGET_LINK_LIBRARIES(lde X11::X11)
417+
IF(MAIKO_DISPLAY_X11)
418+
# Tell it that the X11 launcher is available.
419+
TARGET_COMPILE_DEFINITIONS(lde PUBLIC ${MAIKO_DISPLAY_X11_DEFINITIONS})
420+
# This is needed so that it can call XOpenDisplay.
421+
TARGET_LINK_LIBRARIES(lde X11::X11)
422+
ENDIF()
420423

421424
ADD_EXECUTABLE(ldeether src/ldeether.c src/dlpi.c)
422425
TARGET_COMPILE_DEFINITIONS(ldeether PUBLIC ${MAIKO_DEFINITIONS})
423426
TARGET_INCLUDE_DIRECTORIES(ldeether PUBLIC inc)
424427

425-
ADD_EXECUTABLE(ldex src/main.c vdate.c)
426-
TARGET_LINK_LIBRARIES(ldex maiko)
428+
IF(MAIKO_DISPLAY_X11)
429+
ADD_EXECUTABLE(ldex
430+
src/main.c
431+
vdate.c
432+
${MAIKO_SRCS}
433+
${MAIKO_HDRS}
434+
${MAIKO_DISPLAY_X11_SRCS}
435+
${MAIKO_DISPLAY_X11_HDRS}
436+
)
437+
TARGET_COMPILE_DEFINITIONS(ldex PUBLIC ${MAIKO_DEFINITIONS} ${MAIKO_DISPLAY_X11_DEFINITIONS})
438+
TARGET_INCLUDE_DIRECTORIES(ldex PUBLIC inc)
439+
TARGET_LINK_LIBRARIES(ldex ${MAIKO_LIBRARIES} ${MAIKO_DISPLAY_X11_LIBRARIES})
440+
ENDIF()
427441

428442
ADD_EXECUTABLE(mkvdate src/mkvdate.c)
429443
TARGET_COMPILE_DEFINITIONS(mkvdate PUBLIC ${MAIKO_DEFINITIONS})

0 commit comments

Comments
 (0)