mirror of
https://github.com/reactos/reactos.git
synced 2024-10-22 05:46:19 +00:00
[CMAKE]
- Group some cross compiling related sections. - Implement add_importlib_target() for gcc. - Improve the msvc version. svn path=/branches/cmake-bringup/; revision=49903
This commit is contained in:
parent
3f7c3ba575
commit
faa04c1086
|
@ -1,30 +1,10 @@
|
|||
|
||||
cmake_minimum_required(VERSION 2.8)
|
||||
project(REACTOS)
|
||||
|
||||
# Compile options
|
||||
include(config.cmake)
|
||||
|
||||
# Compiler specific definitions and macros
|
||||
if(MSVC)
|
||||
include(msc.cmake)
|
||||
else()
|
||||
include(gcc.cmake)
|
||||
endif(MSVC)
|
||||
|
||||
# Generic macros
|
||||
include(CMakeMacros.cmake)
|
||||
|
||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||
set(CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE ON)
|
||||
set(CMAKE_SHARED_LIBRARY_PREFIX "")
|
||||
|
||||
set(CMAKE_SKIP_PREPROCESSED_SOURCE_RULES TRUE)
|
||||
set(CMAKE_SKIP_ASSEMBLY_SOURCE_RULES TRUE)
|
||||
|
||||
set_property(GLOBAL PROPERTY RULE_MESSAGES OFF)
|
||||
|
||||
add_definitions(-D__REACTOS__)
|
||||
|
||||
if(NOT CMAKE_CROSSCOMPILING)
|
||||
|
||||
add_definitions(-DTARGET_i386)
|
||||
|
@ -48,6 +28,40 @@ endif()
|
|||
|
||||
else()
|
||||
|
||||
if(NOT DEFINED REACTOS_BUILD_TOOLS_DIR)
|
||||
set(REACTOS_BUILD_TOOLS_DIR ${REACTOS_SOURCE_DIR}/build)
|
||||
endif()
|
||||
|
||||
set(IMPORT_EXECUTABLES "${REACTOS_BUILD_TOOLS_DIR}/ImportExecutables.cmake" CACHE FILEPATH "Host executables")
|
||||
include(${IMPORT_EXECUTABLES})
|
||||
|
||||
endif(NOT CMAKE_CROSSCOMPILING)
|
||||
|
||||
# Compiler specific definitions and macros
|
||||
if(MSVC)
|
||||
include(msc.cmake)
|
||||
else()
|
||||
include(gcc.cmake)
|
||||
endif(MSVC)
|
||||
|
||||
# Generic macros
|
||||
include(CMakeMacros.cmake)
|
||||
|
||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||
set(CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE ON)
|
||||
set(CMAKE_SHARED_LIBRARY_PREFIX "")
|
||||
|
||||
set(CMAKE_SKIP_PREPROCESSED_SOURCE_RULES TRUE)
|
||||
set(CMAKE_SKIP_ASSEMBLY_SOURCE_RULES TRUE)
|
||||
|
||||
set(CMAKE_COLOR_MAKEFILE OFF)
|
||||
|
||||
set_property(GLOBAL PROPERTY RULE_MESSAGES OFF)
|
||||
|
||||
add_definitions(-D__REACTOS__)
|
||||
|
||||
if(CMAKE_CROSSCOMPILING)
|
||||
|
||||
#Some cleanup
|
||||
file(REMOVE
|
||||
${REACTOS_BINARY_DIR}/boot/ros_livecd.txt
|
||||
|
@ -67,13 +81,6 @@ enable_language(ASM)
|
|||
# Activate language support for resource files
|
||||
enable_language(RC)
|
||||
|
||||
if(NOT DEFINED REACTOS_BUILD_TOOLS_DIR)
|
||||
set(REACTOS_BUILD_TOOLS_DIR ${REACTOS_SOURCE_DIR}/build)
|
||||
endif()
|
||||
|
||||
set(IMPORT_EXECUTABLES "${REACTOS_BUILD_TOOLS_DIR}/ImportExecutables.cmake" CACHE FILEPATH "Host executables")
|
||||
include(${IMPORT_EXECUTABLES})
|
||||
|
||||
add_definitions(-DDBG=${DBG} -DKDBG=${KDBG})
|
||||
|
||||
if(DBG)
|
||||
|
@ -189,6 +196,8 @@ add_custom_command(
|
|||
|
||||
add_custom_target(gendib_generated ALL DEPENDS ${OUTPUT_FILES})
|
||||
|
||||
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/importlibs)
|
||||
|
||||
#bootcd and livecd
|
||||
include(ros_cd.cmake)
|
||||
|
||||
|
|
25
gcc.cmake
25
gcc.cmake
|
@ -96,12 +96,6 @@ macro(set_image_base MODULE IMAGE_BASE)
|
|||
add_linkerflag(${MODULE} "-Wl,--image-base,${IMAGE_BASE}")
|
||||
endmacro()
|
||||
|
||||
macro(add_importlibs MODULE)
|
||||
foreach(LIB ${ARGN})
|
||||
target_link_libraries(${MODULE} ${LIB}.dll.a)
|
||||
endforeach()
|
||||
endmacro()
|
||||
|
||||
macro(set_module_type MODULE TYPE)
|
||||
|
||||
add_dependencies(${MODULE} psdk buildno_header)
|
||||
|
@ -193,8 +187,23 @@ set(IDL_CLIENT_ARG -c -C) #.c for stub client library
|
|||
set(IDL_PROXY_ARG -p -P)
|
||||
set(IDL_DLLDATA_ARG --dlldata-only --dlldata=)
|
||||
|
||||
macro(add_importlib_target _def_file)
|
||||
# empty for now, while import libs are shipped
|
||||
macro(add_importlibs MODULE)
|
||||
foreach(LIB ${ARGN})
|
||||
target_link_libraries(${MODULE} ${CMAKE_BINARY_DIR}/importlibs/lib${LIB}.a)
|
||||
add_dependencies(${MODULE} lib${LIB})
|
||||
endforeach()
|
||||
endmacro()
|
||||
|
||||
macro(add_importlib_target _spec_file)
|
||||
get_filename_component(_name ${_spec_file} NAME_WE)
|
||||
add_custom_command(
|
||||
OUTPUT ${CMAKE_BINARY_DIR}/importlibs/lib${_name}.a
|
||||
COMMAND native-spec2def ${CMAKE_CURRENT_SOURCE_DIR}/${_spec_file} ${CMAKE_CURRENT_BINARY_DIR}/${_name}.def
|
||||
COMMAND ${MINGW_PREFIX}dlltool --def ${CMAKE_CURRENT_BINARY_DIR}/${_name}.def --kill-at --output-lib=${CMAKE_BINARY_DIR}/importlibs/lib${_name}.a
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${_spec_file})
|
||||
add_custom_target(
|
||||
lib${_name}
|
||||
DEPENDS ${CMAKE_BINARY_DIR}/importlibs/lib${_name}.a)
|
||||
endmacro()
|
||||
|
||||
macro(spec2def _dllname _spec_file)
|
||||
|
|
20
msc.cmake
20
msc.cmake
|
@ -7,7 +7,6 @@ add_definitions(-Dinline=__inline)
|
|||
|
||||
if(NOT CMAKE_CROSSCOMPILING)
|
||||
|
||||
|
||||
else()
|
||||
|
||||
add_definitions(/GS- /Zl /Zi)
|
||||
|
@ -143,15 +142,11 @@ set(IDL_DLLDATA_ARG /dlldata )
|
|||
macro(add_importlib_target _spec_file)
|
||||
get_filename_component(_name ${_spec_file} NAME_WE)
|
||||
|
||||
# Generate the asm stub file
|
||||
add_custom_command(
|
||||
OUTPUT ${CMAKE_BINARY_DIR}/importlibs/lib${_name}_stubs.asm
|
||||
OUTPUT ${CMAKE_BINARY_DIR}/importlibs/lib${_name}_stubs.asm ${CMAKE_BINARY_DIR}/importlibs/lib${_name}_exp.def
|
||||
# Generate the asm stub file
|
||||
COMMAND native-spec2def -l=${CMAKE_BINARY_DIR}/importlibs/lib${_name}_stubs.asm ${CMAKE_CURRENT_SOURCE_DIR}/${_spec_file}
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${_spec_file})
|
||||
|
||||
# Generate a the export def file
|
||||
add_custom_command(
|
||||
OUTPUT ${CMAKE_BINARY_DIR}/importlibs/lib${_name}_exp.def
|
||||
# Generate a the export def file
|
||||
COMMAND native-spec2def -@ -r -d=${CMAKE_BINARY_DIR}/importlibs/lib${_name}_exp.def ${CMAKE_CURRENT_SOURCE_DIR}/${_spec_file}
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${_spec_file})
|
||||
|
||||
|
@ -159,8 +154,7 @@ macro(add_importlib_target _spec_file)
|
|||
add_custom_command(
|
||||
OUTPUT ${CMAKE_BINARY_DIR}/importlibs/lib${_name}_stubs.obj
|
||||
COMMAND ${CMAKE_ASM_COMPILER} /nologo /Fo${CMAKE_BINARY_DIR}/importlibs/lib${_name}_stubs.obj /c /Ta ${CMAKE_BINARY_DIR}/importlibs/lib${_name}_stubs.asm
|
||||
DEPENDS "${CMAKE_BINARY_DIR}/importlibs/lib${_name}_stubs.asm"
|
||||
)
|
||||
DEPENDS "${CMAKE_BINARY_DIR}/importlibs/lib${_name}_stubs.asm")
|
||||
|
||||
# Add neccessary importlibs for redirections
|
||||
set(_libraries "")
|
||||
|
@ -173,14 +167,12 @@ macro(add_importlib_target _spec_file)
|
|||
add_custom_command(
|
||||
OUTPUT ${CMAKE_BINARY_DIR}/importlibs/lib${_name}.lib
|
||||
COMMAND LINK /LIB /NOLOGO /MACHINE:X86 /DEF:${CMAKE_BINARY_DIR}/importlibs/lib${_name}_exp.def /OUT:${CMAKE_BINARY_DIR}/importlibs/lib${_name}.lib ${CMAKE_BINARY_DIR}/importlibs/lib${_name}_stubs.obj ${_libraries}
|
||||
DEPENDS ${CMAKE_BINARY_DIR}/importlibs/lib${_name}_stubs.obj ${CMAKE_BINARY_DIR}/importlibs/lib${_name}_exp.def
|
||||
)
|
||||
DEPENDS ${CMAKE_BINARY_DIR}/importlibs/lib${_name}_stubs.obj ${CMAKE_BINARY_DIR}/importlibs/lib${_name}_exp.def)
|
||||
|
||||
# Add the importlib target
|
||||
add_custom_target(
|
||||
lib${_name}
|
||||
DEPENDS ${CMAKE_BINARY_DIR}/importlibs/lib${_name}.lib
|
||||
)
|
||||
DEPENDS ${CMAKE_BINARY_DIR}/importlibs/lib${_name}.lib)
|
||||
|
||||
add_dependencies(lib${_name} asm ${_dependencies})
|
||||
endmacro()
|
||||
|
|
Loading…
Reference in a new issue