Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Redesign Win32 build transition rules #1109

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

yukawa
Copy link
Collaborator

@yukawa yukawa commented Nov 1, 2024

Description

This reworks my previous commits, which aimed to make it configurable on which executable should be built with what build configurations (e.g. CRT link type, target CPU architecture).

One thing we need to further consider is the debug symbol name embedded in each artifact executable as noted in 0377ddd.

To generate debug symbols one can use generate_pdb_file feature. The issue is that the pdb filename is not configurable in rules_cc. For instance, if the target name is mozc_tip32, then rules_cc assumes that the output pdb file is always mozc_tip32.pdb. To make it mozc_tip32.dll.pdb, the target name must be mozc_tip32.dll.dll. This is why I had do rework Win32 build transition rules.

Implementation note:

  • The reason why mozc_win32_cc_prod_binary needs to be introduced is because the final executable name needs to be available as an input of mozc_cc_binary.
  • mozc_cc_win32_library also needs to be reworked so that generate_pdb_file feature will not be applied to it.

There must be no observable change in GYP build and non-Windows bazel builds.

Closes #1108.

Issue IDs

Steps to test new behaviors (if any)

  • OS: Windows 11 23H2
  • Steps:
    1. bazel --bazelrc=windows.bazelrc build --config oss_windows --config release_build //win32/tip:mozc_tip32
    2. cp bazel-bin\win32\tip\mozc_tip32.dll .
    3. dumpbin /headers mozc_tip32.dll | findstr cv
    4. Confirm mozc_tip32.dll.pdb is in the output.

src/build_defs.bzl Outdated Show resolved Hide resolved
src/build_defs.bzl Outdated Show resolved Hide resolved
src/build_defs.bzl Outdated Show resolved Hide resolved
@yukawa yukawa force-pushed the issue_1108 branch 2 times, most recently from add042e to 99f8fe1 Compare November 19, 2024 07:45
@yukawa
Copy link
Collaborator Author

yukawa commented Nov 19, 2024

Addressed all the comments then rebased onto HEAD.

This reworks my previous commits [1][2][3], which aimed to make it
configurable on which executable should be built with what build
configurations (e.g. CRT link type, target CPU architecture).

One thing we need to further consider is the debug symbol name embedded
in each artifact executable [4].

To generate debug symbols one can use 'generate_pdb_file' feature. The
issue is that the pdb filename is not configurable in 'rules_cc'. For
instance, if the target name is 'mozc_tip32', then 'rules_cc' assumes
that the output pdb file is always 'mozc_tip32.pdb'. To make it
'mozc_tip32.dll.pdb', the target name must be 'mozc_tip32.dll.dll'.
This is why I had do rework Win32 build transition rules.

Implementation note:
 * The reason why 'mozc_win32_cc_prod_binary' needs to be introduced is
   because the final executable name needs to be available as an input
   of 'mozc_cc_binary'.
 * 'mozc_cc_win32_library' also needs to be reworked so that
   'generate_pdb_file' feature will not be applied to it.

There must be no observable change in GYP build and non-Windows bazel
builds.

Closes google#1108.

 [1]: 5efa371
 [2]: ff64988
 [3]: ea55af0
 [4]: 0377ddd
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
3 participants