Skip to content

Instantly share code, notes, and snippets.

@earl
Forked from hostilefork/1-rebol.reb
Last active August 29, 2015 14:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save earl/dda1a9e3357b6e9f581f to your computer and use it in GitHub Desktop.
Save earl/dda1a9e3357b6e9f581f to your computer and use it in GitHub Desktop.
Rebol [
Title: "Rebol Dialected Experiment to represent CMake files"
;; See:
;; http://curecode.org/rebol3/ticket.rsp?id=2177
;; http://browsenpm.org/package.json#dependencies
Needs: [
1.0
cmake 2.8
]
Dialect: rebmake
;; http://www.cmake.org/cmake/help/v3.0/command/project.html
Title: "rebol3"
Languages: [c]
]
;; -- Target platform detection
case [
CMAKE_SYSTEM_NAME = "Darwin" [
R3_OSX: on
]
CMAKE_SYSTEM_NAME = "Windows" [
R3_WIN32: on
]
CMAKE_SYSTEM_NAME = "Linux" [
R3_LINUX: on
]
]
add/definitions {-DREB_CORE}
add/definitions {-DREB_EXE}
;; Current thinking is that parentheses run a COMBINE on the contents.
;; So could also have written:
;;
;; add/definitions ({-DREB_CORE} space {-DREB_EXE})
;;
;; or just one string...
;;
;; add/definitions {-DREB_CORE -DREB_EXE}
include/directories :PROJECT_SOURCE_DIR/src/include
add/subdirectory :PROJECT_SOURCE_DIR/src/core
add/subdirectory :PROJECT_SOURCE_DIR/src/os
;; Rebol 3 command used for bootstrap (in the "prepare" target).
R3_MAKE: find/program [
%r3-make ;; or list of names...
; /HINTS path1 path2 ... ENV var
; /PATHS path1 path2 ... ENV var
; /PATH-SUFFIXES suffix1 suffix2 ... ;; Is SUFFIXES enough?
; /DOC "cache documentation string"
; /DEFAULT-PATH no ;; as opposed to NO_DEFAULT_PATH
; /CMAKE-ENVIRONMENT-PATH no
; /CMAKE-PATH no
; /SYSTEM-ENVIRONMENT-PATH no
; /CMAKE-SYSTEM-PATH no
; /CMAKE_FIND_ROOT_PATH both, only, no ???
]
R3_MAKE_CMD: [R3_MAKE {-qs}]
;; -- Platform-specific configuration
if R3_OSX [
R3_TARGET: "2.5"
;; Host sources
R3_HOST_SUBDIR: %posix
;; Definitions
add/definitions {-DTO_OSXI}
add/definitions {-D_FILE_OFFSET_BITS=64}
;; Compiler/linker flags
CMAKE_C_FLAGS: (CMAKE_C_FLAGS space {-arch i386})
CMAKE_C_FLAGS: (CMAKE_C_FLAGS space {-Wno-pointer-sign})
CMAKE_C_FLAGS: (CMAKE_C_FLAGS space {-fPIC})
CMAKE_C_FLAGS: (CMAKE_C_FLAGS space {-fvisibility=hidden})
CMAKE_C_FLAGS: (CMAKE_C_FLAGS space {-fno-common})
;; Libraries
LIBM: find/library %m
R3_LIBS: LIBM
]
if R3_WIN32 [
R3_TARGET: "3.1"
;; Host sources
R3_HOST_SUBDIR: %win32
;; Definitions
add/definitions {-DTO_WIN32}
add/definitions {-DUNICODE}
add/definitions {-D_FILE_OFFSET_BITS=64}
case [
not MSVC [ ;; MinGW-specific settings (@@ Use more specific test.)
;; Compiler/linker flags
CMAKE_C_FLAGS: (CMAKE_C_FLAGS space {-O2})
CMAKE_EXE_LINKER_FLAGS: {-Wl,--stack=4194300}
;; Libraries
LIBCOMDLG32: find/library %comdlg32
LIBWSOCK32: find/library %wsock32
R3_LIBS: [LIBCOMDLG32 LIBWSOCK32]
]
MSVC [ ;; MSVC-specific settings
;; Definitions
add/definitions {-D_CRT_SECURE_NO_WARNINGS}
;; Compiler/linker flags
CMAKE_EXE_LINKER_FLAGS: (CMAKE_EXE_LINKER_FLAGS space "/subsystem:windows")
CMAKE_EXE_LINKER_FLAGS: (CMAKE_EXE_LINKER_FLAGS space "/stack:4194300")
;; LIBRARIES
R3_LIBS: [%comdlg32.lib %wsock32.lib]
]
]
]
if R3_LINUX [
R3_TARGET: "4.4"
; Host sources
R3_HOST_SUBDIR: %posix
;; Definitions
add/definitions {-DTO_LINUX}
add/definitions {-D_FILE_OFFSET_BITS=64}
;; Compiler/linker flags
CMAKE_C_FLAGS: (CMAKE_C_FLAGS space {-m32})
CMAKE_C_FLAGS: (CMAKE_C_FLAGS space {-O2})
CMAKE_C_FLAGS: (CMAKE_C_FLAGS space {-fvisibility=hidden})
;; Libraries
LIBDL: find/library %dl
LIBM: find/library %m
R3_LIBS: [LIBDL LIBM]
]
add/subdirectory :PROJECT_SOURCE_DIR/src/os/:R3_HOST_SUBDIR
;; -- Generated files
R3_SRC_TOOLS_DIR: :PROJECT_SOURCE_DIR/src/tools
R3_SRCS_CORE: file/glob :PROJECT_SOURCE_DIR/src/core/*.c
R3_SRCS_MEZZ_BOOT: file/glob [ ;; Basically mirroring src/mezz/boot-files.r
:PROJECT_SOURCE_DIR/src/mezz/base-*.r
:PROJECT_SOURCE_DIR/src/mezz/sys-*.r
:PROJECT_SOURCE_DIR/src/mezz/mezz-*.r
:PROJECT_SOURCE_DIR/src/mezz/prot-*.r
]
add/custom-command [
/command
R3_MAKE_CMD :R3_SRC_TOOLS_DIR/make-boot.r ["0." R3_TARGET]
/output
:PROJECT_SOURCE_DIR/src/include/tmp-evaltypes.h
:PROJECT_SOURCE_DIR/src/include/tmp-maketypes.h
:PROJECT_SOURCE_DIR/src/include/tmp-comptypes.h
:PROJECT_SOURCE_DIR/src/include/reb-types.h
:PROJECT_SOURCE_DIR/src/include/ext-types.h
:PROJECT_SOURCE_DIR/src/include/tmp-exttypes.h
:PROJECT_SOURCE_DIR/src/include/tmp-bootdefs.h
:PROJECT_SOURCE_DIR/src/include/tmp-sysobj.h
:PROJECT_SOURCE_DIR/src/include/reb-dialect.h
:PROJECT_SOURCE_DIR/src/include/reb-evtypes.h
:PROJECT_SOURCE_DIR/src/include/tmp-errnums.h
:PROJECT_SOURCE_DIR/src/include/tmp-portmodes.h
:PROJECT_SOURCE_DIR/src/include/tmp-sysctx.h
:PROJECT_SOURCE_DIR/src/boot/boot-code.r
:PROJECT_SOURCE_DIR/src/core/b-boot.c
:PROJECT_SOURCE_DIR/src/include/tmp-boot.h
/depends
:PROJECT_SOURCE_DIR/src/tools/form-header.r
:PROJECT_SOURCE_DIR/src/tools/systems.r
:PROJECT_SOURCE_DIR/src/boot/version.r
:PROJECT_SOURCE_DIR/src/boot/types.r
:PROJECT_SOURCE_DIR/src/boot/types-ext.r
:PROJECT_SOURCE_DIR/src/boot/strings.r
:PROJECT_SOURCE_DIR/src/boot/words.r
:PROJECT_SOURCE_DIR/src/boot/modes.r
:PROJECT_SOURCE_DIR/src/boot/actions.r
:PROJECT_SOURCE_DIR/src/boot/sysobj.r
:PROJECT_SOURCE_DIR/src/boot/platforms.r
:PROJECT_SOURCE_DIR/src/boot/errors.r
:PROJECT_SOURCE_DIR/src/mezz/boot-files.r
R3_SRCS_MEZZ_BOOT
:PROJECT_SOURCE_DIR/src/boot/booters.r
:PROJECT_SOURCE_DIR/src/boot/natives.r
:PROJECT_SOURCE_DIR/src/boot/typespec.r
:PROJECT_SOURCE_DIR/src/boot/root.r
:PROJECT_SOURCE_DIR/src/boot/task.r
:PROJECT_SOURCE_DIR/src/boot/ops.r
]
add/custom-command [
/command
R3_MAKE_CMD :R3_SRC_TOOLS_DIR/make-headers.r
/output
:PROJECT_SOURCE_DIR/src/include/tmp-funcs.h
:PROJECT_SOURCE_DIR/src/include/tmp-funcargs.h
:PROJECT_SOURCE_DIR/src/include/tmp-strings.h
/depends
:PROJECT_SOURCE_DIR/src/tools/form-header.r
R3_SRCS_CORE
:PROJECT_SOURCE_DIR/src/boot/actions.r
:PROJECT_SOURCE_DIR/src/boot/natives.r
:PROJECT_SOURCE_DIR/src/core/a-constants.c
]
add/custom-command [
/command
R3_MAKE_CMD :R3_SRC_TOOLS_DIR/make-host-ext.r
/output
:PROJECT_SOURCE_DIR/src/include/host-ext-graphics.h
:PROJECT_SOURCE_DIR/src/include/host-ext-draw.h
:PROJECT_SOURCE_DIR/src/include/host-ext-shape.h
:PROJECT_SOURCE_DIR/src/include/host-ext-text.h
/depends
:PROJECT_SOURCE_DIR/src/tools/form-header.r
:PROJECT_SOURCE_DIR/src/boot/graphics.r
:PROJECT_SOURCE_DIR/src/mezz/view-funcs.r
:PROJECT_SOURCE_DIR/src/boot/draw.r
:PROJECT_SOURCE_DIR/src/boot/shape.r
:PROJECT_SOURCE_DIR/src/boot/text.r
]
add/custom-command [
/command
R3_MAKE_CMD :R3_SRC_TOOLS_DIR/make-host-init.r
/output
:PROJECT_SOURCE_DIR/src/boot/host-init.r
:PROJECT_SOURCE_DIR/src/include/host-init.h
/depends
:PROJECT_SOURCE_DIR/src/tools/form-header.r
:PROJECT_SOURCE_DIR/src/mezz/prot-http.r
]
add/custom-command [
/command
R3_MAKE_CMD :R3_SRC_TOOLS_DIR/make-os-ext.r
/output
:PROJECT_SOURCE_DIR/src/include/host-lib.h
/depends
:PROJECT_SOURCE_DIR/src/tools/form-header.r
:PROJECT_SOURCE_DIR/src/boot/version.r
:PROJECT_SOURCE_DIR/src/tools/systems.r
:PROJECT_SOURCE_DIR/src/os/host-device.c
:PROJECT_SOURCE_DIR/src/os/:R3_HOST_SUBDIR/host-lib.c
:PROJECT_SOURCE_DIR/src/os/:R3_HOST_SUBDIR/host-window.c
]
add/custom-command [
/command
R3_MAKE_CMD :R3_SRC_TOOLS_DIR/make-reb-lib.r
/output
:PROJECT_SOURCE_DIR/src/reb-lib-doc.txt
:PROJECT_SOURCE_DIR/src/include/reb-lib.h
:PROJECT_SOURCE_DIR/src/include/reb-lib-lib.h
/depnds
:PROJECT_SOURCE_DIR/src/tools/form-header.r
:PROJECT_SOURCE_DIR/src/boot/version.r
:PROJECT_SOURCE_DIR/src/core/a-lib.c
:PROJECT_SOURCE_DIR/src/core/f-extension.c
]
prepare: add/custom-target [
/all
/depends
; -- boot
:PROJECT_SOURCE_DIR/src/include/tmp-evaltypes.h
:PROJECT_SOURCE_DIR/src/include/tmp-maketypes.h
:PROJECT_SOURCE_DIR/src/include/tmp-comptypes.h
:PROJECT_SOURCE_DIR/src/include/reb-types.h
:PROJECT_SOURCE_DIR/src/include/ext-types.h
:PROJECT_SOURCE_DIR/src/include/tmp-exttypes.h
:PROJECT_SOURCE_DIR/src/include/tmp-bootdefs.h
:PROJECT_SOURCE_DIR/src/include/tmp-sysobj.h
:PROJECT_SOURCE_DIR/src/include/reb-dialect.
:PROJECT_SOURCE_DIR/src/include/reb-evtypes.h
:PROJECT_SOURCE_DIR/src/include/tmp-errnums.h
:PROJECT_SOURCE_DIR/src/include/tmp-portmodes.h
:PROJECT_SOURCE_DIR/src/include/tmp-sysctx.h
;:PROJECT_SOURCE_DIR/src/boot/boot-code.r ;; unused
:PROJECT_SOURCE_DIR/src/core/b-boot.c
:PROJECT_SOURCE_DIR/src/include/tmp-bt.h
;; headers
:PROJECT_SOURCE_DIR/src/include/tmp-funcs.h
:PROJECT_SOURCE_DIR/src/include/tmp-funcargs.h
:PROJECT_SOURCE_DIR/src/include/tmp-strings.h
;; host-ext
:PROJECT_SOURCE_DIR/src/include/host-ext-graphics.h
:PROJECT_SOURCE_DIR/src/include/host-ext-draw.h
:PROJECT_SOURCE_DIR/src/include/host-ext-shape.h
:PROJECT_SOURCE_DIR/src/include/host-ext-text.h
; -- host-init
;:PROJECT_SOURCE_DIR/src/boot/host-init.r ;; unused
:PROJECT_SOURCE_DIR/src/include/host-init.h
; -- os-ext
:PROJECT_SOURCE_DIR/src/include/host-lib.h
; -- reb-lib
:PROJECT_SOURCE_DIR/src/reb-lib-doc.txt
:PROJECT_SOURCE_DIR/src/include/reb-lib.h
:PROJECT_SOURCE_DIR/src/include/reb-lib-lib.h
]
;; -- Build targets
;; Until construction syntax allows arbitrary words, we'll need to add an
;; option for filenames...
r3: add/executable [
R3_SRCS
;/FILENAME %r3 ;; for example
]
target/link-libraries r3 R3_LIBS
;; -- Additional platform-specific configuration
if MSVC [
;; Add target-level dependency from `r3` to `prepare`, as VS (and/or CMake's
;; VS generator) can't handle file-level cross-target dependencies properly.
add/dependencies r3 [prepare]
]
cmake_minimum_required(VERSION 2.8)
project(rebol3)
# -- Target platform detection
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
set(R3_OSX on)
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
set(R3_WIN32 on)
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
set(R3_LINUX on)
endif()
# -- Common R3 build configuration
add_definitions(-DREB_CORE)
add_definitions(-DREB_EXE)
include_directories(${PROJECT_SOURCE_DIR}/src/include)
add_subdirectory(${PROJECT_SOURCE_DIR}/src/core)
add_subdirectory(${PROJECT_SOURCE_DIR}/src/os)
# Rebol 3 command used for bootstrap (in the "prepare" target).
find_program(R3_MAKE r3-make)
set(R3_MAKE_CMD ${R3_MAKE} -qs)
# -- Platform-specific configuration
if(R3_OSX)
set(R3_TARGET "2.5")
# Host sources
set(R3_HOST_SUBDIR "posix")
# Definitions
add_definitions(-DTO_OSXI)
add_definitions(-D_FILE_OFFSET_BITS=64)
# Compiler/linker flags
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -arch i386")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-pointer-sign")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-common")
# Libraries
find_library(LIBM m)
set(R3_LIBS ${LIBM})
endif()
if(R3_WIN32)
set(R3_TARGET "3.1")
# Host sources
set(R3_HOST_SUBDIR "win32")
# Definitions
add_definitions(-DTO_WIN32)
add_definitions(-DUNICODE)
add_definitions(-D_FILE_OFFSET_BITS=64)
if(NOT MSVC) # MinGW-specific settings (@@ Use more specific test.)
# Compiler/linker flags
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2")
set(CMAKE_EXE_LINKER_FLAGS "-Wl,--stack=4194300")
# Libraries
find_library(LIBCOMDLG32 comdlg32)
find_library(LIBWSOCK32 wsock32)
set(R3_LIBS ${LIBCOMDLG32} ${LIBWSOCK32})
elseif(MSVC) # MSVC-specific settings
# Definitions
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
# Compiler/linker flags
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /subsystem:windows")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /stack:4194300")
# LIBRARIES
set(R3_LIBS comdlg32.lib wsock32.lib)
endif()
endif()
if(R3_LINUX)
set(R3_TARGET "4.4")
# Host sources
set(R3_HOST_SUBDIR "posix")
# Definitions
add_definitions(-DTO_LINUX)
add_definitions(-D_FILE_OFFSET_BITS=64)
# Compiler/linker flags
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden")
# Libraries
find_library(LIBDL dl)
find_library(LIBM m)
set(R3_LIBS ${LIBDL} ${LIBM})
endif()
add_subdirectory(${PROJECT_SOURCE_DIR}/src/os/${R3_HOST_SUBDIR})
# -- Generated files
set(R3_SRC_TOOLS_DIR ${PROJECT_SOURCE_DIR}/src/tools)
file(GLOB R3_SRCS_CORE "${PROJECT_SOURCE_DIR}/src/core/*.c")
file(GLOB R3_SRCS_MEZZ_BOOT # Basically mirroring src/mezz/boot-files.r
"${PROJECT_SOURCE_DIR}/src/mezz/base-*.r"
"${PROJECT_SOURCE_DIR}/src/mezz/sys-*.r"
"${PROJECT_SOURCE_DIR}/src/mezz/mezz-*.r"
"${PROJECT_SOURCE_DIR}/src/mezz/prot-*.r"
)
add_custom_command(
COMMAND ${R3_MAKE_CMD} ${R3_SRC_TOOLS_DIR}/make-boot.r 0.${R3_TARGET}
OUTPUT
${PROJECT_SOURCE_DIR}/src/include/tmp-evaltypes.h
${PROJECT_SOURCE_DIR}/src/include/tmp-maketypes.h
${PROJECT_SOURCE_DIR}/src/include/tmp-comptypes.h
${PROJECT_SOURCE_DIR}/src/include/reb-types.h
${PROJECT_SOURCE_DIR}/src/include/ext-types.h
${PROJECT_SOURCE_DIR}/src/include/tmp-exttypes.h
${PROJECT_SOURCE_DIR}/src/include/tmp-bootdefs.h
${PROJECT_SOURCE_DIR}/src/include/tmp-sysobj.h
${PROJECT_SOURCE_DIR}/src/include/reb-dialect.h
${PROJECT_SOURCE_DIR}/src/include/reb-evtypes.h
${PROJECT_SOURCE_DIR}/src/include/tmp-errnums.h
${PROJECT_SOURCE_DIR}/src/include/tmp-portmodes.h
${PROJECT_SOURCE_DIR}/src/include/tmp-sysctx.h
${PROJECT_SOURCE_DIR}/src/boot/boot-code.r
${PROJECT_SOURCE_DIR}/src/core/b-boot.c
${PROJECT_SOURCE_DIR}/src/include/tmp-boot.h
DEPENDS
${PROJECT_SOURCE_DIR}/src/tools/form-header.r
${PROJECT_SOURCE_DIR}/src/tools/systems.r
${PROJECT_SOURCE_DIR}/src/boot/version.r
${PROJECT_SOURCE_DIR}/src/boot/types.r
${PROJECT_SOURCE_DIR}/src/boot/types-ext.r
${PROJECT_SOURCE_DIR}/src/boot/strings.r
${PROJECT_SOURCE_DIR}/src/boot/words.r
${PROJECT_SOURCE_DIR}/src/boot/modes.r
${PROJECT_SOURCE_DIR}/src/boot/actions.r
${PROJECT_SOURCE_DIR}/src/boot/sysobj.r
${PROJECT_SOURCE_DIR}/src/boot/platforms.r
${PROJECT_SOURCE_DIR}/src/boot/errors.r
${PROJECT_SOURCE_DIR}/src/mezz/boot-files.r
${R3_SRCS_MEZZ_BOOT}
${PROJECT_SOURCE_DIR}/src/boot/booters.r
${PROJECT_SOURCE_DIR}/src/boot/natives.r
${PROJECT_SOURCE_DIR}/src/boot/typespec.r
${PROJECT_SOURCE_DIR}/src/boot/root.r
${PROJECT_SOURCE_DIR}/src/boot/task.r
${PROJECT_SOURCE_DIR}/src/boot/ops.r
)
add_custom_command(
COMMAND ${R3_MAKE_CMD} ${R3_SRC_TOOLS_DIR}/make-headers.r
OUTPUT
${PROJECT_SOURCE_DIR}/src/include/tmp-funcs.h
${PROJECT_SOURCE_DIR}/src/include/tmp-funcargs.h
${PROJECT_SOURCE_DIR}/src/include/tmp-strings.h
DEPENDS
${PROJECT_SOURCE_DIR}/src/tools/form-header.r
${R3_SRCS_CORE}
${PROJECT_SOURCE_DIR}/src/boot/actions.r
${PROJECT_SOURCE_DIR}/src/boot/natives.r
${PROJECT_SOURCE_DIR}/src/core/a-constants.c
)
add_custom_command(
COMMAND ${R3_MAKE_CMD} ${R3_SRC_TOOLS_DIR}/make-host-ext.r
OUTPUT
${PROJECT_SOURCE_DIR}/src/include/host-ext-graphics.h
${PROJECT_SOURCE_DIR}/src/include/host-ext-draw.h
${PROJECT_SOURCE_DIR}/src/include/host-ext-shape.h
${PROJECT_SOURCE_DIR}/src/include/host-ext-text.h
DEPENDS
${PROJECT_SOURCE_DIR}/src/tools/form-header.r
${PROJECT_SOURCE_DIR}/src/boot/graphics.r
${PROJECT_SOURCE_DIR}/src/mezz/view-funcs.r
${PROJECT_SOURCE_DIR}/src/boot/draw.r
${PROJECT_SOURCE_DIR}/src/boot/shape.r
${PROJECT_SOURCE_DIR}/src/boot/text.r
)
add_custom_command(
COMMAND ${R3_MAKE_CMD} ${R3_SRC_TOOLS_DIR}/make-host-init.r
OUTPUT
${PROJECT_SOURCE_DIR}/src/boot/host-init.r
${PROJECT_SOURCE_DIR}/src/include/host-init.h
DEPENDS
${PROJECT_SOURCE_DIR}/src/tools/form-header.r
${PROJECT_SOURCE_DIR}/src/mezz/prot-http.r
)
add_custom_command(
COMMAND ${R3_MAKE_CMD} ${R3_SRC_TOOLS_DIR}/make-os-ext.r
OUTPUT
${PROJECT_SOURCE_DIR}/src/include/host-lib.h
DEPENDS
${PROJECT_SOURCE_DIR}/src/tools/form-header.r
${PROJECT_SOURCE_DIR}/src/boot/version.r
${PROJECT_SOURCE_DIR}/src/tools/systems.r
${PROJECT_SOURCE_DIR}/src/os/host-device.c
${PROJECT_SOURCE_DIR}/src/os/${R3_HOST_SUBDIR}/host-lib.c
${PROJECT_SOURCE_DIR}/src/os/${R3_HOST_SUBDIR}/host-window.c
)
add_custom_command(
COMMAND ${R3_MAKE_CMD} ${R3_SRC_TOOLS_DIR}/make-reb-lib.r
OUTPUT
${PROJECT_SOURCE_DIR}/src/reb-lib-doc.txt
${PROJECT_SOURCE_DIR}/src/include/reb-lib.h
${PROJECT_SOURCE_DIR}/src/include/reb-lib-lib.h
DEPENDS
${PROJECT_SOURCE_DIR}/src/tools/form-header.r
${PROJECT_SOURCE_DIR}/src/boot/version.r
${PROJECT_SOURCE_DIR}/src/core/a-lib.c
${PROJECT_SOURCE_DIR}/src/core/f-extension.c
)
add_custom_target(prepare ALL
DEPENDS
# -- boot
${PROJECT_SOURCE_DIR}/src/include/tmp-evaltypes.h
${PROJECT_SOURCE_DIR}/src/include/tmp-maketypes.h
${PROJECT_SOURCE_DIR}/src/include/tmp-comptypes.h
${PROJECT_SOURCE_DIR}/src/include/reb-types.h
${PROJECT_SOURCE_DIR}/src/include/ext-types.h
${PROJECT_SOURCE_DIR}/src/include/tmp-exttypes.h
${PROJECT_SOURCE_DIR}/src/include/tmp-bootdefs.h
${PROJECT_SOURCE_DIR}/src/include/tmp-sysobj.h
${PROJECT_SOURCE_DIR}/src/include/reb-dialect.h
${PROJECT_SOURCE_DIR}/src/include/reb-evtypes.h
${PROJECT_SOURCE_DIR}/src/include/tmp-errnums.h
${PROJECT_SOURCE_DIR}/src/include/tmp-portmodes.h
${PROJECT_SOURCE_DIR}/src/include/tmp-sysctx.h
#${PROJECT_SOURCE_DIR}/src/boot/boot-code.r # unused
${PROJECT_SOURCE_DIR}/src/core/b-boot.c
${PROJECT_SOURCE_DIR}/src/include/tmp-boot.h
# -- headers
${PROJECT_SOURCE_DIR}/src/include/tmp-funcs.h
${PROJECT_SOURCE_DIR}/src/include/tmp-funcargs.h
${PROJECT_SOURCE_DIR}/src/include/tmp-strings.h
# -- host-ext
${PROJECT_SOURCE_DIR}/src/include/host-ext-graphics.h
${PROJECT_SOURCE_DIR}/src/include/host-ext-draw.h
${PROJECT_SOURCE_DIR}/src/include/host-ext-shape.h
${PROJECT_SOURCE_DIR}/src/include/host-ext-text.h
# -- host-init
#${PROJECT_SOURCE_DIR}/src/boot/host-init.r # unused
${PROJECT_SOURCE_DIR}/src/include/host-init.h
# -- os-ext
${PROJECT_SOURCE_DIR}/src/include/host-lib.h
# -- reb-lib
${PROJECT_SOURCE_DIR}/src/reb-lib-doc.txt
${PROJECT_SOURCE_DIR}/src/include/reb-lib.h
${PROJECT_SOURCE_DIR}/src/include/reb-lib-lib.h
)
# -- Build targets
add_executable(r3 ${R3_SRCS})
target_link_libraries(r3 ${R3_LIBS})
# -- Additional platform-specific configuration
if(MSVC)
# Add target-level dependency from `r3` to `prepare`, as VS (and/or CMake's
# VS generator) can't handle file-level cross-target dependencies properly.
add_dependencies(r3 prepare)
endif()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment